31 lines
1017 B
JavaScript
31 lines
1017 B
JavaScript
"use strict"
|
|
|
|
const formatImportPrelude = require("./format-import-prelude")
|
|
|
|
// Base64 encode an import with conditions
|
|
// The order of conditions is important and is interleaved with cascade layer declarations
|
|
// Each group of conditions and cascade layers needs to be interpreted in order
|
|
// To achieve this we create a list of base64 encoded imports, where each import contains a stylesheet with another import.
|
|
// Each import can define a single group of conditions and a single cascade layer.
|
|
module.exports = function base64EncodedConditionalImport(prelude, conditions) {
|
|
conditions.reverse()
|
|
const first = conditions.pop()
|
|
let params = `${prelude} ${formatImportPrelude(
|
|
first.layer,
|
|
first.media,
|
|
first.supports,
|
|
)}`
|
|
|
|
for (const condition of conditions) {
|
|
params = `'data:text/css;base64,${Buffer.from(`@import ${params}`).toString(
|
|
"base64",
|
|
)}' ${formatImportPrelude(
|
|
condition.layer,
|
|
condition.media,
|
|
condition.supports,
|
|
)}`
|
|
}
|
|
|
|
return params
|
|
}
|