UNPKG

6.11 kBSource Map (JSON)View Raw
1{"version":3,"sources":["linkClass.js"],"names":[],"mappings":"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","file":"linkClass.js","sourcesContent":["import React from 'react';\nimport makeConfiguration from './makeConfiguration';\nimport isIterable from './isIterable';\nimport _ from 'lodash';\n\nlet generateAppendClassName,\n linkClass,\n parseStyleName;\n\nparseStyleName = (styleNamePropertyValue: string, allowMultiple: boolean): Array<string> => {\n let styleNames;\n\n styleNames = styleNamePropertyValue.split(' ');\n styleNames = _.filter(styleNames);\n\n if (allowMultiple === false && styleNames.length > 1) {\n throw new Error('ReactElement styleName property defines multiple module names (\"' + styleNamePropertyValue + '\").');\n }\n\n return styleNames;\n};\n\ngenerateAppendClassName = (styles, styleNames: Array<string>, errorWhenNotFound: boolean): string => {\n let appendClassName;\n\n appendClassName = '';\n\n appendClassName = _.map(styleNames, (styleName) => {\n if (styles[styleName]) {\n return styles[styleName];\n } else {\n if (errorWhenNotFound === true) {\n throw new Error('\"' + styleName + '\" CSS module is undefined.');\n }\n\n return '';\n }\n });\n\n appendClassName = _.filter(appendClassName, 'length');\n\n appendClassName = appendClassName.join(' ');\n\n return appendClassName;\n};\n\n/**\n * @param {ReactElement} element\n * @param {Object} styles CSS modules class map.\n * @param {CSSModules~Options} userConfiguration\n * @returns {ReactElement}\n */\nlinkClass = (element, styles = {}, userConfiguration) => {\n let appendClassName,\n children,\n clonedElement,\n configuration,\n newChildren,\n newProps,\n styleNames;\n\n // @see https://github.com/gajus/react-css-modules/pull/30\n if (!_.isObject(element)) {\n return element;\n }\n\n configuration = makeConfiguration(userConfiguration);\n\n styleNames = parseStyleName(element.props.styleName || '', configuration.allowMultiple);\n\n if (styleNames.length) {\n appendClassName = generateAppendClassName(styles, styleNames, configuration.errorWhenNotFound);\n }\n\n // element.props.children can be one of the following:\n // 'text'\n // ['text']\n // [ReactElement, 'text']\n // ReactElement\n\n children = element.props.children;\n\n if (React.isValidElement(children)) {\n newChildren = linkClass(React.Children.only(children), styles, configuration);\n } else if (_.isArray(children) || isIterable(children)) {\n /* eslint-disable lodash3/prefer-lodash-method */\n newChildren = React.Children.map(children, (node) => {\n /* eslint-enable lodash3/prefer-lodash-method */\n if (React.isValidElement(node)) {\n return linkClass(node, styles, configuration);\n } else {\n return node;\n }\n });\n\n // https://github.com/facebook/react/issues/4723#issuecomment-135555277\n // Forcing children into an array produces the following error:\n // Warning: A ReactFragment is an opaque type. Accessing any of its properties is deprecated. Pass it to one of the React.Children helpers.\n // newChildren = _.values(newChildren);\n }\n\n if (appendClassName) {\n if (element.props.className) {\n appendClassName = element.props.className + ' ' + appendClassName;\n }\n\n newProps = {\n className: appendClassName,\n styleName: null\n };\n }\n\n if (newChildren) {\n clonedElement = React.cloneElement(element, newProps, newChildren);\n } else {\n clonedElement = React.cloneElement(element, newProps);\n }\n\n return clonedElement;\n};\n\nexport default linkClass;\n"],"sourceRoot":"/source/"}
\No newline at end of file