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
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;