MCPcopy Index your code
hub / github.com/resend/react-email / getDecorations

Function getDecorations

packages/editor/src/extensions/prism-plugin.ts:54–125  ·  view source on GitHub ↗
({
  doc,
  name,
  defaultLanguage,
  defaultTheme,
  loadingLanguages,
  onLanguageLoaded,
}: {
  doc: ProsemirrorNode;
  name: string;
  defaultLanguage: string | null | undefined;
  defaultTheme: string | null | undefined;
  loadingLanguages: Set<string>;
  onLanguageLoaded: (language: string) => void;
})

Source from the content-addressed store, hash-verified

52}
53
54function getDecorations({
55 doc,
56 name,
57 defaultLanguage,
58 defaultTheme,
59 loadingLanguages,
60 onLanguageLoaded,
61}: {
62 doc: ProsemirrorNode;
63 name: string;
64 defaultLanguage: string | null | undefined;
65 defaultTheme: string | null | undefined;
66 loadingLanguages: Set<string>;
67 onLanguageLoaded: (language: string) => void;
68}) {
69 const decorations: Decoration[] = [];
70
71 findChildren(doc, (node) => node.type.name === name).forEach((block) => {
72 let from = block.pos + 1;
73 const language = block.node.attrs.language || defaultLanguage;
74 const theme = block.node.attrs.theme || defaultTheme;
75 let html = '';
76
77 try {
78 if (!registeredLang(language) && !loadingLanguages.has(language)) {
79 loadingLanguages.add(language);
80 import(/* @vite-ignore */ `prismjs/components/prism-${language}`)
81 .then(() => {
82 loadingLanguages.delete(language);
83 onLanguageLoaded(language);
84 })
85 .catch(() => {
86 loadingLanguages.delete(language);
87 });
88 }
89
90 if (!hasPrismThemeLoaded(theme)) {
91 loadPrismTheme(theme);
92 }
93
94 html = Prism.highlight(
95 block.node.textContent,
96 Prism.languages[language],
97 language,
98 );
99 } catch {
100 html = Prism.highlight(
101 block.node.textContent,
102 Prism.languages.javascript,
103 'js',
104 );
105 }
106
107 const nodes = getHighlightNodes(html);
108
109 parseNodes(nodes as RefractorNode[]).forEach((node) => {
110 const to = from + node.text.length;
111

Callers 1

PrismPluginFunction · 0.85

Calls 9

hasPrismThemeLoadedFunction · 0.90
loadPrismThemeFunction · 0.90
registeredLangFunction · 0.85
onLanguageLoadedFunction · 0.85
getHighlightNodesFunction · 0.85
parseNodesFunction · 0.85
forEachMethod · 0.80
pushMethod · 0.80
createMethod · 0.45

Tested by

no test coverage detected