From 0fef923dde005b37d714e6b4282cae0e7888816f Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 18 Apr 2020 18:19:24 +0000 Subject: Updates --- static/js/main.4193a873.chunk.js | 2 ++ static/js/main.4193a873.chunk.js.map | 1 + static/js/main.76c0462e.chunk.js | 2 -- static/js/main.76c0462e.chunk.js.map | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 static/js/main.4193a873.chunk.js create mode 100644 static/js/main.4193a873.chunk.js.map delete mode 100644 static/js/main.76c0462e.chunk.js delete mode 100644 static/js/main.76c0462e.chunk.js.map (limited to 'static/js') diff --git a/static/js/main.4193a873.chunk.js b/static/js/main.4193a873.chunk.js new file mode 100644 index 0000000..7546391 --- /dev/null +++ b/static/js/main.4193a873.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpreact-benzin"]=this["webpackJsonpreact-benzin"]||[]).push([[0],{58:function(e,t,a){e.exports=a.p+"static/media/icon.8908a388.svg"},70:function(e,t,a){e.exports=a(99)},99:function(e,t,a){"use strict";a.r(t);var n=a(23),r=a(0),l=a.n(r),c=a(9),i=a.n(c),o=a(51),u=a(138),m=a(136),s=a(101),d=a(130),p=a(63),f=a(100),v=Object(o.a)((function(e){return{surface:{position:"absolute",display:"flex",flexDirection:"column",overflowY:"auto",scrollbarColor:"".concat(e.palette.secondary.dark," ").concat(e.palette.secondary.light),"& a.MuiTypography-root":{color:e.palette.primary.light}}}})),g=function(e){var t=e.size,a=e.position,n=e.children,r=v();return l.a.createElement(f.a,{variant:"outlined",style:Object(p.a)({},t,{},a),className:r.surface},n)},h=Object(o.a)((function(e){return{header:{padding:e.spacing(1,0,1,2),background:e.palette.background.elevation2}}})),E=function(e){var t=e.type,a=e.name,n=e.children,r=h(),c={height:"85vh"},i={bottom:"3vh"};return"primary"===t?(c.width="63vw",i.left="2vw"):"secondary"===t?(c.width="31vw",i.right="2vw"):"mono"===t&&(i.left="2vw",i.right="2vw"),l.a.createElement(g,{size:c,position:i},a&&l.a.createElement("div",null,l.a.createElement(s.a,{variant:"h5",className:r.header},a),l.a.createElement(d.a,null)),n)},w=a(131),b=a(132),y=a(139),k=a(133),j=Object(o.a)((function(e){return{root:{background:e.palette.background.elevation2,color:e.palette.text.primary,paddingLeft:e.spacing(3)},logo:{margin:e.spacing(0,3,0,1)},tab:{"& .MuiTab-wrapper":{padding:e.spacing(2),flexDirection:"row",fontSize:"0.8125rem","& svg":{marginRight:e.spacing(1),marginBottom:"0 !important"}}}}})),x=function(e){var t=e.logo,a=e.contents,n=e.page,r=e.setPage,c=j();return l.a.createElement(w.a,{position:"sticky",className:c.root},l.a.createElement(b.a,null,t.icon,l.a.createElement(s.a,{variant:"h5",className:c.logo,color:"primary"},t.title),l.a.createElement(y.a,{onChange:function(e,t){r(t)},value:n},a&&Object.keys(a).map((function(e){return l.a.createElement(k.a,{label:e,icon:a[e],value:e,className:c.tab,key:e})})))))},O=Object(o.a)((function(e){return{content:{padding:e.spacing(2,2,1,3),marginBottom:e.spacing(1),"& .MuiButton-root":{margin:e.spacing(1,2,2,0)}}}})),N=function(e){var t=e.sectionName,a=e.children,n=e.level,r=void 0===n?0:n,c=O(),i=r+2;i>6&&(i=6);var o="h".concat(i);return l.a.createElement(l.a.Fragment,null,l.a.createElement(s.a,{variant:o},t),l.a.createElement(d.a,{variant:"middle"}),l.a.createElement(s.a,{component:"div",className:c.content},a))},L=(a(62),a(54),a(55)),M=a.n(L),R=a(56),I=a.n(R),F=a(61),z=a(134),D=a(135),S=(a(79),Object(F.a)({palette:{type:"dark",primary:{main:M.a[400]},secondary:{main:I.a[500]},background:{default:"#121212",paper:"#1e1e1e",elevation1:"#1e1e1e",elevation2:"#232323",elevation3:"#252525"},text:{primary:"#f4f4f4",secondary:"rgba(255, 255, 255, 0.6)"}}})),T=function(e){var t=e.children;return l.a.createElement(z.a,{theme:S},l.a.createElement(D.a,null),t)},B=a(57),H=a.n(B),C=Object(o.a)((function(e){return{root:{background:e.palette.background.default,padding:e.spacing(1),overflowX:"auto",fontFamily:"Monospace",scrollbarColor:"auto"}}})),A=function(e){var t=e.rawLines,a=C();return l.a.createElement(f.a,{variant:"outlined",className:a.root},t.map((function(e){return l.a.createElement("pre",null,e)})))},$=a(137),_=a(36),Z=function(e){return{local:new RegExp("".concat(e,"([^").concat(e,"]+)").concat(e)),global:new RegExp("(".concat(e,"[^").concat(e,"]+").concat(e,")"))}},P={conceal:{global:/(!?\[.+?\]\(.+?\))(?!])/g,local:/!?\[(.*\]?.*)\]\((.+?)\)/},rawLink:{global:/((?:(?:[A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)(?:(?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[.!/\\\w]*))?)/,local:/&^/},emoji:Z(":"),bold:Z("\\*\\*"),italic:Z("\\*"),code:Z("`"),strikeThrough:Z("~~")},W=new RegExp(Object.values(P).map((function(e){return e.global.source})).join("|")),G=[];Object.keys(_.lib).forEach((function(e){return G.push({name:e,char:_.lib[e].char})}));var J=Object(o.a)((function(e){return{code:{background:e.palette.background.default,borderRadius:e.spacing(.5),padding:e.spacing(.5),fontFamily:"Monospace"},image:{maxWidth:"100%",maxHeight:"100%"}}})),X=function e(t){var a=t.span,n=J();if(!a)return null;var r=P.conceal.local.exec(a);if(r)return"!"===a[0]?l.a.createElement("img",{src:r[2],alt:r[1],className:n.image}):l.a.createElement($.a,{href:r[2]},l.a.createElement(e,{span:r[1]}));var c=a.match(P.emoji.local);if(c){var i=G.find((function(e){return e.name===c[1]}));return l.a.createElement("span",null,i?i.char:a)}var o=a.match(P.code.local);if(o)return l.a.createElement("span",{className:n.code},o[1]);var u=a.match(P.bold.local);if(u)return l.a.createElement("b",null,u[1]);var m=a.match(P.italic.local);if(m)return l.a.createElement("i",null,m[1]);var s=a.match(P.strikeThrough.local);return s?l.a.createElement("span",{style:{textDecoration:"line-through"}},s[1]):a.match(P.rawLink.global)?l.a.createElement($.a,{href:a},a):l.a.createElement(l.a.Fragment,null,a)},Y=function(e){var t=e.line;return l.a.createElement(l.a.Fragment,null,t.split(W).map((function(e){return l.a.createElement(X,{span:e})})))},q=function(e){return null!==e.match(/^\s*```.*$/)},K=function(e){return null!==e.match(/^ ?[-*] .*$/)},Q=function(e,t){var a=new RegExp(""));return null!==e.match(a)},U=function(e){return null!==e.match(/\\\|$/)},V=function e(t){var a=t.rawLines;if(!a.length)return null;var r,c=a.splice(0,1)[0];if(q(c)){var i=a.findIndex((function(e){return q(e)})),o=a.splice(0,i+1).slice(0,i);r=l.a.createElement(A,{rawLines:o})}else if(K(c)){var u=a.findIndex((function(e){return!K(e)})),m=a.splice(0,u).slice(0,u);m.unshift(c),r=l.a.createElement("ul",null,m.map((function(e){return l.a.createElement("li",null,l.a.createElement(Y,{line:e.slice(2)}))})))}else if(r=function(e){var t=/<([^/\s]*)[^<]*[^/]>/g.exec(e);return t?t[1]:""}(c)){var s=r,d=Q(c,s)?-1:a.findIndex((function(e){return Q(e,s)})),p=a.splice(0,d+1);p.unshift(c),r=l.a.createElement("div",{dangerouslySetInnerHTML:{__html:p.join("\n")}})}else if(null!==(r=function(e){return e.match(/(<[^/\s]*[^<]*\/>)/g)}(c))){var f=r[0],v=c.split(f),g=Object(n.a)(v,2),h=g[0],E=g[1];r=l.a.createElement(l.a.Fragment,null,l.a.createElement(Y,{line:h}),l.a.createElement("div",{dangerouslySetInnerHTML:{__html:f}}),l.a.createElement(Y,{line:E}))}else if(U(c)){var w=a.findIndex((function(e){return!U(e)})),b=a.splice(0,w).map((function(e){return e.slice(0,-2)}));b.unshift(c.slice(0,-2)),b.push(a.splice(0,1)[0]),r=l.a.createElement("p",null,b.map((function(e){return l.a.createElement(Y,{line:e})})))}else r=Q(c,"")?null:l.a.createElement("p",null,l.a.createElement(Y,{line:c}));return l.a.createElement(l.a.Fragment,null,r,l.a.createElement(e,{rawLines:a}))},ee=function(e){if(!e)return 0;for(var t=0;"#"===e[t];)t+=1;return t},te=function(e){var t=e.rawLines,a=e.level,n=void 0===a?0:a,r=t.reduce((function(e,t){return t&&(ee(t)===n&&e.push([]),e.length&&e[e.length-1].push(t)),e}),[]).map((function(e){return l.a.createElement(ae,{rawLines:e,level:n})}));return l.a.createElement(l.a.Fragment,null,r)},ae=function(e){var t=e.rawLines,a=e.level,n=void 0===a?0:a,r=t.findIndex((function(e){return e.match("^#{".concat(n+1,",} .*$"))})),c=t.splice(0,r<0?t.length:r);if(!n)return l.a.createElement(l.a.Fragment,null,l.a.createElement(s.a,null,l.a.createElement(V,{rawLines:c})),l.a.createElement(te,{rawLines:t,level:ee(t[0])}));var i=c.splice(0,1)[0].slice(n).trim(),o=ee(t[0]);return l.a.createElement(N,{sectionName:i,level:n},l.a.createElement(V,{rawLines:c}),l.a.createElement(te,{rawLines:t,level:o}))},ne=ae,re=function(e){var t=e.data,a=e.url,c=Object(r.useState)(t||""),i=Object(n.a)(c,2),o=i[0],u=i[1];a&&H.a.get(a).then((function(e){return u(e.data)})),Object(r.useEffect)((function(){a||u(t||"")}),[t,a]);var m=(null===a||void 0===a?void 0:a.slice(0,a.lastIndexOf("/")))||"",s=o.split(/\r?\n/).map((function(e){return function(e,t){return e.replace(/src="(?!http)(.*)"[\s>]/,(function(e,a){return'src="'.concat(t,"/").concat(a,'?sanitize=true"')})).replace(/\[(.*\]?.*)\]\((?!http)(.+?)\)/,(function(e,a,n){return"[".concat(a,"](").concat(t,"/").concat(n,")")}))}(e,m)}));return l.a.createElement(ne,{rawLines:s})},le=a(58),ce=a.n(le),ie=Object(o.a)((function(e){return{window:{padding:e.spacing(4)},promoButton:{display:"flex",justifyContent:"center",marginTop:e.spacing(4)}}})),oe=l.a.createElement("img",{src:ce.a,width:"32px",height:"37px",alt:"logo"}),ue={home:null,spacevim:null,"material-ui":null,custom:null,"live preview":null},me={home:"https://raw.githubusercontent.com/eug-vs/react-benzin/develop/README.md",spacevim:"https://raw.githubusercontent.com/spacevim/spacevim/master/README.md","material-ui":"https://raw.githubusercontent.com/mui-org/material-ui/master/README.md"},se=function(){var e=Object(r.useState)(""),t=Object(n.a)(e,2),a=t[0],c=t[1],i=Object(r.useRef)(null);return l.a.createElement(l.a.Fragment,null,l.a.createElement(N,{sectionName:"Render custom markdown document",level:2},l.a.createElement("p",null,"This should be a link to a valid markdown file. Response should give the file contents. If you copy README file from GitHub, make sure you provide link to raw view."),l.a.createElement("p",null,l.a.createElement(u.a,{fullWidth:!0,inputRef:i,variant:"outlined",color:"secondary",label:"Markdown url"})),l.a.createElement(m.a,{variant:"contained",color:"secondary",onClick:function(){var e;c((null===(e=i.current)||void 0===e?void 0:e.value)||"")}},"Render!")),l.a.createElement(re,{url:a}))},de=function(e){var t=e.setLivePreviewData,a=Object(r.useRef)(null);return l.a.createElement(l.a.Fragment,null,l.a.createElement(N,{sectionName:"Markdown live preview",level:2},l.a.createElement("p",null,"Start typing and see your text rendered on the left window! We recommend starting with # Header."),l.a.createElement("p",null,l.a.createElement(u.a,{fullWidth:!0,multiline:!0,inputRef:a,variant:"outlined",color:"primary",label:"Markdown",onChange:function(){var e;t((null===(e=a.current)||void 0===e?void 0:e.value)||"")}}))))};i.a.render(l.a.createElement((function(){var e=ie(),t=Object(r.useState)("home"),a=Object(n.a)(t,2),c=a[0],i=a[1],o=Object(r.useState)(""),u=Object(n.a)(o,2),s=u[0],d=u[1],p=me[c],f=null===p||void 0===p?void 0:p.slice(p.lastIndexOf("/")+1),v=["## Markdown\n [Markdown file](".concat(p,") *(...").concat(f,")* that you can see on the left was parsed and rendered by **BENZIN**! :rocket:"),"Switch between tabs on the header to explore other markdown templates. :recycle: ","Currently **only core features** of markdown function.","Templates on the left are being loaded from the [GitHub](https://github.com), though this pane is generated from plaintext. :pen:","## How do I use this feature?","```","import Markdown from 'react-benzin';","const data = '# Header\\nHello, *world!*';","ReactDOM.render(, document.getElementById('root'));","```"].join("\n"),g=l.a.createElement(re,{url:p});return"custom"===c?g=l.a.createElement(se,null):"live preview"===c&&(g=l.a.createElement(re,{data:s||"# Start typing in the right window!"})),l.a.createElement(T,null,l.a.createElement(x,{logo:{icon:oe,title:"BENZIN"},contents:ue,page:c,setPage:i}),l.a.createElement(E,{type:"primary"},l.a.createElement("div",{className:e.window},g)),l.a.createElement(E,{type:"secondary",name:"Feature preview"},l.a.createElement("div",{className:e.window},"live preview"===c?l.a.createElement(de,{setLivePreviewData:d}):l.a.createElement(l.a.Fragment,null,l.a.createElement(re,{data:v}),l.a.createElement("p",{className:e.promoButton},l.a.createElement(m.a,{variant:"contained",color:"primary",size:"large",onClick:function(){i("live preview")}},"Try it yourself!"))))))}),null),document.getElementById("root"))}},[[70,1,2]]]); +//# sourceMappingURL=main.4193a873.chunk.js.map \ No newline at end of file diff --git a/static/js/main.4193a873.chunk.js.map b/static/js/main.4193a873.chunk.js.map new file mode 100644 index 0000000..0264d71 --- /dev/null +++ b/static/js/main.4193a873.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["assets/icon.svg","lib/Window/WindowSurface.tsx","lib/Window/Window.tsx","lib/Header/Header.tsx","lib/ContentSection/ContentSection.tsx","lib/Benzin/Benzin.tsx","lib/Markdown/CodeBlock.tsx","lib/Markdown/SyntacticSpan.tsx","lib/Markdown/Text.tsx","lib/Markdown/Content.tsx","lib/Markdown/Section.tsx","lib/Markdown/Markdown.tsx","index.tsx"],"names":["module","exports","useStyles","makeStyles","theme","surface","position","display","flexDirection","overflowY","scrollbarColor","palette","secondary","dark","light","color","primary","WindowSurface","size","children","classes","Paper","variant","style","className","header","padding","spacing","background","elevation2","Window","type","name","height","bottom","width","left","right","Typography","Divider","root","text","paddingLeft","logo","margin","tab","fontSize","marginRight","marginBottom","Header","contents","page","setPage","AppBar","Toolbar","icon","title","Tabs","onChange","event","newPage","value","Object","keys","map","item","Tab","label","key","content","ContentSection","sectionName","level","adjustedLevel","component","benzinTheme","createMuiTheme","main","orange","purple","default","paper","elevation1","elevation3","Benzin","ThemeProvider","CssBaseline","overflowX","fontFamily","CodeBlock","rawLines","line","enclosureRegex","e","local","RegExp","global","regex","conceal","rawLink","emoji","bold","italic","code","strikeThrough","splitter","values","pair","source","join","emojiList","emojiLib","forEach","push","char","borderRadius","image","maxWidth","maxHeight","SyntacticSpan","span","matchConceal","exec","src","alt","Link","href","matchEmoji","match","find","matchCode","matchBold","matchItalic","matchStrikeThrough","textDecoration","Text","split","denotesCodeBlock","denotesDottedList","denotesClosingHtml","tag","declaresNoLineBreak","Content","length","buffer","splice","closeIndex","findIndex","rawLine","codeBlockLines","slice","dottedListLines","unshift","li","denotesOpenHtml","htmlLines","dangerouslySetInnerHTML","__html","denotesSelfClosingHtml","before","after","lineBreakLines","lineBreakLine","getHeaderLevel","ChildrenSections","reduce","sections","sectionLines","Section","deeperLevelIndex","rawContent","trim","deeperLevel","Markdown","data","url","useState","markdown","setMarkdown","axios","get","then","response","useEffect","baseUrl","lastIndexOf","lines","replace","resolveUrls","window","promoButton","justifyContent","marginTop","Icon","headerContents","home","spacevim","custom","pageMap","CustomPage","setUrl","inputEl","useRef","TextField","fullWidth","inputRef","onClick","current","LivePreviewPage","setLivePreviewData","multiline","ReactDOM","render","livePreviewData","fileName","info","primaryWindowContent","document","getElementById"],"mappings":"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","file":"static/js/main.4193a873.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/icon.8908a388.svg\";","import React from 'react';\n\nimport { Paper, makeStyles } from '@material-ui/core';\n\nimport { SurfaceSize, SurfacePosition } from './types';\n\n\ninterface PropTypes {\n size: SurfaceSize;\n position: SurfacePosition;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n surface: {\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n scrollbarColor: `${theme.palette.secondary.dark} ${theme.palette.secondary.light}`,\n\n '& a.MuiTypography-root': {\n color: theme.palette.primary.light,\n },\n },\n}));\n\n\nconst WindowSurface: React.FC = ({ size, position, children }) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\n\nexport default WindowSurface;\n","import React from 'react';\n\nimport { Typography, Divider, makeStyles } from '@material-ui/core';\n\nimport WindowSurface from './WindowSurface';\nimport { SurfaceSize, SurfacePosition } from './types';\n\n\ninterface PropTypes {\n type: 'primary' | 'secondary' | 'mono';\n name?: string;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n header: {\n padding: theme.spacing(1, 0, 1, 2),\n background: theme.palette.background.elevation2,\n },\n}));\n\n\nconst Window: React.FC = ({ type, name, children }) => {\n const classes = useStyles();\n\n const size: SurfaceSize = {\n height: '85vh',\n };\n\n const position: SurfacePosition = {\n bottom: '3vh',\n };\n\n if (type === 'primary') {\n size.width = '63vw';\n position.left = '2vw';\n } else if (type === 'secondary') {\n size.width = '31vw';\n position.right = '2vw';\n } else if (type === 'mono') {\n position.left = '2vw';\n position.right = '2vw';\n }\n\n return (\n \n {name\n && (\n
\n {name}\n \n
\n )}\n {children}\n \n );\n};\n\nexport default Window;\n","import React from 'react';\n\nimport {\n AppBar,\n Tabs,\n Tab,\n Typography,\n Toolbar,\n} from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\n\ninterface PropTypes {\n logo: {\n icon: React.ReactNode;\n title: string;\n };\n contents: {\n [key: string]: React.ReactNode | null;\n };\n page: string;\n setPage: (newPage: string) => void;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: theme.palette.background.elevation2,\n color: theme.palette.text.primary,\n paddingLeft: theme.spacing(3),\n },\n logo: {\n margin: theme.spacing(0, 3, 0, 1),\n },\n tab: {\n '& .MuiTab-wrapper': {\n padding: theme.spacing(2),\n flexDirection: 'row',\n fontSize: '0.8125rem',\n '& svg': {\n marginRight: theme.spacing(1),\n marginBottom: '0 !important',\n },\n },\n },\n}));\n\n\nconst Header: React.FC = ({\n logo, contents, page, setPage,\n}) => {\n const classes = useStyles();\n\n const handleChange = (event: React.ChangeEvent<{}>, newPage: string): void => {\n setPage(newPage);\n };\n\n return (\n \n \n {logo.icon}\n \n {logo.title}\n \n \n {contents && Object.keys(contents).map((item: string) => (\n \n ))}\n \n \n \n );\n};\n\nexport default Header;\n","import React from 'react';\n\nimport {\n Typography,\n Divider,\n makeStyles,\n} from '@material-ui/core';\n\n\ninterface PropTypes {\n sectionName: string;\n level?: number;\n}\n\nconst useStyles = makeStyles(theme => ({\n content: {\n padding: theme.spacing(2, 2, 1, 3),\n marginBottom: theme.spacing(1),\n\n '& .MuiButton-root': {\n margin: theme.spacing(1, 2, 2, 0),\n },\n },\n}));\n\nconst ContentSection: React.FC = ({ sectionName, children, level = 0 }) => {\n const classes = useStyles();\n\n let adjustedLevel = level + 2; // Make everything smaller\n if (adjustedLevel > 6) adjustedLevel = 6;\n\n type Variant = 'h3' | 'h4' | 'h5' | 'h6';\n const variant: Variant = `h${adjustedLevel}` as Variant;\n\n return (\n <>\n {sectionName}\n \n \n {children}\n \n \n );\n};\n\n\nexport default ContentSection;\n","import React from 'react';\nimport orange from '@material-ui/core/colors/orange';\nimport purple from '@material-ui/core/colors/purple';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';\nimport { CssBaseline } from '@material-ui/core';\nimport 'typeface-roboto';\n\n\ndeclare module '@material-ui/core/styles/createPalette' {\n interface TypeBackground {\n elevation1: string;\n elevation2: string;\n elevation3: string;\n }\n}\n\n\nconst benzinTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: orange[400],\n },\n secondary: {\n main: purple[500],\n },\n background: {\n default: '#121212',\n paper: '#1e1e1e',\n elevation1: '#1e1e1e',\n elevation2: '#232323',\n elevation3: '#252525',\n },\n text: {\n primary: '#f4f4f4',\n secondary: 'rgba(255, 255, 255, 0.6)',\n },\n },\n});\n\n\nconst Benzin: React.FC = ({ children }) => (\n \n \n {children}\n \n);\n\n\nexport default Benzin;\n\n","import React from 'react';\nimport { Paper } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ParserPropTypes } from './types';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: theme.palette.background.default,\n padding: theme.spacing(1),\n overflowX: 'auto',\n fontFamily: 'Monospace',\n scrollbarColor: 'auto',\n },\n}));\n\nconst CodeBlock: React.FC = ({ rawLines }) => {\n const classes = useStyles();\n return (\n \n {rawLines.map(line =>
{line}
)}\n
\n );\n};\n\nexport default CodeBlock;\n\n","import React from 'react';\nimport { Link, makeStyles } from '@material-ui/core';\n\nimport { lib as emojiLib } from 'emojilib';\n\ninterface PropTypes {\n span: string;\n}\n\ninterface RegexPair {\n global: RegExp;\n local: RegExp;\n}\n\ninterface Emoji {\n name: string;\n char: string;\n}\n\nconst enclosureRegex = (e: string): RegexPair => ({\n local: new RegExp(`${e}([^${e}]+)${e}`),\n global: new RegExp(`(${e}[^${e}]+${e})`),\n});\n\nconst regex: Record = {\n conceal: {\n global: /(!?\\[.+?\\]\\(.+?\\))(?!])/g,\n local: /!?\\[(.*\\]?.*)\\]\\((.+?)\\)/,\n },\n rawLink: {\n // eslint-disable-next-line max-len\n global: /((?:(?:[A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www\\.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)(?:(?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[.!/\\\\\\w]*))?)/,\n local: /&^/,\n },\n emoji: enclosureRegex(':'),\n bold: enclosureRegex('\\\\*\\\\*'),\n italic: enclosureRegex('\\\\*'),\n code: enclosureRegex('`'),\n strikeThrough: enclosureRegex('~~'),\n};\n\nconst splitter = new RegExp(Object.values(regex).map(pair => pair.global.source).join('|'));\n\nconst emojiList: Emoji[] = [];\nObject.keys(emojiLib).forEach(name => emojiList.push({ name, char: emojiLib[name].char }));\n\nconst useStyles = makeStyles(theme => ({\n code: {\n background: theme.palette.background.default,\n borderRadius: theme.spacing(0.5),\n padding: theme.spacing(0.5),\n fontFamily: 'Monospace',\n },\n image: {\n maxWidth: '100%',\n maxHeight: '100%',\n },\n}));\n\nconst SyntacticSpan: React.FC = ({ span }) => {\n const classes = useStyles();\n if (!span) return null;\n\n const matchConceal = regex.conceal.local.exec(span);\n if (matchConceal) {\n if (span[0] === '!') return {matchConceal[1]};\n return ;\n }\n\n const matchEmoji = span.match(regex.emoji.local);\n if (matchEmoji) {\n const emoji = emojiList.find(e => e.name === matchEmoji[1]);\n return {emoji ? emoji.char : span};\n }\n\n const matchCode = span.match(regex.code.local);\n if (matchCode) return {matchCode[1]};\n\n const matchBold = span.match(regex.bold.local);\n if (matchBold) return {matchBold[1]};\n\n const matchItalic = span.match(regex.italic.local);\n if (matchItalic) return {matchItalic[1]};\n\n const matchStrikeThrough = span.match(regex.strikeThrough.local);\n if (matchStrikeThrough) return {matchStrikeThrough[1]};\n\n if (span.match(regex.rawLink.global)) return {span};\n\n return <>{span};\n};\n\n\nexport { splitter };\nexport default SyntacticSpan;\n\n","import React from 'react';\nimport SyntacticSpan, { splitter } from './SyntacticSpan';\n\ninterface PropTypes {\n line: string;\n}\n\nconst Text: React.FC = ({ line }) => {\n return <>{line.split(splitter).map(span => )};\n};\n\nexport default Text;\n\n","import React from 'react';\n\nimport CodeBlock from './CodeBlock';\nimport Text from './Text';\nimport { ParserPropTypes } from './types';\n\n\nconst denotesCodeBlock = (line: string): boolean => {\n return line.match(/^\\s*```.*$/) !== null;\n};\n\nconst denotesDottedList = (line: string): boolean => {\n return line.match(/^ ?[-*] .*$/) !== null;\n};\n\nconst denotesOpenHtml = (line: string): string => {\n const regex = /<([^/\\s]*)[^<]*[^/]>/g;\n const match = regex.exec(line);\n return match ? match[1] : '';\n};\n\nconst denotesClosingHtml = (line: string, tag: string): boolean => {\n const regex = new RegExp(``);\n return line.match(regex) !== null;\n};\n\nconst denotesSelfClosingHtml = (line: string): string[] | null => {\n const regex = /(<[^/\\s]*[^<]*\\/>)/g;\n return line.match(regex);\n};\n\nconst declaresNoLineBreak = (line: string): boolean => {\n return line.match(/\\\\\\|$/) !== null;\n};\n\nconst Content: React.FC = ({ rawLines }) => {\n if (!rawLines.length) return null;\n\n const line = rawLines.splice(0, 1)[0];\n\n let buffer;\n if (denotesCodeBlock(line)) {\n const closeIndex = rawLines.findIndex(rawLine => denotesCodeBlock(rawLine));\n const codeBlockLines = rawLines.splice(0, closeIndex + 1).slice(0, closeIndex);\n buffer = ;\n } else if (denotesDottedList(line)) {\n const closeIndex = rawLines.findIndex(rawLine => !denotesDottedList(rawLine));\n const dottedListLines = rawLines.splice(0, closeIndex).slice(0, closeIndex);\n dottedListLines.unshift(line);\n buffer =
    {dottedListLines.map(li =>
  • )}
;\n } else if ((buffer = denotesOpenHtml(line))) {\n const tag = buffer;\n const closeIndex = denotesClosingHtml(line, tag) ? -1 : rawLines.findIndex(\n rawLine => denotesClosingHtml(rawLine, tag),\n );\n const htmlLines = rawLines.splice(0, closeIndex + 1);\n htmlLines.unshift(line);\n buffer =
;\n } else if ((buffer = denotesSelfClosingHtml(line)) !== null) {\n const match = buffer[0];\n const [before, after] = line.split(match);\n buffer = (\n <>\n \n
\n \n \n );\n } else if (declaresNoLineBreak(line)) {\n const closeIndex = rawLines.findIndex(rawLine => !declaresNoLineBreak(rawLine));\n const lineBreakLines = rawLines.splice(0, closeIndex).map(rawLine => rawLine.slice(0, -2));\n lineBreakLines.unshift(line.slice(0, -2));\n lineBreakLines.push(rawLines.splice(0, 1)[0]);\n buffer =

{lineBreakLines.map(lineBreakLine => )}

;\n } else if (denotesClosingHtml(line, '')) {\n buffer = null;\n } else {\n buffer =

;\n }\n\n return (\n <>\n { buffer }\n \n \n );\n};\n\nexport default Content;\n\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport ContentSection from '../ContentSection/ContentSection';\nimport Content from './Content';\nimport { ParserPropTypes } from './types';\n\ninterface PropTypes extends ParserPropTypes {\n level?: number;\n}\n\nconst getHeaderLevel = (header: string): number => {\n if (!header) return 0;\n let level = 0;\n while (header[level] === '#') level += 1;\n return level;\n};\n\nconst ChildrenSections: React.FC = ({ rawLines, level = 0 }) => {\n const childrenSectionLines = rawLines.reduce((sections: string[][], line: string) => {\n if (line) {\n if (getHeaderLevel(line) === level) sections.push([]);\n if (sections.length) sections[sections.length - 1].push(line);\n }\n return sections;\n }, []);\n const children = childrenSectionLines.map(sectionLines =>
);\n return <>{children};\n};\n\nconst Section: React.FC = ({ rawLines, level = 0 }) => {\n const deeperLevelIndex = rawLines.findIndex(line => line.match(`^#{${level + 1},} .*$`));\n const rawContent = rawLines.splice(0, (deeperLevelIndex < 0) ? rawLines.length : deeperLevelIndex);\n\n if (!level) {\n return (\n <>\n \n \n \n );\n }\n\n const sectionName = rawContent.splice(0, 1)[0].slice(level).trim();\n const deeperLevel = getHeaderLevel(rawLines[0]);\n return (\n \n \n \n \n );\n};\n\nexport default Section;\n\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\n\nimport Section from './Section';\n\ninterface PropTypes {\n data?: string;\n url?: string;\n}\n\nconst resolveUrls = (line: string, baseUrl: string): string => line.replace(\n /src=\"(?!http)(.*)\"[\\s>]/,\n (match, url) => `src=\"${baseUrl}/${url}?sanitize=true\"`,\n).replace(\n /\\[(.*\\]?.*)\\]\\((?!http)(.+?)\\)/,\n (match, text, url) => `[${text}](${baseUrl}/${url})`,\n);\n\nconst Markdown: React.FC = ({ data, url }) => {\n const [markdown, setMarkdown] = useState(data || '');\n\n if (url) axios.get(url).then(response => setMarkdown(response.data));\n\n useEffect(() => {\n if (!url) setMarkdown(data || '');\n }, [data, url]);\n\n const baseUrl = url?.slice(0, url.lastIndexOf('/')) || '';\n const lines = markdown.split(/\\r?\\n/).map(line => resolveUrls(line, baseUrl));\n return
;\n};\n\n\nexport default Markdown;\n\n","import React, { useState, useRef } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { makeStyles, TextField, Button } from '@material-ui/core';\n\nimport {\n Benzin,\n Header,\n Window,\n Markdown,\n ContentSection,\n} from './lib';\n\nimport icon from './assets/icon.svg';\n\ninterface RenderPropTypes {\n index: number;\n style: React.CSSProperties;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n window: {\n padding: theme.spacing(4),\n },\n promoButton: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: theme.spacing(4),\n },\n}));\n\n\nconst Icon = \"logo\";\n\nconst headerContents = {\n home: null,\n spacevim: null,\n 'material-ui': null,\n custom: null,\n 'live preview': null,\n};\n\nconst pageMap: Record = {\n home: 'https://raw.githubusercontent.com/eug-vs/react-benzin/develop/README.md',\n spacevim: 'https://raw.githubusercontent.com/spacevim/spacevim/master/README.md',\n 'material-ui': 'https://raw.githubusercontent.com/mui-org/material-ui/master/README.md',\n};\n\n\nconst CustomPage: React.FC = () => {\n const [url, setUrl] = useState('');\n const inputEl = useRef(null);\n\n const handleParseUrl = (): void => {\n setUrl(inputEl.current?.value || '');\n };\n\n return (\n <>\n \n

