MCPcopy Create free account
hub / github.com/adobe/react-spectrum / getExampleCode

Function getExampleCode

packages/dev/s2-docs/src/CodePlatter.tsx:329–367  ·  view source on GitHub ↗
(codeRef: RefObject<HTMLDivElement | null>, urls: {[name: string]: string})

Source from the content-addressed store, hash-verified

327}
328
329function getExampleCode(codeRef: RefObject<HTMLDivElement | null>, urls: {[name: string]: string}) {
330 let code = getTextContent(codeRef.current!.querySelector('pre')!);
331 let fileTabs = codeRef.current!.closest('[data-files]');
332 if (fileTabs) {
333 let example = fileTabs.querySelector('[data-example] pre');
334 if (example) {
335 code = getTextContent(example);
336 }
337 }
338
339 if (!code.includes('export default function')) {
340 // Export the last function
341 code = code.replace(
342 /\nfunction ([^(]+)((.|\n)+\n\}\n?)$/,
343 '\nexport default function Example$2'
344 );
345 }
346
347 return (
348 code
349 // Add function wrapper around raw JSX in examples.
350 .replace(/\n<((?:.|\n)+)/, (_, code) => {
351 let res = '\nexport default function Example() {\n return (\n <';
352 let lines = code.split('\n');
353 res += lines.shift();
354
355 for (let line of lines) {
356 res += '\n ' + line;
357 }
358
359 res += '\n );\n}\n';
360 return res;
361 })
362 // Resolve urls
363 .replace(/import (.*?) from ['"](url:.*?)['"]/g, (_, name, specifier) => {
364 return `const ${name} = '${urls[specifier]}'`;
365 })
366 );
367}
368
369// const V0 = createIcon(props => (
370// <svg viewBox="0 0 40 20" {...props}>

Callers 1

getExampleFilesFunction · 0.85

Calls 1

getTextContentFunction · 0.85

Tested by

no test coverage detected