UNPKG

8.47 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/getClassName.js"],"names":["isNamespacedStyleName","styleName","indexOf","handleError","message","handleMissingStyleName","Error","console","warn","getClassNameForNamespacedStyleName","styleModuleImportMap","handleMissingStyleNameOption","styleNameParts","split","importName","moduleName","optionsDefaults","getClassNameFromMultipleImports","importKeysWithMatches","Object","keys","map","importKey","filter","length","join","styleNameValue","options","styleModuleImportMapKeys","autoResolveMultipleImports","styleModuleMap","className"],"mappings":";;;;;;;AAQA;;;;AAEA,MAAMA,qBAAqB,GAAIC,SAAD,IAAgC;AAC5D,SAAOA,SAAS,CAACC,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAAnC;AACD,CAFD;;AAIA,MAAMC,WAAW,GAAG,CAACC,OAAD,EAAkBC,sBAAlB,KAAqF;AACvG,MAAIA,sBAAsB,KAAK,OAA/B,EAAwC;AACtC,UAAM,IAAIC,KAAJ,CAAUF,OAAV,CAAN;AACD,GAFD,MAEO,IAAIC,sBAAsB,KAAK,MAA/B,EAAuC;AAC5C;AACAE,IAAAA,OAAO,CAACC,IAAR,CAAaJ,OAAb;AACD;;AAED,SAAO,IAAP;AACD,CATD;;AAWA,MAAMK,kCAAkC,GAAG,CACzCR,SADyC,EAEzCS,oBAFyC,EAGzCC,4BAHyC,KAI7B;AACZ;AACA;AACA;AACA,QAAMC,cAAc,GAAGX,SAAS,CAACY,KAAV,CAAgB,GAAhB,CAAvB;AACA,QAAMC,UAAU,GAAGF,cAAc,CAAC,CAAD,CAAjC;AACA,QAAMG,UAAU,GAAGH,cAAc,CAAC,CAAD,CAAjC;AACA,QAAMP,sBAAsB,GAAGM,4BAA4B,IACzDK,yBAAgBX,sBADlB;;AAGA,MAAI,CAACU,UAAL,EAAiB;AACf,WAAOZ,WAAW,CAAC,yBAAyBF,SAA1B,EAAqCI,sBAArC,CAAlB;AACD;;AAED,MAAI,CAACK,oBAAoB,CAACI,UAAD,CAAzB,EAAuC;AACrC,WAAOX,WAAW,CAAC,uCAAuCW,UAAxC,EAAoDT,sBAApD,CAAlB;AACD;;AAED,MAAI,CAACK,oBAAoB,CAACI,UAAD,CAApB,CAAiCC,UAAjC,CAAL,EAAmD;AACjD,WAAOZ,WAAW,CAAC,gCAAgCY,UAAjC,EAA6CV,sBAA7C,CAAlB;AACD;;AAED,SAAOK,oBAAoB,CAACI,UAAD,CAApB,CAAiCC,UAAjC,CAAP;AACD,CA3BD;;AA6BA,MAAME,+BAA+B,GAAG,CACtChB,SADsC,EAEtCS,oBAFsC,EAGtCC,4BAHsC,KAI1B;AACZ,QAAMN,sBAAsB,GAAGM,4BAA4B,IACzDK,yBAAgBX,sBADlB;AAGA,QAAMa,qBAAqB,GAAGC,MAAM,CAACC,IAAP,CAAYV,oBAAZ,EAC3BW,GAD2B,CACtBC,SAAD,IAAe;AAClB,WAAOZ,oBAAoB,CAACY,SAAD,CAApB,CAAgCrB,SAAhC,KAA8CqB,SAArD;AACD,GAH2B,EAI3BC,MAJ2B,CAInBD,SAAD,IAAe;AACrB,WAAOA,SAAP;AACD,GAN2B,CAA9B;;AAQA,MAAIJ,qBAAqB,CAACM,MAAtB,GAA+B,CAAnC,EAAsC;AACpC,UAAM,IAAIlB,KAAJ,CAAU,+BAA+BL,SAA/B,GAA2C,8CAA3C,GACd,QADc,GACHiB,qBAAqB,CAACO,IAAtB,CAA2B,MAA3B,CADG,GAEd,wDAFc,GAGd,yBAHc,GAGcP,qBAAqB,CAAC,CAAD,CAHnC,GAGyC,IAHzC,GAId,0BAJc,GAIejB,SAJf,GAI2B,MAJ3B,GAKd,MALI,CAAN;AAMD;;AAED,MAAIiB,qBAAqB,CAACM,MAAtB,KAAiC,CAArC,EAAwC;AACtC,WAAOrB,WAAW,CAAC,uCAAuCF,SAAvC,GAAmD,KAApD,EAA2DI,sBAA3D,CAAlB;AACD;;AAED,SAAOK,oBAAoB,CAACQ,qBAAqB,CAAC,CAAD,CAAtB,CAApB,CAA+CjB,SAA/C,CAAP;AACD,CA9BD;;eAgCe,CAACyB,cAAD,EAAyBhB,oBAAzB,EAAyEiB,OAAzE,KAAuH;AACpI,QAAMC,wBAAwB,GAAGT,MAAM,CAACC,IAAP,CAAYV,oBAAZ,CAAjC;AAEA,QAAM;AACJL,IAAAA,sBAAsB,GAAGW,yBAAgBX,sBADrC;AAEJwB,IAAAA,0BAA0B,GAAGb,yBAAgBa;AAFzC,MAGFF,OAAO,IAAI,EAHf;;AAKA,MAAI,CAACD,cAAL,EAAqB;AACnB,WAAO,EAAP;AACD;;AAED,SAAOA,cAAc,CAClBb,KADI,CACE,GADF,EAEJU,MAFI,CAEItB,SAAD,IAAe;AACrB,WAAOA,SAAP;AACD,GAJI,EAKJoB,GALI,CAKCpB,SAAD,IAAe;AAClB,QAAID,qBAAqB,CAACC,SAAD,CAAzB,EAAsC;AACpC,aAAOQ,kCAAkC,CAACR,SAAD,EAAYS,oBAAZ,EAAkCL,sBAAlC,CAAzC;AACD;;AAED,QAAIuB,wBAAwB,CAACJ,MAAzB,KAAoC,CAAxC,EAA2C;AACzC,YAAM,IAAIlB,KAAJ,CAAU,qDAAqDL,SAArD,GACd,+CADI,CAAN;AAED;;AAED,QAAI2B,wBAAwB,CAACJ,MAAzB,GAAkC,CAAtC,EAAyC;AACvC,UAAI,CAACK,0BAAL,EAAiC;AAC/B,cAAM,IAAIvB,KAAJ,CAAU,uCAAuCL,SAAvC,GACd,iGADI,CAAN;AAED;;AAED,aAAOgB,+BAA+B,CAAChB,SAAD,EAAYS,oBAAZ,EAAkCL,sBAAlC,CAAtC;AACD;;AAED,UAAMyB,cAAkC,GAAGpB,oBAAoB,CAACkB,wBAAwB,CAAC,CAAD,CAAzB,CAA/D;;AAEA,QAAI,CAACE,cAAc,CAAC7B,SAAD,CAAnB,EAAgC;AAC9B,aAAOE,WAAW,CAAC,uCAAuCF,SAAvC,GAAmD,KAApD,EAA2DI,sBAA3D,CAAlB;AACD;;AAED,WAAOyB,cAAc,CAAC7B,SAAD,CAArB;AACD,GA/BI,EAgCJsB,MAhCI,CAgCIQ,SAAD,IAAe;AACrB;AACA,WAAOA,SAAP;AACD,GAnCI,EAoCJN,IApCI,CAoCC,GApCD,CAAP;AAqCD,C","sourcesContent":["// @flow\n\nimport type {\n StyleModuleMapType,\n StyleModuleImportMapType,\n HandleMissingStyleNameOptionType,\n GetClassNameOptionsType\n} from './types';\nimport optionsDefaults from './schemas/optionsDefaults';\n\nconst isNamespacedStyleName = (styleName: string): boolean => {\n return styleName.indexOf('.') !== -1;\n};\n\nconst handleError = (message: string, handleMissingStyleName: HandleMissingStyleNameOptionType): null => {\n if (handleMissingStyleName === 'throw') {\n throw new Error(message);\n } else if (handleMissingStyleName === 'warn') {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n\n return null;\n};\n\nconst getClassNameForNamespacedStyleName = (\n styleName: string,\n styleModuleImportMap: StyleModuleImportMapType,\n handleMissingStyleNameOption?: HandleMissingStyleNameOptionType\n): ?string => {\n // Note:\n // Do not use the desctructing syntax with Babel.\n // Desctructing adds _slicedToArray helper.\n const styleNameParts = styleName.split('.');\n const importName = styleNameParts[0];\n const moduleName = styleNameParts[1];\n const handleMissingStyleName = handleMissingStyleNameOption ||\n optionsDefaults.handleMissingStyleName;\n\n if (!moduleName) {\n return handleError('Invalid style name: ' + styleName, handleMissingStyleName);\n }\n\n if (!styleModuleImportMap[importName]) {\n return handleError('CSS module import does not exist: ' + importName, handleMissingStyleName);\n }\n\n if (!styleModuleImportMap[importName][moduleName]) {\n return handleError('CSS module does not exist: ' + moduleName, handleMissingStyleName);\n }\n\n return styleModuleImportMap[importName][moduleName];\n};\n\nconst getClassNameFromMultipleImports = (\n styleName: string,\n styleModuleImportMap: StyleModuleImportMapType,\n handleMissingStyleNameOption?: HandleMissingStyleNameOptionType\n): ?string => {\n const handleMissingStyleName = handleMissingStyleNameOption ||\n optionsDefaults.handleMissingStyleName;\n\n const importKeysWithMatches = Object.keys(styleModuleImportMap)\n .map((importKey) => {\n return styleModuleImportMap[importKey][styleName] && importKey;\n })\n .filter((importKey) => {\n return importKey;\n });\n\n if (importKeysWithMatches.length > 1) {\n throw new Error('Cannot resolve styleName \"' + styleName + '\" because it is present in multiple imports:' +\n '\\n\\n\\t' + importKeysWithMatches.join('\\n\\t') +\n '\\n\\nYou can resolve this by using a named import, e.g:' +\n '\\n\\n\\timport foo from \"' + importKeysWithMatches[0] + '\";' +\n '\\n\\t<div styleName=\"foo.' + styleName + '\" />' +\n '\\n\\n');\n }\n\n if (importKeysWithMatches.length === 0) {\n return handleError('Could not resolve the styleName \\'' + styleName + '\\'.', handleMissingStyleName);\n }\n\n return styleModuleImportMap[importKeysWithMatches[0]][styleName];\n};\n\nexport default (styleNameValue: string, styleModuleImportMap: StyleModuleImportMapType, options?: GetClassNameOptionsType): string => {\n const styleModuleImportMapKeys = Object.keys(styleModuleImportMap);\n\n const {\n handleMissingStyleName = optionsDefaults.handleMissingStyleName,\n autoResolveMultipleImports = optionsDefaults.autoResolveMultipleImports\n } = options || {};\n\n if (!styleNameValue) {\n return '';\n }\n\n return styleNameValue\n .split(' ')\n .filter((styleName) => {\n return styleName;\n })\n .map((styleName) => {\n if (isNamespacedStyleName(styleName)) {\n return getClassNameForNamespacedStyleName(styleName, styleModuleImportMap, handleMissingStyleName);\n }\n\n if (styleModuleImportMapKeys.length === 0) {\n throw new Error('Cannot use styleName attribute for style name \\'' + styleName +\n '\\' without importing at least one stylesheet.');\n }\n\n if (styleModuleImportMapKeys.length > 1) {\n if (!autoResolveMultipleImports) {\n throw new Error('Cannot use anonymous style name \\'' + styleName +\n '\\' with more than one stylesheet import without setting \\'autoResolveMultipleImports\\' to true.');\n }\n\n return getClassNameFromMultipleImports(styleName, styleModuleImportMap, handleMissingStyleName);\n }\n\n const styleModuleMap: StyleModuleMapType = styleModuleImportMap[styleModuleImportMapKeys[0]];\n\n if (!styleModuleMap[styleName]) {\n return handleError('Could not resolve the styleName \\'' + styleName + '\\'.', handleMissingStyleName);\n }\n\n return styleModuleMap[styleName];\n })\n .filter((className) => {\n // Remove any styles which could not be found (if handleMissingStyleName === 'ignore')\n return className;\n })\n .join(' ');\n};\n"],"file":"getClassName.js"}
\No newline at end of file