UNPKG

1.02 kBJavaScriptView Raw
1"use strict"
2
3const formatImportPrelude = require("./format-import-prelude")
4
5// Base64 encode an import with conditions
6// The order of conditions is important and is interleaved with cascade layer declarations
7// Each group of conditions and cascade layers needs to be interpreted in order
8// To achieve this we create a list of base64 encoded imports, where each import contains a stylesheet with another import.
9// Each import can define a single group of conditions and a single cascade layer.
10module.exports = function base64EncodedConditionalImport(prelude, conditions) {
11 conditions.reverse()
12 const first = conditions.pop()
13 let params = `${prelude} ${formatImportPrelude(
14 first.layer,
15 first.media,
16 first.supports,
17 )}`
18
19 for (const condition of conditions) {
20 params = `'data:text/css;base64,${Buffer.from(`@import ${params}`).toString(
21 "base64",
22 )}' ${formatImportPrelude(
23 condition.layer,
24 condition.media,
25 condition.supports,
26 )}`
27 }
28
29 return params
30}