ttcMD: add col-span logic to blocks and cards
This commit is contained in:
parent
a72741e4d1
commit
f6474f934c
@ -1,6 +1,6 @@
|
|||||||
import { sanitize } from "isomorphic-dompurify";
|
import { sanitize } from "isomorphic-dompurify";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { Fragment } from "react";
|
import React, { Fragment } from "react";
|
||||||
import { Poppable } from "../poppables/components/poppable";
|
import { Poppable } from "../poppables/components/poppable";
|
||||||
import { Accordion, AccordionContent } from "../accordion";
|
import { Accordion, AccordionContent } from "../accordion";
|
||||||
|
|
||||||
@ -110,7 +110,10 @@ export const buildOnlyDefaultElements = () => {
|
|||||||
} as React.CSSProperties}
|
} as React.CSSProperties}
|
||||||
className="grid grid-cols-dynamic gap-x-8 gap-y-6 mb-6"
|
className="grid grid-cols-dynamic gap-x-8 gap-y-6 mb-6"
|
||||||
>
|
>
|
||||||
{children?.map((c) => <div key={c.uuid}>{c.render(c)}</div>)}
|
{children?.map((c) => {
|
||||||
|
const Comp = c.metadata.span ? Fragment : "div";
|
||||||
|
return <Comp key={c.uuid}>{c.render(c)}</Comp>;
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -121,17 +124,21 @@ export const buildOnlyDefaultElements = () => {
|
|||||||
// card
|
// card
|
||||||
registerIdentifier(
|
registerIdentifier(
|
||||||
"card",
|
"card",
|
||||||
/\[{2}([\s\S]*?)\n+\]{2}/g,
|
/\[{2}[\s\S]*?\n+\]{2}/g,
|
||||||
(s) => {
|
(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 match = s.match(rx);
|
||||||
const [_, isBlock, content] = match || ["", "", s];
|
const [_, isBlockOrSpan, content] = match || ["", "", s];
|
||||||
|
|
||||||
|
const isBlock = isBlockOrSpan.includes("!");
|
||||||
|
const span = Number(isBlockOrSpan.replace("!", ""));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
content: content.trim(),
|
content: content.trim(),
|
||||||
raw: s,
|
raw: s,
|
||||||
metadata: {
|
metadata: {
|
||||||
isBlock,
|
isBlock,
|
||||||
|
span,
|
||||||
},
|
},
|
||||||
uuid: crypto.randomUUID(),
|
uuid: crypto.randomUUID(),
|
||||||
rendersChildrenOnly,
|
rendersChildrenOnly,
|
||||||
@ -142,7 +149,10 @@ export const buildOnlyDefaultElements = () => {
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
data-block={!!metadata.isBlock}
|
data-block={!!metadata.isBlock}
|
||||||
className="data-[block=false]:card mb-6"
|
style={{
|
||||||
|
"--v-span": metadata.span || 1,
|
||||||
|
} as React.CSSProperties}
|
||||||
|
className="data-[block=false]:card data-[block=false]:mb-6 col-span-2"
|
||||||
>
|
>
|
||||||
{children?.map((e) => <Fragment key={e.uuid}>{e.render(e)}
|
{children?.map((e) => <Fragment key={e.uuid}>{e.render(e)}
|
||||||
</Fragment>)}
|
</Fragment>)}
|
||||||
@ -265,7 +275,7 @@ export const buildOnlyDefaultElements = () => {
|
|||||||
(token) => {
|
(token) => {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
// id={generateId(token.raw, usedIds)}
|
id={token.metadata.id}
|
||||||
data-strength={token.metadata.strength}
|
data-strength={token.metadata.strength}
|
||||||
className={`
|
className={`
|
||||||
font-bold
|
font-bold
|
||||||
|
@ -11,7 +11,7 @@ export const createElements = (body: string): Token[] => {
|
|||||||
const tokenize = (body: string) => {
|
const tokenize = (body: string) => {
|
||||||
const tokenizedBody: TokenMarker[] = [];
|
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) => {
|
const addToken = (thing: TokenMarker) => {
|
||||||
tokenizedBody.push(thing);
|
tokenizedBody.push(thing);
|
||||||
|
@ -46,6 +46,9 @@ const config: Config = {
|
|||||||
height: {
|
height: {
|
||||||
variable: "var(--v-height)",
|
variable: "var(--v-height)",
|
||||||
},
|
},
|
||||||
|
gridColumn: {
|
||||||
|
variable: "span var(--v-span) / span var(--v-span)",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: [],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user