{"version":3,"sources":["images/TBN1.jpeg","images/TBN2.jpeg","images/TBN3.jpeg","images/varun.jpeg","images/benson.jpeg","images/steven.jpeg","images/kyle.jpeg","images/hasan.jpeg","images/anthony.jpeg","images/TBN.jpeg","images/TBNExample.jpeg","images/InputExample1.png","images/InputExample2.png","components/helpComponents/sidebar.js","components/helpComponents/content.js","components/helpComponents/help.js","components/about.js","components/provider.js","components/computeComponents/monomer.js","components/computeComponents/input.js","components/computeComponents/result.js","components/computeComponents/instruction.js","components/computeComponents/output.js","components/computeComponents/snackbar.js","components/computeComponents/controlPanel.js","components/computeComponents/progress.js","components/computeComponents/compute.js","components/error.js","Routes.js","App.js","serviceWorker.js","index.js","images/logo.png"],"names":["module","exports","SidebarItem","_ref","item","curPadding","rest","collapsed","setCollapsed","React","useState","label","items","Icon","onClick","onClickProperty","expandIcon","Array","isArray","length","createElement","ExpandMoreIcon","className","ExpandLessIcon","Fragment","ListItem","Object","assign","e","button","dense","style","paddingLeft","fontSize","Collapse","in","timeout","unmountOnExit","List","disablePadding","map","subItem","index","key","name","Sidebar","_ref2","depthStep","depth","sidebarItem","Content","Component","constructor","props","super","state","width","height","scrollTo","this","myAboutRef","current","scrollIntoView","myTBNRef","myExRef","myFormatRef","myConstraintRef","myGenRef","myPolyRef","myTRef","myNTRef","myFRef","myNFRef","myPRef","myNPRef","myAPRef","myNAPRef","resizeElementHeight","console","log","body","window","document","innerHeight","parentElement","clientHeight","element","getElementById","offsetTop","setState","innerWidth","createRef","render","Container","fluid","maxWidth","id","src","logo","alt","ref","tbn1","tbn2","tbn3","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","Help","onClickSidebar","contentElement","bind","sidebarItems","InfoIcon","SpeakerNotesIcon","BubbleChartIcon","ViewListIcon","SettingsIcon","TuneIcon","Grid","container","spacing","justify","alignItems","xs","md","xl","useStyles","makeStyles","theme","root","display","flexWrap","large","alignContent","justifyContent","title","margin","lists","padding","About","classes","overflowY","direction","Typography","variant","ListItemText","primary","secondary","sm","lg","Card","CardActionArea","CardContent","CardMedia","Avatar","varun","gutterBottom","component","color","CardActions","IconButton","href","LinkedInIcon","GitHubIcon","benson","kyle","steven","anthony","hasan","MContext","createContext","Provider","arguments","inputData","inputDataText","inputConstraints","inputConstraintsText","gen","minPolymers","dataMissingFlag","errorMessage","noOutputFlag","completeFlag","terminatedFlag","task_id","progress_count","progress_k","calculating","disable_terminate","displayFlag","toggleView","generated","advancedFeatures","result","entropy","count","onExampleChangeHandler","event","exampleName","target","value","constraintsPath","fetch","then","res","text","onDataChangeHandler","dataFileReader","FileReader","inputFile","files","onload","async","readAsText","onDataTextChangeHandler","onConstraintsChangeHandler","constraintsFileReader","onConstraintsTextChangeHandler","onClearDataHandler","onClearConstraintsHandler","onGenBlur","handleControlChange","replace","handleAdvancedFeatures","handleCallback","onClickComputeHandler","dataJson","constraintsJson","inputJson","split","constraint","monomer","JSON","stringify","monomers","constraints","Number","init_k","trackPromise","axios","post","API_URL","headers","jsonResponse","parse","data","request","response","asyncPollingStatus","catch","error","Promise","r","setTimeout","pollingStatus","get","status","configs","k","errMessage","message","onClickTerminateHandler","delete","urlParams","URLSearchParams","location","search","has","input","history","pushState","handleToggle","setFlagState","children","Monomer","line","includes","indexOf","substring","highlightBindingSiteName","stringFormat","Parser","renderMonomer","Chip","bindingSites","renderMonomerWithName","size","monomerName","HtmlTooltip","withStyles","tooltip","backgroundColor","border","Tooltip","UploadButton","Button","ClearButton","Alert","MuiAlert","elevation","Input","onClickCopy","innerHTML","appendChild","select","execCommand","removeChild","copiedFlag","syntaxHighlighting","hoverColor","handleTextAreaFocus","handleTextAreaBlur","_","__","renderSyntaxHighlight","context","highlightedMonomers","trim","removeComment","isComment","extractBindingSites","extractMonomerName","Box","textAlign","borderRadius","borderColor","onMouseEnter","onMouseLeave","renderTBNTextField","TextField","multiline","fullWidth","rowsMax","onChange","onFocus","onBlur","autoFocus","renderConstraintsTextField","renderTBNInputUploadButton","Link","to","arrow","placement","interactive","aria-label","HelpIcon","startIcon","CloudUploadIcon","type","DeleteForever","renderTBNConstraintsUploadButton","renderExampleDropdown","FormControl","NativeSelect","selectedIndex","disabled","selected","renderShareURL","host","hostname","port","toCharCode","LinkIcon","Snackbar","open","autoHideDuration","onClose","severity","str","encode","i","charCodeAt","toString","slice","toUpperCase","charAt","Consumer","Result","downloadedFlag","polymers","stopPropagation","polymer","join","onClickDownload","file","Blob","URL","createObjectURL","download","click","config","listOfPolymers","bindingsites","polymers_count","ExpansionPanel","defaultExpanded","ExpansionPanelSummary","blue","fontWeight","FileCopyIcon","GetAppIcon","ExpansionPanelDetails","ColoredStepper","Stepper","Instruction","letterSpacing","fontStyle","m","align","paddingTop","orientation","connector","StepConnector","visibility","Step","active","StepLabel","Output","FormControlLabel","control","Switch","checked","maxHeight","overflow","Alerts","ComputeButton","ControlPanel","labelPlacement","defaultValue","endIcon","SendIcon","TerminateButton","ProgressBar","promiseInProgress","usePromiseTracker","Loader","StopIcon","Compute","overflowX","Error","Routes","Route","path","exact","LogoToNavigate","push","Logo","ColorPaper","Paper","App","BrowserRouter","square","Tabs","indicatorColor","pathname","Tab","Boolean","match","ReactDOM","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.98ab63d9.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/TBN1.5b219d77.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/TBN2.3a09a6be.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/TBN3.c284bfda.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/varun.c7ae4216.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/benson.13ffc84c.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/steven.c401004d.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/kyle.1ce3dd6f.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/hasan.c7fd0b29.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/anthony.ed2b70cb.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/TBN.3ec514ef.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/TBNExample.f4b41608.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/InputExample1.56779f9c.png\";","module.exports = \"data:image/png;base64,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\"","import React, { Fragment } from \"react\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport \"./styles.css\";\n\n//used https://github.com/jsmanifest/modern-sidebar/blob/master/src/Sidebar.js and trimmed it down\n\nfunction SidebarItem({ item, curPadding = 0, ...rest }) {\n const [collapsed, setCollapsed] = React.useState(true);\n const { label, items, Icon, onClick: onClickProperty } = item;\n\n function onClick(e) {\n if (Array.isArray(items)) {\n setCollapsed(!collapsed);\n }\n if (onClickProperty) {\n onClickProperty(e, item);\n }\n }\n\n let expandIcon;\n\n if (Array.isArray(items) && items.length) {\n expandIcon = !collapsed ? (\n \n ) : (\n \n );\n }\n\n return (\n <>\n \n \n {Icon && }\n
{label}
\n \n {expandIcon}\n \n \n {Array.isArray(items) ? (\n \n {items.map((subItem, index) => (\n \n \n \n ))}\n \n ) : null}\n \n \n );\n}\n\nfunction Sidebar({ items, depthStep, depth }) {\n return (\n
\n \n {items.map((sidebarItem, index) => (\n \n \n {/* */}\n \n ))}\n \n
\n );\n}\n\nexport default Sidebar;\n","import React, { Component } from \"react\";\nimport Container from \"@material-ui/core/Container\";\nimport tbn from \"../../images/TBN.jpeg\";\nimport tbnExample from \"../../images/TBNExample.jpeg\";\nimport tbn1 from \"../../images/TBN1.jpeg\";\nimport tbn2 from \"../../images/TBN2.jpeg\";\nimport tbn3 from \"../../images/TBN3.jpeg\";\n\nimport inputExample1 from \"../../images/InputExample1.png\";\nimport inputExample2 from \"../../images/InputExample2.png\";\nimport logo from \"../../images/logo.png\";\n\nimport \"./styles.css\";\n\nclass Content extends Component {\n state = { width: 0, height: 0 };\n constructor(props) {\n super(props);\n this.myAboutRef = React.createRef();\n this.myTBNRef = React.createRef();\n this.myExRef = React.createRef();\n this.myFormatRef = React.createRef();\n this.myConstraintRef = React.createRef();\n this.myGenRef = React.createRef();\n this.myPolyRef = React.createRef();\n this.myTRef = React.createRef();\n this.myNTRef = React.createRef();\n this.myFRef = React.createRef();\n this.myNFRef = React.createRef();\n this.myPRef = React.createRef();\n this.myNPRef = React.createRef();\n this.myAPRef = React.createRef();\n this.myNAPRef = React.createRef();\n }\n\n scrollTo = (item) => {\n switch (item.name) {\n case \"about\":\n this.myAboutRef.current.scrollIntoView();\n return;\n case \"tbn\":\n this.myTBNRef.current.scrollIntoView();\n return;\n case \"ex\":\n this.myExRef.current.scrollIntoView();\n return;\n case \"format\":\n this.myFormatRef.current.scrollIntoView();\n return;\n case \"constraints\":\n this.myConstraintRef.current.scrollIntoView();\n return;\n case \"gen\":\n this.myGenRef.current.scrollIntoView();\n return;\n case \"polymer\":\n this.myPolyRef.current.scrollIntoView();\n return;\n case \"together\":\n this.myTRef.current.scrollIntoView();\n return;\n case \"nt\":\n this.myNTRef.current.scrollIntoView();\n return;\n case \"free\":\n this.myFRef.current.scrollIntoView();\n return;\n case \"nf\":\n this.myNFRef.current.scrollIntoView();\n return;\n case \"paired\":\n this.myPRef.current.scrollIntoView();\n return;\n case \"np\":\n this.myNPRef.current.scrollIntoView();\n return;\n case \"ap\":\n this.myAPRef.current.scrollIntoView();\n return;\n case \"nap\":\n this.myNAPRef.current.scrollIntoView();\n return;\n default:\n return;\n }\n };\n\n render() {\n return (\n \n \"test\"\n

