@master/css-server 2.0.0-rc.5 → 2.0.0-rc.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/decode-html.cjs +29 -0
- package/dist/decode-html.mjs +27 -1
- package/dist/index.cjs +11 -0
- package/dist/index.mjs +3 -1
- package/dist/parse-html.cjs +46 -0
- package/dist/parse-html.mjs +44 -1
- package/dist/render-css.cjs +20 -0
- package/dist/render-css.d.ts +1 -1
- package/dist/render-css.mjs +18 -1
- package/dist/render.cjs +63 -0
- package/dist/render.d.ts +1 -1
- package/dist/render.mjs +61 -1
- package/package.json +1 -1
- package/dist/decode-html.js +0 -1
- package/dist/index.js +0 -1
- package/dist/parse-html.js +0 -1
- package/dist/render-css.js +0 -1
- package/dist/render.js +0 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</picture>
|
|
11
11
|
</a>
|
|
12
12
|
</p>
|
|
13
|
-
<p align="center">
|
|
13
|
+
<p align="center">Render Master CSS on the server side</p>
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<a aria-label="GitHub release (latest by date including pre-releases)" href="https://github.com/master-co/css/releases">
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
<img alt="Follow @mastercorg" src="https://img.shields.io/static/v1?label=%20&message=twitter&color=f6f7f8&logo=twitter&style=for-the-badge">
|
|
42
42
|
</picture>
|
|
43
43
|
</a>
|
|
44
|
-
<a aria-label="Github Actions" href="https://github.com/
|
|
44
|
+
<a aria-label="Github Actions" href="https://github.com/master-co/css/actions/workflows/release.yml">
|
|
45
45
|
<picture>
|
|
46
46
|
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=rc&label=%20&message=twitter&color=212022&logo=githubactions&style=for-the-badge">
|
|
47
47
|
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/github/actions/workflow/status/master-co/css/release.yml?branch=rc&label=%20&message=twitter&color=f6f7f8&logo=githubactions&style=for-the-badge&logoColor=%23000">
|
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
</div>
|
|
54
54
|
|
|
55
55
|
## Documentation
|
|
56
|
-
Check out the official [documentation](https://rc.css.master.co/
|
|
56
|
+
Check out the official [documentation](https://rc.css.master.co/reference/server).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* The framework will encode attribute values when rendering HTML to prevent XSS,
|
|
5
|
+
* so we must decode it for correct CSS selectors.
|
|
6
|
+
* https://github.com/facebook/react/issues/27836
|
|
7
|
+
*/ function decodeHTML(html) {
|
|
8
|
+
return html.replace(/&(amp|apos|#39|#x27|quot|lt|gt);/g, (match, entity)=>{
|
|
9
|
+
switch(entity){
|
|
10
|
+
case 'amp':
|
|
11
|
+
return '&';
|
|
12
|
+
case 'apos':
|
|
13
|
+
case '#39':
|
|
14
|
+
case '#x27':
|
|
15
|
+
return '\'';
|
|
16
|
+
case 'quot':
|
|
17
|
+
return '"';
|
|
18
|
+
case 'lt':
|
|
19
|
+
return '<';
|
|
20
|
+
case 'gt':
|
|
21
|
+
return '>';
|
|
22
|
+
default:
|
|
23
|
+
return match // 如果不是已知的實體,保留原樣
|
|
24
|
+
;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = decodeHTML;
|
package/dist/decode-html.mjs
CHANGED
|
@@ -1 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* The framework will encode attribute values when rendering HTML to prevent XSS,
|
|
3
|
+
* so we must decode it for correct CSS selectors.
|
|
4
|
+
* https://github.com/facebook/react/issues/27836
|
|
5
|
+
*/ function decodeHTML(html) {
|
|
6
|
+
return html.replace(/&(amp|apos|#39|#x27|quot|lt|gt);/g, (match, entity)=>{
|
|
7
|
+
switch(entity){
|
|
8
|
+
case 'amp':
|
|
9
|
+
return '&';
|
|
10
|
+
case 'apos':
|
|
11
|
+
case '#39':
|
|
12
|
+
case '#x27':
|
|
13
|
+
return '\'';
|
|
14
|
+
case 'quot':
|
|
15
|
+
return '"';
|
|
16
|
+
case 'lt':
|
|
17
|
+
return '<';
|
|
18
|
+
case 'gt':
|
|
19
|
+
return '>';
|
|
20
|
+
default:
|
|
21
|
+
return match // 如果不是已知的實體,保留原樣
|
|
22
|
+
;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { decodeHTML as default };
|
package/dist/index.cjs
ADDED
package/dist/index.mjs
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
export { default as render } from './render.mjs';
|
|
2
|
+
export { default as renderCSS } from './render-css.mjs';
|
|
3
|
+
export { default as parseHTML } from './parse-html.mjs';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var htmlparser2 = require('htmlparser2');
|
|
4
|
+
var decodeHtml = require('./decode-html.cjs');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @param html
|
|
8
|
+
* @returns {classes from html, root element}
|
|
9
|
+
*/ function parseHTML(html) {
|
|
10
|
+
const classes = [];
|
|
11
|
+
let htmlElement = null;
|
|
12
|
+
let headElement = null;
|
|
13
|
+
let styleElement = null;
|
|
14
|
+
const handler = new htmlparser2.DomHandler(undefined, {}, (element)=>{
|
|
15
|
+
if (element.type === 'tag') {
|
|
16
|
+
switch(element.name){
|
|
17
|
+
case 'html':
|
|
18
|
+
htmlElement = element;
|
|
19
|
+
break;
|
|
20
|
+
case 'head':
|
|
21
|
+
headElement = element;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
} else if (element.type === 'style') {
|
|
25
|
+
if (element.attribs.id === 'master') styleElement = element;
|
|
26
|
+
}
|
|
27
|
+
if (element.attribs.class) {
|
|
28
|
+
element.attribs.class.split(' ').forEach((className)=>{
|
|
29
|
+
className = decodeHtml(className);
|
|
30
|
+
if (!classes.includes(className)) classes.push(className);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
new htmlparser2.Parser(handler, {
|
|
35
|
+
decodeEntities: false
|
|
36
|
+
}).end(html);
|
|
37
|
+
return {
|
|
38
|
+
classes,
|
|
39
|
+
nodes: handler.root.childNodes,
|
|
40
|
+
htmlElement,
|
|
41
|
+
headElement,
|
|
42
|
+
styleElement
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = parseHTML;
|
package/dist/parse-html.mjs
CHANGED
|
@@ -1 +1,44 @@
|
|
|
1
|
-
import{DomHandler
|
|
1
|
+
import { DomHandler, Parser } from 'htmlparser2';
|
|
2
|
+
import decodeHTML from './decode-html.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param html
|
|
6
|
+
* @returns {classes from html, root element}
|
|
7
|
+
*/ function parseHTML(html) {
|
|
8
|
+
const classes = [];
|
|
9
|
+
let htmlElement = null;
|
|
10
|
+
let headElement = null;
|
|
11
|
+
let styleElement = null;
|
|
12
|
+
const handler = new DomHandler(undefined, {}, (element)=>{
|
|
13
|
+
if (element.type === 'tag') {
|
|
14
|
+
switch(element.name){
|
|
15
|
+
case 'html':
|
|
16
|
+
htmlElement = element;
|
|
17
|
+
break;
|
|
18
|
+
case 'head':
|
|
19
|
+
headElement = element;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
} else if (element.type === 'style') {
|
|
23
|
+
if (element.attribs.id === 'master') styleElement = element;
|
|
24
|
+
}
|
|
25
|
+
if (element.attribs.class) {
|
|
26
|
+
element.attribs.class.split(' ').forEach((className)=>{
|
|
27
|
+
className = decodeHTML(className);
|
|
28
|
+
if (!classes.includes(className)) classes.push(className);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
new Parser(handler, {
|
|
33
|
+
decodeEntities: false
|
|
34
|
+
}).end(html);
|
|
35
|
+
return {
|
|
36
|
+
classes,
|
|
37
|
+
nodes: handler.root.childNodes,
|
|
38
|
+
htmlElement,
|
|
39
|
+
headElement,
|
|
40
|
+
styleElement
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { parseHTML as default };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var parseHtml = require('./parse-html.cjs');
|
|
4
|
+
var css = require('@master/css');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the Master CSS string from HTML
|
|
8
|
+
* @param html
|
|
9
|
+
* @param config
|
|
10
|
+
* @returns MasterCSS
|
|
11
|
+
*/ function renderCSS(html, config) {
|
|
12
|
+
if (!html) return;
|
|
13
|
+
const { classes } = parseHtml(html);
|
|
14
|
+
if (!classes.length) return;
|
|
15
|
+
const css$1 = new css.MasterCSS(config);
|
|
16
|
+
classes.forEach((eachClass)=>css$1.add(eachClass));
|
|
17
|
+
return css$1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = renderCSS;
|
package/dist/render-css.d.ts
CHANGED
package/dist/render-css.mjs
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import parseHTML from './parse-html.mjs';
|
|
2
|
+
import { MasterCSS } from '@master/css';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Renders the Master CSS string from HTML
|
|
6
|
+
* @param html
|
|
7
|
+
* @param config
|
|
8
|
+
* @returns MasterCSS
|
|
9
|
+
*/ function renderCSS(html, config) {
|
|
10
|
+
if (!html) return;
|
|
11
|
+
const { classes } = parseHTML(html);
|
|
12
|
+
if (!classes.length) return;
|
|
13
|
+
const css = new MasterCSS(config);
|
|
14
|
+
classes.forEach((eachClass)=>css.add(eachClass));
|
|
15
|
+
return css;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { renderCSS as default };
|
package/dist/render.cjs
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css = require('@master/css');
|
|
4
|
+
var parseHtml = require('./parse-html.cjs');
|
|
5
|
+
var domhandler = require('domhandler');
|
|
6
|
+
var serialize = require('dom-serializer');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Renders the page-required and sorted CSS text from HTML and injected it back into HTML
|
|
10
|
+
* @param html
|
|
11
|
+
* @param config
|
|
12
|
+
*/ function render(html, config) {
|
|
13
|
+
const context = parseHtml(html);
|
|
14
|
+
const { classes, nodes, htmlElement } = context;
|
|
15
|
+
let { headElement, styleElement } = context;
|
|
16
|
+
if (!classes.length) return {
|
|
17
|
+
html,
|
|
18
|
+
classes,
|
|
19
|
+
nodes,
|
|
20
|
+
htmlElement,
|
|
21
|
+
headElement,
|
|
22
|
+
styleElement
|
|
23
|
+
};
|
|
24
|
+
const css$1 = new css.MasterCSS(config);
|
|
25
|
+
classes.forEach((eachClass)=>css$1.add(eachClass));
|
|
26
|
+
if (styleElement) {
|
|
27
|
+
styleElement.childNodes = [
|
|
28
|
+
new domhandler.Text(css$1.text)
|
|
29
|
+
];
|
|
30
|
+
} else {
|
|
31
|
+
styleElement = new domhandler.Element('style', {
|
|
32
|
+
id: 'master'
|
|
33
|
+
}, [
|
|
34
|
+
new domhandler.Text(css$1.text)
|
|
35
|
+
]);
|
|
36
|
+
if (headElement) {
|
|
37
|
+
headElement.childNodes.push(styleElement);
|
|
38
|
+
} else {
|
|
39
|
+
if (htmlElement) {
|
|
40
|
+
headElement = new domhandler.Element('head', {}, [
|
|
41
|
+
styleElement
|
|
42
|
+
]);
|
|
43
|
+
htmlElement.childNodes.unshift(headElement);
|
|
44
|
+
} else {
|
|
45
|
+
nodes.unshift(styleElement);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
html: serialize(nodes, {
|
|
51
|
+
decodeEntities: false,
|
|
52
|
+
encodeEntities: false
|
|
53
|
+
}),
|
|
54
|
+
css: css$1,
|
|
55
|
+
classes,
|
|
56
|
+
nodes,
|
|
57
|
+
htmlElement,
|
|
58
|
+
headElement,
|
|
59
|
+
styleElement
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
module.exports = render;
|
package/dist/render.d.ts
CHANGED
package/dist/render.mjs
CHANGED
|
@@ -1 +1,61 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { MasterCSS } from '@master/css';
|
|
2
|
+
import parseHTML from './parse-html.mjs';
|
|
3
|
+
import { Text, Element } from 'domhandler';
|
|
4
|
+
import serialize from 'dom-serializer';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders the page-required and sorted CSS text from HTML and injected it back into HTML
|
|
8
|
+
* @param html
|
|
9
|
+
* @param config
|
|
10
|
+
*/ function render(html, config) {
|
|
11
|
+
const context = parseHTML(html);
|
|
12
|
+
const { classes, nodes, htmlElement } = context;
|
|
13
|
+
let { headElement, styleElement } = context;
|
|
14
|
+
if (!classes.length) return {
|
|
15
|
+
html,
|
|
16
|
+
classes,
|
|
17
|
+
nodes,
|
|
18
|
+
htmlElement,
|
|
19
|
+
headElement,
|
|
20
|
+
styleElement
|
|
21
|
+
};
|
|
22
|
+
const css = new MasterCSS(config);
|
|
23
|
+
classes.forEach((eachClass)=>css.add(eachClass));
|
|
24
|
+
if (styleElement) {
|
|
25
|
+
styleElement.childNodes = [
|
|
26
|
+
new Text(css.text)
|
|
27
|
+
];
|
|
28
|
+
} else {
|
|
29
|
+
styleElement = new Element('style', {
|
|
30
|
+
id: 'master'
|
|
31
|
+
}, [
|
|
32
|
+
new Text(css.text)
|
|
33
|
+
]);
|
|
34
|
+
if (headElement) {
|
|
35
|
+
headElement.childNodes.push(styleElement);
|
|
36
|
+
} else {
|
|
37
|
+
if (htmlElement) {
|
|
38
|
+
headElement = new Element('head', {}, [
|
|
39
|
+
styleElement
|
|
40
|
+
]);
|
|
41
|
+
htmlElement.childNodes.unshift(headElement);
|
|
42
|
+
} else {
|
|
43
|
+
nodes.unshift(styleElement);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
html: serialize(nodes, {
|
|
49
|
+
decodeEntities: false,
|
|
50
|
+
encodeEntities: false
|
|
51
|
+
}),
|
|
52
|
+
css,
|
|
53
|
+
classes,
|
|
54
|
+
nodes,
|
|
55
|
+
htmlElement,
|
|
56
|
+
headElement,
|
|
57
|
+
styleElement
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { render as default };
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@master/css-server","scripts":{"build":"techor
|
|
1
|
+
{"name":"@master/css-server","type":"module","scripts":{"build":"techor build \"src/**/*.ts\"","dev":"pnpm build --watch","lint":"eslint","type-check":"tsc --noEmit","test":"vitest"},"license":"MIT","description":"Render Master CSS on the server side","author":"Aoyue Design LLC.","funding":"https://rc.css.master.co/sponsor","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/server"},"keywords":["server","static","html","markup","dom","css","mastercss"],"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"dependencies":{"@master/css":"^2.0.0-rc.50","dom-serializer":"^2.0.0","domhandler":"^5.0.3","htmlparser2":"^9.1.0"},"devDependencies":{"shared":"^2.0.0-rc.50"},"version":"2.0.0-rc.50"}
|
package/dist/decode-html.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},d=(t,e,r,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of o(e))!p.call(t,a)&&a!==r&&u(t,a,{get:()=>e[a],enumerable:!(c=n(e,a))||c.enumerable});return t};var g=t=>d(u({},"__esModule",{value:!0}),t);var f={};l(f,{default:()=>s});module.exports=g(f);function s(t){return t.replace(/&(amp|apos|#39|#x27|quot|lt|gt);/g,(e,r)=>{switch(r){case"amp":return"&";case"apos":case"#39":case"#x27":return"'";case"quot":return'"';case"lt":return"<";case"gt":return">";default:return e}})}
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var u=Object.create;var o=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var H=(e,r)=>{for(var a in r)o(e,a,{get:r[a],enumerable:!0})},p=(e,r,a,d)=>{if(r&&typeof r=="object"||typeof r=="function")for(let f of n(r))!C.call(e,f)&&f!==a&&o(e,f,{get:()=>r[f],enumerable:!(d=x(r,f))||d.enumerable});return e};var t=(e,r,a)=>(a=e!=null?u(S(e)):{},p(r||!e||!e.__esModule?o(a,"default",{value:e,enumerable:!0}):a,e)),L=e=>p(o({},"__esModule",{value:!0}),e);var M={};H(M,{parseHTML:()=>m.default,render:()=>s.default,renderCSS:()=>l.default});module.exports=L(M);var s=t(require("./render")),l=t(require("./render-css")),m=t(require("./parse-html"));0&&(module.exports={parseHTML,render,renderCSS});
|
package/dist/parse-html.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var f=Object.create;var i=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var y=(e,l)=>{for(var t in l)i(e,t,{get:l[t],enumerable:!0})},u=(e,l,t,r)=>{if(l&&typeof l=="object"||typeof l=="function")for(let s of c(l))!b.call(e,s)&&s!==t&&i(e,s,{get:()=>l[s],enumerable:!(r=h(l,s))||r.enumerable});return e};var g=(e,l,t)=>(t=e!=null?f(p(e)):{},u(l||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),k=e=>u(i({},"__esModule",{value:!0}),e);var w={};y(w,{default:()=>E});module.exports=k(w);var o=require("htmlparser2"),m=g(require("./decode-html"));function E(e){const l=[];let t=null,r=null,s=null;const a=new o.DomHandler(void 0,{},n=>{if(n.type==="tag")switch(n.name){case"html":t=n;break;case"head":r=n;break;default:break}else n.type==="style"&&n.attribs.id==="master"&&(s=n);n.attribs.class&&n.attribs.class.split(" ").forEach(d=>{d=(0,m.default)(d),l.includes(d)||l.push(d)})});return new o.Parser(a,{decodeEntities:!1}).end(e),{classes:l,nodes:a.root.childNodes,htmlElement:t,headElement:r,styleElement:s}}
|
package/dist/render-css.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var u=Object.create;var s=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var m=(r,e)=>{for(var n in e)s(r,n,{get:e[n],enumerable:!0})},f=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of C(e))!p.call(r,t)&&t!==n&&s(r,t,{get:()=>e[t],enumerable:!(o=S(e,t))||o.enumerable});return r};var i=(r,e,n)=>(n=r!=null?u(g(r)):{},f(e||!r||!r.__esModule?s(n,"default",{value:r,enumerable:!0}):n,r)),M=r=>f(s({},"__esModule",{value:!0}),r);var l={};m(l,{default:()=>d});module.exports=M(l);var a=i(require("./parse-html")),c=i(require("@master/css"));function d(r,e){if(!r)return;const{classes:n}=(0,a.default)(r);if(!n.length)return;const o=new c.default(e);return n.forEach(t=>o.add(t)),o}
|
package/dist/render.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var C=Object.create;var f=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var y=(e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})},a=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x(t))!S.call(e,s)&&s!==n&&f(e,s,{get:()=>t[s],enumerable:!(i=w(t,s))||i.enumerable});return e};var h=(e,t,n)=>(n=e!=null?C(N(e)):{},a(t||!e||!e.__esModule?f(n,"default",{value:e,enumerable:!0}):n,e)),M=e=>a(f({},"__esModule",{value:!0}),e);var T={};y(T,{default:()=>p});module.exports=M(T);var c=h(require("@master/css")),E=h(require("./parse-html")),r=require("domhandler"),u=h(require("dom-serializer"));function p(e,t){const n=(0,E.default)(e),{classes:i,nodes:s,htmlElement:d}=n;let{headElement:o,styleElement:l}=n;if(!i.length)return{html:e,classes:i,nodes:s,htmlElement:d,headElement:o,styleElement:l};const m=new c.default(t);return i.forEach(g=>m.add(g)),l?l.childNodes=[new r.Text(m.text)]:(l=new r.Element("style",{id:"master"},[new r.Text(m.text)]),o?o.childNodes.push(l):d?(o=new r.Element("head",{},[l]),d.childNodes.unshift(o)):s.unshift(l)),{html:(0,u.default)(s,{decodeEntities:!1,encodeEntities:!1}),css:m,classes:i,nodes:s,htmlElement:d,headElement:o,styleElement:l}}
|