UNPKG

4.68 kBSource Map (JSON)View Raw
1{"version":3,"sources":["linkClass.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,cAAc,SAAd,WAAc,CAAC,OAAD,EAAwB,MAAxB,EAAwC,aAAxC,EAAgF;AAChG,QAAI,wBAAJ;QACI,wBADJ;QAEI,2BAFJ,CADgG;;AAKhG,yBAAqB,OAArB,CALgG;;AAOhG,QAAI,OAAO,QAAP,IAAmB,OAAO,QAAP,CAAgB,kBAAhB,CAAnB,EAAwD;AACxD,0BAAkB,IAAlB;;;AADwD,0BAIxD,GAAqB,8BAAe,kBAAf,CAArB,CAJwD;AAKxD,2BAAmB,KAAnB,GAA2B,8BAAe,mBAAmB,KAAnB,CAA1C,CALwD;KAA5D;;AAQA,QAAM,aAAa,8BAAe,mBAAmB,KAAnB,CAAyB,SAAzB,IAAsC,EAAtC,EAA0C,cAAc,aAAd,CAAtE,CAf0F;;AAiBhG,QAAI,gBAAM,cAAN,CAAqB,mBAAmB,KAAnB,CAAyB,QAAzB,CAAzB,EAA6D;AACzD,2BAAmB,KAAnB,CAAyB,QAAzB,GAAoC,YAAY,gBAAM,QAAN,CAAe,IAAf,CAAoB,mBAAmB,KAAnB,CAAyB,QAAzB,CAAhC,EAAoE,MAApE,EAA4E,aAA5E,CAApC,CADyD;KAA7D,MAEO,IAAI,uBAAU,mBAAmB,KAAnB,CAAyB,QAAzB,CAAV,IAAgD,0BAAW,mBAAmB,KAAnB,CAAyB,QAAzB,CAA3D,EAA+F;AACtG,2BAAmB,KAAnB,CAAyB,QAAzB,GAAoC,gBAAM,QAAN,CAAe,GAAf,CAAmB,mBAAmB,KAAnB,CAAyB,QAAzB,EAAmC,UAAC,IAAD,EAAU;AAChG,gBAAI,gBAAM,cAAN,CAAqB,IAArB,CAAJ,EAAgC;AAC5B,uBAAO,YAAY,IAAZ,EAAkB,MAAlB,EAA0B,aAA1B,CAAP,CAD4B;aAAhC,MAEO;AACH,uBAAO,IAAP,CADG;aAFP;SADsF,CAA1F,CADsG;KAAnG;;AAUP,QAAI,WAAW,MAAX,EAAmB;AACnB,0BAAkB,uCAAwB,MAAxB,EAAgC,UAAhC,EAA4C,cAAc,iBAAd,CAA9D,CADmB;;AAGnB,YAAI,eAAJ,EAAqB;AACjB,gBAAI,mBAAmB,KAAnB,CAAyB,SAAzB,EAAoC;AACpC,kCAAkB,mBAAmB,KAAnB,CAAyB,SAAzB,GAAqC,GAArC,GAA2C,eAA3C,CADkB;aAAxC;;AAIA,+BAAmB,KAAnB,CAAyB,SAAzB,GAAqC,eAArC,CALiB;AAMjB,+BAAmB,KAAnB,CAAyB,SAAzB,GAAqC,IAArC,CANiB;SAArB;KAHJ;;AAaA,QAAI,eAAJ,EAAqB;AACjB,eAAO,MAAP,CAAc,mBAAmB,KAAnB,CAAd,CADiB;AAEjB,eAAO,MAAP,CAAc,kBAAd,EAFiB;KAArB;;AAKA,WAAO,kBAAP,CA/CgG;CAAhF;;;;;;;;kBAuDL,UAAC,OAAD,EAAyE;QAAjD,+DAAS,kBAAwC;QAApC,iCAAoC;;;AAEpF,QAAI,CAAC,wBAAW,OAAX,CAAD,EAAsB;AACtB,eAAO,OAAP,CADsB;KAA1B;;AAIA,QAAM,gBAAgB,iCAAkB,iBAAlB,CAAhB,CAN8E;;AAQpF,WAAO,YAAY,OAAZ,EAAqB,MAArB,EAA6B,aAA7B,CAAP,CARoF;CAAzE","file":"linkClass.js","sourcesContent":["import _ from 'lodash';\nimport React, {\n ReactElement\n} from 'react';\nimport makeConfiguration from './makeConfiguration';\nimport isIterable from './isIterable';\nimport parseStyleName from './parseStyleName';\nimport generateAppendClassName from './generateAppendClassName';\nimport objectUnfreeze from 'object-unfreeze';\n\nconst linkElement = (element: ReactElement, styles: Object, configuration: Object): ReactElement => {\n let appendClassName,\n elementIsFrozen,\n elementShallowCopy;\n\n elementShallowCopy = element;\n\n if (Object.isFrozen && Object.isFrozen(elementShallowCopy)) {\n elementIsFrozen = true;\n\n // https://github.com/facebook/react/blob/v0.13.3/src/classic/element/ReactElement.js#L131\n elementShallowCopy = objectUnfreeze(elementShallowCopy);\n elementShallowCopy.props = objectUnfreeze(elementShallowCopy.props);\n }\n\n const styleNames = parseStyleName(elementShallowCopy.props.styleName || '', configuration.allowMultiple);\n\n if (React.isValidElement(elementShallowCopy.props.children)) {\n elementShallowCopy.props.children = linkElement(React.Children.only(elementShallowCopy.props.children), styles, configuration);\n } else if (_.isArray(elementShallowCopy.props.children) || isIterable(elementShallowCopy.props.children)) {\n elementShallowCopy.props.children = React.Children.map(elementShallowCopy.props.children, (node) => {\n if (React.isValidElement(node)) {\n return linkElement(node, styles, configuration);\n } else {\n return node;\n }\n });\n }\n\n if (styleNames.length) {\n appendClassName = generateAppendClassName(styles, styleNames, configuration.errorWhenNotFound);\n\n if (appendClassName) {\n if (elementShallowCopy.props.className) {\n appendClassName = elementShallowCopy.props.className + ' ' + appendClassName;\n }\n\n elementShallowCopy.props.className = appendClassName;\n elementShallowCopy.props.styleName = null;\n }\n }\n\n if (elementIsFrozen) {\n Object.freeze(elementShallowCopy.props);\n Object.freeze(elementShallowCopy);\n }\n\n return elementShallowCopy;\n};\n\n/**\n * @param {ReactElement} element\n * @param {Object} styles CSS modules class map.\n * @param {CSSModules~Options} userConfiguration\n */\nexport default (element: ReactElement, styles = {}, userConfiguration): ReactElement => {\n // @see https://github.com/gajus/react-css-modules/pull/30\n if (!_.isObject(element)) {\n return element;\n }\n\n const configuration = makeConfiguration(userConfiguration);\n\n return linkElement(element, styles, configuration);\n};\n"],"sourceRoot":"/source/"}
\No newline at end of file