// @flow
import type {Plugin} from 'jss'
/**
* Sort props by length.
*/
export default function jssPropsSort(): Plugin {
const sort = (prop0, prop1) => {
if (prop0.length === prop1.length) {
return prop0 > prop1 ? 1 : -1
}
return prop0.length - prop1.length
}
return {
onProcessStyle(style, rule) {
if (rule.type !== 'style') return style
const newStyle = {}
const props = Object.keys(style).sort(sort)
for (let i = 0; i < props.length; i++) {
newStyle[props[i]] = style[props[i]]
}
return newStyle
}
}
}