-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathscully.slipnslide.config.ts
55 lines (52 loc) · 1.41 KB
/
scully.slipnslide.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { HandledRoute, logWarn, registerPlugin, ScullyConfig } from '@scullyio/scully';
import { renderOnce } from './scully/plugins/render-once';
import { JSDOM } from 'jsdom';
import { startWith } from 'rxjs/operators';
const extractMDStyles = Symbol('extractMDStyles');
export const config: ScullyConfig = {
projectRoot: './projects/slipnslide/src',
projectName: 'slipnslide',
outDir: './dist/static',
routes: {
'/:slide': {
type: 'contentFolder',
slide: {
folder: './slides',
},
preRenderer: (h: HandledRoute) => {
h.renderPlugin = renderOnce;
},
},
// '/slide/:slug': {
// type: 'contentFolder',
// slug: {
// folder: './slides',
// },
// preRenderer: (h: HandledRoute) => {
// h.renderPlugin = renderOnce;
// },
// },
'/edit': {
type: 'ignored',
},
'/code-sample': {
type: 'ignored',
},
// '/edit': {
// type: 'ignored',
// },
},
};
registerPlugin('render', extractMDStyles, async (html, route) => {
try {
const dom = new JSDOM(html);
const document = dom.window.document;
const parent = document.querySelector('scully-content').parentElement;
const styles = Array.from(parent.getElementsByTagName('style'));
styles.forEach(node => document.body.appendChild(node));
return dom.serialize();
} catch (e) {
console.error(e);
}
return html;
});