{"version":3,"sources":["/home/progyan/OpenSource/storybook-addon-sass-postcss/dist/index.mjs","../src/index.ts"],"names":["o","s","require","Proxy","get","e","r","apply","arguments","Error","logger","postcss","wrapLoader","loader","options","webpack","webpackConfig","loadSassAfterPostCSS","postcssLoaderOptions","sassLoaderOptions","styleLoaderOptions","rule","cssLoaderOptions","importLoaders","postcssFactory","implementation","version","info","regexPattern","module","rules","test","sideEffects","use","__require","resolve","toString","P"],"mappings":"kyDAAA,IAAIA,EAAE,AAACC,SAAAA,SAAG,CAAA,OAAOC,kCAAP,EAAOA,QAAM,EAAE,IAAIA,QAAQ,CAAA,OAAOC,gCAAP,EAAOA,MAAI,EAAE,IAAI,IAAIA,MAAMF,EAAE,CAACG,IAAI,SAACC,EAAEC,SAAI,AAAC,CAAA,CAAA,OAAOJ,kCAAP,EAAOA,QAAM,EAAE,IAAIA,QAAQG,CAAAA,CAAE,CAACC,EAAE,CAAA,GAAGL,GAAG,SAASA,CAAC,EAAE,GAAG,CAAA,OAAOC,kCAAP,EAAOA,QAAM,EAAE,IAAI,OAAOA,QAAQK,KAAK,CAAC,IAAI,CAACC,UAAW,OAAMC,MAAM,uBAAuBR,EAAE,qBAAqB,ECCtP,QAASS,UAAAA,CAAAA,KAAc,6BACvB,QAAOC,MAAa,SACpB,OAAiB,MA4BjB,CAAA,SAASC,EACPC,CAAAA,CACAC,CAAAA,EAOA,OAAIA,IAAY,CAAA,EACP,EAAC,CAGH,CAAC,CAAED,OAAAA,EAAQC,QAAAA,CAAQ,EAC5B,CAEO,IAAMC,EAAU,eACrBC,yDAA+B,CAAC,EAChCF,yDAAmB,CAAC,MAuCVE,EArCV,IACEC,EAKEH,EALFG,qBAAAA,EAAAA,WAAuB,CAAA,EAAvBA,EACAC,EAIEJ,EAJFI,qBACAC,EAGEL,EAHFK,kBACAC,EAEEN,EAFFM,mBACAC,EACEP,EADFO,KAAAA,EAAAA,WAAO,CAAC,EAARA,EAGIC,EAAqBR,EAArBQ,gBAEF,CAAA,CAAA,OAAOA,4BAAP,EAAOA,EAAAA,GAAqB,UAC9BA,CAAAA,EAAmB,OACdA,IACHC,cAAe,GACjB,EAGF,IAAIC,EAAiBb,MAEFO,CADf,CAAA,CAAA,OAAOA,4BAAP,EAAOA,EAAAA,GAAyB,UAClCM,CAAAA,EAAiBN,CAAAA,EAAAA,UAAAA,kBAAAA,EAAsBO,cAAA,UAAtBP,WAAAA,EAAwCP,CAAAA,EAG3D,IAAoBa,EAAAA,IAAZE,EAAYF,EAAZE,QAERhB,EAAOiB,IAAA,CAAK,wCAA+C,OAAPD,IAEpD,IAAIE,EAAe,aAWTZ,EATV,OAAIG,IAAsB,CAAA,GACxBS,CAAAA,EAAe,qBAAA,EAGV,OACFZ,IACHa,OAAQ,OACHb,EAAca,MAAA,GACjBC,MAAO,AACL,EAAId,CAAAA,GAAAA,EAAAA,EAAca,MAAA,UAAdb,kBAAAA,EAAsBc,KAAA,UAAtBd,WAAAA,EAA+B,EAAC,SAD/B,CAEL,KACEe,KAAMH,EACNI,YAAa,CAAA,GACVX,IACHY,IAAK,AACH,EAAGrB,EACDsB,EAAQC,OAAA,CAAQ,gBAAgBC,QAAA,GAChChB,WAEF,EAAGR,EACDsB,EAAQC,OAAA,CAAQ,cAAcC,QAAA,GAC9Bd,IAEF,EAAKL,EAKD,EAAC,CAJDL,EACEsB,EAAQC,OAAA,CAAQ,eAAeC,QAAA,GAC/BjB,IAGN,EAAGP,EACDsB,EAAQC,OAAA,CAAQ,kBAAkBC,QAAA,GAClClB,IAEF,EAAID,EACAL,EACEsB,EAAQC,OAAA,CAAQ,eAAeC,QAAA,GAC/BjB,GAEF,EACN,KAGN,KAEJ,SAAAkB,KAAAtB,OAAA","sourcesContent":["var o=(s=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(s,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):s)(function(s){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+s+'\" is not supported')});import{logger as f}from\"@storybook/core/node-logger\";import d from\"postcss\";import\"sass\";function t(s,e){return e===!1?[]:[{loader:s,options:e}]}var P=(s={},e={})=>{let{loadSassAfterPostCSS:r=!1,postcssLoaderOptions:i,sassLoaderOptions:a,styleLoaderOptions:u,rule:c={}}=e,{cssLoaderOptions:n}=e;typeof n==\"object\"&&(n={...n,importLoaders:1});let p=d;typeof i==\"object\"&&(p=i?.implementation??d);let{version:S}=p();f.info(`=> Using PostCSS preset with postcss@${S}`);let l=/\\.css$/;return a!==!1&&(l=/\\.(css|scss|sass)$/i),{...s,module:{...s.module,rules:[...s.module?.rules??[],{test:l,sideEffects:!0,...c,use:[...t(o.resolve(\"style-loader\").toString(),u),...t(o.resolve(\"css-loader\").toString(),n),...r?[]:t(o.resolve(\"sass-loader\").toString(),a),...t(o.resolve(\"postcss-loader\").toString(),i),...r?t(o.resolve(\"sass-loader\").toString(),a):[]]}]}}};export{P as webpack};\n","import type { Configuration, RuleSetRule, RuleSetUseItem } from \"webpack\";\nimport { logger } from \"@storybook/core/node-logger\";\nimport postcss from \"postcss\";\nimport sass from \"sass\";\n\ntype PostCSS = typeof postcss;\ntype Sass = typeof sass;\n\ntype StyleLoaderOptions = Record<string, unknown>;\ntype CssLoaderOptions = Record<string, unknown> & {\n  importLoaders?: number;\n  modules?: Record<string, string>;\n};\n\ntype SassLoaderOptions = Record<string, unknown> & {\n  implementation?: Sass;\n};\n\ntype PostcssLoaderOptions = Record<string, unknown> & {\n  implementation?: PostCSS;\n};\n\ninterface Options {\n  cssLoaderOptions?: CssLoaderOptions | false;\n  loadSassAfterPostCSS?: boolean;\n  postcssLoaderOptions?: PostcssLoaderOptions | false;\n  rule?: RuleSetRule;\n  sassLoaderOptions?: SassLoaderOptions | false;\n  styleLoaderOptions?: StyleLoaderOptions | false;\n}\n\nfunction wrapLoader(\n  loader: string,\n  options?:\n    | StyleLoaderOptions\n    | CssLoaderOptions\n    | SassLoaderOptions\n    | PostcssLoaderOptions\n    | false,\n): RuleSetUseItem[] {\n  if (options === false) {\n    return [];\n  }\n\n  return [{ loader, options }];\n}\n\nexport const webpack = (\n  webpackConfig: Configuration = {},\n  options: Options = {},\n): Configuration => {\n  const {\n    loadSassAfterPostCSS = false,\n    postcssLoaderOptions,\n    sassLoaderOptions,\n    styleLoaderOptions,\n    rule = {},\n  } = options;\n\n  let { cssLoaderOptions } = options;\n\n  if (typeof cssLoaderOptions === \"object\") {\n    cssLoaderOptions = {\n      ...cssLoaderOptions,\n      importLoaders: 1, // We always need to apply postcss-loader before css-loader\n    };\n  }\n\n  let postcssFactory = postcss;\n  if (typeof postcssLoaderOptions === \"object\") {\n    postcssFactory = postcssLoaderOptions?.implementation ?? postcss;\n  }\n\n  const { version } = postcssFactory();\n\n  logger.info(`=> Using PostCSS preset with postcss@${version}`);\n\n  let regexPattern = /\\.css$/;\n\n  if (sassLoaderOptions !== false) {\n    regexPattern = /\\.(css|scss|sass)$/i;\n  }\n\n  return {\n    ...webpackConfig,\n    module: {\n      ...webpackConfig.module,\n      rules: [\n        ...(webpackConfig.module?.rules ?? []),\n        {\n          test: regexPattern,\n          sideEffects: true,\n          ...rule,\n          use: [\n            ...wrapLoader(\n              require.resolve(\"style-loader\").toString(),\n              styleLoaderOptions,\n            ),\n            ...wrapLoader(\n              require.resolve(\"css-loader\").toString(),\n              cssLoaderOptions,\n            ),\n            ...(!loadSassAfterPostCSS\n              ? wrapLoader(\n                  require.resolve(\"sass-loader\").toString(),\n                  sassLoaderOptions,\n                )\n              : []),\n            ...wrapLoader(\n              require.resolve(\"postcss-loader\").toString(),\n              postcssLoaderOptions,\n            ),\n            ...(loadSassAfterPostCSS\n              ? wrapLoader(\n                  require.resolve(\"sass-loader\").toString(),\n                  sassLoaderOptions,\n                )\n              : []),\n          ],\n        },\n      ],\n    },\n  };\n};\n"]}