\n Uses of StableGen\n

\n

\n StableGen is a tool primarily for researchers in the molecular programming community that allows users to:\n

    \n
  • \n \n Find stable configurations of{\" \"}\n Thermodynamic Binding Networks (TBN)\n \n
  • \n
  • \n \n Visualize input monomers and output\n configurations of the system\n \n
  • \n
  • \n \n Add constraints to the system to give the user\n more control over the input\n \n
  • \n
\n

\n
\n

\n What is a TBN?\n

\n

\n The Thermodynamic Binding Networks (TBN) model abstracts the thermodynamics \n of a chemical system as counting the number of bonds and separate complexes.\n A TBN is composed of individual monomers that have one or\n more binding sites that can bind with the binding sites of other\n monomers. TBNs have the following properties:\n

    \n
  • \n \n Complementary binding sites across monomers will bind together\n to form polymers. A configuration\n that maximizes that number of bonds is known as a saturated configuration.{\" \"}\n \n
  • \n
  • \n \n We say the entropy of a configuration is the number of separate polymers.\n Among all saturated configurations, \n the TBN tends towards a state of maximum entropy,\n where the monomers are arranged in a way that maximizes the\n the number of separate polymers formed. This\n is known as a stable configuration. \n \n
  • \n
\n

\n
\n

\n TBN Example\n

\n

\n The following three images display an example of a TBN and two\n possible binding configurations: a{\" \"}\n saturated configuration and a\n stable configuration.\n

\n
\n
\n \"TBN1\"\n
\n The TBN above consists of four monomers: two\n monomers with one binding site and two monomers with two binding\n sites.\n
\n
\n
\n \"TBN2\"\n
\n The configuration above shows an example of a{\" \"}\n saturated configuration for the TBN because the\n configuration maximizes the number of bonds formed.\n
\n
\n
\n \"TBN3\"\n
\n This shows a stable configuration because the\n configuration maximizes the number of bonds and polymers formed.\n The entropy of the system is three as there are\n three polymers formed.{\" \"}\n
\n
\n
\n
\n \n Input Format\n \n
\n

\n In the input, each line represents a monomer{\" \"}\n and each\n space-delineated token represents a{\" \"}\n binding site. In the example shown below,\n

    \n
  • \n \n Monomer 1 has two binding sites: a* and b*\n \n
  • \n
  • \n \n Monomer 2 has two binding sites: a and b\n \n
  • \n
  • \n \n Monomer 3 has one binding site: a\n \n
  • \n
  • \n \n Monomer 4 has one binding site: b\n \n
  • \n
\n

\n

\n a* b*
\n a b
\n a*
\n b*\n

\n
\n
\n

\n There is also an option to label the inputs to be used in\n constraints. To label a binding site, use a colon\n (:) followed by the binding site label you\n would like. To label a monomer, use a{\" \"}\n {\"greater than sign\"} (>) followed by the\n monomer label. In the example shown below,\n

    \n
  • \n \n Monomer 1 has two binding sites: a* (labeled b1) and b*\n \n
  • \n
  • \n \n Monomer 2 (labeled m1) has two binding sites: a and b (labeled\n b2)\n \n
  • \n
  • \n \n Monomer 3 (labeled m2) has one binding site: a\n \n
  • \n
  • \n \n Monomer 4 has one binding site: b\n \n
  • \n
\n

\n

\n a*:b1 b*
\n a b:b2 >m1\n
\n a* >m2\n
\n b*\n

\n
\n
\n \n Constraints\n \n

\n Together\n

\n

\n Specifying TOGETHER attempts to force the specified monomers to\n bind into a polymer:\n

\n
\n

\n  {\"TOGETHER {m1} {m2} {m3} ...\"}\n

\n
\n

\n Not Together\n

\n

\n Specifying NOTTOGETHER prevents two monomers from being in the\n same polymer:\n

\n
\n

 {\"NOTTOGETHER {m1} {m2}\"}

\n
\n

\n Free\n

\n

\n Specifying FREE attempts to force the specified monomer to not\n bind to any other monomer:\n

\n
\n

 {\"FREE {m1}\"}

\n
\n

\n Not Free\n

\n

\n Specifying NOTFREE forces specified monomer to bind to any\n other monomer:\n

\n
\n

 {\"NOTFREE {m1}\"}

\n
\n

\n Paired\n

\n

\n Specifying PAIRED attempts to force two binding sites to bind\n together:\n

\n
\n

 {\"PAIRED {b1} {b2}\"}

\n
\n

\n Not Paired\n

\n

\n Specifying NOTPAIRED prevents two binding sites from binding\n together:\n

\n
\n

 {\"NOTPAIRED {b1} {b2}\"}

\n
\n

\n Any Paired\n

\n

\n Specifying ANYPAIRED forces a binding site to bind to some\n other binding site:\n

\n
\n

 {\"ANYPAIRED {b1}\"}

\n
\n

\n Not Any Paired\n

\n

\n Specifying NOTANYPAIRED attempts to force the specified binding\n site to not bind to any other binding site:\n

\n
\n

 {\"NOTANYPAIRED {b1}\"}

\n
\n
\n

Advanced Features

\n

\n Number of Configurations\n

\n

\n The number of configurations box will attempt to generate n\n stable configurations with the specified constraints if it is\n possible. If there are less than n stable configurations, then it will\n begin finding configurations with n-1 polymers.\n

\n

\n Minimum Polymers\n

\n

\n If you are certain that there will be at least a certain number of\n polymers, specifying the minimum number of polymers will\n greatly speed up calculations for inputs with a lot of monomers. This\n is because the algorithm works by finding stable configurations with 1\n polymer, 2 polymers, etc. until failure. Specifying minimum polymer\n will make it start searching at the number inputted and increase\n upward until failure. If you would like to learn more about how the\n algorithm works, please see the paper in the about page.\n

\n

\n If the algorithm is unable to find a stable configuration in{\" \"}\n 90 seconds the server will timeout.\n If this occurs, there are two solutions. First, if you timeout at a\n polymer count = [x], try to run the computation again with minimum\n polymers set to [x] to reduce earlier computation phases.\n Alternatively, you can run the server locally using Docker or directly\n cloning the project from our GitHub repository. You can find a link to\n our GitHub Repository in the About Page.\n

\n
\n );\n }\n\n resizeElementHeight = () => {\n console.log(\"I GOT CALLED\");\n var height = 0;\n var body = window.document.body;\n if (window.innerHeight) {\n height = window.innerHeight;\n } else if (body.parentElement.clientHeight) {\n height = body.parentElement.clientHeight;\n } else if (body && body.clientHeight) {\n height = body.clientHeight;\n }\n var element = document.getElementById(\"main\");\n if (element != null) {\n element.style.height = height - element.offsetTop + \"px\";\n }\n this.setState({ width: window.innerWidth, height: window.innerHeight });\n };\n\n componentDidMount() {\n console.log(\"I MOUNTED!\");\n this.resizeElementHeight();\n window.addEventListener(\"resize\", this.resizeElementHeight);\n }\n\n componentWillUnmount() {\n console.log(\"I UNMOUNTED!\");\n window.removeEventListener(\"resize\", this.resizeElementHeight);\n }\n}\n\nexport default Content;\n","import React, { Component, Fragment } from \"react\";\nimport Sidebar from \"./sidebar.js\";\nimport Content from \"./content.js\";\nimport Grid from \"@material-ui/core/Grid\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport TuneIcon from \"@material-ui/icons/Tune\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport SpeakerNotesIcon from \"@material-ui/icons/SpeakerNotes\";\nimport BubbleChartIcon from \"@material-ui/icons/BubbleChart\";\nimport SettingsIcon from \"@material-ui/icons/Settings\";\nimport \"./styles.css\";\n\nclass Help extends Component {\n constructor(props) {\n super(props);\n this.contentElement = React.createRef();\n this.onClickSidebar = this.onClickSidebar.bind(this);\n this.sidebarItems = [\n {\n name: \"about\",\n label: \"StableGen Uses\",\n Icon: InfoIcon,\n onClick: this.onClickSidebar,\n },\n {\n name: \"tbn\",\n label: \"What is a TBN?\",\n Icon: SpeakerNotesIcon,\n onClick: this.onClickSidebar,\n },\n {\n name: \"ex\",\n label: \"TBN Example\",\n Icon: BubbleChartIcon,\n onClick: this.onClickSidebar,\n },\n {\n name: \"format\",\n label: \"Input Format\",\n Icon: ViewListIcon,\n onClick: this.onClickSidebar,\n },\n {\n name: \"constraints\",\n label: \"Constraints\",\n Icon: SettingsIcon,\n items: [\n { name: \"together\", label: \"Together\", onClick: this.onClickSidebar },\n { name: \"nt\", label: \"Not Together\", onClick: this.onClickSidebar },\n { name: \"free\", label: \"Free\", onClick: this.onClickSidebar },\n { name: \"nf\", label: \"Not Free\", onClick: this.onClickSidebar },\n { name: \"paired\", label: \"Paired\", onClick: this.onClickSidebar },\n { name: \"np\", label: \"Not Paired\", onClick: this.onClickSidebar },\n { name: \"ap\", label: \"Any Paired\", onClick: this.onClickSidebar },\n {\n name: \"nap\",\n label: \"Not Any Paired\",\n onClick: this.onClickSidebar,\n },\n ],\n },\n {\n name: \"additional\",\n label: \"Advanced Features\",\n Icon: TuneIcon,\n items: [\n {\n name: \"gen\",\n label: \"Number of Configurations\",\n onClick: this.onClickSidebar,\n },\n {\n name: \"polymer\",\n label: \"Minimum Polymers\",\n onClick: this.onClickSidebar,\n },\n ],\n },\n ];\n }\n\n onClickSidebar = (e, item) => this.contentElement.current.scrollTo(item);\n\n state = { width: 0, height: 0 };\n\n render() {\n return (\n \n
\n \n \n \n \n \n \n \n \n
\n
\n );\n }\n}\n\nexport default Help;\n","import React, {Fragment} from \"react\"\nimport Grid from '@material-ui/core/Grid';\nimport Card from '@material-ui/core/Card';\nimport Avatar from '@material-ui/core/Avatar';\nimport CardContent from '@material-ui/core/CardContent';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport CardActions from '@material-ui/core/CardActions';\nimport Typography from '@material-ui/core/Typography';\nimport LinkedInIcon from '@material-ui/icons/LinkedIn';\nimport IconButton from '@material-ui/core/IconButton';\nimport GitHubIcon from '@material-ui/icons/GitHub';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\n\nimport varun from '../images/varun.jpeg';\nimport benson from '../images/benson.jpeg';\nimport steven from '../images/steven.jpeg';\nimport kyle from '../images/kyle.jpeg';\nimport hasan from '../images/hasan.jpeg';\nimport anthony from '../images/anthony.jpeg';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n large: {\n width: theme.spacing(15),\n height: theme.spacing(15),\n },\n container: {\n alignContent: \"flex-start\",\n alignItems: \"center\",\n justify: \"center\",\n justifyContent: \"center\",\n },\n title: {\n margin: theme.spacing(4, 0, 2),\n },\n lists: {\n\n padding: \"5px\"\n }\n\n}));\n\n\nfunction About() {\n const classes = useStyles();\n\n return \n\n \n \n\n \n \n

About

\n

StableGen is an online tool for calculating and visualizing thermodynamically preferred \n (stable) states of abstract chemical systems modeled as Thermodynamic Binding Networks.

\n

Please reach out to the team if you have any feedback about this website: we would love to make\n any changes that you feel would improve the tool. Hope you enjoy it!

\n
\n
\n\n\n \n\n \n \n Acknowledgements\n \n
\n \n
\n \n \n
\n Faculty Mentor\n
\n
\n http://users.ece.utexas.edu/~soloveichik/\n
\n
\n }\n\n />\n \n\n \n \n \n\n \n \n \n
\n\n \n \n
\n\n \n \n References\n \n\n
\n \n \n \n \n \n \n\n \n \n \n\n
\n\n
\n
\n\n \n \n \n Team Members\n \n \n\n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n Varun Prabhu\n \n \n Fullstack Engineer\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 Benson Huang\n \n \n PM/Backend Engineer\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 Kyle Zhou\n \n \n UI/UX Designer\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 Steven Wang\n \n \n Fullstack Engineer\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 Anthony Vento\n \n \n PM/Researcher\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 Hasan Saleemi\n \n \n Backend Engineer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n}\n\nexport default About\n","import React, { Component } from 'react';\nimport axios from 'axios';\nimport { trackPromise } from 'react-promise-tracker';\n\nexport const MContext = React.createContext(); //exporting context object\n\nconst API_URL = \"https://stablegen.net/api\";\n// const API_URL = \"http://198.23.133.106:5005\";\n// const API_URL = \"http://localhost:5005\";\nconst API_TASK = API_URL + \"/task\";\nconst API_STATUS = API_URL + \"/status/\";\nconst API_TERM = API_URL + \"/terminate/\";\n\nclass Provider extends Component {\n\n state = {\n inputData: null,\n inputDataText: \"\",\n inputConstraints: null,\n inputConstraintsText: \"\",\n gen: 1,\n minPolymers: 1,\n\n // for snackbar alerts\n dataMissingFlag: false,\n errorMessage: null,\n noOutputFlag: false,\n completeFlag: false,\n terminatedFlag: false,\n\n // for API calls\n task_id: \"\",\n progress_count: 0,\n progress_k: 0,\n calculating: false,\n disable_terminate: true,\n\n // to display output\n displayFlag: false,\n toggleView: true,\n generated: false,\n advancedFeatures: false,\n\n // output\n result: [],\n entropy: 0,\n count: 0,\n }\n\n componentDidMount() {\n let urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('input')) {\n let input = urlParams.get('input')\n this.setState({\n inputDataText: input\n })\n }\n if (urlParams.has('constraints')) {\n let constraints = urlParams.get('constraints')\n this.setState({\n inputConstraintsText: constraints\n })\n }\n window.history.pushState(\"object or string\", \"Title\", \"/\" );\n }\n\n onExampleChangeHandler = (event) => {\n const exampleName = event.target.value;\n\n const inputPath = process.env.PUBLIC_URL + \"/example_inputs/\" + exampleName + \"/input.txt\";\n const constraintsPath = process.env.PUBLIC_URL + \"/example_inputs/\" + exampleName + \"/constraints.txt\";\n\n fetch(inputPath)\n .then(res => res.text())\n .then(text => {\n console.log(text)\n this.setState({inputDataText: text})\n });\n\n fetch(constraintsPath)\n .then(res => res.text())\n .then(text => this.setState({inputConstraintsText: text}));\n\n }\n\n onDataChangeHandler = (event) => {\n const dataFileReader = new FileReader()\n const inputFile = event.target.files[0];\n dataFileReader.onload = async (e) => {\n this.setState({\n inputData: inputFile,\n inputDataText: e.target.result\n })\n }\n dataFileReader.readAsText(inputFile)\n }\n\n onDataTextChangeHandler = (event) => {\n this.setState({\n inputDataText: event.target.value\n })\n }\n\n onConstraintsChangeHandler = (event) => {\n const constraintsFileReader = new FileReader()\n const inputFile = event.target.files[0];\n constraintsFileReader.onload = async (e) => {\n this.setState({\n inputConstraints: inputFile,\n inputConstraintsText: e.target.result\n })\n }\n constraintsFileReader.readAsText(inputFile)\n }\n\n onConstraintsTextChangeHandler = (event) => {\n this.setState({\n inputConstraintsText: event.target.value\n })\n }\n\n onClearDataHandler = () => {\n console.log(\"Hello\");\n this.setState({\n inputData: null,\n inputDataText: \"\"\n })\n }\n\n onClearConstraintsHandler = () => {\n this.setState({\n inputConstraints: null,\n inputConstraintsText: \"\"\n })\n }\n\n onGenBlur = () => {\n if (this.state.gen <= 0) {\n this.setState({\n gen: 1\n })\n }\n }\n\n handleControlChange = (target, event) => {\n this.setState({\n // only allow integers\n [target]: event.target.value.replace(/\\D/, '')\n })\n }\n\n handleAdvancedFeatures = () => {\n this.setState({\n advancedFeatures: !this.state.advancedFeatures,\n minPolymers: 1,\n gen: 1,\n })\n }\n\n handleCallback = (target) => {\n if (target === \"dataMissingFlag\") {\n this.setState({\n dataMissingFlag: false\n })\n } else if (target === \"errorMessage\") {\n this.setState({\n errorMessage: null,\n terminatedFlag: false,\n })\n } else if (target === \"noOutputFlag\") {\n this.setState({\n noOutputFlag: false\n })\n } else if (target === \"completeFlag\") {\n this.setState({\n completeFlag: false\n })\n } else if (target === \"terminatedFlag\") {\n this.setState({\n terminatedFlag: false\n })\n }\n }\n\n onClickComputeHandler = () => {\n var dataJson\n var constraintsJson\n var inputJson\n\n this.setState({\n calculating: true,\n displayFlag: false,\n disable_terminate: false,\n progress_count: 0,\n progress_k: 0,\n task_id: \"\"\n })\n\n // read constraint file\n if (this.state.inputConstraintsText) {\n var constraints = this.state.inputConstraintsText.split(\"\\n\")\n constraintsJson = constraints.map((constraint) => {\n return constraint.split(\" \")\n })\n }\n\n if (this.state.inputDataText) {\n // read data file\n var monomers = this.state.inputDataText.split(\"\\n\")\n dataJson = monomers.map((monomer) => {\n return monomer.split(\" \")\n })\n inputJson = JSON.stringify({\n monomers: dataJson,\n constraints: constraintsJson,\n gen: Number(this.state.gen),\n init_k: Number(this.state.minPolymers)\n })\n // invoke API\n trackPromise(\n axios.post(API_TASK, inputJson, {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n // handle response\n .then(async (data) => {\n var jsonResponse = JSON.parse(data.request.response)\n this.setState({\n task_id: jsonResponse.task_id\n })\n\n // Long poll while still calculating\n await this.asyncPollingStatus();\n\n })\n .catch(error => {\n // Only for network error\n var errMessage = \"Unexpected Server error occurred, please try again.\";\n this.setState({\n calculating: false,\n errorMessage: errMessage\n })\n })\n );\n } else {\n this.setState({\n calculating: false,\n dataMissingFlag: true\n })\n }\n }\n\n // Asynchronous polling\n asyncPollingStatus = async () => {\n while (this.state.calculating) {\n await new Promise(r => setTimeout(r, 500));\n this.pollingStatus();\n }\n }\n\n // Long Polling for Status of Task!\n pollingStatus = () => {\n axios.get(API_STATUS + this.state.task_id, {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n // handle response\n .then((data) => {\n var jsonResponse = JSON.parse(data.request.response)\n \n if (data.status == 200) {\n this.setState({\n result: jsonResponse.configs,\n entropy: jsonResponse.entropy,\n count: jsonResponse.count,\n calculating: false,\n noOutputFlag: jsonResponse.configs.length === 0,\n completeFlag: true,\n displayFlag: true,\n generated: true,\n })\n }\n else if (data.status == 202) {\n this.setState({\n progress_count: jsonResponse.count,\n progress_k: jsonResponse.k\n })\n }\n })\n .catch(error => {\n // Only for network error\n var errMessage = \"Unexpected Server error occurred, please try again.\";\n if (error.response) {\n errMessage = error.response.data.message\n if (error.response.data.status === \"Timeout\") {\n errMessage += \" during configuration count [\" + this.state.progress_count + \"], attempting to find minimum polymers [\" + this.state.progress_k + \"].\"\n }\n }\n this.setState({\n calculating: false,\n errorMessage: errMessage\n })\n });\n }\n\n onClickTerminateHandler = () => {\n axios.delete(API_TERM + this.state.task_id, {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n // handle response\n .then((data) => {\n var jsonResponse = JSON.parse(data.request.response);\n this.setState({\n disable_terminate: true,\n terminatedFlag: true,\n })\n })\n .catch(error => {\n // Only for network error\n var errMessage = \"Unexpected Server error occurred, please try again.\";\n if (error.response) {\n errMessage = error.response.data.message\n }\n });\n }\n\n render() {\n return (\n this.setState({ toggleView: !this.state.toggleView }),\n onDataChangeHandler: (event) => this.onDataChangeHandler(event),\n onDataTextChangeHandler: (event) => this.onDataTextChangeHandler(event),\n onConstraintsChangeHandler: (event) => this.onConstraintsChangeHandler(event),\n onConstraintsTextChangeHandler: (event) => this.onConstraintsTextChangeHandler(event),\n onGenBlur: (event) => this.onGenBlur(),\n handleControlChange: (target, event) => this.handleControlChange(target, event),\n setFlagState: (target) => this.handleCallback(target),\n onClickComputeHandler: () => this.onClickComputeHandler(),\n onClickTerminateHandler: () => this.onClickTerminateHandler(),\n onExampleChangeHandler: (event) => this.onExampleChangeHandler(event),\n onClearDataHandler: () => this.onClearDataHandler(),\n onClearConstraintsHandler: () => this.onClearConstraintsHandler(),\n handleAdvancedFeatures: () => this.handleAdvancedFeatures(),\n }\n }>\n {this.props.children}\n )\n }\n}\n\nexport default Provider;","import React from 'react';\nimport PropTypes from 'prop-types'\nimport Chip from \"@material-ui/core/Chip\";\nimport Parser from 'html-react-parser';\n\n\nclass Monomer extends React.Component {\n propTypes = {\n bindingSites: PropTypes.string,\n monomerName: PropTypes.string,\n color: PropTypes.string // \"Primary/Secondary\"\n }\n\n static extractBindingSites(line) {\n return line.replace(/ >.*/, '')\n }\n\n static extractMonomerName(line) {\n if (line.includes(' >')) {\n let index = line.indexOf('>')\n return line.substring(index + 1).replace(/ .*/, '')\n } else {\n return null\n }\n }\n\n //replace site:site-name -> site:sitename\n highlightBindingSiteName(line) {\n // .replace(/(\\w+\\*)/g, '$&') // Complement Highlighting?\n var stringFormat = line.replace(/(:\\w+)/g, '$&');\n return {Parser(stringFormat)} \n }\n\n renderMonomer() {\n return \n }\n\n renderMonomerWithName() {\n let label = \n

\n {this.props.monomerName}}\n color={this.props.color}\n variant=\"default\"\n />\n {this.highlightBindingSiteName(this.props.bindingSites)}\n

\n
\n return \n }\n\n render() {\n if (this.props.monomerName) {\n return this.renderMonomerWithName();\n } else {\n return this.renderMonomer()\n }\n }\n}\n\nexport default Monomer;","import React, { Component, Fragment } from 'react';\nimport { MContext } from '../provider';\n\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport CloudUploadIcon from '@material-ui/icons/CloudUpload';\nimport DeleteForever from '@material-ui/icons/DeleteForever';\nimport HelpIcon from '@material-ui/icons/Help';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControl from '@material-ui/core/FormControl';\nimport NativeSelect from '@material-ui/core/NativeSelect';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport { HashLink as Link } from 'react-router-hash-link';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Monomer from './monomer';\nimport '../../App.css';\n\nconst HtmlTooltip = withStyles({\n tooltip: {\n backgroundColor: '#f5f5f9',\n color: 'rgba(0, 0, 0, 0.87)',\n maxWidth: 'none',\n fontSize: 16,\n border: '1px solid #dadde9',\n },\n})(Tooltip);\n\nconst UploadButton = withStyles({\n root: {\n backgroundColor: '#3F88C5',\n },\n})(Button);\n\nconst ClearButton = withStyles({\n root: {\n // backgroundColor: '#EAD6C9', // Uncomment to modify Clear Button color\n },\n})(Button);\n\nfunction Alert(props) {\n return ;\n}\n\nclass Input extends Component {\n constructor() {\n super();\n\n this.state = {\n copiedFlag: false,\n syntaxHighlighting: true,\n hoverColor: 'grey.400',\n };\n\n this.handleTextAreaFocus = this.handleTextAreaFocus.bind(this);\n this.handleTextAreaBlur = this.handleTextAreaBlur.bind(this);\n }\n\n handleTextAreaFocus() {\n this.setState((_, __) => {\n return { syntaxHighlighting: false };\n });\n }\n\n handleTextAreaBlur() {\n this.setState((_, __) => {\n return {\n syntaxHighlighting: true,\n hoverColor: 'grey.400',\n };\n });\n }\n\n renderSyntaxHighlight(context) {\n let highlightedMonomers = context.state.inputDataText\n .trim()\n .split('\\n')\n .map((line) => {\n line = line.trim();\n this.removeComment(line);\n if (this.isComment(line)) {\n return

{line}

;\n } else {\n line = this.removeComment(line).trim();\n if (line) {\n return (\n \n );\n }\n }\n });\n return (\n {\n this.setState({ hoverColor: 'black' });\n }}\n onMouseLeave={() => {\n this.setState({ hoverColor: 'grey.400' });\n }}\n onClick={this.handleTextAreaFocus}\n >\n {/* {'TBN Input'} */}\n {highlightedMonomers}\n \n );\n }\n\n renderTBNTextField(context) {\n let showTextField =\n !this.state.syntaxHighlighting ||\n context.state.inputDataText.trim() === '';\n return showTextField ? (\n \n ) : (\n this.renderSyntaxHighlight(context)\n );\n }\n\n renderConstraintsTextField(context) {\n return (\n \n );\n }\n\n renderTBNInputUploadButton(context) {\n return (\n
\n \n \n Input Format:\n
    \n
  • Each line in the input represents a monomer
  • \n
  • \n {' '}\n Each space-delineated token represents a binding site\n
  • \n
\n If you want to use constraints (optional):\n
    \n
  • To label a monomer, use a greater than sign (>)
  • \n
  • To label a binding site, use a colon (:)
  • \n
\n For more information on input format, please visit{' '}\n Help page.\n \n }\n arrow\n placement='top'\n interactive\n >\n \n \n \n \n }\n >\n Upload TBN Input\n context.onDataChangeHandler(event)}\n />\n \n
\n \n }\n onClick={() => context.onClearDataHandler()}\n >\n Clear\n \n \n
\n );\n }\n\n renderTBNConstraintsUploadButton(context) {\n return (\n
\n \n \n Possible Constraints:\n
    \n
  • {'TOGETHER {m1} {m2} {m3} ...'}
  • \n
  • {'NOTTOGETHER {m1} {m2}'}
  • \n
  • {'FREE {m1}'}
  • \n
  • {'NOTFREE {m1}'}
  • \n
  • {'PAIRED {b1} {b2}'}
  • \n
  • {'NOTPAIRED {b1} {b2}'}
  • \n
  • {'ANYPAIRED {b1}'}
  • \n
  • {'NOTANYPAIRED {b1}'}
  • \n
\n For more information on constraints, please visit{' '}\n Help page.\n \n }\n arrow\n placement='top'\n interactive\n >\n \n \n \n \n }\n >\n Upload Constraints\n context.onConstraintsChangeHandler(event)}\n />\n \n
\n \n }\n onClick={() => context.onClearConstraintsHandler()}\n >\n Clear\n \n \n
\n );\n }\n\n renderExampleDropdown(context) {\n return (\n \n { context.onExampleChangeHandler(event); document.getElementById('select').selectedIndex = 0; }}\n >\n \n \n \n \n \n \n {/* Select an Example Input to try it out! */}\n \n );\n }\n\n renderShareURL(context) {\n let input = context.state.inputDataText;\n let constraints = context.state.inputConstraintsText;\n\n return \n Copy Share URL}\n placement='top'\n arrow\n interactive\n >\n {\n let host = 'http://' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n this.onClickCopy(\n host +\n '?input=' +\n this.toCharCode(input) +\n '&constraints=' +\n this.toCharCode(constraints)\n )\n this.setState({\n copiedFlag: true,\n });\n }}>\n \n \n \n this.setState({ copiedFlag: false })}>\n this.setState({ copiedFlag: false })}\n severity='success'>\n Copied URL to clipboard\n \n \n \n }\n\n onClickCopy = (value) => {\n var input = document.createElement('textarea');\n input.innerHTML = value;\n document.body.appendChild(input);\n input.select();\n document.execCommand('copy');\n document.body.removeChild(input);\n }\n\n toCharCode(str) {\n let encode = ''\n for (let i = 0; i < str.length; i++) {\n encode += '%' + ('0' + (str.charCodeAt(i)).toString(16)).slice(-2).toUpperCase()\n }\n return encode\n }\n\n isComment(line) {\n return line.charAt(0) === '#';\n }\n\n removeComment(line) {\n let regex = /(#.*)/;\n return line.replace(regex, '').trim();\n }\n\n render() {\n return (\n \n {(context) => (\n \n \n \n {this.renderShareURL(context)}\n {this.renderExampleDropdown(context)}\n \n {this.renderTBNTextField(context)}\n {this.renderTBNInputUploadButton(context)}\n
\n {this.renderConstraintsTextField(context)}\n {this.renderTBNConstraintsUploadButton(context)}\n \n
\n )}\n
\n );\n }\n}\n\nexport default Input;\n","import React, { Component, Fragment } from 'react';\nimport {MContext} from \"../provider\";\n\nimport '../../App.css';\nimport Grid from '@material-ui/core/Grid';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport Monomer from './monomer';\nimport { Box } from '@material-ui/core';\nimport { blue } from '@material-ui/core/colors';\n\nfunction Alert(props) {\n return ;\n}\n\nclass Result extends Component {\n state = { \n copiedFlag: false,\n downloadedFlag: false,\n }\n\n setFlagState = (target) => {\n if (target === \"copiedFlag\") {\n this.setState({\n copiedFlag: false\n })\n } else if (target === \"downloadedFlag\") {\n this.setState({\n downloadedFlag: false\n })\n }\n }\n\n onClickCopy = (polymers, e) => {\n e.stopPropagation();\n var listOfPolymers = polymers.map(polymer => {\n var monomers = polymer.map(monomer => {\n return monomer.join(\" \")\n }) \n return monomers.join('\\n')\n })\n\n var result = listOfPolymers.join(\"\\n\\n\")\n \n var input = document.createElement('textarea');\n input.innerHTML = result;\n document.body.appendChild(input);\n input.select();\n document.execCommand('copy');\n document.body.removeChild(input);\n\n this.setState({\n copiedFlag: true\n })\n }\n\n onClickDownload = (polymers, e) => {\n e.stopPropagation();\n var listOfPolymers = polymers.map(polymer => {\n var monomers = polymer.map(monomer => {\n return monomer.join(\" \")\n }) \n return monomers.join('\\n')\n })\n\n var result = listOfPolymers.join(\"\\n\\n\")\n\n const element = document.createElement(\"a\");\n const file = new Blob([result], { type: 'plain/text'});\n element.href = URL.createObjectURL(file);\n element.download = \"output.txt\";\n document.body.appendChild(element); // Required for this to work in FireFox\n element.click();\n\n this.setState({\n downloadedFlag: true\n })\n }\n\n render() { \n return (\n \n \n {(context) => (\n context.state.result.map((config, index) => {\n var listOfPolymers = config.polymers.map((polymers) => {\n var monomers = polymers.map(monomer => {\n var bindingsites = monomer.join(\" \")\n if (context.state.toggleView) {\n return \n } else {\n return