\n This should be a link to a valid markdown file. Response should give the file contents.\n If you copy README file from GitHub, make sure you provide link to raw view.\n

\n

\n \n

\n \n
\n \n \n );\n};\n\ninterface LivePropTypes {\n setLivePreviewData: (livePreviewData: string) => void;\n}\n\nconst LivePreviewPage: React.FC = ({ setLivePreviewData }) => {\n const inputEl = useRef(null);\n\n const handleRender = (): void => {\n setLivePreviewData(inputEl.current?.value || '');\n };\n\n return (\n <>\n \n

\n Start typing and see your text rendered on the left window!\n We recommend starting with # Header.\n

\n

\n \n

\n
\n \n );\n};\n\n\nconst App: React.FC = () => {\n const classes = useStyles();\n const [page, setPage] = useState('home');\n const [livePreviewData, setLivePreviewData] = useState('');\n\n const handleGoLivePreview = (): void => {\n setPage('live preview');\n };\n\n const url = pageMap[page];\n const fileName = url?.slice(url.lastIndexOf('/') + 1);\n const info = [\n /* eslint-disable max-len */\n `## Markdown\\n [Markdown file](${url}) *(...${fileName})* that you can see on the left was parsed and rendered by **BENZIN**! :rocket:`,\n 'Switch between tabs on the header to explore other markdown templates. :recycle: ',\n 'Currently **only core features** of markdown function.',\n 'Templates on the left are being loaded from the [GitHub](https://github.com), though this pane is generated from plaintext. :pen:',\n '## How do I use this feature?',\n '```',\n 'import Markdown from \\'react-benzin\\';',\n 'const data = \\'# Header\\\\nHello, *world!*\\';',\n 'ReactDOM.render(, document.getElementById(\\'root\\'));',\n '```',\n /* eslint-enable max-len */\n ].join('\\n');\n\n let primaryWindowContent = ;\n if (page === 'custom') primaryWindowContent = ;\n else if (page === 'live preview') {\n primaryWindowContent = ;\n }\n\n return (\n \n \n \n
{primaryWindowContent}
\n
\n \n
\n {\n (page === 'live preview')\n ? \n : (\n <>\n \n

\n \n Try it yourself!\n \n

\n \n )\n }\n
\n
\n
\n );\n};\n\n\nReactDOM.render(, document.getElementById('root'));\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.76c0462e.chunk.js b/static/js/main.76c0462e.chunk.js deleted file mode 100644 index 1ba7780..0000000 --- a/static/js/main.76c0462e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonpreact-benzin"]=this["webpackJsonpreact-benzin"]||[]).push([[0],{58:function(e,t,a){e.exports=a.p+"static/media/icon.8908a388.svg"},70:function(e,t,a){e.exports=a(99)},99:function(e,t,a){"use strict";a.r(t);var n=a(23),r=a(0),l=a.n(r),c=a(9),i=a.n(c),o=a(51),u=a(138),m=a(136),s=a(101),d=a(130),p=a(63),f=a(100),v=Object(o.a)((function(e){return{surface:{position:"absolute",display:"flex",flexDirection:"column",overflowY:"auto",scrollbarColor:"".concat(e.palette.secondary.dark," ").concat(e.palette.secondary.light),"& a.MuiTypography-root":{color:e.palette.primary.light}}}})),g=function(e){var t=e.size,a=e.position,n=e.children,r=v();return l.a.createElement(f.a,{variant:"outlined",style:Object(p.a)({},t,{},a),className:r.surface},n)},h=Object(o.a)((function(e){return{header:{padding:e.spacing(1,0,1,2),background:e.palette.background.elevation2}}})),E=function(e){var t=e.type,a=e.name,n=e.children,r=h(),c={height:"85vh"},i={bottom:"3vh"};return"primary"===t?(c.width="63vw",i.left="2vw"):"secondary"===t?(c.width="31vw",i.right="2vw"):"mono"===t&&(i.left="2vw",i.right="2vw"),l.a.createElement(g,{size:c,position:i},a&&l.a.createElement("div",null,l.a.createElement(s.a,{variant:"h5",className:r.header},a),l.a.createElement(d.a,null)),n)},w=a(131),b=a(132),y=a(139),k=a(133),j=Object(o.a)((function(e){return{root:{background:e.palette.background.elevation2,color:e.palette.text.primary,paddingLeft:e.spacing(3)},logo:{margin:e.spacing(0,3,0,1)},tab:{"& .MuiTab-wrapper":{padding:e.spacing(2),flexDirection:"row",fontSize:"0.8125rem","& svg":{marginRight:e.spacing(1),marginBottom:"0 !important"}}}}})),x=function(e){var t=e.logo,a=e.contents,n=e.page,r=e.setPage,c=j();return l.a.createElement(w.a,{position:"sticky",className:c.root},l.a.createElement(b.a,null,t.icon,l.a.createElement(s.a,{variant:"h5",className:c.logo,color:"primary"},t.title),l.a.createElement(y.a,{onChange:function(e,t){r(t)},value:n},a&&Object.keys(a).map((function(e){return l.a.createElement(k.a,{label:e,icon:a[e],value:e,className:c.tab,key:e})})))))},O=Object(o.a)((function(e){return{content:{padding:e.spacing(2,2,1,3),marginBottom:e.spacing(1),"& .MuiButton-root":{margin:e.spacing(1,2,2,0)}}}})),N=function(e){var t=e.sectionName,a=e.children,n=e.level,r=void 0===n?0:n,c=O();(r+=2)>6&&(r=6);var i="h"+r;return l.a.createElement(l.a.Fragment,null,l.a.createElement(s.a,{variant:i},t),l.a.createElement(d.a,{variant:"middle"}),l.a.createElement(s.a,{component:"div",className:c.content},a))},L=(a(62),a(54),a(55)),M=a.n(L),R=a(56),I=a.n(R),F=a(61),z=a(134),D=a(135),S=(a(79),Object(F.a)({palette:{type:"dark",primary:{main:M.a[400]},secondary:{main:I.a[500]},background:{default:"#121212",paper:"#1e1e1e",elevation1:"#1e1e1e",elevation2:"#232323",elevation3:"#252525"},text:{primary:"#f4f4f4",secondary:"rgba(255, 255, 255, 0.6)"}}})),T=function(e){var t=e.children;return l.a.createElement(z.a,{theme:S},l.a.createElement(D.a,null),t)},B=a(57),H=a.n(B),C=Object(o.a)((function(e){return{root:{background:e.palette.background.default,padding:e.spacing(1),overflowX:"auto",fontFamily:"Monospace",scrollbarColor:"auto"}}})),A=function(e){var t=e.rawLines,a=C();return l.a.createElement(f.a,{variant:"outlined",className:a.root},t.map((function(e){return l.a.createElement("pre",null,e)})))},$=a(137),_=a(36),Z=function(e){return{local:new RegExp("".concat(e,"([^").concat(e,"]+)").concat(e)),global:new RegExp("(".concat(e,"[^").concat(e,"]+").concat(e,")"))}},P={conceal:{global:/(!?\[.+?\]\(.+?\))(?!])/g,local:/!?\[(.*\]?.*)\]\((.+?)\)/},rawLink:{global:/((?:(?:[A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)(?:(?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[.!/\\\w]*))?)/,local:/&^/},emoji:Z(":"),bold:Z("\\*\\*"),italic:Z("\\*"),code:Z("`"),strikeThrough:Z("~~")},W=new RegExp(Object.values(P).map((function(e){return e.global.source})).join("|")),G=[];Object.keys(_.lib).forEach((function(e){return G.push({name:e,char:_.lib[e].char})}));var J=Object(o.a)((function(e){return{code:{background:e.palette.background.default,borderRadius:e.spacing(.5),padding:e.spacing(.5),fontFamily:"Monospace"},image:{maxWidth:"100%",maxHeight:"100%"}}})),X=function e(t){var a=t.span,n=J();if(!a)return null;var r=P.conceal.local.exec(a);if(r)return"!"===a[0]?l.a.createElement("img",{src:r[2],alt:r[1],className:n.image}):l.a.createElement($.a,{href:r[2]},l.a.createElement(e,{span:r[1]}));var c=a.match(P.emoji.local);if(c){var i=G.find((function(e){return e.name===c[1]}));return l.a.createElement("span",null,i?i.char:a)}var o=a.match(P.code.local);if(o)return l.a.createElement("span",{className:n.code},o[1]);var u=a.match(P.bold.local);if(u)return l.a.createElement("b",null,u[1]);var m=a.match(P.italic.local);if(m)return l.a.createElement("i",null,m[1]);var s=a.match(P.strikeThrough.local);return s?l.a.createElement("span",{style:{textDecoration:"line-through"}},s[1]):a.match(P.rawLink.global)?l.a.createElement($.a,{href:a},a):l.a.createElement(l.a.Fragment,null,a)},Y=function(e){var t=e.line;return l.a.createElement(l.a.Fragment,null,t.split(W).map((function(e){return l.a.createElement(X,{span:e})})))},q=function(e){return null!==e.match(/^\s*```.*$/)},K=function(e){return null!==e.match(/^ ?[-*] .*$/)},Q=function(e,t){var a=new RegExp(""));return null!==e.match(a)},U=function(e){return null!==e.match(/\\\|$/)},V=function e(t){var a=t.rawLines;if(!a.length)return null;var r,c=a.splice(0,1)[0];if(q(c)){var i=a.findIndex((function(e){return q(e)})),o=a.splice(0,i+1).slice(0,i);r=l.a.createElement(A,{rawLines:o})}else if(K(c)){var u=a.findIndex((function(e){return!K(e)})),m=a.splice(0,u).slice(0,u);m.unshift(c),r=l.a.createElement("ul",null,m.map((function(e){return l.a.createElement("li",null,l.a.createElement(Y,{line:e.slice(2)}))})))}else if(r=function(e){var t=/<([^/\s]*)[^<]*[^/]>/g.exec(e);return t?t[1]:""}(c)){var s=r,d=Q(c,s)?-1:a.findIndex((function(e){return Q(e,s)})),p=a.splice(0,d+1);p.unshift(c),r=l.a.createElement("div",{dangerouslySetInnerHTML:{__html:p.join("\n")}})}else if(null!==(r=function(e){return e.match(/(<[^/\s]*[^<]*\/>)/g)}(c))){var f=r[0],v=c.split(f),g=Object(n.a)(v,2),h=g[0],E=g[1];r=l.a.createElement(l.a.Fragment,null,l.a.createElement(Y,{line:h}),l.a.createElement("div",{dangerouslySetInnerHTML:{__html:f}}),l.a.createElement(Y,{line:E}))}else if(U(c)){var w=a.findIndex((function(e){return!U(e)})),b=a.splice(0,w).map((function(e){return e.slice(0,-2)}));b.unshift(c.slice(0,-2)),b.push(a.splice(0,1)[0]),r=l.a.createElement("p",null,b.map((function(e){return l.a.createElement(Y,{line:e})})))}else r=Q(c,"")?null:l.a.createElement("p",null,l.a.createElement(Y,{line:c}));return l.a.createElement(l.a.Fragment,null,r,l.a.createElement(e,{rawLines:a}))},ee=function(e){if(!e)return 0;for(var t=0;"#"===e[t];)t++;return t},te=function(e){var t=e.rawLines,a=e.level,n=void 0===a?0:a,r=t.reduce((function(e,t){return t&&(ee(t)===n&&e.push([]),e.length&&e[e.length-1].push(t)),e}),[]).map((function(e){return l.a.createElement(ae,{rawLines:e,level:n})}));return l.a.createElement(l.a.Fragment,null," ",r," ")},ae=function(e){var t=e.rawLines,a=e.level,n=void 0===a?0:a,r=t.findIndex((function(e){return e.match("^#{".concat(n+1,",} .*$"))})),c=t.splice(0,r<0?t.length:r);if(!n)return l.a.createElement(l.a.Fragment,null,l.a.createElement(s.a,null," ",l.a.createElement(V,{rawLines:c})," "),l.a.createElement(te,{rawLines:t,level:ee(t[0])}));var i=c.splice(0,1)[0].slice(n).trim(),o=ee(t[0]);return l.a.createElement(N,{sectionName:i,level:n},l.a.createElement(V,{rawLines:c}),l.a.createElement(te,{rawLines:t,level:o}))},ne=ae,re=function(e){var t=e.data,a=e.url,c=Object(r.useState)(t||""),i=Object(n.a)(c,2),o=i[0],u=i[1];a&&H.a.get(a).then((function(e){return u(e.data)})),Object(r.useEffect)((function(){a||u(t||"")}),[t,a]);var m=(null===a||void 0===a?void 0:a.slice(0,a.lastIndexOf("/")))||"",s=o.split(/\r?\n/).map((function(e){return function(e,t){return e.replace(/src="(?!http)(.*)"[\s>]/,(function(e,a,n,r){return'src="'.concat(t,"/").concat(a,'?sanitize=true"')})).replace(/\[(.*\]?.*)\]\((?!http)(.+?)\)/,(function(e,a,n,r,l){return"[".concat(a,"](").concat(t,"/").concat(n,")")}))}(e,m)}));return l.a.createElement(ne,{rawLines:s})},le=a(58),ce=a.n(le),ie=Object(o.a)((function(e){return{window:{padding:e.spacing(4)},promoButton:{display:"flex",justifyContent:"center",marginTop:e.spacing(4)}}})),oe=l.a.createElement("img",{src:ce.a,width:"32px",height:"37px",alt:"logo"}),ue={home:null,spacevim:null,"material-ui":null,custom:null,"live preview":null},me={home:"https://raw.githubusercontent.com/eug-vs/react-benzin/develop/README.md",spacevim:"https://raw.githubusercontent.com/spacevim/spacevim/master/README.md","material-ui":"https://raw.githubusercontent.com/mui-org/material-ui/master/README.md"},se=function(){var e=Object(r.useState)(""),t=Object(n.a)(e,2),a=t[0],c=t[1],i=Object(r.useRef)(null);return l.a.createElement(l.a.Fragment,null,l.a.createElement(N,{sectionName:"Render custom markdown document",level:2},l.a.createElement("p",null,"This should be a link to a valid markdown file. Response should give the file contents. If you copy README file from GitHub, make sure you provide link to raw view."),l.a.createElement("p",null,l.a.createElement(u.a,{fullWidth:!0,inputRef:i,variant:"outlined",color:"secondary",label:"Markdown url"})),l.a.createElement(m.a,{variant:"contained",color:"secondary",onClick:function(){var e;c((null===(e=i.current)||void 0===e?void 0:e.value)||"")}},"Render!")),l.a.createElement(re,{url:a}))},de=function(e){var t=e.setLivePreviewData,a=Object(r.useRef)(null);return l.a.createElement(l.a.Fragment,null,l.a.createElement(N,{sectionName:"Markdown live preview",level:2},l.a.createElement("p",null,"Start typing and see your text rendered on the left window! We recommend starting with # Header."),l.a.createElement("p",null,l.a.createElement(u.a,{fullWidth:!0,multiline:!0,inputRef:a,variant:"outlined",color:"primary",label:"Markdown",onChange:function(){var e;t((null===(e=a.current)||void 0===e?void 0:e.value)||"")}}))))};i.a.render(l.a.createElement((function(){var e=ie(),t=Object(r.useState)("home"),a=Object(n.a)(t,2),c=a[0],i=a[1],o=Object(r.useState)(""),u=Object(n.a)(o,2),s=u[0],d=u[1],p=me[c],f=null===p||void 0===p?void 0:p.slice(p.lastIndexOf("/")+1),v=["## Markdown\n [Markdown file](".concat(p,") *(...").concat(f,")* that you can see on the left was parsed and rendered by **BENZIN**! :rocket:"),"Switch between tabs on the header to explore other markdown templates. :recycle: ","Currently **only core features** of markdown function.","Templates on the left are being loaded from the [GitHub](https://github.com), though this pane is generated from plaintext. :pen:","## How do I use this feature?","```","import Markdown from 'react-benzin';","const data = '# Header\\nHello, *world!*';","ReactDOM.render(, document.getElementById('root'));","```"].join("\n");return l.a.createElement(T,null,l.a.createElement(x,{logo:{icon:oe,title:"BENZIN"},contents:ue,page:c,setPage:i}),l.a.createElement(E,{type:"primary"},l.a.createElement("div",{className:e.window},"custom"===c?l.a.createElement(se,null):"live preview"===c?l.a.createElement(re,{data:s||"# Start typing in the right window!"}):l.a.createElement(re,{url:p}))),l.a.createElement(E,{type:"secondary",name:"Feature preview"},l.a.createElement("div",{className:e.window},"live preview"===c?l.a.createElement(de,{setLivePreviewData:d}):l.a.createElement(l.a.Fragment,null,l.a.createElement(re,{data:v}),l.a.createElement("p",{className:e.promoButton},l.a.createElement(m.a,{variant:"contained",color:"primary",size:"large",onClick:function(){i("live preview")}},"Try it yourself!"))))))}),null),document.getElementById("root"))}},[[70,1,2]]]); -//# sourceMappingURL=main.76c0462e.chunk.js.map \ No newline at end of file diff --git a/static/js/main.76c0462e.chunk.js.map b/static/js/main.76c0462e.chunk.js.map deleted file mode 100644 index 613580a..0000000 --- a/static/js/main.76c0462e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["assets/icon.svg","lib/Window/WindowSurface.tsx","lib/Window/Window.tsx","lib/Header/Header.tsx","lib/ContentSection/ContentSection.tsx","lib/Benzin/Benzin.tsx","lib/Markdown/CodeBlock.tsx","lib/Markdown/SyntacticSpan.tsx","lib/Markdown/Text.tsx","lib/Markdown/Content.tsx","lib/Markdown/Section.tsx","lib/Markdown/Markdown.tsx","index.tsx"],"names":["module","exports","useStyles","makeStyles","theme","surface","position","display","flexDirection","overflowY","scrollbarColor","palette","secondary","dark","light","color","primary","WindowSurface","size","children","classes","Paper","variant","style","className","header","padding","spacing","background","elevation2","Window","type","name","height","bottom","width","left","right","Typography","Divider","root","text","paddingLeft","logo","margin","tab","fontSize","marginRight","marginBottom","Header","contents","page","setPage","AppBar","Toolbar","icon","title","Tabs","onChange","event","newPage","value","Object","keys","map","item","Tab","label","key","content","ContentSection","sectionName","level","component","benzinTheme","createMuiTheme","main","orange","purple","default","paper","elevation1","elevation3","Benzin","ThemeProvider","CssBaseline","overflowX","fontFamily","CodeBlock","rawLines","line","enclosureRegex","e","local","RegExp","global","regex","conceal","rawLink","emoji","bold","italic","code","strikeThrough","splitter","values","pair","source","join","emojiList","emojiLib","forEach","push","char","borderRadius","image","maxWidth","maxHeight","SyntacticSpan","span","matchConceal","exec","src","alt","Link","href","matchEmoji","match","find","matchCode","matchBold","matchItalic","matchStrikeThrough","textDecoration","Text","split","denotesCodeBlock","denotesDottedList","denotesClosingHtml","tag","declaresNoLineBreak","Content","length","buffer","splice","closeIndex","findIndex","codeBlockLines","slice","dottedListLines","unshift","li","denotesOpenHtml","htmlLines","dangerouslySetInnerHTML","__html","denotesSelfClosingHtml","before","after","lineBreakLines","lineBreakLine","getHeaderLevel","ChildrenSections","reduce","sections","sectionLines","Section","deeperLevelIndex","rawContent","trim","deeperLevel","Markdown","data","url","useState","markdown","setMarkdown","axios","get","then","response","useEffect","baseUrl","lastIndexOf","lines","replace","offset","string","resolveUrls","window","promoButton","justifyContent","marginTop","Icon","headerContents","home","pageMap","CustomPage","setUrl","inputEl","useRef","TextField","fullWidth","inputRef","onClick","current","LivePreviewPage","setLivePreviewData","multiline","ReactDOM","render","livePreviewData","fileName","info","document","getElementById"],"mappings":"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","file":"static/js/main.76c0462e.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/icon.8908a388.svg\";","import React from 'react';\n\nimport { Paper, makeStyles } from '@material-ui/core';\n\nimport { SurfaceSize, SurfacePosition } from './types';\n\n\ninterface PropTypes {\n size: SurfaceSize;\n position: SurfacePosition;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n surface: {\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n overflowY: 'auto',\n scrollbarColor: `${theme.palette.secondary.dark} ${theme.palette.secondary.light}`,\n\n '& a.MuiTypography-root': {\n color: theme.palette.primary.light,\n },\n }\n}));\n\n\nconst WindowSurface: React.FC = ({ size, position, children }) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n )\n};\n\n\nexport default WindowSurface;\n","import React from 'react';\n\nimport { Typography, Divider, makeStyles } from '@material-ui/core';\n\nimport WindowSurface from './WindowSurface';\nimport { SurfaceSize, SurfacePosition } from './types';\n\n\ninterface PropTypes {\n type: 'primary' | 'secondary' | 'mono';\n name?: string;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n header: {\n padding: theme.spacing(1, 0, 1, 2),\n background: theme.palette.background.elevation2,\n },\n}));\n\n\nconst Window: React.FC = ({ type, name, children }) => {\n const classes = useStyles();\n\n const size: SurfaceSize = {\n height: '85vh',\n };\n\n const position: SurfacePosition = {\n bottom: '3vh',\n };\n\n if (type === 'primary') {\n size.width = '63vw';\n position.left = '2vw';\n } else if (type === 'secondary') {\n size.width = '31vw';\n position.right = '2vw';\n } else if (type === 'mono') {\n position.left = '2vw';\n position.right = '2vw';\n }\n\n return (\n \n {name &&\n
\n {name}\n \n
\n }\n {children}\n \n );\n};\n\nexport default Window;\n","import React from 'react';\n\nimport {\n AppBar,\n Tabs,\n Tab,\n Typography,\n Toolbar,\n} from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\n\ninterface PropTypes {\n logo: {\n icon: React.ReactNode;\n title: string;\n };\n contents: {\n [key: string]: React.ReactNode | null;\n };\n page: string;\n setPage: (newPage: string) => void;\n}\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: theme.palette.background.elevation2,\n color: theme.palette.text.primary,\n paddingLeft: theme.spacing(3),\n },\n logo: {\n margin: theme.spacing(0, 3, 0, 1),\n },\n tab: {\n '& .MuiTab-wrapper': {\n padding: theme.spacing(2),\n flexDirection: 'row',\n fontSize: '0.8125rem',\n '& svg': {\n marginRight: theme.spacing(1),\n marginBottom: '0 !important',\n }\n }\n }\n}));\n\n\nconst Header: React.FC = ({ logo, contents, page, setPage }) => {\n const classes = useStyles();\n\n const handleChange = (event: React.ChangeEvent<{}>, newPage: string): void => {\n setPage(newPage);\n };\n\n return (\n \n \n {logo.icon}\n \n {logo.title}\n \n \n {contents && Object.keys(contents).map((item: string) => (\n \n ))}\n \n \n \n );\n};\n\nexport default Header;\n","import React from 'react';\n\nimport {\n Typography,\n Divider,\n makeStyles\n} from '@material-ui/core';\n\n\ninterface PropTypes {\n sectionName: string;\n level?: number;\n}\n\nconst useStyles = makeStyles(theme => ({\n content: {\n padding: theme.spacing(2, 2, 1, 3),\n marginBottom: theme.spacing(1),\n\n '& .MuiButton-root': {\n margin: theme.spacing(1, 2, 2, 0),\n },\n },\n}));\n\nconst ContentSection: React.FC = ({ sectionName, children, level = 0 }) => {\n const classes = useStyles();\n\n level += 2; // Make everything smaller\n if (level > 6) level = 6;\n\n type Variant = 'h3' | 'h4' | 'h5' | 'h6';\n const variant: Variant = 'h' + level as Variant;\n\n return (\n <>\n {sectionName}\n \n \n {children}\n \n \n );\n\n};\n\n\nexport default ContentSection;\n","import React from 'react';\nimport orange from '@material-ui/core/colors/orange';\nimport purple from '@material-ui/core/colors/purple';\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';\nimport { CssBaseline } from '@material-ui/core';\nimport 'typeface-roboto';\n\n\ndeclare module '@material-ui/core/styles/createPalette' {\n interface TypeBackground {\n elevation1: string;\n elevation2: string;\n elevation3: string;\n }\n}\n\n\nconst benzinTheme = createMuiTheme({\n palette: {\n type: 'dark',\n primary: {\n main: orange[400],\n },\n secondary: {\n main: purple[500],\n },\n background: {\n default: '#121212',\n paper: '#1e1e1e',\n elevation1: '#1e1e1e',\n elevation2: '#232323',\n elevation3: '#252525',\n },\n text: {\n primary: '#f4f4f4',\n secondary: 'rgba(255, 255, 255, 0.6)',\n }\n },\n});\n\n\nconst Benzin: React.FC = ({ children }) => (\n \n \n {children}\n \n);\n\n\nexport default Benzin;\n\n","import React from 'react';\nimport { ParserPropTypes } from './types';\nimport { Paper } from '@material-ui/core';\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n background: theme.palette.background.default,\n padding: theme.spacing(1),\n overflowX: 'auto',\n fontFamily: 'Monospace',\n scrollbarColor: 'auto'\n },\n}));\n\nconst CodeBlock: React.FC = ({ rawLines }) => {\n const classes = useStyles();\n return (\n \n {rawLines.map(line =>
{line}
)}\n
\n );\n}\n\nexport default CodeBlock;\n\n","import React from 'react';\nimport { Link, makeStyles } from '@material-ui/core';\n\nimport { lib as emojiLib } from 'emojilib';\n\ninterface PropTypes {\n span: string;\n}\n\ninterface RegexPair {\n global: RegExp;\n local: RegExp;\n}\n\ninterface Emoji {\n name: string;\n char: string;\n}\n\nconst enclosureRegex = (e: string): RegexPair => ({\n local: new RegExp(`${e}([^${e}]+)${e}`),\n global: new RegExp(`(${e}[^${e}]+${e})`)\n});\n\nconst regex: Record = {\n conceal: {\n global: /(!?\\[.+?\\]\\(.+?\\))(?!])/g,\n local: /!?\\[(.*\\]?.*)\\]\\((.+?)\\)/\n },\n rawLink: {\n global: /((?:(?:[A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www\\.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)(?:(?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[.!/\\\\\\w]*))?)/,\n local: /&^/\n },\n emoji: enclosureRegex(':'),\n bold: enclosureRegex('\\\\*\\\\*'),\n italic: enclosureRegex('\\\\*'),\n code: enclosureRegex('`'),\n strikeThrough: enclosureRegex('~~'),\n}\n\nconst splitter = new RegExp(Object.values(regex).map(pair => pair.global.source).join('|'));\n\nconst emojiList: Emoji[] = [];\nObject.keys(emojiLib).forEach(name => emojiList.push({ name, char: emojiLib[name].char }));\n\nconst useStyles = makeStyles(theme => ({\n code: {\n background: theme.palette.background.default,\n borderRadius: theme.spacing(.5),\n padding: theme.spacing(.5),\n fontFamily: 'Monospace',\n },\n image: {\n maxWidth: '100%',\n maxHeight: '100%'\n },\n}));\n\nconst SyntacticSpan: React.FC = ({ span }) => {\n const classes = useStyles();\n if (!span) return null;\n\n const matchConceal = regex.conceal.local.exec(span);\n if (matchConceal) {\n if (span[0] === '!') return {matchConceal[1]};\n return ;\n }\n\n const matchEmoji = span.match(regex.emoji.local);\n if (matchEmoji) {\n const emoji = emojiList.find(emoji => emoji.name === matchEmoji[1]);\n return {emoji ? emoji.char : span};\n }\n\n const matchCode = span.match(regex.code.local);\n if (matchCode) return {matchCode[1]};\n\n const matchBold = span.match(regex.bold.local);\n if (matchBold) return {matchBold[1]};\n\n const matchItalic = span.match(regex.italic.local);\n if (matchItalic) return {matchItalic[1]};\n\n const matchStrikeThrough = span.match(regex.strikeThrough.local);\n if (matchStrikeThrough) return {matchStrikeThrough[1]};\n\n if (span.match(regex.rawLink.global)) return {span};\n\n return <>{span};\n}\n\n\nexport { splitter };\nexport default SyntacticSpan;\n\n","import React from 'react';\nimport SyntacticSpan, { splitter } from './SyntacticSpan';\n\ninterface PropTypes {\n line: string;\n}\n\nconst Text: React.FC = ({ line }) => {\n return <>{line.split(splitter).map(span => )};\n}\n\nexport default Text;\n\n","import React from 'react';\n\nimport CodeBlock from './CodeBlock';\nimport Text from './Text';\nimport { ParserPropTypes } from './types';\n\n\nconst denotesCodeBlock = (line: string): boolean => {\n return line.match(/^\\s*```.*$/) !== null; }\n\nconst denotesDottedList = (line: string): boolean => {\n return line.match(/^ ?[-*] .*$/) !== null;\n}\n\nconst denotesOpenHtml= (line: string): string => {\n const regex = /<([^/\\s]*)[^<]*[^/]>/g;\n const match = regex.exec(line);\n return match ? match[1] : '';\n}\n\nconst denotesClosingHtml= (line: string, tag: string): boolean => {\n const regex = new RegExp(``);\n return line.match(regex) !== null;\n}\n\nconst denotesSelfClosingHtml = (line: string): string[] | null => {\n const regex = /(<[^/\\s]*[^<]*\\/>)/g;\n return line.match(regex);\n}\n\nconst declaresNoLineBreak = (line: string): boolean => {\n return line.match(/\\\\\\|$/) !== null;\n}\n\nconst Content: React.FC = ({ rawLines }) => {\n if (!rawLines.length) return null;\n\n const line = rawLines.splice(0, 1)[0];\n\n let buffer;\n if (denotesCodeBlock(line)) {\n const closeIndex = rawLines.findIndex(line => denotesCodeBlock(line));\n const codeBlockLines = rawLines.splice(0, closeIndex + 1).slice(0, closeIndex);\n buffer = \n } else if (denotesDottedList(line)) {\n const closeIndex = rawLines.findIndex(line => !denotesDottedList(line));\n const dottedListLines = rawLines.splice(0, closeIndex).slice(0, closeIndex);\n dottedListLines.unshift(line);\n buffer =
    {dottedListLines.map(li =>
  • )}
;\n } else if ((buffer = denotesOpenHtml(line))) {\n const tag = buffer;\n const closeIndex = denotesClosingHtml(line, tag) ? -1 : rawLines.findIndex(line => denotesClosingHtml(line, tag));\n const htmlLines = rawLines.splice(0, closeIndex + 1);\n htmlLines.unshift(line);\n buffer =
;\n } else if ((buffer = denotesSelfClosingHtml(line)) !== null) {\n const match = buffer[0];\n const [before, after] = line.split(match);\n buffer = (\n <>\n \n
\n \n \n );\n } else if (declaresNoLineBreak(line)) {\n const closeIndex = rawLines.findIndex(line => !declaresNoLineBreak(line));\n const lineBreakLines = rawLines.splice(0, closeIndex).map(line => line.slice(0, -2));\n lineBreakLines.unshift(line.slice(0, -2));\n lineBreakLines.push(rawLines.splice(0, 1)[0]);\n buffer =

{lineBreakLines.map(lineBreakLine => )}

;\n } else if (denotesClosingHtml(line, '')) {\n buffer = null;\n } else {\n buffer =

\n }\n\n return (\n <>\n { buffer }\n \n \n );\n}\n\nexport default Content;\n\n","import React from 'react';\nimport ContentSection from '../ContentSection/ContentSection';\nimport { Typography } from '@material-ui/core';\nimport Content from './Content';\nimport { ParserPropTypes } from './types';\n\ninterface PropTypes extends ParserPropTypes {\n level?: number;\n}\n\nconst getHeaderLevel = (header: string): number => {\n if (!header) return 0;\n let level = 0;\n while(header[level] === '#') level++;\n return level;\n}\n\nconst ChildrenSections: React.FC = ({ rawLines, level = 0 }) => {\n const childrenSectionLines = rawLines.reduce((sections: string[][], line: string) => {\n if (line) {\n if (getHeaderLevel(line) === level) sections.push([]);\n if (sections.length) sections[sections.length - 1].push(line);\n }\n return sections;\n }, []);\n const children = childrenSectionLines.map(sectionLines =>
);\n return <> {children} ;\n}\n\nconst Section: React.FC = ({ rawLines, level = 0 }) => {\n const deeperLevelIndex = rawLines.findIndex(line => line.match(`^#{${level + 1},} .*$`));\n const rawContent = rawLines.splice(0, (deeperLevelIndex < 0) ? rawLines.length : deeperLevelIndex);\n\n if (!level) return (\n <>\n \n \n \n )\n\n const sectionName = rawContent.splice(0, 1)[0].slice(level).trim();\n const deeperLevel = getHeaderLevel(rawLines[0]);\n return (\n \n \n \n \n );\n}\n\nexport default Section;\n\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\n\nimport Section from './Section';\n\ninterface PropTypes {\n data?: string;\n url?: string;\n}\n\nconst resolveUrls = (line: string, baseUrl: string): string => {\n return line.replace(/src=\"(?!http)(.*)\"[\\s>]/, (match, url, offset, string) => `src=\"${baseUrl}/${url}?sanitize=true\"`)\n .replace(/\\[(.*\\]?.*)\\]\\((?!http)(.+?)\\)/, (match, text, url, offset, string) => `[${text}](${baseUrl}/${url})`);\n}\n\nconst Markdown: React.FC = ({ data, url }) => {\n const [markdown, setMarkdown] = useState(data || '');\n\n if (url) axios.get(url).then(response => setMarkdown(response.data));\n\n useEffect(() => {\n if (!url) setMarkdown(data || '');\n }, [data, url]);\n\n const baseUrl = url?.slice(0, url.lastIndexOf('/')) || '';\n const lines = markdown.split(/\\r?\\n/).map(line => resolveUrls(line, baseUrl));\n return
\n};\n\n\nexport default Markdown;\n\n","import React, { useState, useRef } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { makeStyles, TextField, Button } from '@material-ui/core';\n\nimport {\n Benzin,\n Header,\n Window,\n Markdown,\n ContentSection,\n} from './lib';\n\nimport icon from './assets/icon.svg';\n\ninterface RenderPropTypes {\n index: number;\n style: React.CSSProperties;\n}\n\n\nconst useStyles = makeStyles(theme => ({\n window: {\n padding: theme.spacing(4),\n },\n promoButton: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: theme.spacing(4),\n }\n}));\n\n\nconst Icon = \"logo\"/\n\nconst headerContents = {\n home: null,\n 'spacevim': null,\n 'material-ui': null,\n 'custom': null,\n 'live preview': null,\n};\n\nconst pageMap: Record = {\n home: 'https://raw.githubusercontent.com/eug-vs/react-benzin/develop/README.md',\n 'spacevim': 'https://raw.githubusercontent.com/spacevim/spacevim/master/README.md',\n 'material-ui': 'https://raw.githubusercontent.com/mui-org/material-ui/master/README.md',\n};\n\n\nconst CustomPage: React.FC = () => {\n const [url, setUrl] = useState('');\n const inputEl = useRef(null);\n\n const handleParseUrl = (): void => {\n setUrl(inputEl.current?.value || '');\n }\n\n return (\n <>\n \n

\n This should be a link to a valid markdown file. Response should give the file contents.\n If you copy README file from GitHub, make sure you provide link to raw view.\n

\n

\n \n

\n \n
\n \n \n );\n}\n\ninterface LivePropTypes {\n setLivePreviewData: (livePreviewData: string) => void;\n}\n\nconst LivePreviewPage: React.FC = ({ setLivePreviewData }) => {\n const inputEl = useRef(null);\n\n const handleRender = (): void => {\n setLivePreviewData(inputEl.current?.value || '');\n }\n\n return (\n <>\n \n

\n Start typing and see your text rendered on the left window! We recommend starting with # Header.\n

\n

\n \n

\n
\n \n )\n}\n\n\nconst App: React.FC = () => {\n const classes = useStyles();\n const [page, setPage] = useState('home');\n const [livePreviewData, setLivePreviewData] = useState('');\n\n const handleGoLivePreview = (): void => {\n setPage('live preview');\n }\n\n const url = pageMap[page];\n const fileName = url?.slice(url.lastIndexOf('/') + 1);\n const info = [\n `## Markdown\\n [Markdown file](${url}) *(...${fileName})* that you can see on the left was parsed and rendered by **BENZIN**! :rocket:`,\n 'Switch between tabs on the header to explore other markdown templates. :recycle: ',\n 'Currently **only core features** of markdown function.',\n 'Templates on the left are being loaded from the [GitHub](https://github.com), though this pane is generated from plaintext. :pen:',\n '## How do I use this feature?',\n '```',\n 'import Markdown from \\'react-benzin\\';',\n 'const data = \\'# Header\\\\nHello, *world!*\\';',\n 'ReactDOM.render(, document.getElementById(\\'root\\'));',\n '```',\n ].join('\\n');\n\n return (\n \n \n \n
\n {\n (page === 'custom') ?\n \n :\n (page === 'live preview') ?\n \n :\n \n }\n
\n
\n \n
\n {\n (page === 'live preview') ?\n \n :\n <>\n \n

\n \n Try it yourself!\n \n

\n \n }\n
\n
\n
\n );\n};\n\n\nReactDOM.render(, document.getElementById('root'));\n\n"],"sourceRoot":""} \ No newline at end of file -- cgit v1.2.3