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

Function getExampleCode

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

Source from the content-addressed store, hash-verified

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

Callers 1

getExampleFilesFunction · 0.85

Calls 1

getTextContentFunction · 0.85

Tested by

no test coverage detected