49 lines
1 KiB
JavaScript
49 lines
1 KiB
JavaScript
|
import { readFileSync } from "fs";
|
||
|
import path from "path";
|
||
|
import { stringify, parse } from "css";
|
||
|
export { stringify, parse };
|
||
|
|
||
|
// TODO import.meta.resolve is supposed to accomplish this without "path"
|
||
|
const GMI_CSS = path.resolve(
|
||
|
path.dirname(new URL(import.meta.url).pathname),
|
||
|
"./gmi.css"
|
||
|
);
|
||
|
|
||
|
export const CORE = parse(`p,
|
||
|
a,
|
||
|
pre,
|
||
|
h1,
|
||
|
h2,
|
||
|
h3,
|
||
|
ul,
|
||
|
blockquote,
|
||
|
img,
|
||
|
audio,
|
||
|
video {
|
||
|
display: block;
|
||
|
margin: 0;
|
||
|
padding: 0;
|
||
|
overflow-wrap: anywhere;
|
||
|
max-width: 100%;
|
||
|
}`);
|
||
|
|
||
|
export const FULL = parse(readFileSync(GMI_CSS, "utf-8"));
|
||
|
|
||
|
export function rootVariables({ stylesheet }) {
|
||
|
return stylesheet.rules
|
||
|
.find(
|
||
|
({ type, selectors }) => type === "rule" && selectors.includes(":root")
|
||
|
)
|
||
|
.declarations.reduce(
|
||
|
(obj, { property, value }) =>
|
||
|
!/^\-\-/.test(property)
|
||
|
? obj
|
||
|
: Object.assign(obj, { [property.replace("--", "")]: value }),
|
||
|
{}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export function resolve(arg, options) {
|
||
|
return stringify(parse(readFileSync(path.resolve(arg), "utf-8")), options);
|
||
|
}
|