@@ -15,7 +15,7 @@ import {name as isIdentifierName} from 'estree-util-is-identifier-name'
1515import { whitespace } from 'hast-util-whitespace'
1616import { find , hastToReact , html , svg } from 'property-information'
1717import { stringify as spaces } from 'space-separated-tokens'
18- import styleToObject from 'style-to-object '
18+ import styleToJs from 'style-to-js '
1919import { pointStart } from 'unist-util-position'
2020import { VFileMessage } from 'vfile-message'
2121
@@ -26,7 +26,6 @@ const own = {}.hasOwnProperty
2626const emptyMap = new Map ( )
2727
2828const cap = / [ A - Z ] / g
29- const dashSomething = / - ( [ a - z ] ) / g
3029
3130// `react-dom` triggers a warning for *any* white space in tables.
3231// To follow GFM, `mdast-util-to-hast` injects line endings between elements.
@@ -635,49 +634,24 @@ function createProperty(state, prop, value) {
635634 * Throws `VFileMessage` when CSS cannot be parsed.
636635 */
637636function parseStyle ( state , value ) {
638- /** @type {Style } */
639- const result = { }
640-
641637 try {
642- styleToObject ( value , replacer )
638+ return styleToJs ( value , { reactCompat : true } )
643639 } catch ( error ) {
644- if ( ! state . ignoreInvalidStyle ) {
645- const cause = /** @type {Error } */ ( error )
646- const message = new VFileMessage ( 'Cannot parse `style` attribute' , {
647- ancestors : state . ancestors ,
648- cause,
649- ruleId : 'style' ,
650- source : 'hast-util-to-jsx-runtime'
651- } )
652- message . file = state . filePath || undefined
653- message . url = docs + '#cannot-parse-style-attribute'
654-
655- throw message
640+ if ( state . ignoreInvalidStyle ) {
641+ return { }
656642 }
657- }
658643
659- return result
660-
661- /**
662- * Add a CSS property (normal, so with dashes) to `result` as a DOM CSS
663- * property.
664- *
665- * @param {string } name
666- * Key.
667- * @param {string } value
668- * Value
669- * @returns {undefined }
670- * Nothing.
671- */
672- function replacer ( name , value ) {
673- let key = name
674-
675- if ( key . slice ( 0 , 2 ) !== '--' ) {
676- if ( key . slice ( 0 , 4 ) === '-ms-' ) key = 'ms-' + key . slice ( 4 )
677- key = key . replace ( dashSomething , toCamel )
678- }
644+ const cause = /** @type {Error } */ ( error )
645+ const message = new VFileMessage ( 'Cannot parse `style` attribute' , {
646+ ancestors : state . ancestors ,
647+ cause,
648+ ruleId : 'style' ,
649+ source : 'hast-util-to-jsx-runtime'
650+ } )
651+ message . file = state . filePath || undefined
652+ message . url = docs + '#cannot-parse-style-attribute'
679653
680- result [ key ] = value
654+ throw message
681655 }
682656}
683657
@@ -800,20 +774,6 @@ function transformStyleToCssCasing(from) {
800774 return to
801775}
802776
803- /**
804- * Make `$1` capitalized.
805- *
806- * @param {string } _
807- * Whatever.
808- * @param {string } $1
809- * Single ASCII alphabetical.
810- * @returns {string }
811- * Capitalized `$1`.
812- */
813- function toCamel ( _ , $1 ) {
814- return $1 . toUpperCase ( )
815- }
816-
817777/**
818778 * Make `$0` dash cased.
819779 *
0 commit comments