实现单篇和多篇论文的对比总结
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import type { IconNode } from "lucide";
|
||||
|
||||
export type LucideIcon = IconNode;
|
||||
|
||||
export function createLucideIcon(
|
||||
doc: Document,
|
||||
icon: LucideIcon,
|
||||
options: {
|
||||
size?: number;
|
||||
strokeWidth?: number;
|
||||
className?: string;
|
||||
} = {},
|
||||
): Element {
|
||||
const size = options.size ?? 16;
|
||||
const svg = doc.createElementNS("http://www.w3.org/2000/svg", "svg");
|
||||
svg.setAttribute("width", String(size));
|
||||
svg.setAttribute("height", String(size));
|
||||
svg.setAttribute("viewBox", "0 0 24 24");
|
||||
svg.setAttribute("fill", "none");
|
||||
svg.setAttribute("stroke", "currentColor");
|
||||
svg.setAttribute("stroke-width", String(options.strokeWidth ?? 2));
|
||||
svg.setAttribute("stroke-linecap", "round");
|
||||
svg.setAttribute("stroke-linejoin", "round");
|
||||
svg.setAttribute("aria-hidden", "true");
|
||||
svg.classList.add("chatpapers-icon");
|
||||
if (options.className) {
|
||||
for (const c of options.className.split(/\s+/)) {
|
||||
if (c) svg.classList.add(c);
|
||||
}
|
||||
}
|
||||
|
||||
for (const node of icon) {
|
||||
const [tag, attrs] = node;
|
||||
const el = doc.createElementNS("http://www.w3.org/2000/svg", tag);
|
||||
for (const [key, value] of Object.entries(attrs)) {
|
||||
el.setAttribute(key, String(value));
|
||||
}
|
||||
svg.appendChild(el);
|
||||
}
|
||||
return svg;
|
||||
}
|
||||
Reference in New Issue
Block a user