Skip to content

Commit

Permalink
autogenerate demo list
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisShank committed Nov 26, 2024
1 parent 55568be commit 092bd18
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 27 deletions.
20 changes: 2 additions & 18 deletions demo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,10 @@
</style>
</head>
<body>
<h1>Folk Canvas Primitives</h1>
<h1>Folk Canvas Demos</h1>

<ul>
<li><a href="animated-shapes.html">Animated Shapes</a></li>
<li><a href="arrows.html">Arrows</a></li>
<li><a href="iframed-arrows.html">Iframed Arrows</a></li>
<li><a href="canvasify.html">Canvasify</a></li>
<li><a href="collision.html">Collision</a></li>
<li><a href="event-propagator.html">Event propagator</a></li>
<li><a href="ink.html">Ink</a></li>
<li><a href="maps.html">Maps</a></li>
<li><a href="music.html">Music</a></li>
<li><a href="perf.html">Perf</a></li>
<li><a href="shapes.html">Shapes</a></li>
<li><a href="spreadsheet.html">Spreadsheet</a></li>
<li><a href="spreadsheet-graph.html">Spreadsheet Graph</a></li>
<li><a href="spreadsheet-propagator.html">Spreadsheet Propagator</a></li>
<li><a href="wiggly.html">Wiggly</a></li>
<li><a href="semantic-zoom.html">Semantic Zoom</a></li>
<!-- <li><a href="chains-of-thought/index.html">Chains of thought</a></li> -->
{{ LINKS }}
</ul>
</body>
</html>
39 changes: 30 additions & 9 deletions demo/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,39 @@
import { resolve } from 'node:path';
import { readdirSync } from 'node:fs';
import { defineConfig } from 'vite';
import { defineConfig, IndexHtmlTransformContext, Plugin } from 'vite';

const files: string[] = readdirSync(__dirname).filter((file) => file.endsWith('.html'));

const input: Record<string, string> = files.reduce((acc, file) => {
acc[file.replace('.html', '')] = resolve(__dirname, file);
return acc;
}, {} as Record<string, string>);

const linkGenerator = (): Plugin => {
return {
name: 'link-generator',
transformIndexHtml(html: string, ctx: IndexHtmlTransformContext) {
if (!ctx.filename.endsWith('index.html')) return;

const links = files
.filter((file) => !file.includes('index'))
.sort()
.map((file) => {
const title = file.replace('.html', '').replaceAll('-', ' ');
return `<li><a href="${file}">${title}</a></li>`;
})
.join('\n');

return html.replace('{{ LINKS }}', links);
},
};
};

export default defineConfig({
plugins: [linkGenerator()],
build: {
target: 'esnext',
rollupOptions: {
input: readdirSync(__dirname)
.filter((file) => file.endsWith('.html'))
.reduce((acc, file) => {
acc[file.replace('.html', '')] = resolve(__dirname, file);
return acc;
}, {} as Record<string, string>),
},
rollupOptions: { input },
modulePreload: {
polyfill: false,
},
Expand Down

0 comments on commit 092bd18

Please sign in to comment.