Skip to content

Commit

Permalink
fix: 🐛 change the import path to an utils file
Browse files Browse the repository at this point in the history
  • Loading branch information
brklntmhwk committed Oct 31, 2024
1 parent d921127 commit 6d62924
Showing 1 changed file with 89 additions and 89 deletions.
178 changes: 89 additions & 89 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,98 +5,98 @@ import type { LeafDirective } from "mdast-util-directive";
import type { Plugin } from "unified";
import { visit } from "unist-util-visit";
import {
isContainerDirective,
isImage,
isLink,
isParagraph,
isText,
isContainerDirective,
isImage,
isLink,
isParagraph,
isText,
} from "./utils.js";

const remarkCard: Plugin<[], Root> = () => {
return (tree) => {
visit(tree, isContainerDirective, (node) => {
if (node.name !== "card-grid") return;
if (node.children.length === 0) return;

node.data = {
...node.data,
hProperties: {
class: node.attributes?.class,
},
};
});

visit(tree, isContainerDirective, (node) => {
if (node.name !== "card") return;
if (node.children.length === 0) return;

const [firstNode, secondNode, ..._restNodes] = node.children;
if (!isParagraph(firstNode)) return;
if (firstNode.children.length === 0) return;

let cardImageOrLink: PhrasingContent;
let cardContent: PhrasingContent[];
let cardLabel = "";

const imageWrapper: LeafDirective = {
type: "leafDirective",
name: "image-wrapper",
data: {
hName: "div",
},
children: [],
};

const content: LeafDirective = {
type: "leafDirective",
name: "card-content",
data: {
hName: "div",
},
children: [],
};

if (firstNode.data?.directiveLabel === true) {
if (!isText(firstNode.children[0])) return;

cardLabel = firstNode.children[0].value;

if (!isParagraph(secondNode)) return;
const [imageOrLink, ...restContent] = secondNode.children;
cardImageOrLink = imageOrLink;
cardContent = restContent;
} else {
const [imageOrLink, ...restContent] = firstNode.children;
cardImageOrLink = imageOrLink;
cardContent = restContent;
}

if (isImage(cardImageOrLink)) {
cardImageOrLink.alt = cardImageOrLink.alt || cardLabel;
} else if (isLink(cardImageOrLink)) {
const cardImage = cardImageOrLink.children[0];
if (!isImage(cardImage)) return;

cardImage.alt = cardImage.alt || cardLabel;
} else {
return;
}

imageWrapper.children.push(cardImageOrLink);

for (const contentElem of cardContent) {
content.children.push(contentElem);
}

node.data = {
...node.data,
hProperties: {
class: node.attributes?.class,
},
};
node.children.splice(0, Number.POSITIVE_INFINITY, imageWrapper, content);
});
};
return (tree) => {
visit(tree, isContainerDirective, (node) => {
if (node.name !== "card-grid") return;
if (node.children.length === 0) return;

node.data = {
...node.data,
hProperties: {
class: node.attributes?.class,
},
};
});

visit(tree, isContainerDirective, (node) => {
if (node.name !== "card") return;
if (node.children.length === 0) return;

const [firstNode, secondNode, ..._restNodes] = node.children;
if (!isParagraph(firstNode)) return;
if (firstNode.children.length === 0) return;

let cardImageOrLink: PhrasingContent;
let cardContent: PhrasingContent[];
let cardLabel = "";

const imageWrapper: LeafDirective = {
type: "leafDirective",
name: "image-wrapper",
data: {
hName: "div",
},
children: [],
};

const content: LeafDirective = {
type: "leafDirective",
name: "card-content",
data: {
hName: "div",
},
children: [],
};

if (firstNode.data?.directiveLabel === true) {
if (!isText(firstNode.children[0])) return;

cardLabel = firstNode.children[0].value;

if (!isParagraph(secondNode)) return;
const [imageOrLink, ...restContent] = secondNode.children;
cardImageOrLink = imageOrLink;
cardContent = restContent;
} else {
const [imageOrLink, ...restContent] = firstNode.children;
cardImageOrLink = imageOrLink;
cardContent = restContent;
}

if (isImage(cardImageOrLink)) {
cardImageOrLink.alt = cardImageOrLink.alt || cardLabel;
} else if (isLink(cardImageOrLink)) {
const cardImage = cardImageOrLink.children[0];
if (!isImage(cardImage)) return;

cardImage.alt = cardImage.alt || cardLabel;
} else {
return;
}

imageWrapper.children.push(cardImageOrLink);

for (const contentElem of cardContent) {
content.children.push(contentElem);
}

node.data = {
...node.data,
hProperties: {
class: node.attributes?.class,
},
};
node.children.splice(0, Number.POSITIVE_INFINITY, imageWrapper, content);
});
};
};

export default remarkCard;

0 comments on commit 6d62924

Please sign in to comment.