{"version":3,"sources":["components/pages/Home.js","components/pages/Installation.js","components/Header.js","components/pages/Ltspice2svg.js","components/pages/Problem2tex.js","components/pages/Documentation.js","components/LTspiceToSVG/Header.js","components/LTspiceToSVG/Gutter.js","components/LTspiceToSVG/Upload.js","components/LTspiceToSVG/types/options.js","components/LTspiceToSVG/Options.js","components/LTspiceToSVG/Convert.js","icons.js","components/LTspiceToSVG/SvgViewer.js","components/LTspiceToSVG/index.js","components/pages/TryLtspice2svg.js","components/ProblemToTex/Options/RandomInput.js","components/ProblemToTex/Options/Dropdown.js","components/ProblemToTex/Options/Drawings.js","components/ProblemToTex/theme.js","components/ProblemToTex/Options/types/options.js","components/ProblemToTex/Options/index.js","components/ProblemToTex/lib.js","components/ProblemToTex/Main/Header.js","components/ProblemToTex/Main/Editor.js","components/ProblemToTex/Main/PdfViewer.js","components/ProblemToTex/Main/ErrorLog.js","components/ProblemToTex/Main/index.js","components/ProblemToTex/index.js","components/pages/TryProblem2tex.js","components/pages/Contact.js","components/pages/Donate.js","components/App.js","index.js"],"names":["Home","useEffect","document","title","className","href","action","method","target","type","name","defaultValue","src","alt","border","Installation","rel","download","Header","useState","selectedEl","setSelectedEl","clickHandler","el","Navbar","collapseOnSelect","expand","variant","fixed","Brand","width","height","style","backgroundColor","Toggle","aria-controls","Collapse","id","Nav","NavDropdown","Item","active","onClick","to","as","Link","Ltspice2svg","Problem2tex","Documentation","Typography","useStyles","makeStyles","theme","gutter","flexShrink","background","Gutter","classes","Box","button","marginRight","textField","marginBottom","Upload","uploadFile","setUploadFile","inputVal","setInputVal","handleChangeFile","event","a","file","files","item","accept","onChange","value","htmlFor","Button","color","component","TextField","size","textChoices","label","tDotChoices","fontChoices","header","textOption","tDotOption","makeMenuItem","option","MenuItem","Options","setTextOption","setTDotOption","fontOption","setFontOption","textMenu","map","tDotMenu","fontMenu","display","justifyContent","py","select","helperText","Convert","convert","DownloadIcon","xmlns","viewBox","d","UploadIcon","downloadSvg","textDecoration","SvgViewer","isLoading","svgData","documentName","svgSrc","btoa","flexDirection","mt","startIcon","alignItems","CircularProgress","container","padding","menu","flex","marginTop","viewer","LTspiceToSVG","setIsLoading","setSvgData","formData","FormData","append","axios","post","headers","response","data","startsWith","console","error","Container","maxWidth","borderBottom","split","TryLtspice2svg","noMargin","RandomInput","randomFlag","setRandomFlag","FormControlLabel","control","Checkbox","checked","root","strong","fontWeight","fontSize","Dropdown","setValue","choices","attrID","attrLabel","Menu","bold","InputLabelProps","fileList","overflow","marginLeft","fileItem","wordBreak","Drawings","drawings","setDrawings","handleDeleteFile","prev","filter","x","length","List","ListItem","ListItemText","primary","ListItemSecondaryAction","Tooltip","placement","arrow","IconButton","edge","aria-label","multiple","some","find","colors","base","fg1","fg2","bg1","bg2","bg2Hover","bg3","bg4","bg4Hover","errorLit","errorLitHover","errorSelected","errorSelectedHover","outputTypeChoices","paddingLeft","paddingTop","paddingRight","separator","margin","borderTop","compile","outputType","setOutputType","Separator","px","pt","getEditorContent","ref","current","editor","getValue","setEditorContent","clearSelection","left","position","right","prbNameInput","prbNameInputField","prbNameInputUnderline","errorButton","boxShadow","borderRadius","borderTopLeftRadius","outline","errorRed","errorButtonSelected","fg4","compileButton","zIndex","compileButtonStartIcon","compileButtonEndIcon","icon","tooltipTop","editorRef","setDocumentName","pdfData","showErrorLog","setShowErrorLog","errorProblemToTex","errorLatex","compileButtonText","pdfObjectSrc","fileName","slice","lastIndexOf","text","handleDownload","tmpLink","createElement","Blob","URL","createObjectURL","body","appendChild","click","removeChild","UploadButton","tooltipPlacementTop","DownloadButton","InputProps","underline","ml","ToggleButton","selected","endIcon","Editor","resetIdleTimer","mode","showPrintMargin","showGutter","highlightActiveLine","editorProps","$blockScrolling","PdfViewer","pdfPlaceholder","upper","overflowY","lower","ErrorLog","Main","editorResetIdleTimer","flexGrow","options","main","basicStorage","window","sessionStorage","getItem","setItem","openFileStorage","Promise","resolve","reject","storageDbName","dbName","Date","now","request","indexedDB","open","onupgradeneeded","result","createObjectStore","onerror","onsuccess","db","fileStorage","operate","makeRequest","transaction","objectStore","get","getAll","set","blob","put","clear","usePersistentState","JSON","parse","stringify","createRef","ProblemToTex","prevBodyStyle","h2","querySelector","prevH2Style","prevMainStyle","innerHTML","head","idleTime","timer","resetTimer","clearTimeout","setTimeout","useIdleTimer","editorContent","setPdfData","setCompileButtonText","setPdfPlaceholder","setErrorProblemToTex","setErrorLatex","storageDrawings","restoreDrawings","forEach","drawing","saveDrawings","PdfContent","ErrorIcemaker","ErrorLatex","TryProblem2tex","Contact","Donate","App","exact","path","ReactDOM","render"],"mappings":"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","file":"static/js/main.e4b07f7d.chunk.js","sourcesContent":["import React,{useEffect} from 'react';\n\nconst Home = () => {\n useEffect(()=>{\n document.title='Icewire - Home'\n },[])\n return (\n
\n

\n ltspice2svg

\n

- Convert LTSpice file to svg format

\n
\n

\n problem2tex

\n

- Convert problem file to latex

\n
\n
\n

Email contact: david.johns@icewire.ca

\n

If you find this app useful, consider buying us a hot chocolate (We are not a coffee drinkers)...

\n
\n \n \n \n
\n
\n )\n};\n\nexport default Home;\n","import React,{useEffect} from 'react';\n\nconst Installation = () => {\n useEffect(()=>{\n document.title='Icewire - Installation'\n },[])\n return
\n

Install LTSpice

\n
  • Install LTSpice
  • \n

    You can use LTSpice with its built in symbols but it is suggested you add an svg library to improve the schematic drawing experience.\n

    \n
  • Install svg library for LTSpice: svg.zip
  • \n
  • Install the symbols in the LTSpice symbol directory
  • \n - For Windows ... typically in C:\"user\"\\Documents\\LTspiceXVII\\lib\\sym\\svg (svg is the new added directory)\n
    \n - For MAC ... typically in \"user\"/Library/ApplicationSupport/LTspice/lib/sym/svg (svg is the new added directory)\n

    Install ltspice2svg

    \n
  • Download the appropriate zip file for your operating system
  • \n

    Windows(64 bit): ltspice2svgWin64_210302.zip
    \n MacOS (64 bit): ltspice2svgMacOS64_210302.zip
    \n Linux (64 bit): ltspice2svgLinux64_210302.zip

    \n
  • Unzip zip file
  • \n
  • Copy ltspice2svg file to the directory where you want it installed (typical directories shown below)
  • \n

    Windows: C:\\Program Files\\\n
    \n MacOS/Linux: /usr/local/bin\n

    \n
  • Test that it is installed correctly and the PATH has been updated: run the following command in another terminal window (MacOS/Linux) or another command prompt (Windows)
  • \n

    ltspice2svg --help

    \n\n

    Test Manual Setup

    \n
  • Download the following LTSpice file: ex01.asc
  • \n

    Run the following 2 commands on ex01.asc file:
    \n ltspice2svg -export=ex01.svg ex01.asc
    \n inkscape -D --export-filename=ex01.pdf --export-latex ex01.svg \n

    \n

    Include the resulting .pdf_tex file using \\input into your latex document

    \n\n\n\n

    Integration with Latex/Inkscape

    \n

    You can use ltspice2svg as a stand alone app but for Latex users, it is beneficial to have it automatically\n work within a Latex environment. In this way, if an LTSpice figure is updated, the updated figure is automatically included \n in the updated latex document. For this to work, Inkscape needs to be installed as it is used for Latex to include svg figures.\n

    \n

    First ensure that Inkscape and ltspice2svg are both in your PATH so that they can be called from the command line (this can be \n tested by running \"inkscape --help\" and \"ltspice2svg --help\")

    \n
  • Install Inkscape
  • \n

    You should be using Inkscape version 1.0 or above.
    \n (versions below 1.0 have issues with exporting for latex)\n

    \n

    Test Integrated Setup

    \n
  • Add --shell-escape flag when calling Latex (and/or pdflatex)
  • \n

    For example, in texmaker, this flag can be added in preferences as\n
    \n \"/Library/TeX/texbin/latex\" --shell-escape -interaction=nonstopmode %.tex\n
    \n \"/Library/TeX/texbin/pdflatex\" -synctex=1 --shell-escape -interaction=nonstopmode %.tex

    \n the \"--shell-escape\" flag is required so that Latex can call a command line app \n

    \n
  • Download the following example: FigureAsc.zip
  • \n
  • Unzip and open the latex example: figureAsc.tex
  • \n
  • Delete all the files in the tmp directory and rebuild the latex example
  • \n

    In this example, one LTSpice figure is included into a latex document. The LTSpice figure is automatically converted to an svg file\n (using ltspice2svg) and then the svg file is included (using inkscape). You should be able to delete all the files in the tmp\n directory and when run again, they should be re-generated automatically.

    \n \n

    Install problem2tex

    \n
  • Download the appropriate zip file for your operating system
  • \n

    Windows(64 bit): problem2texWin64_220221.zip
    \n MacOS (64 bit): problem2texMacOS64_220221.zip
    \n Linux (64 bit): problem2texLinux64_220221.zip

    \n
  • Unzip zip file
  • \n
  • Copy problem2tex file to the directory where you want it installed (typical directories shown below)
  • \n

    Windows: C:\\Program Files\\\n
    \n MacOS/Linux: /usr/local/bin\n

    \n
  • Test that it is installed correctly and the PATH has been updated: run the following command in another terminal window (MacOS/Linux) or another command prompt (Windows)
  • \n

    problem2tex --help

    \n

    problem2tex can also be used in an integrated setup with Latex similar to ltspice2svg

    \n \n

    Source Code

    \n

    Source code is available at

    \n
  • https://github.com/icewire314/ltspice2svg
  • \n
  • https://github.com/icewire314/problem2tex
  • \n

    \n

     

    \n
    \n};\n\nexport default Installation;\n","import 'bootstrap/dist/css/bootstrap.min.css';\nimport React, {useState} from 'react';\nimport Navbar from 'react-bootstrap/Navbar'\nimport Nav from 'react-bootstrap/Nav'\nimport NavDropdown from 'react-bootstrap/NavDropdown'\nimport { Link } from 'react-router-dom';\nimport './App.css';\n\n\nconst Header = () => {\n const [selectedEl, setSelectedEl] = useState(0);\n\n const clickHandler = (el) => {\n setSelectedEl(el);\n }\n\n return (\n
    \n \n \"logo\"\n \n \n \n \n \n
    \n );\n};\n\nexport default Header;\n","import React,{useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport '../App.css';\n\nconst Ltspice2svg = () => {\n useEffect(()=>{\n document.title='Icewire - ltspice2svg'\n },[])\n return
    \n

    ltspice2svg: Why use LTSpice to SVG?

    \n

    \n For a modest sized schematic, a nicely hand drawn schematic\n takes about 1 min to create. Unfortunately,\n using a general purpose drawing program to create the same schematic takes from 10 to 15 minutes even if a library of symbols are made in advance.

    \n

    \n However, a good schematic editing tool can create a schematic in about 2 minutes.\n Unfortunately, schmematic editors are well known to create schematics that are\n not suitable for publications in research papers or educational material.

    \n

    \n The purpose of ltspice2svg is to let the user create an LTspice schematic and\n then use ltspice2svg to \"beautify\" the schematic so that the resulting output can\n be used in publications. If needed, the svg file can be further edited (or tweaked) using Inkscape.

    \n

    ltspice2svg - Examples

    \n
    \n
    \n
    \n \"LTSpice\n
    \n
    Example asc file: example.asc
    \n
    \n
    \n
    \n
    \n \"SVG\n
    \n
    Example svg file: example.svg
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n \"LTSpice\n
    \n
    Example asc file: example2.asc
    \n
    \n
    \n
    \n
    \n \"SVG\n
    \n
    Example svg file: example2.svg
    \n
    \n
    \n
    \n

    The above examples requires the custom \"svg\" library to be installed for LTSpice (see Installation)

    \n The svg file can be imported into Inkscape (Inkscape) and, if needed, easily modified
    \n (things should remain on grid)\n

    \n

    You can also create your own LTSpice symbols but they should be placed in the svg directory below where -symPath points to. No new symbol names should be the same as existing LTSpice symbols.

    \n

    You can also create your own svg symbols to go with your new LTSpice symbols (if you don't like the automatically generated svg symbols). Place any new svg symbol inside the symDefn.svg file within the svg directory (see existing examples)

    \n

    Usage

    \n

    For the above example (in the command line) run ...
    \n % ltspice2svg -export=example.svg -text=subscript example.asc\n

    \n

    Examples

    \n

    A one figure example can be found within the zip file: FigureAsc.zip
    \n - The pdf for this basic example is here: figureAsc.pdf

    \n

    A presentation example (using the Latex Beamer class) and making use of LTSpice figures can be found within the zip file: TalkAsc.zip
    \n - The pdf for this presentation example is here: talkAsc.pdf

    \n

    More Information

    \n

    For more info, see Documentation

    \n
    \n\n};\n\nexport default Ltspice2svg;\n","import React,{useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport '../App.css';\n\nconst Problem2tex = () => {\n useEffect(()=>{\n document.title='Icewire - problem2tex'\n },[])\n return
    \n

    Why the world needs \"Problem to tex\"

    \n

    There are just not enough exercises, examples and worked out problems to learn technical material. \n Our hope is that problem2tex can help people create technical exercises which can be\n posted online.\n

    \n

    Problem to tex

    \n

    A latex problem can be created with parameter inputs which\n are randomly chosen from a set of values. The solution is automatically\n generated for the new parameters and SI-prefixes are done automatically.

    \n

    An example basic02.prb file is the following:

    \n

    \n PARAM{'{'}V_1 = [2, 3, 4, 5] # units=V{'}'}
    \n PARAM{'{'}R_1 = [6, 7, 8, 9] # units=k \\Omega{'}'}
    \n Given VAL{'{'}V_1,={'}'} and VAL{'{'}R_1,={'}'}, find the current $I_R = V_1/R_1$
    \n \\begin{'{'}solution{'}'}
    \n RUN{'{'}I_R=V_1/R_1 # units=A{'}'}
    \n \\hilite{'{'}VAL{'{'}I_R,={'}'}{'}'}
    \n \\end{'{'}solution{'}'}
    \n \\begin{'{'}answer{'}'}
    \n VAL{'{'}I_R,={'}'}
    \n \\end{'{'}answer{'}'}\n

    \n

    Running this .prb file through latex, the following pdf is generated:

    \n
    \n \"solution\"\n
    \n
    \n

    LTSpice figures can be included in the problems with varying parameters in LTSpice figures

    \n

    For more info, see Documentation

    \n

    Examples

    \n

    The above basic example can be found within the zip file: prbBasic.zip
    \n - The pdf for this basic example is here: prbBasic.pdf

    \n

    A full problem set example can be found within the zip file: prbProblemSet.zip
    \n This problem set has many schematics, is fully parameterized and the solution is automatically updated as the parameters are changed. Note that the graph for question 6 is also automatically updated by using tikzpicture within Latex.
    \n - The pdf for this problem set is here: problemSet.pdf

    \n
    \n\n\n};\n\nexport default Problem2tex;\n","import React,{useEffect} from 'react';\nimport '../App.css';\n\nconst Documentation = () => {\n useEffect(()=>{\n document.title='Icewire - Documentation'\n },[])\n return
    \n \n

    Documentation

    \n \n

    ltspice2svg.pdf

    \n\n \n

    problem2tex.pdf

    \n
    \n\n};\n\nexport default Documentation;\n","import Typography from '@material-ui/core/Typography'\n\nconst Header = () => {\n return (\n \n LTspice to SVG\n \n )\n}\n\nexport default Header\n","import { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\n\nconst useStyles = makeStyles((theme) => ({\n gutter: {\n width: '14px',\n flexShrink: 0,\n background: '#509bcb'\n }\n}))\n\nconst Gutter = () => {\n const classes = useStyles()\n \n return (\n \n )\n}\n\nexport default Gutter\n","import { useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport TextField from '@material-ui/core/TextField'\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n marginRight: '10px'\n },\n textField: {\n marginBottom: '5px'\n }\n}))\n\nconst Upload = ({\n uploadFile, setUploadFile\n}) => {\n const classes = useStyles()\n \n const [inputVal, setInputVal] = useState('')\n\n const handleChangeFile = async event => {\n const file = event.target.files.item(0)\n\n setUploadFile(file)\n \n // Reset the value of the input element so the change event will get triggered again if the previous file is selected again\n setInputVal('')\n }\n \n return (\n <>\n \n \n \n \n )\n}\n\nexport default Upload\n","const textChoices = [\n {\n value: 'noChange',\n label: 'no change'\n },\n {\n value: 'latex',\n label: 'latex'\n },\n {\n value: 'subscript',\n label: 'subscript'\n },\n]\n\nconst tDotChoices = [\n {\n value: true,\n label: 'with dots'\n },\n {\n value: false,\n label: 'without dots'\n },\n]\n\nconst fontChoices = [\n {\n value: 'Arial',\n label: 'Arial'\n },\n {\n value: 'Times New Roman',\n label: 'Times New Roman'\n },\n {\n value: 'Courier',\n label: 'Courier'\n },\n {\n value: 'Helvetica',\n label: 'Helvetica'\n },\n]\n\nexport {textChoices, tDotChoices, fontChoices}\n","import { makeStyles } from '@material-ui/core/styles'\nimport Typography from '@material-ui/core/Typography'\nimport Box from '@material-ui/core/Box'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport TextField from '@material-ui/core/TextField'\nimport { textChoices, tDotChoices, fontChoices } from './types/options'\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n background: '#c4e8ff'\n },\n textOption: {\n width: '8em'\n },\n tDotOption: {\n width: '8em'\n }\n}))\n\nconst makeMenuItem = option => (\n \n {option.label}\n \n)\n\nconst Options = ({\n textOption, setTextOption,\n tDotOption, setTDotOption,\n fontOption, setFontOption,\n}) => {\n const classes = useStyles()\n\n const textMenu = textChoices.map(makeMenuItem)\n const tDotMenu = tDotChoices.map(makeMenuItem)\n const fontMenu = fontChoices.map(makeMenuItem)\n\n return (\n <>\n \n \n Options\n \n \n \n setTextOption(event.target.value)}\n helperText=\"\"\n >\n {textMenu}\n \n setTDotOption(event.target.value)}\n helperText=\"\"\n >\n {tDotMenu}\n \n setFontOption(event.target.value)}\n helperText=\"\"\n >\n {fontMenu}\n \n \n \n )\n}\n\nexport default Options\n","import Button from '@material-ui/core/Button'\n\nconst Convert = ({ convert }) => {\n return (\n \n )\n}\n\nexport default Convert\n","const DownloadIcon = () => (\n \n)\n\nconst UploadIcon = () => (\n \n)\n\nexport { DownloadIcon, UploadIcon }\n","import { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\nimport Typography from '@material-ui/core/Typography'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Button from '@material-ui/core/Button'\nimport Link from '@material-ui/core/Link'\n\nimport { DownloadIcon } from '../../icons'\n\nconst useStyles = makeStyles((theme) => ({\n downloadSvg: {\n '&:hover': {\n textDecoration: 'none'\n }\n }\n}))\n\nconst SvgViewer = ({\n isLoading,\n svgData,\n documentName\n}) => {\n const classes = useStyles()\n \n const svgSrc = `data:image/svg+xml;base64,${btoa(svgData)}`\n\n return (\n <>\n \n {\n svgData && (\n }\n >\n Download SVG\n \n )\n }\n \n \n {\n isLoading ? \n : svgData ? (\n \n ) : Press convert to view SVG\n }\n \n \n )\n}\n\nexport default SvgViewer\n","import React, {useState} from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Container from '@material-ui/core/Container'\nimport Box from '@material-ui/core/Box'\nimport axios from 'axios'\n\nimport Header from './Header'\nimport Gutter from './Gutter'\nimport Upload from './Upload'\nimport Options from './Options'\nimport Convert from './Convert'\nimport SvgViewer from './SvgViewer'\nimport { textChoices, tDotChoices, fontChoices } from './types/options'\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n height: '88vh',\n padding: 0,\n border: '1px solid black'\n },\n header: {\n background: '#c4e8ff'\n },\n menu: {\n flex: '0 0 500px'\n },\n convert: {\n marginTop: '10px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n viewer: {\n width: '100%',\n height: '100%'\n }\n}))\n\nconst LTspiceToSVG = () => {\n const classes = useStyles()\n\n const [textOption, setTextOption] = useState(textChoices[0].value)\n const [tDotOption, setTDotOption] = useState(tDotChoices[0].value)\n const [fontOption, setFontOption] = useState(fontChoices[0].value)\n const [uploadFile, setUploadFile] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [svgData, setSvgData] = useState(null)\n\n const convert = async () => {\n setIsLoading(true)\n\n const formData = new FormData();\n formData.append('myFile', uploadFile)\n formData.append('text', textOption)\n formData.append('tdots', tDotOption)\n formData.append('fontType', fontOption)\n \n try {\n const response = await axios.post('/uploadasc', formData, {\n headers: {\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',\n 'Content-Type': 'multipart/form-data'\n }\n })\n\n if (!response || !response.data || !response.data.startsWith('\n \n\n \n
    \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default LTspiceToSVG\n","import React,{useEffect} from 'react';\nimport LTspiceToSVG from '../LTspiceToSVG'\n\nconst TryLtspice2svg = () => {\n useEffect(()=>{\n document.title='Icewire - Try ltspice2svg'\n },[])\n return (\n
    \n \n
    \n )\n};\n\nexport default TryLtspice2svg;\n","import { makeStyles } from '@material-ui/core/styles'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport Checkbox from '@material-ui/core/Checkbox'\n\nconst useStyles = makeStyles((theme) => ({\n noMargin: {\n marginBottom: 0\n }\n}))\n\nconst RandomInput = ({ randomFlag, setRandomFlag }) => {\n const classes = useStyles()\n \n const handleChange = event => {\n setRandomFlag(event.target.checked)\n }\n \n return (\n \n }\n label=\"Randomize variables\"\n classes={{\n root: classes.noMargin\n }}\n />\n )\n}\n\nexport default RandomInput\n","import { makeStyles } from '@material-ui/core/styles'\nimport TextField from '@material-ui/core/TextField'\nimport MenuItem from '@material-ui/core/MenuItem'\n\nconst useStyles = makeStyles((theme) => ({\n strong: {\n fontWeight: 600,\n fontSize: '1.1rem',\n color: 'black'\n }\n}))\n\nconst Dropdown = ({ value, setValue, choices, attrID, attrLabel }) => {\n const classes = useStyles()\n \n const handleChange = event => {\n setValue(event.target.value)\n }\n\n const Menu = choices.map(option => (\n \n {option.label}\n \n ))\n \n return (\n \n {Menu}\n \n )\n}\n\nexport default Dropdown\n","import { useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction'\nimport IconButton from '@material-ui/core/IconButton'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport Typography from '@material-ui/core/Typography'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport FolderIcon from '@material-ui/icons/Folder'\n\nconst useStyles = makeStyles((theme) => ({\n fileList: {\n overflow: 'auto',\n marginLeft: '1em'\n },\n fileItem: {\n wordBreak: 'break-all'\n }\n}))\n\nconst Drawings = ({ drawings, setDrawings }) => {\n const classes = useStyles()\n\n const [inputVal, setInputVal] = useState('')\n \n const handleChangeFile = event => {\n if (![...event.target.files].some(file => drawings.find(x => x.name === file.name))) {\n setDrawings(prev => [...prev, ...event.target.files])\n }\n // Reset the value of the input element so the change event will get triggered again if the previous file is selected again\n setInputVal('')\n }\n\n const handleDeleteFile = file => event => {\n setDrawings(prev => [...prev].filter(x => x.name !== file.name))\n }\n\n const createFileElement = file => {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n }\n\n const fileList = drawings.length > 0 && (\n {drawings.map(createFileElement)}\n )\n \n return (\n <>\n \n \n {fileList}\n \n\n \n )\n}\n\nexport default Drawings\n","const colors = {\n base: '#509bcb',\n fg1: '#fff',\n fg2: '#424242',\n bg1: '#4e9bca33',\n bg2: '#509bcb',\n bg2Hover: '#4DBBFF',\n bg3: '#fff',\n bg4: '#4A57D9',\n bg4Hover: '#707CFF',\n errorLit: '#FF7E4A',\n errorLitHover: '#BF5E37',\n errorSelected: '#fff',\n errorSelectedHover: '#ddd'\n}\n\n\nexport default colors\n","const outputTypeChoices = [\n {\n value: 'flagSolution',\n label: 'with solution'\n },\n {\n value: 'flagAnswer',\n label: 'with answer'\n },\n {\n value: 'flagSolAns',\n label: 'with solution and answer'\n },\n {\n value: 'flagQuestion',\n label: 'questions only'\n },\n]\n\nexport { outputTypeChoices }\n","import { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\nimport Typography from '@material-ui/core/Typography'\n\nimport RandomInput from './RandomInput'\nimport Dropdown from './Dropdown'\nimport Drawings from './Drawings'\nimport theme from '../theme'\nimport { outputTypeChoices } from './types/options'\n\nconst useStyles = makeStyles(() => ({\n header: {\n background: theme.bg2,\n color: '#fff',\n fontWeight: 600,\n paddingLeft: '8px',\n height: '44px',\n paddingTop: '5px'\n },\n option: {\n paddingLeft: '5px',\n paddingRight: '5px',\n marginTop: '8px',\n marginBottom: '8px'\n },\n separator: {\n height: '100%',\n margin: '0',\n width: '300px',\n marginLeft: '-8px',\n borderTop: '2px solid rgba(0, 0, 0, 0.2)'\n }\n}))\n\nconst Options = ({\n compile,\n randomFlag,\n setRandomFlag,\n outputType,\n setOutputType,\n drawings,\n setDrawings\n}) => {\n const classes = useStyles()\n\n const Separator = () => \n \n return (\n <>\n \n Options\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default Options\n","const getEditorContent = ref => {\n return ref.current?.editor.getValue()\n}\n\nconst setEditorContent = (ref, value) => {\n ref.current?.editor.setValue(value)\n ref.current?.editor.clearSelection()\n}\n\nexport { getEditorContent, setEditorContent }\n","import { useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\nimport IconButton from '@material-ui/core/IconButton'\nimport TextField from '@material-ui/core/TextField'\nimport Button from '@material-ui/core/Button'\nimport Link from '@material-ui/core/Link'\nimport ToggleButton from '@material-ui/lab/ToggleButton'\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward'\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward'\nimport Tooltip from '@material-ui/core/Tooltip'\n\nimport { DownloadIcon, UploadIcon } from '../../../icons'\nimport theme from '../theme'\nimport { getEditorContent, setEditorContent } from '../lib'\n\nconst useStyles = makeStyles(() => ({\n left: {\n position: 'absolute'\n },\n right: {\n position: 'absolute',\n right: 0,\n display: 'flex'\n },\n prbNameInput: {\n marginTop: '10px',\n marginLeft: '30px'\n },\n prbNameInputField: {\n color: theme.fg1\n },\n prbNameInputUnderline: {\n '&:before': {\n borderBottom: '1px solid rgba(255, 255, 255, 0.42)'\n },\n '&:after': {\n borderBottom: '2px solid #fff'\n },\n '&:hover:not(.Mui-disabled):before': {\n borderBottom: '2px solid rgba(255, 255, 255, 0.87)'\n }\n },\n errorButton: {\n marginLeft: '20px',\n boxShadow: 'rgb(0 0 0 / 20%) -2px -2px 4px -1px, rgb(0 0 0 / 14%) -2px -4px 5px 0px, rgb(0 0 0 / 0%) -2px -1px 10px 0px',\n borderRadius: '0px',\n borderTopLeftRadius: '16px',\n border: 0,\n backgroundColor: theme.bg2,\n color: theme.fg1,\n height: '37px',\n marginTop: '6px',\n '&:hover': {\n backgroundColor: theme.bg2Hover\n },\n '&:focus': {\n outline: 0\n }\n },\n errorRed: {\n backgroundColor: theme.errorLit,\n color: theme.fg1,\n '&:hover': {\n backgroundColor: theme.errorLitHover\n }\n },\n errorButtonSelected: {\n backgroundColor: `${theme.bg3} !important`,\n color: `${theme.fg4} !important`,\n border: 0,\n '&:hover': {\n backgroundColor: `${theme.errorSelectedHover} !important`\n }\n },\n compileButton: {\n border: `2px solid ${theme.bg1}`,\n zIndex: 1,\n backgroundColor: theme.bg4,\n color: theme.fg1,\n borderRadius: '30px',\n marginBottom: '3px',\n width: '200px',\n boxShadow: 'rgb(0 0 0 / 50%) 0px 2px 4px -1px, rgb(0 0 0 / 40%) 0px 2px 5px 0px, rgb(0 0 0 / 32%) 0px 1px 10px 0px',\n '&:hover': {\n backgroundColor: theme.bg4Hover\n }\n },\n compileButtonStartIcon: {\n marginRight: '24px'\n },\n compileButtonEndIcon: {\n marginLeft: '24px'\n },\n icon: {\n color: theme.fg1,\n '&:hover': {\n backgroundColor: theme.bg2Hover\n }\n },\n tooltipTop: {\n margin: '8px 0'\n }\n}))\n\nconst Header = ({\n editorRef,\n documentName,\n setDocumentName,\n pdfData,\n showErrorLog,\n setShowErrorLog,\n errorProblemToTex,\n errorLatex,\n compileButtonText,\n compile\n}) => {\n const classes = useStyles()\n \n const [inputVal, setInputVal] = useState('')\n\n const pdfObjectSrc = `data:application/pdf;base64,${pdfData}`\n\n const handleChangeFile = async event => {\n const file = event.target.files.item(0)\n const fileName = file.name.slice(0, file.name.lastIndexOf('.'))\n const text = await file.text()\n \n setEditorContent(editorRef, text)\n setDocumentName(fileName)\n \n // Reset the value of the input element so the change event will get triggered again if the previous file is selected again\n setInputVal('')\n }\n\n const handleDownload = event => {\n const tmpLink = document.createElement('a')\n const file = new Blob([getEditorContent(editorRef)], {type: 'text/plain'})\n tmpLink.href = URL.createObjectURL(file)\n tmpLink.download = `${documentName}.prb`\n document.body.appendChild(tmpLink)\n tmpLink.click()\n document.body.removeChild(tmpLink)\n }\n\n const handleChangePrbName = event => {\n setDocumentName(event.target.value)\n }\n\n const UploadButton = () => (\n <>\n \n \n \n )\n\n const DownloadButton = () => (\n \n \n \n \n \n )\n\n return (\n <>\n \n \n \n \n \n \n {pdfData &&\n \n \n \n \n \n \n \n }\n setShowErrorLog(!showErrorLog)}\n >\n Error log\n \n \n \n }\n endIcon={}\n classes={{\n startIcon: classes.compileButtonStartIcon,\n endIcon: classes.compileButtonEndIcon\n }}\n >\n {compileButtonText}\n \n \n \n )\n}\n\nexport default Header\n","import AceEditor from \"react-ace\"\nimport \"ace-builds/src-noconflict/mode-latex\"\nimport \"ace-builds/src-noconflict/theme-clouds\"\n\nimport { getEditorContent } from '../lib'\n\nconst Editor = ({ editorRef, resetIdleTimer }) => {\n return (\n \n )\n}\n\nexport default Editor\n","import CircularProgress from '@material-ui/core/CircularProgress'\nimport Typography from '@material-ui/core/Typography'\nimport Box from '@material-ui/core/Box'\n\nconst PdfViewer = ({\n isLoading,\n pdfData,\n pdfObjectSrc,\n pdfPlaceholder\n}) => {\n \n return (\n \n {\n isLoading ? \n : pdfData ? (\n \n \n ) : {pdfPlaceholder}\n }\n \n )\n}\n\nexport default PdfViewer\n","import { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\n\nconst useStyles = makeStyles((theme) => ({\n body: {\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n upper: {\n borderBottom: '1px solid black',\n flex: '1 1 0',\n overflowY: 'auto'\n },\n lower: {\n flex: '1 1 0',\n overflowY: 'auto'\n }\n}))\n\nconst ErrorLog = ({ errorProblemToTex, errorLatex }) => {\n const classes = useStyles()\n \n return (\n \n \n {errorProblemToTex}\n \n \n {errorLatex}\n \n \n )\n}\n\nexport default ErrorLog\n","import { makeStyles } from '@material-ui/core/styles'\nimport Box from '@material-ui/core/Box'\n\nimport Header from './Header'\nimport Editor from './Editor'\nimport PdfViewer from './PdfViewer'\nimport ErrorLog from './ErrorLog'\nimport theme from '../theme'\n\nconst useStyles = makeStyles(() => ({\n header: {\n height: '44px',\n position: 'relative',\n background: theme.bg2,\n },\n body: {\n display: 'flex',\n height: '100%'\n },\n editor: {\n flex: '1 1 0',\n height: 'calc(100vh - 189px)'\n },\n viewer: {\n flex: '1 1 0',\n backgroundColor: theme.bg3\n },\n gutter: {\n width: '14px',\n flexShrink: 0,\n background: 'inherit'\n }\n}))\n\nconst Main = ({\n pdfData,\n documentName,\n setDocumentName,\n isLoading,\n pdfPlaceholder,\n editorRef,\n editorResetIdleTimer,\n showErrorLog,\n setShowErrorLog,\n errorProblemToTex,\n errorLatex,\n compileButtonText,\n compile\n}) => {\n const classes = useStyles()\n\n const pdfObjectSrc = `data:application/pdf;base64,${pdfData}`\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n { showErrorLog\n ? \n : \n }\n \n \n \n )\n}\n\nexport default Main\n","import React, { useState, useEffect, createRef } from 'react'\nimport axios from 'axios'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Container from '@material-ui/core/Container'\nimport Box from '@material-ui/core/Box'\n\nimport Options from './Options'\nimport Main from './Main'\nimport theme from './theme'\nimport { outputTypeChoices } from './Options/types/options'\nimport { getEditorContent, setEditorContent } from './lib'\n\nconst useStyles = makeStyles(() => ({\n container: {\n flexGrow: 1,\n display: 'flex',\n padding: 0\n },\n options: {\n width: '300px',\n flex: '0 0 300px',\n background: theme.bg3\n },\n main: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n gutter: {\n width: '14px',\n flexShrink: 0,\n background: 'inherit'\n }\n}))\n\nconst basicStorage = {\n get: name => window.sessionStorage.getItem(name),\n set: (name, value) => window.sessionStorage.setItem(name, value)\n}\n\nconst openFileStorage = () => new Promise((resolve, reject) => {\n const storageDbName = basicStorage.get('fileDbName')\n const dbName = storageDbName || `problemToTex-${Date.now()}`\n\n if (storageDbName === null) {\n basicStorage.set('fileDbName', dbName)\n }\n\n const request = window.indexedDB.open(dbName)\n\n request.onupgradeneeded = event => {\n const db = event.target.result\n db.createObjectStore('drawings')\n }\n\n request.onerror = event => {\n reject('indexedDB error opening database')\n }\n\n request.onsuccess = event => {\n const db = event.target.result\n resolve(db)\n }\n})\n\nconst fileStorage = {\n db: null,\n operate: request => new Promise((resolve, reject) => {\n request.onerror = event => reject('fileStorage error', event)\n request.onsuccess = event => resolve(event.target.result)\n }),\n makeRequest: () => {\n const transaction = fileStorage.db.transaction(['drawings'], 'readwrite')\n return transaction.objectStore('drawings')\n },\n get: async (name) => {\n return await fileStorage.operate(fileStorage.makeRequest().get(name))\n },\n getAll: async () => {\n return await fileStorage.operate(fileStorage.makeRequest().getAll())\n },\n set: async (name, blob) => {\n return await fileStorage.operate(fileStorage.makeRequest().put(blob, name))\n },\n clear: async () => {\n return await fileStorage.operate(fileStorage.makeRequest().clear())\n }\n}\n\n// Only for primitive data types and basic objects\nconst usePersistentState = (name, defaultValue) => {\n const [value, setValue] = useState(defaultValue)\n\n useEffect(() => {\n const x = basicStorage.get(name)\n if (x !== null) setValue(JSON.parse(x))\n }, [name])\n\n useEffect(() => {\n basicStorage.set(name, JSON.stringify(value))\n }, [value, name])\n\n return [value, setValue]\n}\n\nconst useIdleTimer = (action, idleTime) => {\n let timer;\n\n const resetTimer = () => {\n if (timer) {\n clearTimeout(timer)\n }\n timer = (setTimeout(action, idleTime))\n }\n\n useEffect(() => {\n resetTimer()\n }, [])\n\n return resetTimer\n}\n\nconst editorRef = createRef()\n\nconst ProblemToTex = () => {\n const classes = useStyles()\n\n useEffect(() => {\n // Styling outside this component\n const prevBodyStyle = document.body.style\n document.body.style.backgroundColor = theme.bg1\n document.body.style.paddingTop = '80px'\n\n const h2 = document.querySelector('h2')\n const prevH2Style = h2.style\n if (h2) {\n h2.style.fontWeight = 700\n h2.style.color = theme.fg2\n h2.style.borderBottom = `4px solid ${theme.fg2}`\n }\n\n const main = document.querySelector('.main')\n const prevMainStyle = main.style\n if (main) {\n main.style.height = 'calc(100vh - 95px)'\n main.style.display = 'flex'\n main.style.flexDirection = 'column'\n }\n\n // Quick hack around Material UI\n const style = document.createElement('style')\n style.innerHTML = `\na:hover {\n color: ${theme.fg1}\n}\n `;\n document.head.appendChild(style)\n\n return () => {\n document.body.style = prevBodyStyle\n h2.style = prevH2Style\n main.style = prevMainStyle\n document.head.removeChild(style)\n }\n }, [])\n\n // Persistent state\n const [drawings, setDrawings] = useState([])\n const [randomFlag, setRandomFlag] = usePersistentState('randomFlag', false)\n const [outputType, setOutputType] = usePersistentState('outputType', outputTypeChoices[0].value)\n const [documentName, setDocumentName] = usePersistentState('documentName', 'untitled')\n\n const editorResetIdleTimer = useIdleTimer(() => {\n const editorContent = getEditorContent(editorRef)\n if (typeof editorContent !== 'string') {\n basicStorage.set('editorContent', JSON.stringify(''))\n } else {\n basicStorage.set('editorContent', JSON.stringify(editorContent))\n }\n }, 500)\n \n const [pdfData, setPdfData] = useState(null)\n const [isLoading, setIsLoading] = useState(false)\n const [compileButtonText, setCompileButtonText] = useState('Compile')\n const [pdfPlaceholder, setPdfPlaceholder] = useState('Press compile to view PDF')\n const [showErrorLog, setShowErrorLog] = useState(false)\n const [errorProblemToTex, setErrorProblemToTex] = useState('')\n const [errorLatex, setErrorLatex] = useState('')\n\n // Restore selected drawings from browser storage\n useEffect(() => {\n const restoreDrawings = async () => {\n fileStorage.db = fileStorage.db || await openFileStorage()\n const storageDrawings = await fileStorage.getAll()\n setDrawings(storageDrawings)\n }\n\n restoreDrawings()\n }, [])\n\n // Restore editor content from browser storage\n useEffect(() => {\n const x = basicStorage.get('editorContent')\n if (x !== null) setEditorContent(editorRef, JSON.parse(x))\n }, [])\n\n useEffect(() => {\n // Save selected drawings to browser storage\n const saveDrawings = async () => {\n fileStorage.db = fileStorage.db || await openFileStorage()\n await fileStorage.clear()\n drawings.forEach(async drawing => await fileStorage.set(drawing.name, drawing))\n }\n \n saveDrawings()\n }, [drawings])\n\n const compile = async () => {\n setIsLoading(true)\n setShowErrorLog(false)\n setCompileButtonText('Compiling...')\n \n const formData = new FormData();\n [...drawings].forEach(x => formData.append('multiplefiles', x))\n formData.append('prbText', getEditorContent(editorRef))\n formData.append('prbName', documentName)\n formData.append('random', randomFlag)\n formData.append('outFlag', outputType)\n formData.append('submit1', 'putDatabase') // temporary\n\n try {\n const response = await axios.post('/uploadprb', formData, {\n headers: {\n 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',\n 'Content-Type': 'multipart/form-data'\n }\n })\n \n if (!response.data) return;\n \n setPdfData(response.data.PdfContent)\n setErrorProblemToTex(response.data.ErrorIcemaker)\n setErrorLatex(response.data.ErrorLatex)\n setIsLoading(false)\n setCompileButtonText('Recompile')\n setShowErrorLog(!response.data.PdfContent)\n } catch (e) {\n console.error(e)\n setIsLoading(false)\n setPdfPlaceholder('Error! Is the server down?')\n setCompileButtonText('Compile')\n }\n }\n\n return (\n <>\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n )\n}\n\nexport default ProblemToTex\n","import React,{useEffect} from 'react';\nimport ProblemToTex from '../ProblemToTex';\n\nconst TryProblem2tex = () => {\n useEffect(()=>{\n document.title='Icewire - Try problem2tex'\n },[])\n return (\n
    \n

    Problem to Tex

    \n \n
    \n );\n};\n\nexport default TryProblem2tex;\n","import React,{useEffect} from 'react';\n\nconst Contact = () => {\n useEffect(()=>{\n document.title='Icewire - Contact'\n },[])\n return
    \n

    \n Contact

    \n

    We are located in Toronto, Canada

    \n

    david.johns@icewire.ca

    \n
    \n};\n\nexport default Contact;\n","import React,{useEffect} from 'react';\n\nconst Donate = () => {\n useEffect(()=>{\n document.title='Icewire - Donate'\n },[])\n return
    \n

    If you find this app useful, consider buying us a hot chocolate (We are not a coffee drinkers)...

    \n
    \n \n \n \n
    \n
    \n};\n\nexport default Donate;\n","import React from 'react';\nimport { HashRouter, Route } from 'react-router-dom';\nimport Home from './pages/Home';\nimport Installation from './pages/Installation';\nimport Header from './Header';\nimport Ltspice2svg from './pages/Ltspice2svg';\nimport Problem2tex from './pages/Problem2tex';\nimport Documentation from './pages/Documentation';\nimport TryLtspice2svg from './pages/TryLtspice2svg';\nimport TryProblem2tex from './pages/TryProblem2tex';\nimport Contact from './pages/Contact';\nimport Donate from './pages/Donate';\n\nconst App = () => {\n return (\n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './components/App';\n\n\nReactDOM.render(\n ,\n document.querySelector('#root')\n);\n\n\n"],"sourceRoot":""}