(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jssPluginCamelCase = {})); }(this, (function (exports) { 'use strict'; /* eslint-disable no-var, prefer-template */ var uppercasePattern = /[A-Z]/g; var msPattern = /^ms-/; var cache = {}; function toHyphenLower(match) { return '-' + match.toLowerCase() } function hyphenateStyleName(name) { if (cache.hasOwnProperty(name)) { return cache[name] } var hName = name.replace(uppercasePattern, toHyphenLower); return (cache[name] = msPattern.test(hName) ? '-' + hName : hName) } /** * Convert camel cased property names to dash separated. * * @param {Object} style * @return {Object} */ function convertCase(style) { var converted = {}; for (var prop in style) { var key = prop.indexOf('--') === 0 ? prop : hyphenateStyleName(prop); converted[key] = style[prop]; } if (style.fallbacks) { if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks); } return converted; } /** * Allow camel cased property names by converting them back to dasherized. * * @param {Rule} rule */ function camelCase() { function onProcessStyle(style) { if (Array.isArray(style)) { // Handle rules like @font-face, which can have multiple styles in an array for (var index = 0; index < style.length; index++) { style[index] = convertCase(style[index]); } return style; } return convertCase(style); } function onChangeValue(value, prop, rule) { if (prop.indexOf('--') === 0) { return value; } var hyphenatedProp = hyphenateStyleName(prop); // There was no camel case in place if (prop === hyphenatedProp) return value; rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above. return null; } return { onProcessStyle: onProcessStyle, onChangeValue: onChangeValue }; } exports.default = camelCase; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=jss-plugin-camel-case.js.map