From f6474f934c32ccb7d60b05c025280a90f93abbc5 Mon Sep 17 00:00:00 2001 From: Emma Date: Sat, 16 Mar 2024 04:07:26 -0600 Subject: [PATCH] ttcMD: add col-span logic to blocks and cards --- lib/tcmd/TokenIdentifiers.tsx | 24 +++++++++++++++++------- lib/tcmd/index.ts | 2 +- tailwind.config.ts | 3 +++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/tcmd/TokenIdentifiers.tsx b/lib/tcmd/TokenIdentifiers.tsx index e6fa003..c737af7 100644 --- a/lib/tcmd/TokenIdentifiers.tsx +++ b/lib/tcmd/TokenIdentifiers.tsx @@ -1,6 +1,6 @@ import { sanitize } from "isomorphic-dompurify"; import Link from "next/link"; -import { Fragment } from "react"; +import React, { Fragment } from "react"; import { Poppable } from "../poppables/components/poppable"; import { Accordion, AccordionContent } from "../accordion"; @@ -110,7 +110,10 @@ export const buildOnlyDefaultElements = () => { } as React.CSSProperties} className="grid grid-cols-dynamic gap-x-8 gap-y-6 mb-6" > - {children?.map((c) =>
{c.render(c)}
)} + {children?.map((c) => { + const Comp = c.metadata.span ? Fragment : "div"; + return {c.render(c)}; + })} ); }, @@ -121,17 +124,21 @@ export const buildOnlyDefaultElements = () => { // card registerIdentifier( "card", - /\[{2}([\s\S]*?)\n+\]{2}/g, + /\[{2}[\s\S]*?\n+\]{2}/g, (s) => { - const rx = /\[{2}(!?)\s*?\n+([\s\S]*)\n+\]{2}/; + const rx = /\[{2}((?:!?)(?:[0-9]?))\s*?\n+([\s\S]*)\n+\]{2}/; const match = s.match(rx); - const [_, isBlock, content] = match || ["", "", s]; + const [_, isBlockOrSpan, content] = match || ["", "", s]; + + const isBlock = isBlockOrSpan.includes("!"); + const span = Number(isBlockOrSpan.replace("!", "")); return { content: content.trim(), raw: s, metadata: { isBlock, + span, }, uuid: crypto.randomUUID(), rendersChildrenOnly, @@ -142,7 +149,10 @@ export const buildOnlyDefaultElements = () => { return (
{children?.map((e) => {e.render(e)} )} @@ -265,7 +275,7 @@ export const buildOnlyDefaultElements = () => { (token) => { return (
{ const tokenize = (body: string) => { const tokenizedBody: TokenMarker[] = []; - body = body.replaceAll(/[ \t]+\n/g, "\n"); + body = body.replaceAll(/[ \t]+\n/g, "\n").replaceAll(/\n{3,}/g, "\n\n"); const addToken = (thing: TokenMarker) => { tokenizedBody.push(thing); diff --git a/tailwind.config.ts b/tailwind.config.ts index 5f31dae..7e3cb26 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -46,6 +46,9 @@ const config: Config = { height: { variable: "var(--v-height)", }, + gridColumn: { + variable: "span var(--v-span) / span var(--v-span)", + }, }, }, plugins: [],