{bindingsites}

\n }\n });\n\n return(\n \n \n \n {monomers}\n \n \n \n )\n \n })\n return( \n \n {(config.polymers_count !== 0) && ( \n \n }>\n \n \n Configuration {index+1} ({config.polymers_count} {config.polymers_count === 1 ? \"polymer\" : \"polymers\"}) {config.polymers_count === context.state.entropy && [Stable] }\n \n \n \n \n Copy Configuration}\n placement=\"top\"\n arrow\n style={{backgroundColor: \"#f5f5f9\"}}\n > \n this.onClickCopy(config.polymers, e)}>\n \n \n \n \n \n Download Configuration}\n placement=\"top\"\n arrow\n > \n this.onClickDownload(config.polymers, e)}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {listOfPolymers}\n \n \n \n \n \n \n )}\n\n this.setFlagState(\"copiedFlag\")}>\n context.setFlagState(\"copiedFlag\")} severity=\"success\">\n Copied output to clipboard\n \n \n this.setFlagState(\"downloadedFlag\")}>\n context.setFlagState(\"downloadedFlag\")} severity=\"success\">\n Downloaded output as textfile\n \n \n \n )\n })\n )}\n
\n
\n );\n }\n}\n \nexport default Result;","import React, { Component } from 'react';\nimport { Card, CardContent, CardActions, Button, Typography, Grid, Box, Step, Stepper, StepLabel, StepConnector } from '@material-ui/core';\nimport '../../App.css';\nimport { blue } from '@material-ui/core/colors';\nimport { Link } from 'react-router-dom';\nimport { withStyles } from \"@material-ui/core/styles\";\n\nconst ColoredStepper = withStyles({\n root: {\n backgroundColor: \"#FFF6F3\",\n margin: 0,\n padding: 0,\n }\n})(Stepper);\n\nclass Instruction extends Component {\n state = { }\n render() { \n return ( \n \n \n \n \n \n Welcome to {\" \"}\n \n \n StableGen\n \n \n , \n \n\n \n \n a tool to compute stable configurations of Thermodynamic Binding Networks (TBN). \n \n \n \n \n Instructions: \n \n }>\n \n \n \n Type or upload your input under TBN Input text box.\n \n \n \n \n \n \n (Optional) Type or upload any additional constraints under Optional Constriants text box.\n \n \n \n \n \n \n (Optional) Turn on Advanced Features toggle to specify number of configurations / minimum polymers.\n \n \n \n \n \n \n Click Generate button to compute the stable configurations of your input.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n \nexport default Instruction;","import React, { Component, Fragment } from 'react';\nimport {MContext} from \"../provider\";\n\nimport '../../App.css';\nimport Result from \"./result\";\nimport Instruction from \"./instruction\";\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Switch from '@material-ui/core/Switch';\nimport Box from '@material-ui/core/Box';\nimport { blue } from '@material-ui/core/colors';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nclass Output extends Component {\n state = { }\n render() { \n return (\n \n \n {(context) => (\n (context.state.displayFlag === true) ? (\n \n {(context.state.entropy !== 0) && (\n \n \n \n Unconstrained Entropy: {context.state.entropy} \n Number of Configurations: {context.state.count} \n \n \n )}\n {(context.state.result.length !== 0) && ( \n \n \n \n context.handleToggle()} />}\n label={ {context.state.toggleView ? \"Chip View\" : \"Plain View\"} }\n />\n \n \n \n )}\n \n \n \n \n \n \n \n \n ) :\n (!context.state.generated && !context.state.calculating && )\n )}\n \n \n );\n }\n}\n \nexport default Output;","import React, { Component, Fragment } from 'react';\nimport {MContext} from \"../provider\";\n\nimport Snackbar from '@material-ui/core/Snackbar';\nimport MuiAlert from '@material-ui/lab/Alert';\n\nfunction Alert(props) {\n return ;\n}\n\nclass Alerts extends Component {\n render() { \n return (\n \n {(context) => (\n \n context.setFlagState(\"dataMissingFlag\")}>\n context.setFlagState(\"dataMissingFlag\")} severity=\"error\">\n Input file is empty!\n \n \n\n context.setFlagState(\"errorMessage\")}>\n context.setFlagState(\"errorMessage\")} severity=\"error\">\n {context.state.errorMessage}\n \n \n\n context.setFlagState(\"noOutputFlag\")}>\n context.setFlagState(\"noOutputFlag\")} severity=\"error\">\n No result satisifies current condition.\n \n \n\n context.setFlagState(\"completeFlag\")}>\n context.setFlagState(\"completeFlag\")} severity=\"success\">\n Computation successfully completed.\n \n \n\n context.setFlagState(\"terminatedFlag\")}>\n context.setFlagState(\"terminatedFlag\")} severity=\"info\">\n Computation has been terminated.\n \n \n\n \n )}\n \n );\n }\n}\n \nexport default Alerts;","import React, { Component, Fragment } from 'react';\nimport {MContext} from \"../provider\";\n\nimport '../../App.css';\nimport Grid from '@material-ui/core/Grid';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport Switch from '@material-ui/core/Switch';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Typography from '@material-ui/core/Typography';\nimport SendIcon from '@material-ui/icons/Send';\nimport { Card, CardContent } from '@material-ui/core';\nimport { withStyles } from \"@material-ui/core/styles\";\n\n\nconst ComputeButton = withStyles({\n root: {\n // backgroundColor: \"#D00000\", // Comment to modify compute button\n }\n})(Button);\n\nclass ControlPanel extends Component {\n state = { \n }\n\n render() {\n return (\n \n {(context) => (\n \n \n \n \n \n \n \n context.handleAdvancedFeatures()}\n />\n }\n label={Advanced Features}\n labelPlacement=\"bottom\"\n />\n \n \n \n \n context.handleControlChange(\"gen\", event)}\n onBlur={() => context.onGenBlur()}\n />\n \n \n context.handleControlChange(\"minPolymers\", event)}\n />\n \n \n \n \n \n \n \n \n context.onClickComputeHandler()}\n endIcon={}>\n Generate\n \n \n \n \n \n )}\n \n );\n }\n}\n \nexport default ControlPanel;","import React from 'react';\nimport { usePromiseTracker } from 'react-promise-tracker';\nimport Loader from 'react-loader-spinner';\nimport { MContext } from \"../provider\";\nimport { Typography, Box } from '@material-ui/core';\nimport { blue } from '@material-ui/core/colors';\nimport StopIcon from '@material-ui/icons/Stop';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from \"@material-ui/core/styles\";\n\nconst TerminateButton = withStyles({\n root: {\n backgroundColor: \"#000000\",\n color: \"#FFFFFF\",\n }\n})(Button);\n\nexport const ProgressBar = (props) => {\n const { promiseInProgress } = usePromiseTracker();\n\n return (\n promiseInProgress && (\n \n {(context) => (\n
\n \n {(context.state.progress_count === 0 && context.state.progress_k === 0) ? \n (\n \n Encoding...\n \n ) :\n (\n Current configuration: {context.state.progress_count} \n Attempting to find a configuration with {context.state.progress_k} polymers...\n )}\n
\n context.onClickTerminateHandler()}\n endIcon={}>\n Terminate\n \n
\n )}\n
\n )\n );\n};","import React, { Component, Fragment } from 'react';\nimport Input from \"./input\";\nimport Output from \"./output\";\n\nimport '../../App.css';\nimport Grid from '@material-ui/core/Grid';\nimport Alerts from './snackbar';\nimport ControlPanel from './controlPanel';\nimport { ProgressBar } from './progress';\n\nclass Compute extends Component {\n state = { }\n render() { \n return ( \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n \n
\n );\n }\n}\n \nexport default Compute;","import React from \"react\"\n\nfunction Error() {\n return

Page not found!

\n};\n\nexport default Error\n","import React from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Help from \"./components/helpComponents/help\";\nimport About from \"./components/about\";\nimport Compute from \"./components/computeComponents/compute\";\nimport Error from \"./components/error\";\n\nexport default function Routes() {\n return (\n \n \n \n \n \n \n );\n}","import React from \"react\";\n\nimport Paper from '@material-ui/core/Paper';\nimport Tabs from \"@material-ui/core/Tabs\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Routes from \"./Routes\"\nimport logo from \"./images/logo.png\";\nimport { Route, Link, BrowserRouter } from \"react-router-dom\";\nimport { withStyles, withTheme} from \"@material-ui/core/styles\";\nimport Provider from './components/provider.js';\n\nimport \"./App.css\";\n\nconst LogoToNavigate = ({ history }) => (\n \"StableGen\" history.push(\"/\")} className=\"Logo\" />\n);\n\nconst Logo = () => (\n } />\n);\n\nconst ColorPaper = withStyles({\n root: {\n color: \"black\",\n backgroundColor: \"#FAFAFA\"\n }\n})(Paper);\n\nfunction App() {\n return (\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 App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { BrowserRouter } from 'react-router-dom';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/logo.14440365.png\";"],"sourceRoot":""}