UNPKG

4.68 kBSource Map (JSON)View Raw
1{"version":3,"sources":["linkClass.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAI,wBAAJ;;AAEA,eAAc,qBAAC,OAAD,EAAU,MAAV,EAAkB,aAAlB,EAAoC;AAC9C,QAAI,2BAAJ;QACI,2BADJ;QAEI,8BAFJ;QAGI,sBAHJ,CAD8C;;AAM9C,yBAAqB,OAArB,CAN8C;;AAQ9C,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,iBAAa,8BAAe,mBAAmB,KAAnB,CAAyB,SAAzB,IAAsC,EAAtC,EAA0C,cAAc,aAAd,CAAtE,CAhB8C;;AAkB9C,QAAI,gBAAM,cAAN,CAAqB,mBAAmB,KAAnB,CAAyB,QAAzB,CAAzB,EAA6D;AACzD,2BAAmB,KAAnB,CAAyB,QAAzB,GAAoC,aAAY,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,aAAY,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,CAhD8C;CAApC;;;;;;;;;kBAyDC,UAAC,OAAD,EAA6C;QAAnC,+DAAS,kBAA0B;QAAtB,iCAAsB;;AACxD,QAAI,yBAAJ;;;AADwD,QAIpD,CAAC,wBAAW,OAAX,CAAD,EAAsB;AACtB,eAAO,OAAP,CADsB;KAA1B;;AAIA,oBAAgB,iCAAkB,iBAAlB,CAAhB,CARwD;;AAUxD,WAAO,aAAY,OAAZ,EAAqB,MAArB,EAA6B,aAA7B,CAAP,CAVwD;CAA7C","file":"linkClass.js","sourcesContent":["import _ from 'lodash';\nimport React from 'react';\nimport makeConfiguration from './makeConfiguration';\nimport isIterable from './isIterable';\nimport parseStyleName from './parseStyleName';\nimport generateAppendClassName from './generateAppendClassName';\nimport objectUnfreeze from 'object-unfreeze';\n\nlet linkElement;\n\nlinkElement = (element, styles, configuration) => {\n let appendClassName,\n elementIsFrozen,\n elementShallowCopy,\n styleNames;\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 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 * @returns {ReactElement}\n */\nexport default (element, styles = {}, userConfiguration) => {\n let configuration;\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 return linkElement(element, styles, configuration);\n};\n"],"sourceRoot":"/source/"}
\No newline at end of file