|
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.makeTheme = void 0; |
|
const theme_mjs_1 = require('./theme.js'); |
|
function isPlainObject(value) { |
|
if (typeof value !== 'object' || value === null) |
|
return false; |
|
let proto = value; |
|
while (Object.getPrototypeOf(proto) !== null) { |
|
proto = Object.getPrototypeOf(proto); |
|
} |
|
return Object.getPrototypeOf(value) === proto; |
|
} |
|
function deepMerge(...objects) { |
|
const output = {}; |
|
for (const obj of objects) { |
|
for (const [key, value] of Object.entries(obj)) { |
|
const prevValue = output[key]; |
|
output[key] = |
|
isPlainObject(prevValue) && isPlainObject(value) |
|
? deepMerge(prevValue, value) |
|
: value; |
|
} |
|
} |
|
return output; |
|
} |
|
function makeTheme(...themes) { |
|
const themesToMerge = [ |
|
theme_mjs_1.defaultTheme, |
|
...themes.filter((theme) => theme != null), |
|
]; |
|
return deepMerge(...themesToMerge); |
|
} |
|
exports.makeTheme = makeTheme; |
|
|