summaryrefslogtreecommitdiff
path: root/node_modules/tailwindcss/src/plugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tailwindcss/src/plugin.js')
-rw-r--r--node_modules/tailwindcss/src/plugin.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/src/plugin.js b/node_modules/tailwindcss/src/plugin.js
new file mode 100644
index 0000000..bbb8cc1
--- /dev/null
+++ b/node_modules/tailwindcss/src/plugin.js
@@ -0,0 +1,107 @@
+import setupTrackingContext from './lib/setupTrackingContext'
+import processTailwindFeatures from './processTailwindFeatures'
+import { env } from './lib/sharedState'
+import { findAtConfigPath } from './lib/findAtConfigPath'
+
+module.exports = function tailwindcss(configOrPath) {
+ return {
+ postcssPlugin: 'tailwindcss',
+ plugins: [
+ env.DEBUG &&
+ function (root) {
+ console.log('\n')
+ console.time('JIT TOTAL')
+ return root
+ },
+ async function (root, result) {
+ // Use the path for the `@config` directive if it exists, otherwise use the
+ // path for the file being processed
+ configOrPath = findAtConfigPath(root, result) ?? configOrPath
+
+ let context = setupTrackingContext(configOrPath)
+
+ if (root.type === 'document') {
+ let roots = root.nodes.filter((node) => node.type === 'root')
+
+ for (const root of roots) {
+ if (root.type === 'root') {
+ await processTailwindFeatures(context)(root, result)
+ }
+ }
+
+ return
+ }
+
+ await processTailwindFeatures(context)(root, result)
+ },
+ __OXIDE__ &&
+ function lightningCssPlugin(_root, result) {
+ let postcss = require('postcss')
+ let lightningcss = require('lightningcss')
+ let browserslist = require('browserslist')
+
+ try {
+ let transformed = lightningcss.transform({
+ filename: result.opts.from,
+ code: Buffer.from(result.root.toString()),
+ minify: false,
+ sourceMap: !!result.map,
+ inputSourceMap: result.map ? result.map.toString() : undefined,
+ targets:
+ typeof process !== 'undefined' && process.env.JEST_WORKER_ID
+ ? { chrome: 106 << 16 }
+ : lightningcss.browserslistToTargets(
+ browserslist(require('../package.json').browserslist)
+ ),
+
+ drafts: {
+ nesting: true,
+ customMedia: true,
+ },
+ })
+
+ result.map = Object.assign(result.map ?? {}, {
+ toJSON() {
+ return transformed.map.toJSON()
+ },
+ toString() {
+ return transformed.map.toString()
+ },
+ })
+
+ result.root = postcss.parse(transformed.code.toString('utf8'))
+ } catch (err) {
+ if (typeof process !== 'undefined' && process.env.JEST_WORKER_ID) {
+ let lines = err.source.split('\n')
+ err = new Error(
+ [
+ 'Error formatting using Lightning CSS:',
+ '',
+ ...[
+ '```css',
+ ...lines.slice(Math.max(err.loc.line - 3, 0), err.loc.line),
+ ' '.repeat(err.loc.column - 1) + '^-- ' + err.toString(),
+ ...lines.slice(err.loc.line, err.loc.line + 2),
+ '```',
+ ],
+ ].join('\n')
+ )
+ }
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(err, lightningCssPlugin)
+ }
+ throw err
+ }
+ },
+ env.DEBUG &&
+ function (root) {
+ console.timeEnd('JIT TOTAL')
+ console.log('\n')
+ return root
+ },
+ ].filter(Boolean),
+ }
+}
+
+module.exports.postcss = true