From 8b88da46e4f31cf97cbba48fbfce80057c7b41fa Mon Sep 17 00:00:00 2001
From: Evan Wallace Syntax features are specified using esbuild-specific feature names. The full set of feature names is as follows:
JavaScript: CSS:
-arbitrary-module-namespace-names
array-spread
arrow
async-await
async-generator
bigint
class
class-field
class-private-accessor
class-private-brand-check
class-private-field
class-private-method
class-private-static-accessor
class-private-static-field
class-private-static-method
class-static-blocks
class-static-field
const-and-let
decorators
default-argument
destructuring
dynamic-import
exponent-operator
export-star-as
for-await
for-of
function-or-class-property-access
generator
hashbang
import-assertions
import-meta
inline-script
logical-assignment
nested-rest-binding
new-target
node-colon-prefix-import
node-colon-prefix-require
nullish-coalescing
object-accessors
object-extensions
object-rest-spread
optional-catch-binding
optional-chain
regexp-dot-all-flag
regexp-lookbehind-assertions
regexp-match-indices
regexp-named-capture-groups
regexp-set-notation
regexp-sticky-and-unicode-flags
regexp-unicode-property-escapes
rest-argument
template-literal
top-level-await
typeof-exotic-object-is-object
unicode-escapes
using
hex-rgba
inline-style
inset-property
is-pseudo-class
modern-rgb-hsl
nesting
rebecca-purple
Supported by: Build and Transform
This sets the target environment for the generated JavaScript and/or CSS code. It tells esbuild to transform JavaScript syntax that is too new for these environments into older JavaScript syntax that will work in these environments. For example, the ??
operator was introduced in Chrome 80 so esbuild will convert it into an equivalent (but more verbose) conditional expression when targeting Chrome 79 or earlier.
Note that this is only concerned with syntax features, not APIs. It does not automatically add polyfills for new APIs that are not used by these environments. You will have to explicitly import polyfills for the APIs you need (e.g. by importing core-js
). Automatic polyfill injection is outside of esbuild's scope.
Each target environment is an environment name followed by a version number. The following environment names are currently supported:
chrome
deno
edge
firefox
hermes
ie
ios
node
opera
rhino
safari
In addition, you can also specify JavaScript language versions such as es2020
. The default target is esnext
which means that by default, esbuild will assume all of the latest JavaScript and CSS features are supported. Here is an example that configures multiple target environments. You don't need to specify all of them; you can just specify the subset of target environments that your project cares about. You can also be more precise about version numbers if you'd like (e.g. node12.19.0
instead of just node12
):
CSS:
color-functions
gradient-double-position
gradient-interpolation
gradient-midpoints
hwb
hex-rgba
inline-style
inset-property
is-pseudo-class
modern-rgb-hsl
nesting
rebecca-purple
Supported by: Build and Transform
This sets the target environment for the generated JavaScript and/or CSS code. It tells esbuild to transform JavaScript syntax that is too new for these environments into older JavaScript syntax that will work in these environments. For example, the ??
operator was introduced in Chrome 80 so esbuild will convert it into an equivalent (but more verbose) conditional expression when targeting Chrome 79 or earlier.
Note that this is only concerned with syntax features, not APIs. It does not automatically add polyfills for new APIs that are not used by these environments. You will have to explicitly import polyfills for the APIs you need (e.g. by importing core-js
). Automatic polyfill injection is outside of esbuild's scope.
Each target environment is an environment name followed by a version number. The following environment names are currently supported:
chrome
deno
edge
firefox
hermes
ie
ios
node
opera
rhino
safari
In addition, you can also specify JavaScript language versions such as es2020
. The default target is esnext
which means that by default, esbuild will assume all of the latest JavaScript and CSS features are supported. Here is an example that configures multiple target environments. You don't need to specify all of them; you can just specify the subset of target environments that your project cares about. You can also be more precise about version numbers if you'd like (e.g. node12.19.0
instead of just node12
):
1_000_000
These syntax features are conditionally transformed for older browsers depending on the configured language target:
These syntax features are conditionally transformed for older browsers depending on the configured language target:
Syntax transform | @@ -522,7 +522,60 @@ os.Exit(1) } } -
---|
Syntax transform | +Example | +
---|---|
Nested declarations | +a { &:hover { color: red } } |
+
Modern RGB/HSL syntax | +#F008 |
+
inset shorthand |
+ inset: 0 |
+
hwb() |
+ hwb(120 30% 50%) |
+
lab() and lch() |
+ lab(60 -5 58) |
+
oklab() and oklch() |
+ oklab(0.5 -0.1 0.1) |
+
color() |
+ color(display-p3 1 0 0) |
+
Color stops with two positions | +linear-gradient(red 2% 4%, blue) |
+
Gradient transition hints | +linear-gradient(red, 20%, blue) 1 |
+
Gradient color spaces | +linear-gradient(in hsl, red, blue) 1 |
+
Gradient hue mode | +linear-gradient(in hsl longer hue, red, blue) 1 |
+
Note that by default, esbuild's output will take advantage of modern CSS features. For example, color:
will become color:
when minifying is enabled which makes use of syntax from CSS Color Module Level 4. If this is undesired, you must specify esbuild's target setting to say in which browsers you need the output to work correctly. Then esbuild will avoid using CSS features that are too modern for those browsers.
When you provide a list of browser versions using the target setting, esbuild will also automatically insert vendor prefixes so that your CSS will work in those browsers at those versions or newer. Currently esbuild will do this for the following CSS properties:
appearance
backdrop-filter
background-clip: text
box-decoration-break
clip-path
font-kerning
hyphens
initial-letter
mask-composite
mask-image
mask-origin
mask-position
mask-repeat
mask-size
position: sticky
print-color-adjust
tab-size
text-decoration-color
text-decoration-line
text-decoration-skip
text-emphasis-color
text-emphasis-position
text-emphasis-style
text-orientation
text-size-adjust
user-select
You can also import CSS from JavaScript. When you do this, esbuild will gather all CSS files referenced from a given entry point and bundle it into a sibling CSS output file next to the JavaScript output file for that JavaScript entry point. So if esbuild generates app.js
it would also generate app.css
containing all CSS files referenced by app.js
. Here's an example of importing a CSS file from JavaScript:
import './button.css'
export let Button = ({ text }) =>
<div className="button">{text}</div>
The bundled JavaScript generated by esbuild will not automatically import the generated CSS into your HTML page for you. Instead, you should import the generated CSS into your HTML page yourself along with the generated JavaScript. This means the browser can download the CSS and JavaScript files in parallel, which is the most efficient way to do it. That looks like this:
<html>
diff --git a/gradient-tests/index.html b/gradient-tests/index.html
new file mode 100644
index 0000000..55cc658
--- /dev/null
+++ b/gradient-tests/index.html
@@ -0,0 +1,320 @@
+
+
+
+
+
+ esbuild - Gradient Transformation Tests
+
+
+
+
+
+ Gradient Transformation Tests
+
+ This page is a visual test of esbuild's transformation of modern CSS gradient syntax for older browsers. Each test
+ case compares the browser's native rendering of the modern syntax to esbuild's transformation (which uses the legacy
+ syntax instead). This makes it easy to visually verify that esbuild's transformation is correct as well as to
+ visually inspect a given browser's rendering of these gradient syntax features.
+
+
+ At the time of writing, the latest versions of Chrome and Safari (Chrome 120 and Safari 17.1) can natively render
+ all of these test cases correctly, so you should expect these results to match in Chrome and Safari. However, the
+ latest version of Firefox (Firefox 120) contains multiple gradient rendering bugs, so esbuild's transformation is
+ currently necessary to get these test cases to render correctly in Firefox.
+
+
+ 1. Red to green in P3
+ gradient(
+ color(display-p3 1 0 0),
+ color(display-p3 0 0.6 0))
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+ Note: Interpolation should happen in the oklab
color space.
+
+ 2. Rainbow using shorter hue
+ gradient(
+ in hwb shorter hue,
+ hsl(180deg 100% 75%) 10%,
+ hsl(240deg 100% 75%) 90%)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+
+ 3. Rainbow using longer hue
+ gradient(
+ in hsl longer hue,
+ hsl(180deg 100% 75%) 10%,
+ hsl(240deg 100% 75%) 90%)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+
+ 4. Rainbow using increasing hue
+ gradient(
+ in lch increasing hue,
+ hsl(240deg 100% 75%) 10%,
+ hsl(180deg 100% 75%) 90%)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+
+ 5. Rainbow using decreasing hue
+ gradient(
+ in oklch decreasing hue,
+ hsl(180deg 100% 75%) 10%,
+ hsl(240deg 100% 75%) 90%)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+
+ 6. Transition hint / midpoint
+ gradient(#f00, #ff0, 75%, #0ff, #00f)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+ Note: The gradient should be "pulled" to one side.
+
+ 7. Premultiplied alpha
+ gradient(#f00f, 10%, #00f1, 90%, #0f0f)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+ Note: The transparent area should not have much blue color.
+
+ 8. Mixed units
+ gradient(
+ color(display-p3 0.4 0 1) 30px,
+ color(display-p3 1 0.75 0.4) 60%)
+ native
+ esbuild
+
+ native
+ esbuild
+ native
+ esbuild
+
+ Note: Mixed units can be supported by emitting calc()
expressions.
+
+
+
diff --git a/gradient-tests/style.css b/gradient-tests/style.css
new file mode 100644
index 0000000..626c620
--- /dev/null
+++ b/gradient-tests/style.css
@@ -0,0 +1,654 @@
+.linear.red_to_green-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #ff0e0e,
+ #ff3004 6.25%,
+ #fa3900 9.38%,
+ #f54100 12.5%,
+ #de5c00 25%,
+ #ac7a00 50%,
+ #718c00 75%,
+ #5d9000 81.25%,
+ #439300 87.5%,
+ #349400 90.62%,
+ #279500 92.19%,
+ #1b9500 93.75%,
+ #00942a);
+ background:
+ linear-gradient(
+ to right,
+ color(xyz 0.487 0.229 0),
+ color(xyz 0.452 0.229 0.001) 6.25%,
+ color(xyz 0.435 0.229 0.002) 9.38%,
+ color(xyz 0.418 0.228 0.003) 12.5%,
+ color(xyz 0.356 0.228 0.005) 25%,
+ color(xyz 0.246 0.226 0.009) 50%,
+ color(xyz 0.157 0.223 0.012) 75%,
+ color(xyz 0.137 0.223 0.013) 81.25%,
+ color(xyz 0.118 0.222 0.014) 87.5%,
+ color(xyz 0.11 0.222 0.014) 90.62%,
+ color(xyz 0.101 0.221 0.014) 93.75%,
+ color(xyz 0.085 0.22 0.014));
+}
+.radial.red_to_green-esbuild {
+ background:
+ radial-gradient(
+ #ff0e0e,
+ #ff3004 6.25%,
+ #fa3900 9.38%,
+ #f54100 12.5%,
+ #de5c00 25%,
+ #ac7a00 50%,
+ #718c00 75%,
+ #5d9000 81.25%,
+ #439300 87.5%,
+ #349400 90.62%,
+ #279500 92.19%,
+ #1b9500 93.75%,
+ #00942a);
+ background:
+ radial-gradient(
+ color(xyz 0.487 0.229 0),
+ color(xyz 0.452 0.229 0.001) 6.25%,
+ color(xyz 0.435 0.229 0.002) 9.38%,
+ color(xyz 0.418 0.228 0.003) 12.5%,
+ color(xyz 0.356 0.228 0.005) 25%,
+ color(xyz 0.246 0.226 0.009) 50%,
+ color(xyz 0.157 0.223 0.012) 75%,
+ color(xyz 0.137 0.223 0.013) 81.25%,
+ color(xyz 0.118 0.222 0.014) 87.5%,
+ color(xyz 0.11 0.222 0.014) 90.62%,
+ color(xyz 0.101 0.221 0.014) 93.75%,
+ color(xyz 0.085 0.22 0.014));
+}
+.conic.red_to_green-esbuild {
+ background:
+ conic-gradient(
+ #ff0e0e,
+ #ff3004 6.25%,
+ #fa3900 9.38%,
+ #f54100 12.5%,
+ #de5c00 25%,
+ #ac7a00 50%,
+ #718c00 75%,
+ #5d9000 81.25%,
+ #439300 87.5%,
+ #349400 90.62%,
+ #279500 92.19%,
+ #1b9500 93.75%,
+ #00942a);
+ background:
+ conic-gradient(
+ color(xyz 0.487 0.229 0),
+ color(xyz 0.452 0.229 0.001) 6.25%,
+ color(xyz 0.435 0.229 0.002) 9.38%,
+ color(xyz 0.418 0.228 0.003) 12.5%,
+ color(xyz 0.356 0.228 0.005) 25%,
+ color(xyz 0.246 0.226 0.009) 50%,
+ color(xyz 0.157 0.223 0.012) 75%,
+ color(xyz 0.137 0.223 0.013) 81.25%,
+ color(xyz 0.118 0.222 0.014) 87.5%,
+ color(xyz 0.11 0.222 0.014) 90.62%,
+ color(xyz 0.101 0.221 0.014) 93.75%,
+ color(xyz 0.085 0.22 0.014));
+}
+.linear.rainbow_shorter-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #80ffff 10%,
+ #8080ff 90%);
+}
+.radial.rainbow_shorter-esbuild {
+ background: radial-gradient(#80ffff 10%, #8080ff 90%);
+}
+.conic.rainbow_shorter-esbuild {
+ background: conic-gradient(#80ffff 10%, #8080ff 90%);
+}
+.linear.rainbow_longer-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #80ffff,
+ #80a0ff 1.25%,
+ #8088ff 1.56%,
+ #9080ff 1.88%,
+ #c080ff 2.5%,
+ #ef80ff 3.12%,
+ #ff80f7 3.44%,
+ #ff80df 3.75%,
+ #ff8080 5%,
+ #ffdf80 6.25%,
+ #fff780 6.56%,
+ #efff80 6.88%,
+ #c0ff80 7.5%,
+ #90ff80 8.12%,
+ #80ff88 8.44%,
+ #80ffa0 8.75%,
+ #80ffff 10%,
+ #80ffb0 20%,
+ #80ff88 25%,
+ #8cff80 27.5%,
+ #a0ff80 30%,
+ #efff80 40%,
+ #fffb80 42.5%,
+ #ffe780 45%,
+ #ffbf80 50%,
+ #ff9880 55%,
+ #ff8480 57.5%,
+ #ff8090 60%,
+ #ff80df 70%,
+ #ff80f3 72.5%,
+ #f780ff 75%,
+ #cf80ff 80%,
+ #8080ff 90%,
+ #df80ff 91.25%,
+ #f780ff 91.56%,
+ #ff80ef 91.88%,
+ #ff80bf 92.5%,
+ #ff8090 93.12%,
+ #ff8880 93.44%,
+ #ffa080 93.75%,
+ #ffff80 95%,
+ #a0ff80 96.25%,
+ #88ff80 96.56%,
+ #80ff90 96.88%,
+ #80ffbf 97.5%,
+ #80ffef 98.12%,
+ #80f7ff 98.44%,
+ #80dfff 98.75%,
+ #8080ff);
+}
+.radial.rainbow_longer-esbuild {
+ background:
+ radial-gradient(
+ #80ffff,
+ #80a0ff 1.25%,
+ #8088ff 1.56%,
+ #9080ff 1.88%,
+ #c080ff 2.5%,
+ #ef80ff 3.12%,
+ #ff80f7 3.44%,
+ #ff80df 3.75%,
+ #ff8080 5%,
+ #ffdf80 6.25%,
+ #fff780 6.56%,
+ #efff80 6.88%,
+ #c0ff80 7.5%,
+ #90ff80 8.12%,
+ #80ff88 8.44%,
+ #80ffa0 8.75%,
+ #80ffff 10%,
+ #80ffb0 20%,
+ #80ff88 25%,
+ #8cff80 27.5%,
+ #a0ff80 30%,
+ #efff80 40%,
+ #fffb80 42.5%,
+ #ffe780 45%,
+ #ffbf80 50%,
+ #ff9880 55%,
+ #ff8480 57.5%,
+ #ff8090 60%,
+ #ff80df 70%,
+ #ff80f3 72.5%,
+ #f780ff 75%,
+ #cf80ff 80%,
+ #8080ff 90%,
+ #df80ff 91.25%,
+ #f780ff 91.56%,
+ #ff80ef 91.88%,
+ #ff80bf 92.5%,
+ #ff8090 93.12%,
+ #ff8880 93.44%,
+ #ffa080 93.75%,
+ #ffff80 95%,
+ #a0ff80 96.25%,
+ #88ff80 96.56%,
+ #80ff90 96.88%,
+ #80ffbf 97.5%,
+ #80ffef 98.12%,
+ #80f7ff 98.44%,
+ #80dfff 98.75%,
+ #8080ff);
+}
+.conic.rainbow_longer-esbuild {
+ background:
+ conic-gradient(
+ #80ffff,
+ #80a0ff 1.25%,
+ #8088ff 1.56%,
+ #9080ff 1.88%,
+ #c080ff 2.5%,
+ #ef80ff 3.12%,
+ #ff80f7 3.44%,
+ #ff80df 3.75%,
+ #ff8080 5%,
+ #ffdf80 6.25%,
+ #fff780 6.56%,
+ #efff80 6.88%,
+ #c0ff80 7.5%,
+ #90ff80 8.12%,
+ #80ff88 8.44%,
+ #80ffa0 8.75%,
+ #80ffff 10%,
+ #80ffb0 20%,
+ #80ff88 25%,
+ #8cff80 27.5%,
+ #a0ff80 30%,
+ #efff80 40%,
+ #fffb80 42.5%,
+ #ffe780 45%,
+ #ffbf80 50%,
+ #ff9880 55%,
+ #ff8480 57.5%,
+ #ff8090 60%,
+ #ff80df 70%,
+ #ff80f3 72.5%,
+ #f780ff 75%,
+ #cf80ff 80%,
+ #8080ff 90%,
+ #df80ff 91.25%,
+ #f780ff 91.56%,
+ #ff80ef 91.88%,
+ #ff80bf 92.5%,
+ #ff8090 93.12%,
+ #ff8880 93.44%,
+ #ffa080 93.75%,
+ #ffff80 95%,
+ #a0ff80 96.25%,
+ #88ff80 96.56%,
+ #80ff90 96.88%,
+ #80ffbf 97.5%,
+ #80ffef 98.12%,
+ #80f7ff 98.44%,
+ #80dfff 98.75%,
+ #8080ff);
+}
+.linear.rainbow_increasing-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ #ff72a9 30%,
+ #ff8195 35%,
+ #ff8e83 40%,
+ #ff986d 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+ background:
+ linear-gradient(
+ to right,
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ color(xyz 0.555 0.36 0.418) 30%,
+ color(xyz 0.571 0.387 0.311) 35%,
+ color(xyz 0.57 0.417 0.238) 40%,
+ color(xyz 0.557 0.449 0.194) 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+}
+.radial.rainbow_increasing-esbuild {
+ background:
+ radial-gradient(
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ #ff72a9 30%,
+ #ff8195 35%,
+ #ff8e83 40%,
+ #ff986d 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+ background:
+ radial-gradient(
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ color(xyz 0.555 0.36 0.418) 30%,
+ color(xyz 0.571 0.387 0.311) 35%,
+ color(xyz 0.57 0.417 0.238) 40%,
+ color(xyz 0.557 0.449 0.194) 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+}
+.conic.rainbow_increasing-esbuild {
+ background:
+ conic-gradient(
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ #ff72a9 30%,
+ #ff8195 35%,
+ #ff8e83 40%,
+ #ff986d 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+ background:
+ conic-gradient(
+ #8080ff 10%,
+ #b477f1 15%,
+ #da6fdc 20%,
+ #f36bc3 25%,
+ color(xyz 0.555 0.36 0.418) 30%,
+ color(xyz 0.571 0.387 0.311) 35%,
+ color(xyz 0.57 0.417 0.238) 40%,
+ color(xyz 0.557 0.449 0.194) 45%,
+ #f4a960 50%,
+ #e3b95e 55%,
+ #d0c866 60%,
+ #a8e18d 70%,
+ #85f3c6 80%,
+ #7dfae3 85%,
+ #80ffff 90%);
+}
+.linear.rainbow_decreasing-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ #ffa359 50%,
+ #ff9772 55%,
+ #ff8984 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+ background:
+ linear-gradient(
+ to right,
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ color(xyz 0.568 0.481 0.142) 50%,
+ color(xyz 0.571 0.444 0.184) 55%,
+ color(xyz 0.562 0.41 0.256) 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+}
+.radial.rainbow_decreasing-esbuild {
+ background:
+ radial-gradient(
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ #ffa359 50%,
+ #ff9772 55%,
+ #ff8984 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+ background:
+ radial-gradient(
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ color(xyz 0.568 0.481 0.142) 50%,
+ color(xyz 0.571 0.444 0.184) 55%,
+ color(xyz 0.562 0.41 0.256) 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+}
+.conic.rainbow_decreasing-esbuild {
+ background:
+ conic-gradient(
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ #ffa359 50%,
+ #ff9772 55%,
+ #ff8984 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+ background:
+ conic-gradient(
+ #80ffff 10%,
+ #80fce2 15%,
+ #8df6c2 20%,
+ #bbe180 30%,
+ #d2d363 35%,
+ #e7c34d 40%,
+ #f7b247 45%,
+ color(xyz 0.568 0.481 0.142) 50%,
+ color(xyz 0.571 0.444 0.184) 55%,
+ color(xyz 0.562 0.41 0.256) 60%,
+ #f177b8 70%,
+ #c477e7 80%,
+ #a57bf7 85%,
+ #8080ff 90%);
+}
+.linear.midpoint_hint-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #ff0000,
+ #ffff00 37.5%,
+ #f6ff09 50%,
+ #e7ff18 56.25%,
+ #cfff30 62.5%,
+ #adff52 68.75%,
+ #7fff80 75%,
+ #46ffb9 81.25%,
+ #00ffff 87.5%,
+ #0000ff);
+}
+.radial.midpoint_hint-esbuild {
+ background:
+ radial-gradient(
+ #ff0000,
+ #ffff00 37.5%,
+ #f6ff09 50%,
+ #e7ff18 56.25%,
+ #cfff30 62.5%,
+ #adff52 68.75%,
+ #7fff80 75%,
+ #46ffb9 81.25%,
+ #00ffff 87.5%,
+ #0000ff);
+}
+.conic.midpoint_hint-esbuild {
+ background:
+ conic-gradient(
+ #ff0000,
+ #ffff00 37.5%,
+ #f6ff09 50%,
+ #e7ff18 56.25%,
+ #cfff30 62.5%,
+ #adff52 68.75%,
+ #7fff80 75%,
+ #46ffb9 81.25%,
+ #00ffff 87.5%,
+ #0000ff);
+}
+.linear.premultiplied_alpha-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #ff0000,
+ rgba(250, 0, 5, .792) 1.56%,
+ rgba(248, 0, 7, .718) 3.12%,
+ rgba(244, 0, 11, .62) 6.25%,
+ rgba(236, 0, 19, .486) 12.5%,
+ rgba(214, 0, 41, .306) 25%,
+ rgba(0, 0, 255, .067) 50%,
+ rgba(0, 43, 212, .08) 62.5%,
+ rgba(0, 109, 146, .11) 68.75%,
+ rgba(0, 169, 86, .176) 75%,
+ rgba(0, 209, 46, .282) 81.25%,
+ rgba(0, 233, 22, .447) 87.5%,
+ rgba(0, 247, 8, .682) 93.75%,
+ #00ff00);
+}
+.radial.premultiplied_alpha-esbuild {
+ background:
+ radial-gradient(
+ #ff0000,
+ rgba(250, 0, 5, .792) 1.56%,
+ rgba(248, 0, 7, .718) 3.12%,
+ rgba(244, 0, 11, .62) 6.25%,
+ rgba(236, 0, 19, .486) 12.5%,
+ rgba(214, 0, 41, .306) 25%,
+ rgba(0, 0, 255, .067) 50%,
+ rgba(0, 43, 212, .08) 62.5%,
+ rgba(0, 109, 146, .11) 68.75%,
+ rgba(0, 169, 86, .176) 75%,
+ rgba(0, 209, 46, .282) 81.25%,
+ rgba(0, 233, 22, .447) 87.5%,
+ rgba(0, 247, 8, .682) 93.75%,
+ #00ff00);
+}
+.conic.premultiplied_alpha-esbuild {
+ background:
+ conic-gradient(
+ #ff0000,
+ rgba(250, 0, 5, .792) 1.56%,
+ rgba(248, 0, 7, .718) 3.12%,
+ rgba(244, 0, 11, .62) 6.25%,
+ rgba(236, 0, 19, .486) 12.5%,
+ rgba(214, 0, 41, .306) 25%,
+ rgba(0, 0, 255, .067) 50%,
+ rgba(0, 43, 212, .08) 62.5%,
+ rgba(0, 109, 146, .11) 68.75%,
+ rgba(0, 169, 86, .176) 75%,
+ rgba(0, 209, 46, .282) 81.25%,
+ rgba(0, 233, 22, .447) 87.5%,
+ rgba(0, 247, 8, .682) 93.75%,
+ #00ff00);
+}
+.linear.mixed_units-esbuild {
+ background:
+ linear-gradient(
+ to right,
+ #6e1bff 30px,
+ #7225ff calc(29.06px + 1.88%),
+ #742fff calc(28.12px + 3.75%),
+ #7a42fa calc(26.25px + 7.5%),
+ #8860ea calc(22.5px + 15%),
+ #aa87c7 calc(15px + 30%),
+ #d3a49a calc(7.5px + 45%),
+ #e9b17d calc(3.75px + 52.5%),
+ #ffbd53 60%);
+ background:
+ linear-gradient(
+ to right,
+ color(xyz 0.263 0.11 1.044) 30px,
+ color(xyz 0.265 0.119 1.013) calc(29.06px + 1.88%),
+ color(xyz 0.267 0.129 0.982) calc(28.12px + 3.75%),
+ #7a42fa calc(26.25px + 7.5%),
+ #8860ea calc(22.5px + 15%),
+ #aa87c7 calc(15px + 30%),
+ #d3a49a calc(7.5px + 45%),
+ #e9b17d calc(3.75px + 52.5%),
+ #ffbd53 60%);
+}
+.radial.mixed_units-esbuild {
+ background:
+ radial-gradient(
+ #6e1bff 30px,
+ #7127ff calc(29.06px + 1.88%),
+ #7530ff calc(28.12px + 3.75%),
+ #7c42fb calc(26.25px + 7.5%),
+ #8b60eb calc(22.5px + 15%),
+ #b087c8 calc(15px + 30%),
+ #dca49b calc(7.5px + 45%),
+ #f3b07d calc(3.75px + 52.5%),
+ #ffc173 60%);
+ background:
+ radial-gradient(
+ color(xyz 0.263 0.11 1.044) 30px,
+ color(xyz 0.265 0.12 1.013) calc(29.06px + 1.88%),
+ color(xyz 0.268 0.13 0.983) calc(28.12px + 3.75%),
+ #7c42fb calc(26.25px + 7.5%),
+ #8b60eb calc(22.5px + 15%),
+ #b087c8 calc(15px + 30%),
+ #dca49b calc(7.5px + 45%),
+ #f3b07d calc(3.75px + 52.5%),
+ color(xyz 0.652 0.601 0.162) 60%);
+}
+.conic.mixed_units-esbuild {
+ background:
+ conic-gradient(
+ #6e1bff 8.33%,
+ #7127ff 9.95%,
+ #7530ff 11.56%,
+ #7c42fb 14.79%,
+ #8b60eb 21.25%,
+ #b087c8 34.17%,
+ #dca49b 47.08%,
+ #f3b07d 53.54%,
+ #ffc173 60%);
+ background:
+ conic-gradient(
+ color(xyz 0.263 0.11 1.044) 8.33%,
+ color(xyz 0.265 0.12 1.013) 9.95%,
+ color(xyz 0.268 0.13 0.983) 11.56%,
+ #7c42fb 14.79%,
+ #8b60eb 21.25%,
+ #b087c8 34.17%,
+ #dca49b 47.08%,
+ #f3b07d 53.54%,
+ color(xyz 0.652 0.601 0.162) 60%);
+}