import React from 'react'; import { Link } from 'gatsby'; import config from '../../../config'; import { getTextualContent, getCodeBlocks, optimizeAllNodes, getExplanation, getBrowserSupport } from '../util'; // import ShareIcon from './SVGs/ShareIcon'; import CollapseOpenIcon from './SVGs/CollapseOpenIcon'; import CollapseClosedIcon from './SVGs/CollapseClosedIcon'; // =================================================== // Snippet Card HOC - check components below for more // =================================================== const SnippetCard = ({ short, snippetData, ...rest }) => short ? ( ) : ( ); // =================================================== // Link to edit snippet on Codepen // =================================================== const CodepenButton = ({ snippetData }) => (
) // =================================================== // Full snippet view (tags, code, title, description) // =================================================== const FullCard = ({ snippetData, isDarkMode }) => { const tags = snippetData.tags; let cardCodeHtml = `${optimizeAllNodes( getCodeBlocks(snippetData.html).html, )}`; let cardCodeCss = `${optimizeAllNodes( getCodeBlocks(snippetData.html).css, )}`; let cardCodeJs = `${optimizeAllNodes( getCodeBlocks(snippetData.html).js, )}`; React.useEffect(() => { if (!cardCodeJs) return; let jsTitle = `${snippetData.title.toLowerCase().replace(/[\s-]/g, '')}_js`; const s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.innerHTML = `function ${jsTitle}(){${snippetData.code.js}};`; document.body.appendChild(s); try { window[`${jsTitle}`](); } catch (e) { } }, []); return (

{snippetData.title}   {tags.map(tag => ( {tag} ))}

HTML
        
CSS
        {
          cardCodeJs && <>
            
JavaScript
          
        }
        
Demo
{ cardCodeJs && }
Explanation
Browser support

{snippetData.supportPercentage.toFixed(1)}%

); }; // =================================================== // Short snippet view (title, description, code*) // =================================================== const ShortCard = ({ snippetData, isDarkMode }) => { React.useEffect(() => { if (!snippetData.code.js) return; let jsTitle = `${snippetData.title.toLowerCase().replace(/[\s-]/g, '')}_js`; const s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.innerHTML = `function ${jsTitle}(){${snippetData.code.js}};`; document.body.appendChild(s); try { window[`${jsTitle}`](); } catch (e) { } }, []); return (

{snippetData.title}

Demo
{ snippetData.code.js && }
); }; export default SnippetCard;