Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A module to find HSL(a) color syntax substrings in a string with their offsets and their color instance.

License

NotificationsYou must be signed in to change notification settings

jaywcjlove/hsl-matcher

Repository files navigation

Buy me a coffeeBuild & DeployOpen in unpkgnpm versionCoverage Status

A module to findHSL(a) color syntax substrings in a string with their offsets and their color instance.

Installation

This package isESM only: Node 12+ is needed to use it and it must be import instead of require.

npm install hsl-matcher

If you still want to use in CommonJS, you can use dynamicimport() to load.

consthslMatcher=awaitimport('hsl-matcher');// Fix compiling in typescript.// https://github.com/microsoft/TypeScript/issues/43329#issuecomment-922544562consthslMatcher=await(Function('return import("hsl-matcher")')())asPromise<typeofimport("hsl-matcher")>;

Usage

importhslMatcherfrom"hsl-matcher";hslMatcher("hsl(240, 100%, 50%)");// ✅ comma separated// => { h: '240', s: '100%', l: '50%', a: undefined }hslMatcher("hsl(240, 100%, 50%, 0.1)");// ✅ comma separated with opacity// => { h: '240', s: '100%', l: '50%', a: '0.1' }hslMatcher("hsl(240, 100%, 50%, 10%)");// ✅ comma separated with % opacity// => { h: '240', s: '100%', l: '50%', a: '10%' }hslMatcher("hsl(240, 100%, 50%, 10x)");// => false        // ❌hslMatcher("hsl(240,100%,50%,0.1)");// ✅ comma separated without spaceshslMatcher("hsl(180deg, 100%, 50%, 0.1)");// ✅ hue with 'deg'hslMatcher("hsl(3.14rad, 100%, 50%, 0.1)");// ✅ hue with 'rad'hslMatcher("hsl(200grad, 100%, 50%, 0.1)");// ✅ hue with 'grad'hslMatcher("hsl(0.5turn, 100%, 50%, 0.1)");// ✅ hue with 'turn'hslMatcher("hsl(-240, -100%, -50%, -0.1)");// ✅ negative valueshslMatcher("hsl(+240, +100%, +50%, +0.1)");// ✅ explicit positive signhslMatcher("hsl(240.5, 99.99%, 49.999%, 0.9999)");// ✅ non-integer valueshslMatcher("hsl(.9, .99%, .999%, .9999)");// ✅ fraction w/o leading zerohslMatcher("hsl(.9, .99%, .999%, )");// => false          // ❌hslMatcher("hsl(0240, 0100%, 0050%, 01)");// ✅ leading zeroshslMatcher("hsl(240.0, 100.00%, 50.000%, 1.0000)");// ✅ trailing decimal zeroshslMatcher("hsl(2400, 1000%, 1000%, 10)");// ✅ out of range valueshslMatcher("hsl(-2400.01deg, -1000.5%, -1000.05%, -100)");// ✅ combination of abovehslMatcher("hsl(2.40e+2, 1.00e+2%, 5.00e+1%, 1E-3)");// ✅ scientific notationhslMatcher("hsl(240 100% 50%)");// ✅ space separated (CSS Color Level 4)hslMatcher("hsl(240 100% 50% / 0.1)");// ✅ space separated with opacityhslMatcher("hsla(240, 100%, 50%)");// ✅ hsla() aliashslMatcher("hsla(240, 100%, 50%, 0.1)");// ✅ hsla() with opacityhslMatcher("HSL(240Deg, 100%, 50%)");// ✅ case insensitive

hlsStringToRGB / gradsToDegrees / radiansToDegrees

import{hlsStringToRGB,gradsToDegrees,radiansToDegrees}from"hsl-matcher";hlsStringToRGB("hsla(240, 100%, 50%)")// => { r: 0, g: 0, b: 255 }gradsToDegrees("200");// => 180gradsToDegrees(200);// => 180radiansToDegrees(3.14);// => 180

API

exportinterfaceRGBColor{r:number;g:number;b:number;}exportinterfaceRGBAColorextendsRGBColor{a:number;}exportinterfaceHSLObjectStringColor{h:string;s:string;l:string;}exportinterfaceHSLAObjectStringColorextendsHSLObjectStringColor{a?:string;}/** Convert HLS string to HLS object or verify whether hls is valid */exportdefaultfunctionhslMatcher(hsl?:string):HSLAObjectStringColor|undefined;/** * Convert HSL String to RGB * * ```js * hsl(240, 100%, 50%)                         // ✅ comma separated * hsl(240, 100%, 50%, 0.1)                    // ✅ comma separated with opacity * hsl(240, 100%, 50%, 10%)                    // ✅ comma separated with % opacity * hsl(240, 100%, 50%, 10x)                    // ❌ * hsl(240,100%,50%,0.1)                       // ✅ comma separated without spaces * hsl(180deg, 100%, 50%, 0.1)                 // ✅ hue with 'deg' * hsl(3.14rad, 100%, 50%, 0.1)                // ✅ hue with 'rad' * hsl(200grad, 100%, 50%, 0.1)                // ✅ hue with 'grad' * hsl(0.5turn, 100%, 50%, 0.1)                // ✅ hue with 'turn' * hsl(-240, -100%, -50%, -0.1)                // ✅ negative values * hsl(+240, +100%, +50%, +0.1)                // ✅ explicit positive sign * hsl(240.5, 99.99%, 49.999%, 0.9999)         // ✅ non-integer values * hsl(.9, .99%, .999%, .9999)                 // ✅ fraction w/o leading zero * hsl(.9, .99%, .999%, )                      // ❌ * hsl(0240, 0100%, 0050%, 01)                 // ✅ leading zeros * hsl(240.0, 100.00%, 50.000%, 1.0000)        // ✅ trailing decimal zeros * hsl(2400, 1000%, 1000%, 10)                 // ✅ out of range values * hsl(-2400.01deg, -1000.5%, -1000.05%, -100) // ✅ combination of above * hsl(2.40e+2, 1.00e+2%, 5.00e+1%, 1E-3)      // ✅ scientific notation * hsl(240 100% 50%)                           // ✅ space separated (CSS Color Level 4) * hsl(240 100% 50% / 0.1)                     // ✅ space separated with opacity * hsla(240, 100%, 50%)                        // ✅ hsla() alias * hsla(240, 100%, 50%, 0.1)                   // ✅ hsla() with opacity * HSL(240Deg, 100%, 50%)                      // ✅ case insensitive * ``` * *@param string *@returns <RGBColor | RGBAColor | undefined> * * https://www.30secondsofcode.org/js/s/hsl-to-rgb */exportdeclarefunctionhlsStringToRGB(hls:string):RGBColor|RGBAColor|undefined;/** Convert `grad` to `deg` */exportdeclarefunctiongradsToDegrees(input:string|number):number;/** Convert `rad` to `deg` */exportdeclarefunctionradiansToDegrees(radians:number):number;

Contributors

As always, thanks to our amazing contributors!

Made withaction-contributors.

License

Licensed under the MIT License.

About

A module to find HSL(a) color syntax substrings in a string with their offsets and their color instance.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp