{
  "version": 3,
  "sources": ["../../../src/index.ts"],
  "sourcesContent": ["import type { SolidStyledOptions } from 'solid-styled/compiler';\nimport { compile } from 'solid-styled/compiler';\nimport type { Plugin } from 'vite';\nimport type { FilterPattern } from '@rollup/pluginutils';\nimport { createFilter } from '@rollup/pluginutils';\nimport type { TransformResult } from 'unplugin';\nimport { createUnplugin } from 'unplugin';\n\nexport interface SolidStyledPluginFilter {\n  include?: FilterPattern;\n  exclude?: FilterPattern;\n}\n\nexport interface SolidStyledPluginOptions extends SolidStyledOptions {\n  filter?: SolidStyledPluginFilter;\n}\n\n// From: https://github.com/bluwy/whyframe/blob/master/packages/jsx/src/index.js#L27-L37\nfunction repushPlugin(\n  plugins: Plugin[],\n  pluginName: string,\n  pluginNames: string[],\n): void {\n  const namesSet = new Set(pluginNames);\n\n  let baseIndex = -1;\n  let targetIndex = -1;\n  let targetPlugin: Plugin;\n  for (let i = 0, len = plugins.length; i < len; i += 1) {\n    const current = plugins[i];\n    if (namesSet.has(current.name) && baseIndex === -1) {\n      baseIndex = i;\n    }\n    if (current.name === pluginName) {\n      targetIndex = i;\n      targetPlugin = current;\n    }\n  }\n  if (baseIndex !== -1 && targetIndex !== -1 && baseIndex < targetIndex) {\n    plugins.splice(targetIndex, 1);\n    plugins.splice(baseIndex, 0, targetPlugin!);\n  }\n}\n\nconst DEFAULT_INCLUDE = 'src/**/*.{jsx,tsx,ts,js,mjs,cjs}';\nconst DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}';\n\nconst solidStyledPlugin = createUnplugin(\n  (options: SolidStyledPluginOptions = {}) => {\n    const filter = createFilter(\n      options.filter?.include || DEFAULT_INCLUDE,\n      options.filter?.exclude || DEFAULT_EXCLUDE,\n    );\n\n    let env: SolidStyledOptions['env'];\n\n    return {\n      name: 'solid-styled',\n      transformInclude(id): boolean {\n        return filter(id.split('?')[0]);\n      },\n      async transform(code, id): Promise<TransformResult> {\n        return compile(id, code, {\n          ...options,\n          env,\n        });\n      },\n      vite: {\n        enforce: 'pre',\n        configResolved(config): void {\n          env = config.mode !== 'production' ? 'development' : 'production';\n\n          // run our plugin before the following plugins:\n          repushPlugin(config.plugins as Plugin[], 'solid-styled', [\n            // https://github.com/withastro/astro/blob/main/packages/astro/src/vite-plugin-jsx/index.ts#L173\n            'astro:jsx',\n            // https://github.com/solidjs/vite-plugin-solid/blob/master/src/index.ts#L305\n            'solid',\n            // https://github.com/solidjs/solid-start/blob/main/packages/start/vite/plugin.js#L118\n            'solid-start-file-system-router',\n          ]);\n        },\n      },\n    };\n  },\n);\n\nexport default solidStyledPlugin;\n"],
  "mappings": ";AACA,SAAS,eAAe;AAGxB,SAAS,oBAAoB;AAE7B,SAAS,sBAAsB;AAY/B,SAAS,aACP,SACA,YACA,aACM;AACN,QAAM,WAAW,IAAI,IAAI,WAAW;AAEpC,MAAI,YAAY;AAChB,MAAI,cAAc;AAClB,MAAI;AACJ,WAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK,GAAG;AACrD,UAAM,UAAU,QAAQ,CAAC;AACzB,QAAI,SAAS,IAAI,QAAQ,IAAI,KAAK,cAAc,IAAI;AAClD,kBAAY;AAAA,IACd;AACA,QAAI,QAAQ,SAAS,YAAY;AAC/B,oBAAc;AACd,qBAAe;AAAA,IACjB;AAAA,EACF;AACA,MAAI,cAAc,MAAM,gBAAgB,MAAM,YAAY,aAAa;AACrE,YAAQ,OAAO,aAAa,CAAC;AAC7B,YAAQ,OAAO,WAAW,GAAG,YAAa;AAAA,EAC5C;AACF;AAEA,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AAExB,IAAM,oBAAoB;AAAA,EACxB,CAAC,UAAoC,CAAC,MAAM;AAhD9C;AAiDI,UAAM,SAAS;AAAA,QACb,aAAQ,WAAR,mBAAgB,YAAW;AAAA,QAC3B,aAAQ,WAAR,mBAAgB,YAAW;AAAA,IAC7B;AAEA,QAAI;AAEJ,WAAO;AAAA,MACL,MAAM;AAAA,MACN,iBAAiB,IAAa;AAC5B,eAAO,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,MAChC;AAAA,MACA,MAAM,UAAU,MAAM,IAA8B;AAClD,eAAO,QAAQ,IAAI,MAAM;AAAA,UACvB,GAAG;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,eAAe,QAAc;AAC3B,gBAAM,OAAO,SAAS,eAAe,gBAAgB;AAGrD,uBAAa,OAAO,SAAqB,gBAAgB;AAAA;AAAA,YAEvD;AAAA;AAAA,YAEA;AAAA;AAAA,YAEA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,cAAQ;",
  "names": []
}
