diff --git a/src/components/md-bg.tsx b/src/components/md-bg.tsx index fa5c0be..707393c 100644 --- a/src/components/md-bg.tsx +++ b/src/components/md-bg.tsx @@ -19,7 +19,7 @@ customElement("md-bg", { fit: "cover" }, (props, { element }) => { // 从父节点 article 的 data-src 获取当前 markdown 文件完整路径 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); diff --git a/src/components/md-deck/hooks/layer-parser.ts b/src/components/md-deck/hooks/layer-parser.ts index ee24520..8c5e808 100644 --- a/src/components/md-deck/hooks/layer-parser.ts +++ b/src/components/md-deck/hooks/layer-parser.ts @@ -1,4 +1,5 @@ import type { Layer, LayerConfig } from '../types'; +import {CSV} from "../../utils/csv-loader"; /** * 解析 layers 字符串 @@ -51,11 +52,14 @@ export function formatLayers(layers: LayerConfig[]): string { * 初始化图层配置 */ export function initLayerConfigs( - data: any[], + data: CSV, existingLayersStr: string ): LayerConfig[] { const parsed = parseLayers(existingLayersStr); const allProps = Object.keys(data[0] || {}).filter(k => k !== 'label'); + if(data.frontmatter){ + allProps.push(...Object.keys(data.frontmatter)); + } return allProps.map(prop => { const existing = parsed.find(l => l.prop === prop); diff --git a/src/components/utils/csv-loader.ts b/src/components/utils/csv-loader.ts index baa454a..3c3fc5b 100644 --- a/src/components/utils/csv-loader.ts +++ b/src/components/utils/csv-loader.ts @@ -67,6 +67,9 @@ export async function loadCSV>(path: string): Promise const csvResult = result as CSV; if (frontmatter) { csvResult.frontmatter = frontmatter; + for(const each of result){ + Object.setPrototypeOf(each, frontmatter); + } } csvCache.set(path, result);