feat(md-deck): support structured data-config with template layers
Allow md-deck layers to render markdown templates via {{var}}
substitution instead of only CSV props. Add config.ts to normalize
a JSON data-config attribute (size, grid, shape, layers) emitted by
the yaml code-block tag, taking precedence over legacy string props.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { createStore } from "solid-js/store";
|
||||
import { calculateDimensions } from "./dimensions";
|
||||
import { loadCSV, CSV } from "../../utils/csv-loader";
|
||||
import { formatLayers, initLayerConfigsForSide } from "./layer-parser";
|
||||
import { formatLayers } from "./layer-parser";
|
||||
import * as layerCrud from "./layer-crud";
|
||||
import type {
|
||||
CardData,
|
||||
@@ -138,8 +138,8 @@ export interface DeckActions {
|
||||
loadCardsFromPath: (
|
||||
path: string,
|
||||
rawSrc: string,
|
||||
layersStr?: string,
|
||||
backLayersStr?: string,
|
||||
frontLayers?: LayerConfig[],
|
||||
backLayers?: LayerConfig[],
|
||||
) => Promise<void>;
|
||||
setError: (error: string | null) => void;
|
||||
clearError: () => void;
|
||||
@@ -442,8 +442,8 @@ export function createDeckStore(initialSrc: string = ""): DeckStore {
|
||||
const loadCardsFromPath = async (
|
||||
path: string,
|
||||
rawSrc: string,
|
||||
layersStr: string = "",
|
||||
backLayersStr: string = "",
|
||||
frontLayers: LayerConfig[] = [],
|
||||
backLayers: LayerConfig[] = [],
|
||||
) => {
|
||||
if (!path) {
|
||||
setState({ error: "未指定 CSV 文件路径" });
|
||||
@@ -466,12 +466,8 @@ export function createDeckStore(initialSrc: string = ""): DeckStore {
|
||||
setState({
|
||||
cards: data,
|
||||
activeTab: 0,
|
||||
frontLayerConfigs: layerCrud.withKeys(
|
||||
initLayerConfigsForSide(data, layersStr),
|
||||
),
|
||||
backLayerConfigs: layerCrud.withKeys(
|
||||
initLayerConfigsForSide(data, backLayersStr),
|
||||
),
|
||||
frontLayerConfigs: layerCrud.withKeys(frontLayers),
|
||||
backLayerConfigs: layerCrud.withKeys(backLayers),
|
||||
isLoading: false,
|
||||
});
|
||||
updateDimensions();
|
||||
|
||||
Reference in New Issue
Block a user