feat: front matter in decks

This commit is contained in:
hypercross 2026-03-13 10:50:08 +08:00
parent 1bd72bb58f
commit b2e10d847e
3 changed files with 9 additions and 2 deletions

View File

@ -19,7 +19,7 @@ customElement("md-bg", { fit: "cover" }, (props, { element }) => {
// 从父节点 article 的 data-src 获取当前 markdown 文件完整路径 // 从父节点 article 的 data-src 获取当前 markdown 文件完整路径
const articleEl = element?.closest('article') as HTMLElement; const articleEl = element?.closest('article') as HTMLElement;
const articlePath = articleEl?.getAttribute('data-src') || ''; const articlePath = element?.closest('article[data-src]')?.getAttribute('data-src') || '';
// 解析相对路径 // 解析相对路径
const resolvedSrc = resolvePath(articlePath, rawSrc); const resolvedSrc = resolvePath(articlePath, rawSrc);

View File

@ -1,4 +1,5 @@
import type { Layer, LayerConfig } from '../types'; import type { Layer, LayerConfig } from '../types';
import {CSV} from "../../utils/csv-loader";
/** /**
* layers * layers
@ -51,11 +52,14 @@ export function formatLayers(layers: LayerConfig[]): string {
* *
*/ */
export function initLayerConfigs( export function initLayerConfigs(
data: any[], data: CSV<any>,
existingLayersStr: string existingLayersStr: string
): LayerConfig[] { ): LayerConfig[] {
const parsed = parseLayers(existingLayersStr); const parsed = parseLayers(existingLayersStr);
const allProps = Object.keys(data[0] || {}).filter(k => k !== 'label'); const allProps = Object.keys(data[0] || {}).filter(k => k !== 'label');
if(data.frontmatter){
allProps.push(...Object.keys(data.frontmatter));
}
return allProps.map(prop => { return allProps.map(prop => {
const existing = parsed.find(l => l.prop === prop); const existing = parsed.find(l => l.prop === prop);

View File

@ -67,6 +67,9 @@ export async function loadCSV<T = Record<string, string>>(path: string): Promise
const csvResult = result as CSV<T>; const csvResult = result as CSV<T>;
if (frontmatter) { if (frontmatter) {
csvResult.frontmatter = frontmatter; csvResult.frontmatter = frontmatter;
for(const each of result){
Object.setPrototypeOf(each, frontmatter);
}
} }
csvCache.set(path, result); csvCache.set(path, result);