From c90f8e1d8712578a8feeebf52f7438248fcd1bd8 Mon Sep 17 00:00:00 2001
From: Romain Menke <11521496+romainmenke@users.noreply.github.com>
Date: Mon, 11 Nov 2024 12:38:43 +0100
Subject: [PATCH] `postcss-preset-env`: v10.1 (#1513)
---
package-lock.json | 10 ++--
packages/css-calc/test/additional/random.mjs | 10 ++++
plugin-packs/postcss-preset-env/CHANGELOG.md | 20 ++------
plugin-packs/postcss-preset-env/FEATURES.md | 2 +
.../postcss-preset-env/dist/index.cjs | 2 +-
.../postcss-preset-env/dist/index.d.ts | 34 ++++++++-----
.../postcss-preset-env/dist/index.mjs | 2 +-
plugin-packs/postcss-preset-env/package.json | 4 +-
.../scripts/plugins-data.json | 10 ++++
.../src/lib/ids-by-execution-order.mjs | 2 +
.../src/plugins/plugins-by-id.mjs | 4 ++
.../src/plugins/plugins-data.mjs | 10 ++++
.../src/plugins/plugins-options.ts | 6 +++
.../test/basic.autoprefixer.expect.css | 28 ++++++++++
.../test/basic.autoprefixer.false.expect.css | 28 ++++++++++
...basic.autoprefixer.remove.false.expect.css | 28 ++++++++++
.../test/basic.ch38.expect.css | 28 ++++++++++
.../postcss-preset-env/test/basic.css | 24 +++++++++
.../test/basic.edge16.expect.css | 28 ++++++++++
.../postcss-preset-env/test/basic.expect.css | 28 ++++++++++
.../test/basic.ff49.expect.css | 28 ++++++++++
.../test/basic.ff66.expect.css | 28 ++++++++++
...ebrew.all-browsers-have-support.expect.css | 28 ++++++++++
.../test/basic.hebrew.expect.css | 28 ++++++++++
.../test/basic.ie10.expect.css | 32 ++++++++++++
.../test/basic.nesting.false.expect.css | 28 ++++++++++
.../test/basic.nesting.true.expect.css | 24 +++++++++
.../test/basic.op_mini.expect.css | 28 ++++++++++
.../test/basic.preserve.false.expect.css | 30 +++++++++++
.../test/basic.preserve.true.expect.css | 51 +++++++++++++++++++
.../test/basic.safari15.expect.css | 28 ++++++++++
.../test/basic.stage0-ff49.expect.css | 28 ++++++++++
.../test/basic.stage0-ff66.expect.css | 28 ++++++++++
.../test/basic.stage0.expect.css | 28 ++++++++++
.../test/basic.supports-query.expect.css | 28 ++++++++++
.../test/basic.vendors-1.expect.css | 28 ++++++++++
.../test/basic.vendors-2.expect.css | 28 ++++++++++
.../test/basic.vendors-3.expect.css | 24 +++++++++
rollup/configs/externals.mjs | 4 ++
39 files changed, 801 insertions(+), 36 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 18ecff75a..7a7c96d8c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4946,9 +4946,9 @@
"license": "CC0-1.0"
},
"node_modules/cssdb": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.0.tgz",
- "integrity": "sha512-sgEpo7Yrh4vG7Ra+me7Pop1sri5Im3jdEs/C0+7PKvDm9hxrigKeMk1s1O9cOZ0J/DLtBaiAGUYeIR644bK4Iw==",
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.2.1.tgz",
+ "integrity": "sha512-KwEPys7lNsC8OjASI8RrmwOYYDcm0JOW9zQhcV83ejYcQkirTEyeAGui8aO2F5PiS6SLpxuTzl6qlMElIdsgIg==",
"funding": [
{
"type": "opencollective",
@@ -9695,8 +9695,10 @@
"@csstools/postcss-normalize-display-values": "^4.0.0",
"@csstools/postcss-oklab-function": "^4.0.6",
"@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/postcss-random-function": "^1.0.0",
"@csstools/postcss-relative-color-syntax": "^3.0.6",
"@csstools/postcss-scope-pseudo-class": "^4.0.1",
+ "@csstools/postcss-sign-functions": "^1.0.0",
"@csstools/postcss-stepped-value-functions": "^4.0.5",
"@csstools/postcss-text-decoration-shorthand": "^4.0.1",
"@csstools/postcss-trigonometric-functions": "^4.0.5",
@@ -9706,7 +9708,7 @@
"css-blank-pseudo": "^7.0.1",
"css-has-pseudo": "^7.0.1",
"css-prefers-color-scheme": "^10.0.0",
- "cssdb": "^8.2.0",
+ "cssdb": "^8.2.1",
"postcss-attribute-case-insensitive": "^7.0.1",
"postcss-clamp": "^4.1.0",
"postcss-color-functional-notation": "^7.0.6",
diff --git a/packages/css-calc/test/additional/random.mjs b/packages/css-calc/test/additional/random.mjs
index 480041a5d..9a0958404 100644
--- a/packages/css-calc/test/additional/random.mjs
+++ b/packages/css-calc/test/additional/random.mjs
@@ -130,3 +130,13 @@ assert.strictEqual(
calc('random(10deg, 10px)'),
'random(10deg, 10px)',
);
+
+assert.strictEqual(
+ calc('random(0%, 100%)'),
+ '47.16924%',
+);
+
+assert.strictEqual(
+ calc('random(0deg, 360deg)'),
+ '173.25527deg',
+);
diff --git a/plugin-packs/postcss-preset-env/CHANGELOG.md b/plugin-packs/postcss-preset-env/CHANGELOG.md
index 3218cd254..785b6388c 100644
--- a/plugin-packs/postcss-preset-env/CHANGELOG.md
+++ b/plugin-packs/postcss-preset-env/CHANGELOG.md
@@ -1,20 +1,10 @@
# Changes to PostCSS Preset Env
-### Unreleased (patch)
-
-- Updated [`@csstools/postcss-exponential-functions`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-exponential-functions) to [`2.0.5`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-exponential-functions/CHANGELOG.md#205) (patch)
-- Updated [`@csstools/postcss-media-minmax`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-media-minmax) to [`2.0.5`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-media-minmax/CHANGELOG.md#205) (patch)
-- Updated [`@csstools/postcss-stepped-value-functions`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-stepped-value-functions) to [`4.0.5`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-stepped-value-functions/CHANGELOG.md#405) (patch)
-- Updated [`@csstools/postcss-trigonometric-functions`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-trigonometric-functions) to [`4.0.5`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-trigonometric-functions/CHANGELOG.md#405) (patch)
-- Updated [`@csstools/postcss-color-function`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-function) to [`4.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-function/CHANGELOG.md#406) (patch)
-- Updated [`@csstools/postcss-color-mix-function`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-mix-function) to [`3.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-mix-function/CHANGELOG.md#306) (patch)
-- Updated [`@csstools/postcss-gamut-mapping`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-gamut-mapping) to [`2.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-gamut-mapping/CHANGELOG.md#206) (patch)
-- Updated [`@csstools/postcss-gradients-interpolation-method`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-gradients-interpolation-method) to [`5.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-gradients-interpolation-method/CHANGELOG.md#506) (patch)
-- Updated [`@csstools/postcss-hwb-function`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-hwb-function) to [`4.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-hwb-function/CHANGELOG.md#406) (patch)
-- Updated [`@csstools/postcss-oklab-function`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-oklab-function) to [`4.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-oklab-function/CHANGELOG.md#406) (patch)
-- Updated [`@csstools/postcss-relative-color-syntax`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-relative-color-syntax) to [`3.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-relative-color-syntax/CHANGELOG.md#306) (patch)
-- Updated [`postcss-color-functional-notation`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-functional-notation) to [`7.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-functional-notation/CHANGELOG.md#706) (patch)
-- Updated [`postcss-lab-function`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-lab-function) to [`7.0.6`](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-lab-function/CHANGELOG.md#706) (patch)
+### Unreleased (minor)
+
+- Added `@csstools/postcss-random-function` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-random-function#readme) for usage details.
+- Added `@csstools/postcss-sign-functions` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-sign-functions#readme) for usage details.
+- Updated [`@csstools/css-calc`](https://github.com/csstools/postcss-plugins/tree/main/packages/css-calc) to [`2.1.0`](https://github.com/csstools/postcss-plugins/tree/main/packages/css-calc/CHANGELOG.md#210) (minor)
### 10.0.9
diff --git a/plugin-packs/postcss-preset-env/FEATURES.md b/plugin-packs/postcss-preset-env/FEATURES.md
index b908e127a..8c6d3abe8 100644
--- a/plugin-packs/postcss-preset-env/FEATURES.md
+++ b/plugin-packs/postcss-preset-env/FEATURES.md
@@ -54,9 +54,11 @@ The `ID` listed is the key for PostCSS Preset Env configuration in your project.
| [
](https://cssdb.org/#overflow-wrap-property) | `overflow-wrap-property` | `overflow-wrap` Property | [example](https://preset-env.cssdb.org/features/#overflow-wrap-property) | [docs](https://github.com/mattdimu/postcss-replace-overflow-wrap#readme) |
| [
](https://cssdb.org/#place-properties) | `place-properties` | Place Properties | [example](https://preset-env.cssdb.org/features/#place-properties) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-place#readme) |
| [
](https://cssdb.org/#prefers-color-scheme-query) | `prefers-color-scheme-query` | `prefers-color-scheme` Media Query | [example](https://preset-env.cssdb.org/features/#prefers-color-scheme-query) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/css-prefers-color-scheme#readme) |
+| [
](https://cssdb.org/#random-function) | `random-function` | `random()` function | [example](https://preset-env.cssdb.org/features/#random-function) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-random-function#readme) |
| [
](https://cssdb.org/#rebeccapurple-color) | `rebeccapurple-color` | `rebeccapurple` Color | [example](https://preset-env.cssdb.org/features/#rebeccapurple-color) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-rebeccapurple#readme) |
| [
](https://cssdb.org/#relative-color-syntax) | `relative-color-syntax` | Relative Colors | [example](https://preset-env.cssdb.org/features/#relative-color-syntax) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-relative-color-syntax#readme) |
| [
](https://cssdb.org/#scope-pseudo-class) | `scope-pseudo-class` | `:scope()` Reference Element Pseudo-class | [example](https://preset-env.cssdb.org/features/#scope-pseudo-class) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-scope-pseudo-class#readme) |
+| [
](https://cssdb.org/#sign-functions) | `sign-functions` | `abs()` and `sign()` functions | [example](https://preset-env.cssdb.org/features/#sign-functions) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-sign-functions#readme) |
| [
](https://cssdb.org/#stepped-value-functions) | `stepped-value-functions` | `round()`, `mod()` and `rem()` functions | [example](https://preset-env.cssdb.org/features/#stepped-value-functions) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-stepped-value-functions#readme) |
| [
](https://cssdb.org/#system-ui-font-family) | `system-ui-font-family` | `system-ui` Font Family | [example](https://preset-env.cssdb.org/features/#system-ui-font-family) | [docs](https://github.com/JLHwung/postcss-font-family-system-ui#readme) |
| [
](https://cssdb.org/#text-decoration-shorthand) | `text-decoration-shorthand` | `text-decoration` shorthand | [example](https://preset-env.cssdb.org/features/#text-decoration-shorthand) | [docs](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-text-decoration-shorthand#readme) |
diff --git a/plugin-packs/postcss-preset-env/dist/index.cjs b/plugin-packs/postcss-preset-env/dist/index.cjs
index 992db5774..5ed1c7621 100644
--- a/plugin-packs/postcss-preset-env/dist/index.cjs
+++ b/plugin-packs/postcss-preset-env/dist/index.cjs
@@ -1 +1 @@
-"use strict";var s=require("autoprefixer"),e=require("cssdb"),o=require("browserslist"),t=require("@csstools/postcss-initial"),i=require("postcss-pseudo-class-any-link"),r=require("css-blank-pseudo"),a=require("postcss-page-break"),c=require("@csstools/postcss-cascade-layers"),n=require("postcss-attribute-case-insensitive"),p=require("postcss-clamp"),l=require("@csstools/postcss-color-function"),u=require("postcss-color-functional-notation"),m=require("@csstools/postcss-color-mix-function"),d=require("@csstools/postcss-content-alt-text"),g=require("postcss-custom-media"),f=require("postcss-custom-properties"),h=require("postcss-custom-selectors"),b=require("postcss-dir-pseudo-class"),v=require("@csstools/postcss-normalize-display-values"),N=require("postcss-double-position-gradients"),k=require("@csstools/postcss-exponential-functions"),y=require("@csstools/postcss-logical-float-and-clear"),w=require("postcss-focus-visible"),q=require("postcss-focus-within"),x=require("@csstools/postcss-font-format-keywords"),F=require("postcss-font-variant"),$=require("@csstools/postcss-gamut-mapping"),O=require("postcss-gap-properties"),S=require("@csstools/postcss-gradients-interpolation-method"),C=require("css-has-pseudo"),P=require("postcss-color-hex-alpha"),E=require("@csstools/postcss-hwb-function"),I=require("@csstools/postcss-ic-unit"),A=require("postcss-image-set-function"),B=require("@csstools/postcss-is-pseudo-class"),L=require("postcss-lab-function"),_=require("@csstools/postcss-light-dark-function"),U=require("@csstools/postcss-logical-overflow"),j=require("@csstools/postcss-logical-overscroll-behavior"),M=require("postcss-logical"),z=require("@csstools/postcss-logical-resize"),D=require("@csstools/postcss-logical-viewport-units"),R=require("@csstools/postcss-media-queries-aspect-ratio-number-values"),T=require("@csstools/postcss-media-minmax"),V=require("@csstools/postcss-nested-calc"),H=require("postcss-nesting"),W=require("postcss-selector-not"),G=require("@csstools/postcss-oklab-function"),K=require("postcss-opacity-percentage"),Z=require("postcss-overflow-shorthand"),Q=require("postcss-replace-overflow-wrap"),J=require("postcss-place"),X=require("css-prefers-color-scheme"),Y=require("@csstools/postcss-progressive-custom-properties"),ss=require("postcss-color-rebeccapurple"),es=require("@csstools/postcss-relative-color-syntax"),os=require("@csstools/postcss-scope-pseudo-class"),ts=require("@csstools/postcss-stepped-value-functions"),is=require("@csstools/postcss-text-decoration-shorthand"),rs=require("@csstools/postcss-trigonometric-functions"),as=require("@csstools/postcss-unset-value");const cs={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README.md#browser","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-focus-within/README.md#browser","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README.md#browser","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README.md#browser"},ns=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const t=[],i=[];!1!==e.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==cs[s.id]&&t.push(s.id)})),i.sort(((s,e)=>s.localeCompare(e))),t.sort(((s,e)=>s.localeCompare(e))),i.forEach((s=>o.log(s))),t.length&&(o.log("These feature(s) need a browser library to work:"),t.forEach((s=>o.log(` ${s}: ${cs[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return e.preserve=s.preserve,e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log("Using features from Stage 2 (default)."),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}.`),o}const ps=Symbol("insertBefore"),ls=Symbol("insertAfter"),us=Symbol("insertOrder"),ms=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?ps:ls,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let r=e[o];Array.isArray(r)||(r=[r]);for(let s=0;sfeatureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}function getOptionsForBrowsersByFeature(s,e,o,t){switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"any-link-pseudo-class":if(s.find((s=>s.startsWith("ie ")||"edge 12"===s||"edge 13"===s||"edge 14"===s||"edge 15"===s||"edge 16"===s||"edge 17"===s||"edge 18"===s)))return t.log("- 'any-link-pseudo-class' setting 'subFeatures: { areaHrefNeedsFixing: true }' due to lack of browser support for area[href] in Edge and IE."),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":case"logical-overflow":case"logical-overscroll-behavior":return"logical"in o?o.logical:{};default:return{}}}const ys=["and_chr","and_ff","android","chrome","edge","firefox","ie","ios_saf","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return ys.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&ws.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}const ws=/^[0-9|.]+$/;function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[ps]||s[ls]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[ms],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:ks.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,r){let a,c;return a=getOptionsForBrowsersByFeature(s,o,i,r),a=t?Object.assign({},a,t,featureOptions(e,o.id)):Object.assign({},a,featureOptions(e,o.id)),"progressive-custom-properties"!==o.id&&(a.enableProgressiveCustomProperties=!1),"overflow-wrap-property"===o.id&&"preserve"in a&&(a.method=a.preserve?"copy":"replace"),c=o.plugin.postcss&&"function"==typeof o.plugin?o.plugin(a):o.plugin&&o.plugin.default&&"function"==typeof o.plugin.default&&o.plugin.default.postcss?o.plugin.default(a):o.plugin,{browsers:o.browsers,vendors_implementations:o.vendors_implementations,plugin:c,pluginOptions:a,id:o.id}}function featureOptions(s,e){if(!(e in s))return;const o=s[e];return Array.isArray(o)?o[1]:o}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}const qs=new Set(["progressive-custom-properties"]);function listFeatures(s,e,t,i){const r=Object(e.features),a="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,c=Object(e.insertBefore),n=Object(e.insertAfter),p=e.browsers?void 0:e.env,l=e.browsers,u=clamp(0,intOrZero(e.minimumVendorImplementations),3);u>0&&i.log(`Using features with ${u} or more vendor implementations.`);const m=stageFromOptions(e,i),d=prepareFeaturesList([...s,{id:"progressive-custom-properties"}],c,n).map((s=>formatPolyfillableFeature(s))).filter((s=>!!qs.has(s.id)||(0===u||(!(!s[ps]&&!s[ls])||(u<=s.vendors_implementations||(!0===featureEnabledByOptions(r,s.id)?(i.log(`- '${s.id}' enabled manually even when it lacks the required interop (${s.vendors_implementations} out of ${u}).`),!0):(i.log(`- '${s.id}' disabled because it lacks the required interop (${s.vendors_implementations} out of ${u}).`),!1))))))),g=o(l,{env:p,ignoreUnknownVersions:!0}).filter((s=>ys.includes(s.split(" ")[0])));return d.filter((s=>{if(qs.has(s.id))return!0;const e=s.stage>=m,o=a||!ns.includes(s.id),t=featureEnabledByOptions(r,s.id),c=!1===t,n=!0===t||e&&o;return c?i.log(`- '${s.id}' disabled manually`):e?o||i.log(`- '${s.id}' disabled because 'enableClientSidePolyfills' is 'false'.`):n?i.log(`- '${s.id}' enabled manually even when it lacks the required stage (${s.stage} out of ${m}).`):i.log(`- '${s.id}' disabled because it lacks the required stage (${s.stage} out of ${m}).`),!c&&n})).map((s=>formatStagedFeature(g,r,s,t,e,i))).filter((s=>{if(qs.has(s.id))return!0;const e=featureEnabledByOptions(r,s.id);if(!0===e||!1===e)return e;const t=o(s.browsers,{ignoreUnknownVersions:!0}),a=g.filter((s=>t.some((e=>e===s))));return a.length>0?i.log(`- '${s.id}' enabled for:\n ${a.join("\n ")}`):i.log(`- '${s.id}' disabled because all targeted browsers support it.`),a.length>0}))}function featureEnabledByOptions(s,e){if(!(e in s))return"auto";const o=s[e];return Array.isArray(o)?!0===o[0]||!1!==o[0]&&"auto":Boolean(o)}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}emitLogs(s){s&&s.warn(this.logs.join("\n")),this.resetLogger()}}var xs=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-mix-function",id:"color-mix",importName:"postcssColorMixFunction"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"@csstools/postcss-content-alt-text",id:"content-alt-text",importName:"postcssContentAltText"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"@csstools/postcss-exponential-functions",id:"exponential-functions",importName:"postcssExponentialFunctions"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"@csstools/postcss-gamut-mapping",id:"gamut-mapping",importName:"postcssGamutMapping"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-gradients-interpolation-method",id:"gradients-interpolation-method",importName:"postcssGradientsInterpolationMethod"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"@csstools/postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"@csstools/postcss-light-dark-function",id:"light-dark-function",importName:"postcssLightDarkFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-overflow",id:"logical-overflow",importName:"postcssLogicalOverflow"},{packageName:"@csstools/postcss-logical-overscroll-behavior",id:"logical-overscroll-behavior",importName:"postcssLogicalOverscrollBehavor"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"@csstools/postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"@csstools/postcss-relative-color-syntax",id:"relative-color-syntax",importName:"postcssRelativeColorSyntax"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"},{packageName:"@csstools/postcss-progressive-custom-properties",id:"progressive-custom-properties",importName:"postcssProgressiveCustomProperties",omitTypedOptions:!0,omitDocs:!0}];function getPackageNamesToIds(){const s={};return xs.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=xs.map((s=>s.id)),i=xs.map((s=>s.packageName)),r=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const a=[...t.map((e=>[e,levenshteinDistance(s,e)])),...i.map((e=>[r[e],levenshteinDistance(s,e)]))].sort(((s,e)=>s[1]-e[1])).filter((s=>s[1]<10)),c=new Set;for(let s=0;s=3));s++);if(!c.size)return void e.warn(o,`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`);let n='"';n+=Array.from(c).join('", "'),n+='"',e.warn(o,`Unknown feature: "${s}", did you mean one of: ${n}`)}))}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const creator=o=>{const t=new Logger,i=Object(o),r=Object.keys(Object(i.features)),a=i.browsers?void 0:i.env,c=i.browsers,n=initializeSharedOptions(i),p=listFeatures(e,i,n,t),l=p.map((s=>s.plugin));!1!==i.autoprefixer&&l.push(s(Object.assign({env:a,overrideBrowserslist:c},i.autoprefixer))),logFeaturesList(p,i,t);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit(s,{result:e}){pluginIdHelp(r,s,e),i.debug&&t.emitLogs(e),t.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0,module.exports=creator;
+"use strict";var s=require("autoprefixer"),e=require("cssdb"),o=require("browserslist"),t=require("@csstools/postcss-initial"),i=require("postcss-pseudo-class-any-link"),r=require("css-blank-pseudo"),a=require("postcss-page-break"),c=require("@csstools/postcss-cascade-layers"),n=require("postcss-attribute-case-insensitive"),p=require("postcss-clamp"),l=require("@csstools/postcss-color-function"),u=require("postcss-color-functional-notation"),m=require("@csstools/postcss-color-mix-function"),d=require("@csstools/postcss-content-alt-text"),g=require("postcss-custom-media"),f=require("postcss-custom-properties"),h=require("postcss-custom-selectors"),b=require("postcss-dir-pseudo-class"),v=require("@csstools/postcss-normalize-display-values"),N=require("postcss-double-position-gradients"),k=require("@csstools/postcss-exponential-functions"),y=require("@csstools/postcss-logical-float-and-clear"),w=require("postcss-focus-visible"),q=require("postcss-focus-within"),x=require("@csstools/postcss-font-format-keywords"),F=require("postcss-font-variant"),$=require("@csstools/postcss-gamut-mapping"),O=require("postcss-gap-properties"),S=require("@csstools/postcss-gradients-interpolation-method"),C=require("css-has-pseudo"),P=require("postcss-color-hex-alpha"),E=require("@csstools/postcss-hwb-function"),I=require("@csstools/postcss-ic-unit"),A=require("postcss-image-set-function"),B=require("@csstools/postcss-is-pseudo-class"),L=require("postcss-lab-function"),_=require("@csstools/postcss-light-dark-function"),U=require("@csstools/postcss-logical-overflow"),j=require("@csstools/postcss-logical-overscroll-behavior"),M=require("postcss-logical"),z=require("@csstools/postcss-logical-resize"),D=require("@csstools/postcss-logical-viewport-units"),R=require("@csstools/postcss-media-queries-aspect-ratio-number-values"),T=require("@csstools/postcss-media-minmax"),V=require("@csstools/postcss-nested-calc"),H=require("postcss-nesting"),W=require("postcss-selector-not"),G=require("@csstools/postcss-oklab-function"),K=require("postcss-opacity-percentage"),Z=require("postcss-overflow-shorthand"),Q=require("postcss-replace-overflow-wrap"),J=require("postcss-place"),X=require("css-prefers-color-scheme"),Y=require("@csstools/postcss-progressive-custom-properties"),ss=require("@csstools/postcss-random-function"),es=require("postcss-color-rebeccapurple"),os=require("@csstools/postcss-relative-color-syntax"),ts=require("@csstools/postcss-scope-pseudo-class"),is=require("@csstools/postcss-sign-functions"),rs=require("@csstools/postcss-stepped-value-functions"),as=require("@csstools/postcss-text-decoration-shorthand"),cs=require("@csstools/postcss-trigonometric-functions"),ns=require("@csstools/postcss-unset-value");const ps={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README.md#browser","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-focus-within/README.md#browser","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README.md#browser","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README.md#browser"},ls=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const t=[],i=[];!1!==e.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==ps[s.id]&&t.push(s.id)})),i.sort(((s,e)=>s.localeCompare(e))),t.sort(((s,e)=>s.localeCompare(e))),i.forEach((s=>o.log(s))),t.length&&(o.log("These feature(s) need a browser library to work:"),t.forEach((s=>o.log(` ${s}: ${ps[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return e.preserve=s.preserve,e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log("Using features from Stage 2 (default)."),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}.`),o}const us=Symbol("insertBefore"),ms=Symbol("insertAfter"),ds=Symbol("insertOrder"),gs=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?us:ms,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let r=e[o];Array.isArray(r)||(r=[r]);for(let s=0;sfeatureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}function getOptionsForBrowsersByFeature(s,e,o,t){switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"any-link-pseudo-class":if(s.find((s=>s.startsWith("ie ")||"edge 12"===s||"edge 13"===s||"edge 14"===s||"edge 15"===s||"edge 16"===s||"edge 17"===s||"edge 18"===s)))return t.log("- 'any-link-pseudo-class' setting 'subFeatures: { areaHrefNeedsFixing: true }' due to lack of browser support for area[href] in Edge and IE."),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":case"logical-overflow":case"logical-overscroll-behavior":return"logical"in o?o.logical:{};default:return{}}}const qs=["and_chr","and_ff","android","chrome","edge","firefox","ie","ios_saf","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return qs.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&xs.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}const xs=/^[0-9|.]+$/;function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[us]||s[ms]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[gs],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:ws.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,r){let a,c;return a=getOptionsForBrowsersByFeature(s,o,i,r),a=t?Object.assign({},a,t,featureOptions(e,o.id)):Object.assign({},a,featureOptions(e,o.id)),"progressive-custom-properties"!==o.id&&(a.enableProgressiveCustomProperties=!1),"overflow-wrap-property"===o.id&&"preserve"in a&&(a.method=a.preserve?"copy":"replace"),c=o.plugin.postcss&&"function"==typeof o.plugin?o.plugin(a):o.plugin&&o.plugin.default&&"function"==typeof o.plugin.default&&o.plugin.default.postcss?o.plugin.default(a):o.plugin,{browsers:o.browsers,vendors_implementations:o.vendors_implementations,plugin:c,pluginOptions:a,id:o.id}}function featureOptions(s,e){if(!(e in s))return;const o=s[e];return Array.isArray(o)?o[1]:o}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}const Fs=new Set(["progressive-custom-properties"]);function listFeatures(s,e,t,i){const r=Object(e.features),a="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,c=Object(e.insertBefore),n=Object(e.insertAfter),p=e.browsers?void 0:e.env,l=e.browsers,u=clamp(0,intOrZero(e.minimumVendorImplementations),3);u>0&&i.log(`Using features with ${u} or more vendor implementations.`);const m=stageFromOptions(e,i),d=prepareFeaturesList([...s,{id:"progressive-custom-properties"}],c,n).map((s=>formatPolyfillableFeature(s))).filter((s=>!!Fs.has(s.id)||(0===u||(!(!s[us]&&!s[ms])||(u<=s.vendors_implementations||(!0===featureEnabledByOptions(r,s.id)?(i.log(`- '${s.id}' enabled manually even when it lacks the required interop (${s.vendors_implementations} out of ${u}).`),!0):(i.log(`- '${s.id}' disabled because it lacks the required interop (${s.vendors_implementations} out of ${u}).`),!1))))))),g=o(l,{env:p,ignoreUnknownVersions:!0}).filter((s=>qs.includes(s.split(" ")[0])));return d.filter((s=>{if(Fs.has(s.id))return!0;const e=s.stage>=m,o=a||!ls.includes(s.id),t=featureEnabledByOptions(r,s.id),c=!1===t,n=!0===t||e&&o;return c?i.log(`- '${s.id}' disabled manually`):e?o||i.log(`- '${s.id}' disabled because 'enableClientSidePolyfills' is 'false'.`):n?i.log(`- '${s.id}' enabled manually even when it lacks the required stage (${s.stage} out of ${m}).`):i.log(`- '${s.id}' disabled because it lacks the required stage (${s.stage} out of ${m}).`),!c&&n})).map((s=>formatStagedFeature(g,r,s,t,e,i))).filter((s=>{if(Fs.has(s.id))return!0;const e=featureEnabledByOptions(r,s.id);if(!0===e||!1===e)return e;const t=o(s.browsers,{ignoreUnknownVersions:!0}),a=g.filter((s=>t.some((e=>e===s))));return a.length>0?i.log(`- '${s.id}' enabled for:\n ${a.join("\n ")}`):i.log(`- '${s.id}' disabled because all targeted browsers support it.`),a.length>0}))}function featureEnabledByOptions(s,e){if(!(e in s))return"auto";const o=s[e];return Array.isArray(o)?!0===o[0]||!1!==o[0]&&"auto":Boolean(o)}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}emitLogs(s){s&&s.warn(this.logs.join("\n")),this.resetLogger()}}var $s=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-mix-function",id:"color-mix",importName:"postcssColorMixFunction"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"@csstools/postcss-content-alt-text",id:"content-alt-text",importName:"postcssContentAltText"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"@csstools/postcss-exponential-functions",id:"exponential-functions",importName:"postcssExponentialFunctions"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"@csstools/postcss-gamut-mapping",id:"gamut-mapping",importName:"postcssGamutMapping"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-gradients-interpolation-method",id:"gradients-interpolation-method",importName:"postcssGradientsInterpolationMethod"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"@csstools/postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"@csstools/postcss-light-dark-function",id:"light-dark-function",importName:"postcssLightDarkFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-overflow",id:"logical-overflow",importName:"postcssLogicalOverflow"},{packageName:"@csstools/postcss-logical-overscroll-behavior",id:"logical-overscroll-behavior",importName:"postcssLogicalOverscrollBehavor"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"@csstools/postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"@csstools/postcss-relative-color-syntax",id:"relative-color-syntax",importName:"postcssRelativeColorSyntax"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"},{packageName:"@csstools/postcss-sign-functions",id:"sign-functions",importName:"postcssSignFunctions"},{packageName:"@csstools/postcss-random-function",id:"random-function",importName:"postcssRandomFunction"},{packageName:"@csstools/postcss-progressive-custom-properties",id:"progressive-custom-properties",importName:"postcssProgressiveCustomProperties",omitTypedOptions:!0,omitDocs:!0}];function getPackageNamesToIds(){const s={};return $s.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=$s.map((s=>s.id)),i=$s.map((s=>s.packageName)),r=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const a=[...t.map((e=>[e,levenshteinDistance(s,e)])),...i.map((e=>[r[e],levenshteinDistance(s,e)]))].sort(((s,e)=>s[1]-e[1])).filter((s=>s[1]<10)),c=new Set;for(let s=0;s=3));s++);if(!c.size)return void e.warn(o,`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`);let n='"';n+=Array.from(c).join('", "'),n+='"',e.warn(o,`Unknown feature: "${s}", did you mean one of: ${n}`)}))}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const creator=o=>{const t=new Logger,i=Object(o),r=Object.keys(Object(i.features)),a=i.browsers?void 0:i.env,c=i.browsers,n=initializeSharedOptions(i),p=listFeatures(e,i,n,t),l=p.map((s=>s.plugin));!1!==i.autoprefixer&&l.push(s(Object.assign({env:a,overrideBrowserslist:c},i.autoprefixer))),logFeaturesList(p,i,t);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit(s,{result:e}){pluginIdHelp(r,s,e),i.debug&&t.emitLogs(e),t.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0,module.exports=creator;
diff --git a/plugin-packs/postcss-preset-env/dist/index.d.ts b/plugin-packs/postcss-preset-env/dist/index.d.ts
index 35f55bfbd..50f39947c 100644
--- a/plugin-packs/postcss-preset-env/dist/index.d.ts
+++ b/plugin-packs/postcss-preset-env/dist/index.d.ts
@@ -40,14 +40,16 @@ import type { pluginOptions as pluginOptions_43 } from '@csstools/postcss-oklab-
import type { pluginOptions as pluginOptions_44 } from 'postcss-overflow-shorthand';
import type { pluginOptions as pluginOptions_45 } from 'postcss-place';
import type { pluginOptions as pluginOptions_46 } from 'css-prefers-color-scheme';
-import type { pluginOptions as pluginOptions_47 } from 'postcss-color-rebeccapurple';
-import type { pluginOptions as pluginOptions_48 } from '@csstools/postcss-relative-color-syntax';
-import type { pluginOptions as pluginOptions_49 } from '@csstools/postcss-scope-pseudo-class';
+import type { pluginOptions as pluginOptions_47 } from '@csstools/postcss-random-function';
+import type { pluginOptions as pluginOptions_48 } from 'postcss-color-rebeccapurple';
+import type { pluginOptions as pluginOptions_49 } from '@csstools/postcss-relative-color-syntax';
import type { pluginOptions as pluginOptions_5 } from '@csstools/postcss-cascade-layers';
-import type { pluginOptions as pluginOptions_50 } from '@csstools/postcss-stepped-value-functions';
-import type { pluginOptions as pluginOptions_51 } from '@csstools/postcss-text-decoration-shorthand';
-import type { pluginOptions as pluginOptions_52 } from '@csstools/postcss-trigonometric-functions';
-import type { pluginOptions as pluginOptions_53 } from '@csstools/postcss-unset-value';
+import type { pluginOptions as pluginOptions_50 } from '@csstools/postcss-scope-pseudo-class';
+import type { pluginOptions as pluginOptions_51 } from '@csstools/postcss-sign-functions';
+import type { pluginOptions as pluginOptions_52 } from '@csstools/postcss-stepped-value-functions';
+import type { pluginOptions as pluginOptions_53 } from '@csstools/postcss-text-decoration-shorthand';
+import type { pluginOptions as pluginOptions_54 } from '@csstools/postcss-trigonometric-functions';
+import type { pluginOptions as pluginOptions_55 } from '@csstools/postcss-unset-value';
import type { pluginOptions as pluginOptions_6 } from 'postcss-attribute-case-insensitive';
import type { pluginOptions as pluginOptions_7 } from '@csstools/postcss-color-function';
import type { pluginOptions as pluginOptions_8 } from 'postcss-color-functional-notation';
@@ -249,22 +251,26 @@ export declare type pluginsOptions = {
'place-properties'?: subPluginOptions;
/** plugin options for "css-prefers-color-scheme" */
'prefers-color-scheme-query'?: subPluginOptions;
+ /** plugin options for "@csstools/postcss-random-function" */
+ 'random-function'?: subPluginOptions;
/** plugin options for "postcss-color-rebeccapurple" */
- 'rebeccapurple-color'?: subPluginOptions;
+ 'rebeccapurple-color'?: subPluginOptions;
/** plugin options for "@csstools/postcss-relative-color-syntax" */
- 'relative-color-syntax'?: subPluginOptions;
+ 'relative-color-syntax'?: subPluginOptions;
/** plugin options for "@csstools/postcss-scope-pseudo-class" */
- 'scope-pseudo-class'?: subPluginOptions;
+ 'scope-pseudo-class'?: subPluginOptions;
+ /** plugin options for "@csstools/postcss-sign-functions" */
+ 'sign-functions'?: subPluginOptions;
/** plugin options for "@csstools/postcss-stepped-value-functions" */
- 'stepped-value-functions'?: subPluginOptions;
+ 'stepped-value-functions'?: subPluginOptions;
/** plugin options for "postcss-system-ui-font-family" */
'system-ui-font-family'?: subPluginOptions;
/** plugin options for "@csstools/postcss-text-decoration-shorthand" */
- 'text-decoration-shorthand'?: subPluginOptions;
+ 'text-decoration-shorthand'?: subPluginOptions;
/** plugin options for "@csstools/postcss-trigonometric-functions" */
- 'trigonometric-functions'?: subPluginOptions;
+ 'trigonometric-functions'?: subPluginOptions;
/** plugin options for "@csstools/postcss-unset-value" */
- 'unset-value'?: subPluginOptions;
+ 'unset-value'?: subPluginOptions;
};
/** postcss-clamp plugin options */
diff --git a/plugin-packs/postcss-preset-env/dist/index.mjs b/plugin-packs/postcss-preset-env/dist/index.mjs
index 51e4ad480..b1f6a1ebe 100644
--- a/plugin-packs/postcss-preset-env/dist/index.mjs
+++ b/plugin-packs/postcss-preset-env/dist/index.mjs
@@ -1 +1 @@
-import s from"autoprefixer";import o from"cssdb";import e from"browserslist";import t from"@csstools/postcss-initial";import i from"postcss-pseudo-class-any-link";import r from"css-blank-pseudo";import a from"postcss-page-break";import c from"@csstools/postcss-cascade-layers";import p from"postcss-attribute-case-insensitive";import n from"postcss-clamp";import l from"@csstools/postcss-color-function";import m from"postcss-color-functional-notation";import u from"@csstools/postcss-color-mix-function";import d from"@csstools/postcss-content-alt-text";import f from"postcss-custom-media";import g from"postcss-custom-properties";import h from"postcss-custom-selectors";import b from"postcss-dir-pseudo-class";import v from"@csstools/postcss-normalize-display-values";import N from"postcss-double-position-gradients";import k from"@csstools/postcss-exponential-functions";import y from"@csstools/postcss-logical-float-and-clear";import w from"postcss-focus-visible";import x from"postcss-focus-within";import F from"@csstools/postcss-font-format-keywords";import $ from"postcss-font-variant";import O from"@csstools/postcss-gamut-mapping";import S from"postcss-gap-properties";import C from"@csstools/postcss-gradients-interpolation-method";import P from"css-has-pseudo";import E from"postcss-color-hex-alpha";import I from"@csstools/postcss-hwb-function";import A from"@csstools/postcss-ic-unit";import B from"postcss-image-set-function";import L from"@csstools/postcss-is-pseudo-class";import q from"postcss-lab-function";import _ from"@csstools/postcss-light-dark-function";import U from"@csstools/postcss-logical-overflow";import j from"@csstools/postcss-logical-overscroll-behavior";import M from"postcss-logical";import z from"@csstools/postcss-logical-resize";import D from"@csstools/postcss-logical-viewport-units";import R from"@csstools/postcss-media-queries-aspect-ratio-number-values";import T from"@csstools/postcss-media-minmax";import V from"@csstools/postcss-nested-calc";import H from"postcss-nesting";import W from"postcss-selector-not";import G from"@csstools/postcss-oklab-function";import K from"postcss-opacity-percentage";import Z from"postcss-overflow-shorthand";import Q from"postcss-replace-overflow-wrap";import J from"postcss-place";import X from"css-prefers-color-scheme";import Y from"@csstools/postcss-progressive-custom-properties";import ss from"postcss-color-rebeccapurple";import os from"@csstools/postcss-relative-color-syntax";import es from"@csstools/postcss-scope-pseudo-class";import ts from"@csstools/postcss-stepped-value-functions";import is from"@csstools/postcss-text-decoration-shorthand";import rs from"@csstools/postcss-trigonometric-functions";import as from"@csstools/postcss-unset-value";const cs={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README.md#browser","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-focus-within/README.md#browser","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README.md#browser","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README.md#browser"},ps=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,o,e){if(o.debug){e.log("Enabling the following feature(s):");const t=[],i=[];!1!==o.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==cs[s.id]&&t.push(s.id)})),i.sort(((s,o)=>s.localeCompare(o))),t.sort(((s,o)=>s.localeCompare(o))),i.forEach((s=>e.log(s))),t.length&&(e.log("These feature(s) need a browser library to work:"),t.forEach((s=>e.log(` ${s}: ${cs[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const o={};return o.preserve=s.preserve,o}return!1}function clamp(s,o,e){return Math.max(s,Math.min(o,e))}function stageFromOptions(s,o){let e=2;if(void 0===s.stage)return o.log("Using features from Stage 2 (default)."),e;if(!1===s.stage)e=5;else{let o=parseInt(s.stage,10);Number.isNaN(o)&&(o=0),e=clamp(0,o,5)}return 5===e?o.log('Stage has been disabled, features will be handled via the "features" option.'):o.log(`Using features from Stage ${e}.`),e}const ns=Symbol("insertBefore"),ls=Symbol("insertAfter"),ms=Symbol("insertOrder"),us=Symbol("plugin");function getTransformedInsertions(s,o,e){if("insertBefore"!==e&&"insertAfter"!==e)return[];const t="insertBefore"===e?ns:ls,i=[];for(const e in o){if(!Object.hasOwnProperty.call(o,e))continue;if(!s.find((s=>s.id===e)))continue;let r=o[e];Array.isArray(r)||(r=[r]);for(let s=0;sfeatureIsInsertedOrHasAPlugin(s))).sort(((s,o)=>featureIsLess(s,o)))}function getOptionsForBrowsersByFeature(s,o,e,t){switch(o.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"any-link-pseudo-class":if(s.find((s=>s.startsWith("ie ")||"edge 12"===s||"edge 13"===s||"edge 14"===s||"edge 15"===s||"edge 16"===s||"edge 17"===s||"edge 18"===s)))return t.log("- 'any-link-pseudo-class' setting 'subFeatures: { areaHrefNeedsFixing: true }' due to lack of browser support for area[href] in Edge and IE."),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":case"logical-overflow":case"logical-overscroll-behavior":return"logical"in e?e.logical:{};default:return{}}}const ys=["and_chr","and_ff","android","chrome","edge","firefox","ie","ios_saf","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const o=[];return ys.forEach((e=>{if("op_mini"===e&&void 0===s.browser_support[e])return void o.push("op_mini all");const t=s.browser_support[e];"string"==typeof t&&ws.test(t)?o.push(`${e} < ${s.browser_support[e]}`):o.push(`${e} >= 1`)})),o}const ws=/^[0-9|.]+$/;function formatPolyfillableFeature(s){const o=getUnsupportedBrowsersByFeature(s);if(s[ns]||s[ls]){let e=s.id;return e=s.insertBefore?`before-${e}`:`after-${e}`,{browsers:o,vendors_implementations:s.vendors_implementations,plugin:s[us],id:e,stage:6}}return{browsers:o,vendors_implementations:s.vendors_implementations,plugin:ks.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,o,e,t,i,r){let a,c;return a=getOptionsForBrowsersByFeature(s,e,i,r),a=t?Object.assign({},a,t,featureOptions(o,e.id)):Object.assign({},a,featureOptions(o,e.id)),"progressive-custom-properties"!==e.id&&(a.enableProgressiveCustomProperties=!1),"overflow-wrap-property"===e.id&&"preserve"in a&&(a.method=a.preserve?"copy":"replace"),c=e.plugin.postcss&&"function"==typeof e.plugin?e.plugin(a):e.plugin&&e.plugin.default&&"function"==typeof e.plugin.default&&e.plugin.default.postcss?e.plugin.default(a):e.plugin,{browsers:e.browsers,vendors_implementations:e.vendors_implementations,plugin:c,pluginOptions:a,id:e.id}}function featureOptions(s,o){if(!(o in s))return;const e=s[o];return Array.isArray(e)?e[1]:e}function intOrZero(s){const o=parseInt(s,10);return Number.isNaN(o)?0:o}const xs=new Set(["progressive-custom-properties"]);function listFeatures(s,o,t,i){const r=Object(o.features),a="enableClientSidePolyfills"in o&&o.enableClientSidePolyfills,c=Object(o.insertBefore),p=Object(o.insertAfter),n=o.browsers?void 0:o.env,l=o.browsers,m=clamp(0,intOrZero(o.minimumVendorImplementations),3);m>0&&i.log(`Using features with ${m} or more vendor implementations.`);const u=stageFromOptions(o,i),d=prepareFeaturesList([...s,{id:"progressive-custom-properties"}],c,p).map((s=>formatPolyfillableFeature(s))).filter((s=>!!xs.has(s.id)||(0===m||(!(!s[ns]&&!s[ls])||(m<=s.vendors_implementations||(!0===featureEnabledByOptions(r,s.id)?(i.log(`- '${s.id}' enabled manually even when it lacks the required interop (${s.vendors_implementations} out of ${m}).`),!0):(i.log(`- '${s.id}' disabled because it lacks the required interop (${s.vendors_implementations} out of ${m}).`),!1))))))),f=e(l,{env:n,ignoreUnknownVersions:!0}).filter((s=>ys.includes(s.split(" ")[0])));return d.filter((s=>{if(xs.has(s.id))return!0;const o=s.stage>=u,e=a||!ps.includes(s.id),t=featureEnabledByOptions(r,s.id),c=!1===t,p=!0===t||o&&e;return c?i.log(`- '${s.id}' disabled manually`):o?e||i.log(`- '${s.id}' disabled because 'enableClientSidePolyfills' is 'false'.`):p?i.log(`- '${s.id}' enabled manually even when it lacks the required stage (${s.stage} out of ${u}).`):i.log(`- '${s.id}' disabled because it lacks the required stage (${s.stage} out of ${u}).`),!c&&p})).map((s=>formatStagedFeature(f,r,s,t,o,i))).filter((s=>{if(xs.has(s.id))return!0;const o=featureEnabledByOptions(r,s.id);if(!0===o||!1===o)return o;const t=e(s.browsers,{ignoreUnknownVersions:!0}),a=f.filter((s=>t.some((o=>o===s))));return a.length>0?i.log(`- '${s.id}' enabled for:\n ${a.join("\n ")}`):i.log(`- '${s.id}' disabled because all targeted browsers support it.`),a.length>0}))}function featureEnabledByOptions(s,o){if(!(o in s))return"auto";const e=s[o];return Array.isArray(e)?!0===e[0]||!1!==e[0]&&"auto":Boolean(e)}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}emitLogs(s){s&&s.warn(this.logs.join("\n")),this.resetLogger()}}var Fs=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-mix-function",id:"color-mix",importName:"postcssColorMixFunction"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"@csstools/postcss-content-alt-text",id:"content-alt-text",importName:"postcssContentAltText"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"@csstools/postcss-exponential-functions",id:"exponential-functions",importName:"postcssExponentialFunctions"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"@csstools/postcss-gamut-mapping",id:"gamut-mapping",importName:"postcssGamutMapping"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-gradients-interpolation-method",id:"gradients-interpolation-method",importName:"postcssGradientsInterpolationMethod"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"@csstools/postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"@csstools/postcss-light-dark-function",id:"light-dark-function",importName:"postcssLightDarkFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-overflow",id:"logical-overflow",importName:"postcssLogicalOverflow"},{packageName:"@csstools/postcss-logical-overscroll-behavior",id:"logical-overscroll-behavior",importName:"postcssLogicalOverscrollBehavor"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"@csstools/postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"@csstools/postcss-relative-color-syntax",id:"relative-color-syntax",importName:"postcssRelativeColorSyntax"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"},{packageName:"@csstools/postcss-progressive-custom-properties",id:"progressive-custom-properties",importName:"postcssProgressiveCustomProperties",omitTypedOptions:!0,omitDocs:!0}];function getPackageNamesToIds(){const s={};return Fs.forEach((o=>{s[o.packageName]=o.id})),s}function pluginIdHelp(s,o,e){const t=Fs.map((s=>s.id)),i=Fs.map((s=>s.packageName)),r=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const a=[...t.map((o=>[o,levenshteinDistance(s,o)])),...i.map((o=>[r[o],levenshteinDistance(s,o)]))].sort(((s,o)=>s[1]-o[1])).filter((s=>s[1]<10)),c=new Set;for(let s=0;s=3));s++);if(!c.size)return void o.warn(e,`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`);let p='"';p+=Array.from(c).join('", "'),p+='"',o.warn(e,`Unknown feature: "${s}", did you mean one of: ${p}`)}))}function levenshteinDistance(s,o){if(!s.length)return o.length;if(!o.length)return s.length;const e=[];for(let t=0;t<=o.length;t++){e[t]=[t];for(let i=1;i<=s.length;i++)e[t][i]=0===t?i:Math.min(e[t-1][i]+1,e[t][i-1]+1,e[t-1][i-1]+(s[i-1]===o[t-1]?0:1))}return e[o.length][s.length]}const creator=e=>{const t=new Logger,i=Object(e),r=Object.keys(Object(i.features)),a=i.browsers?void 0:i.env,c=i.browsers,p=initializeSharedOptions(i),n=listFeatures(o,i,p,t),l=n.map((s=>s.plugin));!1!==i.autoprefixer&&l.push(s(Object.assign({env:a,overrideBrowserslist:c},i.autoprefixer))),logFeaturesList(n,i,t);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit(s,{result:o}){pluginIdHelp(r,s,o),i.debug&&t.emitLogs(o),t.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0;export{creator as default};
+import s from"autoprefixer";import o from"cssdb";import e from"browserslist";import t from"@csstools/postcss-initial";import i from"postcss-pseudo-class-any-link";import a from"css-blank-pseudo";import r from"postcss-page-break";import c from"@csstools/postcss-cascade-layers";import p from"postcss-attribute-case-insensitive";import n from"postcss-clamp";import l from"@csstools/postcss-color-function";import m from"postcss-color-functional-notation";import u from"@csstools/postcss-color-mix-function";import d from"@csstools/postcss-content-alt-text";import f from"postcss-custom-media";import g from"postcss-custom-properties";import h from"postcss-custom-selectors";import b from"postcss-dir-pseudo-class";import v from"@csstools/postcss-normalize-display-values";import N from"postcss-double-position-gradients";import k from"@csstools/postcss-exponential-functions";import y from"@csstools/postcss-logical-float-and-clear";import w from"postcss-focus-visible";import x from"postcss-focus-within";import F from"@csstools/postcss-font-format-keywords";import $ from"postcss-font-variant";import O from"@csstools/postcss-gamut-mapping";import S from"postcss-gap-properties";import C from"@csstools/postcss-gradients-interpolation-method";import P from"css-has-pseudo";import E from"postcss-color-hex-alpha";import I from"@csstools/postcss-hwb-function";import A from"@csstools/postcss-ic-unit";import B from"postcss-image-set-function";import L from"@csstools/postcss-is-pseudo-class";import q from"postcss-lab-function";import _ from"@csstools/postcss-light-dark-function";import U from"@csstools/postcss-logical-overflow";import j from"@csstools/postcss-logical-overscroll-behavior";import M from"postcss-logical";import z from"@csstools/postcss-logical-resize";import D from"@csstools/postcss-logical-viewport-units";import R from"@csstools/postcss-media-queries-aspect-ratio-number-values";import T from"@csstools/postcss-media-minmax";import V from"@csstools/postcss-nested-calc";import H from"postcss-nesting";import W from"postcss-selector-not";import G from"@csstools/postcss-oklab-function";import K from"postcss-opacity-percentage";import Z from"postcss-overflow-shorthand";import Q from"postcss-replace-overflow-wrap";import J from"postcss-place";import X from"css-prefers-color-scheme";import Y from"@csstools/postcss-progressive-custom-properties";import ss from"@csstools/postcss-random-function";import os from"postcss-color-rebeccapurple";import es from"@csstools/postcss-relative-color-syntax";import ts from"@csstools/postcss-scope-pseudo-class";import is from"@csstools/postcss-sign-functions";import as from"@csstools/postcss-stepped-value-functions";import rs from"@csstools/postcss-text-decoration-shorthand";import cs from"@csstools/postcss-trigonometric-functions";import ps from"@csstools/postcss-unset-value";const ns={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README.md#browser","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-focus-within/README.md#browser","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README.md#browser","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README.md#browser"},ls=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,o,e){if(o.debug){e.log("Enabling the following feature(s):");const t=[],i=[];!1!==o.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==ns[s.id]&&t.push(s.id)})),i.sort(((s,o)=>s.localeCompare(o))),t.sort(((s,o)=>s.localeCompare(o))),i.forEach((s=>e.log(s))),t.length&&(e.log("These feature(s) need a browser library to work:"),t.forEach((s=>e.log(` ${s}: ${ns[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const o={};return o.preserve=s.preserve,o}return!1}function clamp(s,o,e){return Math.max(s,Math.min(o,e))}function stageFromOptions(s,o){let e=2;if(void 0===s.stage)return o.log("Using features from Stage 2 (default)."),e;if(!1===s.stage)e=5;else{let o=parseInt(s.stage,10);Number.isNaN(o)&&(o=0),e=clamp(0,o,5)}return 5===e?o.log('Stage has been disabled, features will be handled via the "features" option.'):o.log(`Using features from Stage ${e}.`),e}const ms=Symbol("insertBefore"),us=Symbol("insertAfter"),ds=Symbol("insertOrder"),fs=Symbol("plugin");function getTransformedInsertions(s,o,e){if("insertBefore"!==e&&"insertAfter"!==e)return[];const t="insertBefore"===e?ms:us,i=[];for(const e in o){if(!Object.hasOwnProperty.call(o,e))continue;if(!s.find((s=>s.id===e)))continue;let a=o[e];Array.isArray(a)||(a=[a]);for(let s=0;sfeatureIsInsertedOrHasAPlugin(s))).sort(((s,o)=>featureIsLess(s,o)))}function getOptionsForBrowsersByFeature(s,o,e,t){switch(o.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"any-link-pseudo-class":if(s.find((s=>s.startsWith("ie ")||"edge 12"===s||"edge 13"===s||"edge 14"===s||"edge 15"===s||"edge 16"===s||"edge 17"===s||"edge 18"===s)))return t.log("- 'any-link-pseudo-class' setting 'subFeatures: { areaHrefNeedsFixing: true }' due to lack of browser support for area[href] in Edge and IE."),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":case"logical-overflow":case"logical-overscroll-behavior":return"logical"in e?e.logical:{};default:return{}}}const xs=["and_chr","and_ff","android","chrome","edge","firefox","ie","ios_saf","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const o=[];return xs.forEach((e=>{if("op_mini"===e&&void 0===s.browser_support[e])return void o.push("op_mini all");const t=s.browser_support[e];"string"==typeof t&&Fs.test(t)?o.push(`${e} < ${s.browser_support[e]}`):o.push(`${e} >= 1`)})),o}const Fs=/^[0-9|.]+$/;function formatPolyfillableFeature(s){const o=getUnsupportedBrowsersByFeature(s);if(s[ms]||s[us]){let e=s.id;return e=s.insertBefore?`before-${e}`:`after-${e}`,{browsers:o,vendors_implementations:s.vendors_implementations,plugin:s[fs],id:e,stage:6}}return{browsers:o,vendors_implementations:s.vendors_implementations,plugin:ws.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,o,e,t,i,a){let r,c;return r=getOptionsForBrowsersByFeature(s,e,i,a),r=t?Object.assign({},r,t,featureOptions(o,e.id)):Object.assign({},r,featureOptions(o,e.id)),"progressive-custom-properties"!==e.id&&(r.enableProgressiveCustomProperties=!1),"overflow-wrap-property"===e.id&&"preserve"in r&&(r.method=r.preserve?"copy":"replace"),c=e.plugin.postcss&&"function"==typeof e.plugin?e.plugin(r):e.plugin&&e.plugin.default&&"function"==typeof e.plugin.default&&e.plugin.default.postcss?e.plugin.default(r):e.plugin,{browsers:e.browsers,vendors_implementations:e.vendors_implementations,plugin:c,pluginOptions:r,id:e.id}}function featureOptions(s,o){if(!(o in s))return;const e=s[o];return Array.isArray(e)?e[1]:e}function intOrZero(s){const o=parseInt(s,10);return Number.isNaN(o)?0:o}const $s=new Set(["progressive-custom-properties"]);function listFeatures(s,o,t,i){const a=Object(o.features),r="enableClientSidePolyfills"in o&&o.enableClientSidePolyfills,c=Object(o.insertBefore),p=Object(o.insertAfter),n=o.browsers?void 0:o.env,l=o.browsers,m=clamp(0,intOrZero(o.minimumVendorImplementations),3);m>0&&i.log(`Using features with ${m} or more vendor implementations.`);const u=stageFromOptions(o,i),d=prepareFeaturesList([...s,{id:"progressive-custom-properties"}],c,p).map((s=>formatPolyfillableFeature(s))).filter((s=>!!$s.has(s.id)||(0===m||(!(!s[ms]&&!s[us])||(m<=s.vendors_implementations||(!0===featureEnabledByOptions(a,s.id)?(i.log(`- '${s.id}' enabled manually even when it lacks the required interop (${s.vendors_implementations} out of ${m}).`),!0):(i.log(`- '${s.id}' disabled because it lacks the required interop (${s.vendors_implementations} out of ${m}).`),!1))))))),f=e(l,{env:n,ignoreUnknownVersions:!0}).filter((s=>xs.includes(s.split(" ")[0])));return d.filter((s=>{if($s.has(s.id))return!0;const o=s.stage>=u,e=r||!ls.includes(s.id),t=featureEnabledByOptions(a,s.id),c=!1===t,p=!0===t||o&&e;return c?i.log(`- '${s.id}' disabled manually`):o?e||i.log(`- '${s.id}' disabled because 'enableClientSidePolyfills' is 'false'.`):p?i.log(`- '${s.id}' enabled manually even when it lacks the required stage (${s.stage} out of ${u}).`):i.log(`- '${s.id}' disabled because it lacks the required stage (${s.stage} out of ${u}).`),!c&&p})).map((s=>formatStagedFeature(f,a,s,t,o,i))).filter((s=>{if($s.has(s.id))return!0;const o=featureEnabledByOptions(a,s.id);if(!0===o||!1===o)return o;const t=e(s.browsers,{ignoreUnknownVersions:!0}),r=f.filter((s=>t.some((o=>o===s))));return r.length>0?i.log(`- '${s.id}' enabled for:\n ${r.join("\n ")}`):i.log(`- '${s.id}' disabled because all targeted browsers support it.`),r.length>0}))}function featureEnabledByOptions(s,o){if(!(o in s))return"auto";const e=s[o];return Array.isArray(e)?!0===e[0]||!1!==e[0]&&"auto":Boolean(e)}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}emitLogs(s){s&&s.warn(this.logs.join("\n")),this.resetLogger()}}var Os=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-mix-function",id:"color-mix",importName:"postcssColorMixFunction"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"@csstools/postcss-content-alt-text",id:"content-alt-text",importName:"postcssContentAltText"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"@csstools/postcss-exponential-functions",id:"exponential-functions",importName:"postcssExponentialFunctions"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"@csstools/postcss-gamut-mapping",id:"gamut-mapping",importName:"postcssGamutMapping"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-gradients-interpolation-method",id:"gradients-interpolation-method",importName:"postcssGradientsInterpolationMethod"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"@csstools/postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"@csstools/postcss-light-dark-function",id:"light-dark-function",importName:"postcssLightDarkFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-overflow",id:"logical-overflow",importName:"postcssLogicalOverflow"},{packageName:"@csstools/postcss-logical-overscroll-behavior",id:"logical-overscroll-behavior",importName:"postcssLogicalOverscrollBehavor"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"@csstools/postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"@csstools/postcss-relative-color-syntax",id:"relative-color-syntax",importName:"postcssRelativeColorSyntax"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"},{packageName:"@csstools/postcss-sign-functions",id:"sign-functions",importName:"postcssSignFunctions"},{packageName:"@csstools/postcss-random-function",id:"random-function",importName:"postcssRandomFunction"},{packageName:"@csstools/postcss-progressive-custom-properties",id:"progressive-custom-properties",importName:"postcssProgressiveCustomProperties",omitTypedOptions:!0,omitDocs:!0}];function getPackageNamesToIds(){const s={};return Os.forEach((o=>{s[o.packageName]=o.id})),s}function pluginIdHelp(s,o,e){const t=Os.map((s=>s.id)),i=Os.map((s=>s.packageName)),a=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const r=[...t.map((o=>[o,levenshteinDistance(s,o)])),...i.map((o=>[a[o],levenshteinDistance(s,o)]))].sort(((s,o)=>s[1]-o[1])).filter((s=>s[1]<10)),c=new Set;for(let s=0;s=3));s++);if(!c.size)return void o.warn(e,`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`);let p='"';p+=Array.from(c).join('", "'),p+='"',o.warn(e,`Unknown feature: "${s}", did you mean one of: ${p}`)}))}function levenshteinDistance(s,o){if(!s.length)return o.length;if(!o.length)return s.length;const e=[];for(let t=0;t<=o.length;t++){e[t]=[t];for(let i=1;i<=s.length;i++)e[t][i]=0===t?i:Math.min(e[t-1][i]+1,e[t][i-1]+1,e[t-1][i-1]+(s[i-1]===o[t-1]?0:1))}return e[o.length][s.length]}const creator=e=>{const t=new Logger,i=Object(e),a=Object.keys(Object(i.features)),r=i.browsers?void 0:i.env,c=i.browsers,p=initializeSharedOptions(i),n=listFeatures(o,i,p,t),l=n.map((s=>s.plugin));!1!==i.autoprefixer&&l.push(s(Object.assign({env:r,overrideBrowserslist:c},i.autoprefixer))),logFeaturesList(n,i,t);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit(s,{result:o}){pluginIdHelp(a,s,o),i.debug&&t.emitLogs(o),t.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0;export{creator as default};
diff --git a/plugin-packs/postcss-preset-env/package.json b/plugin-packs/postcss-preset-env/package.json
index d1b86eff0..339268b29 100644
--- a/plugin-packs/postcss-preset-env/package.json
+++ b/plugin-packs/postcss-preset-env/package.json
@@ -76,8 +76,10 @@
"@csstools/postcss-normalize-display-values": "^4.0.0",
"@csstools/postcss-oklab-function": "^4.0.6",
"@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/postcss-random-function": "^1.0.0",
"@csstools/postcss-relative-color-syntax": "^3.0.6",
"@csstools/postcss-scope-pseudo-class": "^4.0.1",
+ "@csstools/postcss-sign-functions": "^1.0.0",
"@csstools/postcss-stepped-value-functions": "^4.0.5",
"@csstools/postcss-text-decoration-shorthand": "^4.0.1",
"@csstools/postcss-trigonometric-functions": "^4.0.5",
@@ -87,7 +89,7 @@
"css-blank-pseudo": "^7.0.1",
"css-has-pseudo": "^7.0.1",
"css-prefers-color-scheme": "^10.0.0",
- "cssdb": "^8.2.0",
+ "cssdb": "^8.2.1",
"postcss-attribute-case-insensitive": "^7.0.1",
"postcss-clamp": "^4.1.0",
"postcss-color-functional-notation": "^7.0.6",
diff --git a/plugin-packs/postcss-preset-env/scripts/plugins-data.json b/plugin-packs/postcss-preset-env/scripts/plugins-data.json
index 839a55901..e8881e67a 100644
--- a/plugin-packs/postcss-preset-env/scripts/plugins-data.json
+++ b/plugin-packs/postcss-preset-env/scripts/plugins-data.json
@@ -290,6 +290,16 @@
"id": "text-decoration-shorthand",
"importName": "postcssTextDecorationShorthand"
},
+ {
+ "packageName": "@csstools/postcss-sign-functions",
+ "id": "sign-functions",
+ "importName": "postcssSignFunctions"
+ },
+ {
+ "packageName": "@csstools/postcss-random-function",
+ "id": "random-function",
+ "importName": "postcssRandomFunction"
+ },
{
"packageName": "@csstools/postcss-progressive-custom-properties",
"id": "progressive-custom-properties",
diff --git a/plugin-packs/postcss-preset-env/src/lib/ids-by-execution-order.mjs b/plugin-packs/postcss-preset-env/src/lib/ids-by-execution-order.mjs
index aed045bb4..bb49dfb30 100644
--- a/plugin-packs/postcss-preset-env/src/lib/ids-by-execution-order.mjs
+++ b/plugin-packs/postcss-preset-env/src/lib/ids-by-execution-order.mjs
@@ -53,6 +53,8 @@ export default [
'unset-value',
// Math functions.
+ 'random-function',
+ 'sign-functions',
'stepped-value-functions',
'trigonometric-functions',
'exponential-functions',
diff --git a/plugin-packs/postcss-preset-env/src/plugins/plugins-by-id.mjs b/plugin-packs/postcss-preset-env/src/plugins/plugins-by-id.mjs
index 0407a69f2..b05c82b5f 100644
--- a/plugin-packs/postcss-preset-env/src/plugins/plugins-by-id.mjs
+++ b/plugin-packs/postcss-preset-env/src/plugins/plugins-by-id.mjs
@@ -49,9 +49,11 @@ import postcssReplaceOverflowWrap from 'postcss-replace-overflow-wrap';
import postcssPlace from 'postcss-place';
import postcssPrefersColorScheme from 'css-prefers-color-scheme';
import postcssProgressiveCustomProperties from '@csstools/postcss-progressive-custom-properties';
+import postcssRandomFunction from '@csstools/postcss-random-function';
import postcssColorRebeccapurple from 'postcss-color-rebeccapurple';
import postcssRelativeColorSyntax from '@csstools/postcss-relative-color-syntax';
import postcssScopePseudoClass from '@csstools/postcss-scope-pseudo-class';
+import postcssSignFunctions from '@csstools/postcss-sign-functions';
import postcssSteppedValueFunctions from '@csstools/postcss-stepped-value-functions';
import postcssFontFamilySystemUI from '../patch/postcss-system-ui-font-family.mjs';
import postcssTextDecorationShorthand from '@csstools/postcss-text-decoration-shorthand';
@@ -112,9 +114,11 @@ export const pluginsById = new Map(
['place-properties', postcssPlace],
['prefers-color-scheme-query', postcssPrefersColorScheme],
['progressive-custom-properties', postcssProgressiveCustomProperties],
+ ['random-function', postcssRandomFunction],
['rebeccapurple-color', postcssColorRebeccapurple],
['relative-color-syntax', postcssRelativeColorSyntax],
['scope-pseudo-class', postcssScopePseudoClass],
+ ['sign-functions', postcssSignFunctions],
['stepped-value-functions', postcssSteppedValueFunctions],
['system-ui-font-family', postcssFontFamilySystemUI],
['text-decoration-shorthand', postcssTextDecorationShorthand],
diff --git a/plugin-packs/postcss-preset-env/src/plugins/plugins-data.mjs b/plugin-packs/postcss-preset-env/src/plugins/plugins-data.mjs
index 5a78061a3..9f7c0f827 100644
--- a/plugin-packs/postcss-preset-env/src/plugins/plugins-data.mjs
+++ b/plugin-packs/postcss-preset-env/src/plugins/plugins-data.mjs
@@ -290,6 +290,16 @@ export default [
'id': 'text-decoration-shorthand',
'importName': 'postcssTextDecorationShorthand',
},
+ {
+ 'packageName': '@csstools/postcss-sign-functions',
+ 'id': 'sign-functions',
+ 'importName': 'postcssSignFunctions',
+ },
+ {
+ 'packageName': '@csstools/postcss-random-function',
+ 'id': 'random-function',
+ 'importName': 'postcssRandomFunction',
+ },
{
'packageName': '@csstools/postcss-progressive-custom-properties',
'id': 'progressive-custom-properties',
diff --git a/plugin-packs/postcss-preset-env/src/plugins/plugins-options.ts b/plugin-packs/postcss-preset-env/src/plugins/plugins-options.ts
index 432fc86ad..8d98db130 100644
--- a/plugin-packs/postcss-preset-env/src/plugins/plugins-options.ts
+++ b/plugin-packs/postcss-preset-env/src/plugins/plugins-options.ts
@@ -48,9 +48,11 @@ import type { pluginOptions as postcssOverflowShorthandOptions } from 'postcss-o
import type { postcssReplaceOverflowWrapOptions } from '../types/postcss-replace-overflow-wrap/plugin-options';
import type { pluginOptions as postcssPlaceOptions } from 'postcss-place';
import type { pluginOptions as postcssPrefersColorSchemeOptions } from 'css-prefers-color-scheme';
+import type { pluginOptions as postcssRandomFunctionOptions } from '@csstools/postcss-random-function';
import type { pluginOptions as postcssColorRebeccapurpleOptions } from 'postcss-color-rebeccapurple';
import type { pluginOptions as postcssRelativeColorSyntaxOptions } from '@csstools/postcss-relative-color-syntax';
import type { pluginOptions as postcssScopePseudoClassOptions } from '@csstools/postcss-scope-pseudo-class';
+import type { pluginOptions as postcssSignFunctionsOptions } from '@csstools/postcss-sign-functions';
import type { pluginOptions as postcssSteppedValueFunctionsOptions } from '@csstools/postcss-stepped-value-functions';
import type { postcssFontFamilySystemUIOptions } from '../types/postcss-system-ui-font-family/plugin-options';
import type { pluginOptions as postcssTextDecorationShorthandOptions } from '@csstools/postcss-text-decoration-shorthand';
@@ -160,12 +162,16 @@ export type pluginsOptions = {
'place-properties'?: subPluginOptions
/** plugin options for "css-prefers-color-scheme" */
'prefers-color-scheme-query'?: subPluginOptions
+ /** plugin options for "@csstools/postcss-random-function" */
+ 'random-function'?: subPluginOptions
/** plugin options for "postcss-color-rebeccapurple" */
'rebeccapurple-color'?: subPluginOptions
/** plugin options for "@csstools/postcss-relative-color-syntax" */
'relative-color-syntax'?: subPluginOptions
/** plugin options for "@csstools/postcss-scope-pseudo-class" */
'scope-pseudo-class'?: subPluginOptions
+ /** plugin options for "@csstools/postcss-sign-functions" */
+ 'sign-functions'?: subPluginOptions
/** plugin options for "@csstools/postcss-stepped-value-functions" */
'stepped-value-functions'?: subPluginOptions
/** plugin options for "postcss-system-ui-font-family" */
diff --git a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css
index 4d6073076..96f665912 100644
--- a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.expect.css
@@ -724,3 +724,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css
index e4d1bd7f6..ca0e8f174 100644
--- a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.false.expect.css
@@ -729,3 +729,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.remove.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.remove.false.expect.css
index e4c0712cc..5dd729fa3 100644
--- a/plugin-packs/postcss-preset-env/test/basic.autoprefixer.remove.false.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.autoprefixer.remove.false.expect.css
@@ -748,3 +748,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css b/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css
index fae90a22d..b2c55b2cf 100644
--- a/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.ch38.expect.css
@@ -636,3 +636,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.css b/plugin-packs/postcss-preset-env/test/basic.css
index dc39fb252..497e2edc3 100644
--- a/plugin-packs/postcss-preset-env/test/basic.css
+++ b/plugin-packs/postcss-preset-env/test/basic.css
@@ -519,3 +519,27 @@
.content-alt-text {
content: var(--foo) / "A beautiful tree in a dark forest";
}
+
+.sign {
+ order: sign(10px);
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: abs(10px);
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.edge16.expect.css b/plugin-packs/postcss-preset-env/test/basic.edge16.expect.css
index bad205cf3..be35f367b 100644
--- a/plugin-packs/postcss-preset-env/test/basic.edge16.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.edge16.expect.css
@@ -718,3 +718,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.expect.css b/plugin-packs/postcss-preset-env/test/basic.expect.css
index 00977f756..55b8ad292 100644
--- a/plugin-packs/postcss-preset-env/test/basic.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.expect.css
@@ -743,3 +743,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css b/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css
index 8f51c3fc4..18a3bcaf8 100644
--- a/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.ff49.expect.css
@@ -635,3 +635,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css b/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css
index 933dca57d..d37c4cf57 100644
--- a/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.ff66.expect.css
@@ -630,3 +630,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.hebrew.all-browsers-have-support.expect.css b/plugin-packs/postcss-preset-env/test/basic.hebrew.all-browsers-have-support.expect.css
index cdb4bbea7..7256499ac 100644
--- a/plugin-packs/postcss-preset-env/test/basic.hebrew.all-browsers-have-support.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.hebrew.all-browsers-have-support.expect.css
@@ -592,3 +592,31 @@
.content-alt-text {
content: var(--foo) / "A beautiful tree in a dark forest";
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.hebrew.expect.css b/plugin-packs/postcss-preset-env/test/basic.hebrew.expect.css
index eee042a72..5d0c551ec 100644
--- a/plugin-packs/postcss-preset-env/test/basic.hebrew.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.hebrew.expect.css
@@ -739,3 +739,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css b/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css
index 296f3acef..a61a6444a 100644
--- a/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.ie10.expect.css
@@ -760,3 +760,35 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ -ms-flex-order: 1;
+ order: 1;
+ -ms-flex-order: sign(10px);
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ -ms-flex-order: 10px;
+ order: 10px;
+ -ms-flex-order: abs(10px);
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css
index 35f98d9bf..d611edb3a 100644
--- a/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.nesting.false.expect.css
@@ -733,3 +733,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css b/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css
index 2825e20ea..31f1cdaf9 100644
--- a/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.nesting.true.expect.css
@@ -525,3 +525,27 @@
.content-alt-text {
content: var(--foo) / "A beautiful tree in a dark forest";
}
+
+.sign {
+ order: sign(10px);
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: abs(10px);
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.op_mini.expect.css b/plugin-packs/postcss-preset-env/test/basic.op_mini.expect.css
index d93c2e6e4..1bd362efc 100644
--- a/plugin-packs/postcss-preset-env/test/basic.op_mini.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.op_mini.expect.css
@@ -721,3 +721,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.preserve.false.expect.css b/plugin-packs/postcss-preset-env/test/basic.preserve.false.expect.css
index 4c9ffc0bc..60aeacd3d 100644
--- a/plugin-packs/postcss-preset-env/test/basic.preserve.false.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.preserve.false.expect.css
@@ -845,3 +845,33 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
.content-alt-text {
content: var(--foo) "A beautiful tree in a dark forest";
}
+
+.sign {
+ -webkit-box-ordinal-group: 2;
+ -webkit-order: 1;
+ -moz-box-ordinal-group: 2;
+ order: 1;
+ z-index: -1;
+}
+
+.abs {
+ -webkit-box-ordinal-group: 11;
+ -webkit-order: 10px;
+ -moz-box-ordinal-group: 11;
+ order: 10px;
+ z-index: 10px;
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css b/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css
index 826c5ef2c..0b82ae674 100644
--- a/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.preserve.true.expect.css
@@ -1197,3 +1197,54 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ -webkit-box-ordinal-group: 2;
+ -webkit-order: 1;
+ -moz-box-ordinal-group: 2;
+ order: 1;
+ -webkit-box-ordinal-group: NaN;
+ -webkit-order: sign(10px);
+ -moz-box-ordinal-group: NaN;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ -webkit-box-ordinal-group: 11;
+ -webkit-order: 10px;
+ -moz-box-ordinal-group: 11;
+ order: 10px;
+ -webkit-box-ordinal-group: NaN;
+ -webkit-order: abs(10px);
+ -moz-box-ordinal-group: NaN;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css b/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css
index 854697e6e..ebd69dd64 100644
--- a/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.safari15.expect.css
@@ -617,3 +617,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css
index 0d0966c35..347b7d3eb 100644
--- a/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.stage0-ff49.expect.css
@@ -631,3 +631,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css
index fa729222d..eeb4c8939 100644
--- a/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.stage0-ff66.expect.css
@@ -626,3 +626,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css b/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css
index 71943fca7..260078839 100644
--- a/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.stage0.expect.css
@@ -739,3 +739,31 @@ h1.test-custom-selectors:not(.does-not-exist), h2.test-custom-selectors:not(.doe
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.supports-query.expect.css b/plugin-packs/postcss-preset-env/test/basic.supports-query.expect.css
index 44d66fa39..1cd369423 100644
--- a/plugin-packs/postcss-preset-env/test/basic.supports-query.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.supports-query.expect.css
@@ -628,3 +628,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ 115,
+ 230,
+ 125
+ );
+
+ border-color: oklch(
+ 85%,
+ 40%,
+ 96deg
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.vendors-1.expect.css b/plugin-packs/postcss-preset-env/test/basic.vendors-1.expect.css
index 7e166b643..46ac2e9f2 100644
--- a/plugin-packs/postcss-preset-env/test/basic.vendors-1.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.vendors-1.expect.css
@@ -716,3 +716,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.vendors-2.expect.css b/plugin-packs/postcss-preset-env/test/basic.vendors-2.expect.css
index 519e40c18..a8a2d0e3b 100644
--- a/plugin-packs/postcss-preset-env/test/basic.vendors-2.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.vendors-2.expect.css
@@ -721,3 +721,31 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: 1;
+ order: sign(10px);
+ z-index: -1;
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: 10px;
+ order: abs(10px);
+ z-index: 10px;
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/plugin-packs/postcss-preset-env/test/basic.vendors-3.expect.css b/plugin-packs/postcss-preset-env/test/basic.vendors-3.expect.css
index defd35332..1f349a69e 100644
--- a/plugin-packs/postcss-preset-env/test/basic.vendors-3.expect.css
+++ b/plugin-packs/postcss-preset-env/test/basic.vendors-3.expect.css
@@ -715,3 +715,27 @@
content: var(--foo) / "A beautiful tree in a dark forest";
}
}
+
+.sign {
+ order: sign(10px);
+ z-index: sign(-10px);
+}
+
+.abs {
+ order: abs(10px);
+ z-index: abs(-10px);
+}
+
+.random {
+ color: rgb(
+ random(--r, 0, 255, by 5),
+ random(--g, 0, 255, by 5),
+ random(--b, 0, 255, by 5)
+ );
+
+ border-color: oklch(
+ random(--l, 0%, 100%, by 5%),
+ random(--c, 30%, 70%, by 5%),
+ random(--h, 0deg, 360deg, by 12deg)
+ );
+}
diff --git a/rollup/configs/externals.mjs b/rollup/configs/externals.mjs
index 0e3062c5a..8d4fac75f 100644
--- a/rollup/configs/externals.mjs
+++ b/rollup/configs/externals.mjs
@@ -50,9 +50,11 @@ export const externalsForCLI = [
'@csstools/postcss-normalize-display-values',
'@csstools/postcss-oklab-function',
'@csstools/postcss-progressive-custom-properties',
+ '@csstools/postcss-random-function',
'@csstools/postcss-rebase-url',
'@csstools/postcss-relative-color-syntax',
'@csstools/postcss-scope-pseudo-class',
+ '@csstools/postcss-sign-functions',
'@csstools/postcss-stepped-value-functions',
'@csstools/postcss-text-decoration-shorthand',
'@csstools/postcss-trigonometric-functions',
@@ -151,9 +153,11 @@ export const externalsForPlugin = [
'@csstools/postcss-normalize-display-values',
'@csstools/postcss-oklab-function',
'@csstools/postcss-progressive-custom-properties',
+ '@csstools/postcss-random-function',
'@csstools/postcss-rebase-url',
'@csstools/postcss-relative-color-syntax',
'@csstools/postcss-scope-pseudo-class',
+ '@csstools/postcss-sign-functions',
'@csstools/postcss-stepped-value-functions',
'@csstools/postcss-text-decoration-shorthand',
'@csstools/postcss-trigonometric-functions',