1.0.0 • Published 27 days ago

@ptkhanh94npm/occaecati-nesciunt-explicabo v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
27 days ago

@ptkhanh94npm/occaecati-nesciunt-explicabo

NPM

NPM version Bundlephobia minified + gzip build codecov NPM downloads

Parses CSS inline style to JavaScript object (camelCased):

StyleToJS(string)

Example

import parse from '@ptkhanh94npm/occaecati-nesciunt-explicabo';

parse('background-color: #BADA55;');

Output:

{ "backgroundColor": "#BADA55" }

Replit | JSFiddle | Examples

Install

NPM:

npm install @ptkhanh94npm/occaecati-nesciunt-explicabo --save

Yarn:

yarn add @ptkhanh94npm/occaecati-nesciunt-explicabo

CDN:

<script src="https://unpkg.com/@ptkhanh94npm/occaecati-nesciunt-explicabo@latest/umd/@ptkhanh94npm/occaecati-nesciunt-explicabo.min.js"></script>
<script>
  window.StyleToJS(/* string */);
</script>

Usage

Import

Import with ES Modules:

import parse from '@ptkhanh94npm/occaecati-nesciunt-explicabo';

Require with CommonJS:

const parse = require('@ptkhanh94npm/occaecati-nesciunt-explicabo');

Parse style

Parse single declaration:

parse('line-height: 42');

Output:

{ "lineHeight": "42" }

Notice that the CSS property is camelCased.

Parse multiple declarations:

parse(`
  border-color: #ACE;
  z-index: 1337;
`);

Output:

{
  "borderColor": "#ACE",
  "zIndex": "1337"
}

Vendor prefix

Parse vendor prefix:

parse(`
  -webkit-transition: all 4s ease;
  -moz-transition: all 4s ease;
  -ms-transition: all 4s ease;
  -o-transition: all 4s ease;
  -khtml-transition: all 4s ease;
`);

Output:

{
  "webkitTransition": "all 4s ease",
  "mozTransition": "all 4s ease",
  "msTransition": "all 4s ease",
  "oTransition": "all 4s ease",
  "khtmlTransition": "all 4s ease"
}

Custom property

Parse custom property:

parse('--custom-property: #f00');

Output:

{ "--custom-property": "#f00" }

Unknown declaration

This library does not validate declarations, so unknown declarations can be parsed:

parse('the-answer: 42;');

Output:

{ "theAnswer": "42" }

Invalid declaration

Declarations with missing value are removed:

parse(`
  margin-top: ;
  margin-right: 1em;
`);

Output:

{ "marginRight": "1em" }

Other invalid declarations or arguments:

parse(); // {}
parse(null); // {}
parse(1); // {}
parse(true); // {}
parse('top:'); // {}
parse(':12px'); // {}
parse(':'); // {}
parse(';'); // {}

The following values will throw an error:

parse('top'); // Uncaught Error: property missing ':'
parse('/*'); // Uncaught Error: End of comment missing

Options

reactCompat

When option reactCompat is true, the vendor prefix will be capitalized:

parse(
  `
    -webkit-transition: all 4s ease;
    -moz-transition: all 4s ease;
    -ms-transition: all 4s ease;
    -o-transition: all 4s ease;
    -khtml-transition: all 4s ease;
  `,
  { reactCompat: true },
);

Output:

{
  "WebkitTransition": "all 4s ease",
  "MozTransition": "all 4s ease",
  "msTransition": "all 4s ease",
  "OTransition": "all 4s ease",
  "KhtmlTransition": "all 4s ease"
}

This removes the React warning:

Warning: Unsupported vendor-prefixed style property %s. Did you mean %s?%s", "oTransition", "OTransition"

Testing

Run tests with coverage:

npm test

Run tests in watch mode:

npm run test:watch

Lint files:

npm run lint

Fix lint errors:

npm run lint:fix

Release

Release and publish are automated by Release Please.

Special Thanks

License

MIT

io-tsless cssajaxfind-uptrimLeftmkdirassertssymbolshardlinksECMAScript 5forEachrfc4122react-hook-formlastformatStreamspoint-freeargvtapArrayBuffer#sliceprefixwebsitethrottleinputpushclientInt32Arraystylesjsworkspace:*serializeWebSocketobjectregularES2018exit-codeStyleSheettermiterationes8appbuffersmkdirsesfrommulti-packageRxasynctoArraycurllookreduxprivatephoneprocesscss nestingdescriptorsdefinePropertyTypeScriptdeleteextendqstoolkitvalidatoroptimistaccessibilityanimationjestUint8Arrayvariables in cssrapidawaitlinewrapreact-testing-libraryrecursivefast-cloneArray.prototype.findLastprotobufString.prototype.trimfigletpyyamlguidserializertslibwordwrapslicearrayfantasy-landfull-widthCSShookformnegative zeroECMAScript 2023authjsdomMicrosoftencryptiondirinternal slotreactECMAScript 20190Float32ArrayconststylenpmajvdeepclonecacheefficientwatcherArray.prototype.findLastIndexcensorecmascriptshrinkwrapsuperagentstyleguideponyfillcontainsfastifycompareomitdatatddtestcolor3dcollectionargsframeworkinspectArrayfile systemhttpsjson-schema-validatorthroatInt8ArrayremovevalidateinstallerxsstapebufferregexpeslintwatchFileboundlrubyteOffsetmimetypesrmcodesfetchuser-streamsxtermURLcreatelazycircularcollection.es6ES8sortvisualdescriptioncjkplugines2015Symbolregular expressioncomputed-typesfindeslintpluginutilitiescommandchildES2015robustform-validationchromehasdropworkerthreewebpreprocessorassertrequestnumber256ECMAScript 7fastclonescheme-validationlibphonenumbermovecall-bindWebSocketsHyBiautoprefixerschemetypanionES2021trimStartless.jsisConcatSpreadableposequoteurlsdatastructuresymlinksi18ncall-boundObservableredactSetPushstringschemaquerystringtrimRighttypedarrayurlunicodevarJSON-SchemapromisesTypeBoxwritableObject.assignECMAScript 2020binderrores2018asciijsdiffhttpfunctionalgesturesbrowserlistflagsyntaxerrorclassnamescliexpressionopenfplimitedgdprflags-0shimfullwidtheventEmitterwatchjsones-abstractsuperstructinferenceECMAScript 2021datematchesjson-schemaletfast-copypositivejwtshellbundlingminimalsetter6to5taketexthasOwnlanguageArray.prototype.includeseslintconfigjson-schema-validationexesigintwaitlimitmkdirpreadreadablestreamrmdirstylingutilflatMapslotgetPrototypeOfparseapiawesomesaucetypedarraysbytedependencieses6postcss-pluginirqenvironmentprettylook-upmakedefineECMAScript 6performanceiteratetseditorcurriedbootstrap lesscore-jsserializationindicatornested csspackagebusyenvES2019ECMAScript 2015batchArray.prototype.flatMapinvariantconsoleweakmapzeroObjectIteratorpackage.jsondescriptorduplex[[Prototype]]a11y
1.0.0

27 days ago