{"version":3,"sources":["api/index.ts","config.ts","hooks/index.ts","App/AppMenu/index.tsx","components/StepsProgress.tsx","App/SideMenu/index.tsx","App/Step1/SpacerError.jsx","App/Step1/Step1Form.tsx","api/events.ts","App/Step1/Submit.tsx","App/Step1/index.tsx","components/SequenceOptionsDropDown.tsx","App/Step2/Step2Form.tsx","App/Step2/Submit.tsx","App/Step2/index.tsx","App/Step3/Statistic.tsx","App/Step3/RTTemplates.tsx","App/Step3/PBSOptions.tsx","App/Step3/Step3Form.tsx","App/Step3/Submit.tsx","App/Step3/PegRNAWarnings.jsx","App/Step3/index.tsx","App/Step4/PE3Options.tsx","App/Step4/Step4Form.tsx","App/Step4/Submit.tsx","App/Step4/Pe3Warnings.jsx","App/Step4/index.tsx","App/Step5/FullResultsButton.tsx","components/Copy.tsx","App/Step5/CloningStrategyDropdown.tsx","App/Step5/PegRNA.tsx","App/Step5/Pe3sgRNA.tsx","App/Step5/SpacersgRNA.tsx","App/Step5/index.tsx","App/About/index.tsx","App/GettingStarted/index.tsx","App/index.tsx","index.tsx"],"names":["i","mixpanel","init","generateTemplateOptions","wtSeq","mut","spacer","pam","minPbs","maxPbs","minRt","maxRt","fetch","method","body","JSON","stringify","res","json","generatePrimerBindingSiteOptions","generatePe3Options","generateMutSeq","generateCleanWtSeq","generatePegRNA","rtt","pbs","generateSgRNA","pe3","generateSpacerSgRNA","generateSpacers","spacerOptions","generateWarnings","generateCSV","text","responseText","url","window","URL","createObjectURL","Blob","link","document","createElement","id","href","setAttribute","headers","get","appendChild","click","elem","querySelector","parentNode","removeChild","trackEvent","event","track","getGlobalState","customSpacer","selectedTemplateOption","rt","selectedSpacerOption","selectedPbsOption","selectedPe3Option","secondGuide","selectedPe3OptionType","type","cleanWtSeq","cleanMutSeq","pegRNA","sequence","pe3sgRNASense","sense","pe3sgRNAAntiSense","antisense","createGlobalState","menuTab","templateOptions","pbsOptions","pe3Options","step","pe3sgRNA","spacersgRNA","warnings","general","pegRna","spacerError","step2Loading","step3Loading","spacerCutError","step4Loading","step5Loading","cloningStrategy","step3Advanced","useGlobalState","useSequencePredictions","setTemplateOptions","setWtSeq","setMut","setSpacer","setPam","setMinPbs","setMaxPbs","setMinRt","setMaxRt","setPBSOptions","setPe3Options","setPegRNA","setPe3sgRNA","setSpacersgRNA","setSelectedSpacerOption","setSelectedTemplateOption","setSelectedPbsOption","setSelectedPe3Option","setWarnings","toUpperCase","length","pamStart","cutPE3","cutDiff","rcSecondGuide","updatePegRNA","updateSgRNA","globalSpacer","globalSelectedTemplateOption","globalSelectedPbsOption","globalSelectedPe3Option","sgRNA","updateSelectedTemplateOption","option","updateSelectedPbsOption","updateSelectedPe3Option","updateSequencePredictions","useWtSeq","useMut","usePam","useMinPbs","useMaxPbs","useMinRt","useMaxRt","useSpacerOptions","setSpacerOptions","useSpacerError","setSpacerError","useStep","setStep","useStep3Loading","setStep3Loading","useStep4Loading","setStep4Loading","useStep5Loading","setStep5Loading","useCloningStrategy","setCloningStrategy","useStep3Advanced","setStep3Advanced","useMenuTab","setMenuTab","navCallback","tab","AppMenu","Menu","secondary","pointing","style","position","top","left","width","backgroundColor","zIndex","marginBottom","paddingLeft","Item","name","active","onClick","as","onClickFactory","target","getElementById","scrollIntoView","block","behavior","Steps","vertical","Step","Group","ordered","size","completed","Content","Description","disabled","SideMenu","className","alt","src","display","justifyContent","StepsProgress","SpacerError","Message","warning","MessageHeader","SubmitForm","state","showAdvanced","handleChange","e","value","setState","newState","calcRtRange","handleRTChange","handleSubmit","props","onSubmit","parseInt","handleAdvancedToggle","preventDefault","mutLength","toString","this","Form","Input","label","placeholder","onChange","required","Divider","Button","content","loading","primary","basic","Component","submit","Submit","setCustomSpacer","useCustomSpacer","setStep2Loading","useStep2Loading","setSpacerCutError","useSpacerCutError","finalSpacerOptions","customSpacerOption","cutToMut","quality","apiSpacerOptions","Events","setTimeout","nextStep","Step1Form","Step1","height","Grid","Row","Column","Segment","color","undefined","SequenceOptionsDropdown","options","_","title","Dropdown","map","o","key","selection","scrolling","defaultProps","onChangeFactory","Step2Form","getCleanWtSeq","setCleanWtSeq","useCleanWtSeq","getCleanMutSeq","setCleanMutSeq","useCleanMutSeq","events","Step2","Statistic","margin","renderValue","find","t","RTTemplates","fhr","fhrGC","fhrLength","rtLength","rtPolyT","rtTM","PbsOptions","p","PBSOptions","pbsGC","pbsPolyT","pbsTM","handleAdvancedToggleFactory","Step3Form","flexGrow","paddingRight","PegRNAWarnings","PE3OptionsDropdownAvatar","selectedOption","filter","image","PE3Options","Step4Form","Pe3Warnings","FullResultsButton","Copy","helpText","isOpen","handleCopy","copy","console","log","handleMouseOver","handleMouseLeave","Popup","open","trigger","Icon","onMouseOver","onMouseLeave","handleChangeFactory","CloningStrategyDropdown","defaultValue","getSequence","annotations","a","join","getCloningStrategyAnnotations","includes","PegRNA","usePegRNA","seen","Set","item","k","has","add","uniqBy","marginTop","flexDirection","right","annotation","borderRadius","marginLeft","marginRight","wordBreak","padding","Pe3sgRNA","setPe3SgRNA","usePe3sgRNA","SpacersgRNA","Step5","AboutContent","AboutContainer","GettingStartedContent","App","overflow","centered","Step3","Step4","About","GettingStarted","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.3a36750d.chunk.js","sourcesContent":["import { API_ROOT, MIXPANEL_KEY } from '../config';\nimport { SpacerOption } from '../types/presto';\nimport mixpanel from 'mixpanel-browser';\nimport { getGlobalState } from '../hooks';\nmixpanel.init(MIXPANEL_KEY);\n\nexport const generateTemplateOptions = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/rt`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generatePrimerBindingSiteOptions = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/pbs`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generatePe3Options = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/pe3`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generateMutSeq = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/mutSeq`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generateCleanWtSeq = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/cleanWtSeq`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generatePegRNA = async (\n spacer: string,\n rtt: string,\n pbs: string,\n) => {\n const res = await fetch(`${API_ROOT}/generate/pegrna`, {\n method: 'post',\n body: JSON.stringify({ spacer, rtt, pbs }),\n });\n return await res.json();\n};\n\nexport const generateSgRNA = async (pe3: string) => {\n const res = await fetch(`${API_ROOT}/generate/sgrna`, {\n method: 'post',\n body: JSON.stringify({ pe3 }),\n });\n return await res.json();\n};\n\nexport const generateSpacerSgRNA = async (spacer: string) => {\n const res = await fetch(`${API_ROOT}/generate/spacer_sgrna`, {\n method: 'post',\n body: JSON.stringify({ spacer, wtSeq: '', mut: '' }),\n });\n return await res.json();\n};\n\nexport const generateSpacers = async (\n wtSeq: string,\n mut: string,\n pam: string,\n) => {\n const res = await fetch(`${API_ROOT}/generate/spacers`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer: '',\n pam,\n }),\n });\n const spacerOptions: SpacerOption[] = await res.json();\n return spacerOptions;\n};\n\nexport const generateWarnings = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/warnings`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n return await res.json();\n};\n\nexport const generateCSV = async (\n wtSeq: string,\n mut: string,\n spacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n) => {\n const res = await fetch(`${API_ROOT}/generate/csv`, {\n method: 'post',\n body: JSON.stringify({\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n }),\n });\n const responseText = await res.text();\n const url = window.URL.createObjectURL(new Blob([responseText]));\n const link = document.createElement('a');\n link.id = 'download';\n link.href = url;\n link.setAttribute('download', res.headers.get('FileName') || 'presto.csv');\n document.body.appendChild(link);\n link.click();\n\n const elem = document.querySelector('#download');\n\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n};\n\nexport const trackEvent = (event: string) => {\n mixpanel.track(event, {\n wtSeq: getGlobalState('wtSeq'),\n mut: getGlobalState('mut'),\n spacer: getGlobalState('spacer'),\n customSpacer: getGlobalState('customSpacer'),\n pam: getGlobalState('pam'),\n minPbs: getGlobalState('minPbs'),\n maxPbs: getGlobalState('maxPbs'),\n minRt: getGlobalState('minRt'),\n maxRt: getGlobalState('maxRt'),\n selectedTemplateOption: getGlobalState('selectedTemplateOption')?.rt,\n selectedSpacerOption: getGlobalState('selectedSpacerOption')?.spacer,\n selectedPbsOption: getGlobalState('selectedPbsOption')?.pbs,\n selectedPe3Option: getGlobalState('selectedPe3Option')?.secondGuide,\n selectedPe3OptionType: getGlobalState('selectedPe3Option')?.type,\n cleanWtSeq: getGlobalState('cleanWtSeq'),\n cleanMutSeq: getGlobalState('cleanMutSeq'),\n pegRNA: getGlobalState('pegRNA')?.sequence,\n pe3sgRNASense: getGlobalState('pe3sgRNA')?.sense,\n pe3sgRNAAntiSense: getGlobalState('pe3sgRNA')?.antisense,\n });\n};\n","export const API_ROOT =\n process.env.NODE_ENV === 'development' ? 'http://127.0.0.1:5000' : '';\n\nexport const MIXPANEL_KEY = \"05822e9dadcdca6fdf3c42405905bb0e\";","import {\r\n generateTemplateOptions,\r\n generateCleanWtSeq,\r\n generateMutSeq,\r\n generatePrimerBindingSiteOptions,\r\n generatePe3Options,\r\n generatePegRNA,\r\n generateSgRNA,\r\n generateSpacerSgRNA,\r\n generateWarnings,\r\n} from '../api';\r\nimport {\r\n GlobalState,\r\n PBSOption,\r\n PE3Option,\r\n TemplateOption,\r\n} from '../types/presto';\r\nimport { createGlobalState } from 'react-hooks-global-state';\r\n\r\nconst initialState: GlobalState = {\r\n menuTab: 'home',\r\n wtSeq: '',\r\n mut: '',\r\n spacer: '',\r\n customSpacer: '',\r\n pam: 'NGG',\r\n minPbs: 8,\r\n maxPbs: 18,\r\n minRt: 9,\r\n maxRt: 16,\r\n templateOptions: [],\r\n selectedTemplateOption: null,\r\n spacerOptions: [],\r\n selectedSpacerOption: null,\r\n pbsOptions: [],\r\n selectedPbsOption: null,\r\n pe3Options: [],\r\n selectedPe3Option: null,\r\n cleanWtSeq: '',\r\n cleanMutSeq: '',\r\n step: 0,\r\n pegRNA: null,\r\n pe3sgRNA: { sense: '', antisense: '' },\r\n spacersgRNA: { sense: '', antisense: '' },\r\n warnings: {\r\n general: [],\r\n pegRna: [],\r\n pe3: [],\r\n },\r\n spacerError: false,\r\n step2Loading: false,\r\n step3Loading: false,\r\n spacerCutError: false,\r\n step4Loading: false,\r\n step5Loading: false,\r\n cloningStrategy: 'Richardson & Steyert et al. 2021',\r\n step3Advanced: false,\r\n};\r\n\r\nexport const { useGlobalState, getGlobalState } = createGlobalState(\r\n initialState,\r\n);\r\n\r\nexport function useSequencePredictions() {\r\n const [templateOptions, setTemplateOptions] = useGlobalState(\r\n 'templateOptions',\r\n );\r\n\r\n const [wtSeq, setWtSeq] = useGlobalState('wtSeq');\r\n const [mut, setMut] = useGlobalState('mut');\r\n const [spacer, setSpacer] = useGlobalState('spacer');\r\n\r\n const [pam, setPam] = useGlobalState('pam');\r\n const [minPbs, setMinPbs] = useGlobalState('minPbs');\r\n const [maxPbs, setMaxPbs] = useGlobalState('maxPbs');\r\n const [minRt, setMinRt] = useGlobalState('minRt');\r\n const [maxRt, setMaxRt] = useGlobalState('maxRt');\r\n\r\n const [pbsOptions, setPBSOptions] = useGlobalState('pbsOptions');\r\n const [pe3Options, setPe3Options] = useGlobalState('pe3Options');\r\n const [pegRNA, setPegRNA] = useGlobalState('pegRNA');\r\n const [pe3sgRNA, setPe3sgRNA] = useGlobalState('pe3sgRNA');\r\n const [spacersgRNA, setSpacersgRNA] = useGlobalState('spacersgRNA');\r\n const [selectedSpacerOption, setSelectedSpacerOption] = useGlobalState(\r\n 'selectedSpacerOption',\r\n );\r\n const [selectedTemplateOption, setSelectedTemplateOption] = useGlobalState(\r\n 'selectedTemplateOption',\r\n );\r\n const [selectedPbsOption, setSelectedPbsOption] = useGlobalState(\r\n 'selectedPbsOption',\r\n );\r\n const [selectedPe3Option, setSelectedPe3Option] = useGlobalState(\r\n 'selectedPe3Option',\r\n );\r\n const [warnings, setWarnings] = useGlobalState('warnings');\r\n\r\n async function updateSequencePredictions(\r\n wtSeq: string,\r\n mut: string,\r\n spacer: string,\r\n pam: string,\r\n minPbs: number,\r\n maxPbs: number,\r\n minRt: number,\r\n maxRt: number,\r\n ) {\r\n setTemplateOptions(\r\n await generateTemplateOptions(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n ),\r\n );\r\n\r\n setWarnings(\r\n await generateWarnings(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n ),\r\n );\r\n\r\n setWtSeq(wtSeq.toUpperCase());\r\n setMut(mut.toUpperCase());\r\n setSpacer(spacer.toUpperCase());\r\n\r\n setPam(pam.toUpperCase());\r\n setMinPbs(minPbs);\r\n setMaxPbs(maxPbs);\r\n setMinRt(minRt);\r\n setMaxRt(maxRt);\r\n\r\n if (getGlobalState('templateOptions').length > 0) {\r\n setSelectedTemplateOption(getGlobalState('templateOptions')[0]);\r\n }\r\n setPBSOptions(\r\n await generatePrimerBindingSiteOptions(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n ),\r\n );\r\n if (getGlobalState('pbsOptions').length > 0) {\r\n setSelectedPbsOption(getGlobalState('pbsOptions')[0]);\r\n }\r\n const pe3Options: PE3Option[] = await generatePe3Options(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n );\r\n setPe3Options([\r\n ...pe3Options,\r\n {\r\n pamStart: 0,\r\n cutPE3: 0,\r\n cutDiff: 0,\r\n secondGuide: 'None',\r\n rcSecondGuide: 'None',\r\n type: 'None',\r\n },\r\n ]);\r\n if (getGlobalState('pe3Options').length > 0) {\r\n setSelectedPe3Option(getGlobalState('pe3Options')[0]);\r\n }\r\n\r\n updatePegRNA();\r\n updateSgRNA();\r\n }\r\n\r\n async function updatePegRNA() {\r\n const globalSpacer = getGlobalState('spacer');\r\n const globalSelectedTemplateOption = getGlobalState(\r\n 'selectedTemplateOption',\r\n );\r\n const globalSelectedPbsOption = getGlobalState('selectedPbsOption');\r\n if (globalSelectedTemplateOption && globalSelectedPbsOption) {\r\n const pegRNA = await generatePegRNA(\r\n globalSpacer.toUpperCase(),\r\n globalSelectedTemplateOption.rt.toUpperCase(),\r\n globalSelectedPbsOption.pbs.toUpperCase(),\r\n );\r\n setPegRNA(pegRNA);\r\n }\r\n }\r\n\r\n function updateSelectedTemplateOption(option: TemplateOption) {\r\n setSelectedTemplateOption(option);\r\n updatePegRNA();\r\n }\r\n\r\n function updateSelectedPbsOption(option: PBSOption) {\r\n setSelectedPbsOption(option);\r\n updatePegRNA();\r\n }\r\n\r\n function updateSelectedPe3Option(option: PE3Option) {\r\n setSelectedPe3Option(option);\r\n updateSgRNA();\r\n }\r\n\r\n async function updateSgRNA() {\r\n const globalSelectedPe3Option = getGlobalState('selectedPe3Option');\r\n const globalSpacer = getGlobalState('spacer');\r\n if (globalSelectedPe3Option) {\r\n const sgRNA = await generateSgRNA(\r\n globalSelectedPe3Option.secondGuide.toUpperCase(),\r\n );\r\n setPe3sgRNA(sgRNA);\r\n }\r\n\r\n const spacersgRNA = await generateSpacerSgRNA(globalSpacer);\r\n setSpacersgRNA(spacersgRNA);\r\n }\r\n\r\n return {\r\n wtSeq,\r\n mut,\r\n spacer,\r\n pam,\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n templateOptions,\r\n pbsOptions,\r\n selectedPbsOption,\r\n pe3Options,\r\n pegRNA,\r\n pe3sgRNA,\r\n spacersgRNA,\r\n warnings,\r\n setSpacer,\r\n selectedTemplateOption,\r\n selectedPe3Option,\r\n updateSelectedTemplateOption,\r\n updateSelectedPbsOption,\r\n updateSelectedPe3Option,\r\n updateSequencePredictions,\r\n updatePegRNA,\r\n updateSgRNA,\r\n selectedSpacerOption,\r\n setSelectedSpacerOption,\r\n };\r\n}\r\n\r\n//export function whereMutCut() {\r\n// const [mutCut, setMutCut] = useGlobalState('mutCut');\r\n// async function getWhereMutCut(\r\n// wtseq: string,\r\n// cut: number,\r\n// mutloc: number, \r\n// )\r\n//}\r\n\r\nexport function useCleanWtSeq() {\r\n const [cleanWtSeq, setCleanWtSeq] = useGlobalState('cleanWtSeq');\r\n async function getCleanWtSeq(\r\n wtSeq: string,\r\n mut: string,\r\n spacer: string,\r\n pam: string,\r\n minPbs: number,\r\n maxPbs: number,\r\n minRt: number,\r\n maxRt: number,\r\n ) {\r\n const { sequence } = await generateCleanWtSeq(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n );\r\n setCleanWtSeq(sequence);\r\n }\r\n return {\r\n cleanWtSeq,\r\n getCleanWtSeq,\r\n };\r\n}\r\nexport function useCleanMutSeq() {\r\n const [cleanMutSeq, setCleanMutSeq] = useGlobalState('cleanMutSeq');\r\n async function getCleanMutSeq(\r\n wtSeq: string,\r\n mut: string,\r\n spacer: string,\r\n pam: string,\r\n minPbs: number,\r\n maxPbs: number,\r\n minRt: number,\r\n maxRt: number,\r\n ) {\r\n const { sequence } = await generateMutSeq(\r\n wtSeq.toUpperCase(),\r\n mut.toUpperCase(),\r\n spacer.toUpperCase(),\r\n pam.toUpperCase(),\r\n minPbs,\r\n maxPbs,\r\n minRt,\r\n maxRt,\r\n );\r\n setCleanMutSeq(sequence);\r\n }\r\n return {\r\n cleanMutSeq,\r\n getCleanMutSeq,\r\n };\r\n}\r\n\r\nexport function useWtSeq() {\r\n const [wtSeq, setWtSeq] = useGlobalState('wtSeq');\r\n\r\n return {\r\n wtSeq,\r\n setWtSeq,\r\n };\r\n}\r\n\r\nexport function useMut() {\r\n const [mut, setMut] = useGlobalState('mut');\r\n\r\n return {\r\n mut,\r\n setMut,\r\n };\r\n}\r\n\r\nexport function useCustomSpacer() {\r\n const [customSpacer, setCustomSpacer] = useGlobalState('customSpacer');\r\n\r\n return {\r\n customSpacer,\r\n setCustomSpacer,\r\n };\r\n}\r\n\r\nexport function usePam() {\r\n const [pam, setPam] = useGlobalState('pam');\r\n\r\n return {\r\n pam,\r\n setPam,\r\n };\r\n}\r\n\r\nexport function useMinPbs() {\r\n const [minPbs, setMinPbs] = useGlobalState('minPbs');\r\n\r\n return {\r\n minPbs,\r\n setMinPbs,\r\n };\r\n}\r\n\r\nexport function useMaxPbs() {\r\n const [maxPbs, setMaxPbs] = useGlobalState('maxPbs');\r\n\r\n return {\r\n maxPbs,\r\n setMaxPbs,\r\n };\r\n}\r\n\r\nexport function useMinRt() {\r\n const [minRt, setMinRt] = useGlobalState('minRt');\r\n\r\n return {\r\n minRt,\r\n setMinRt,\r\n };\r\n}\r\n\r\nexport function useMaxRt() {\r\n const [maxRt, setMaxRt] = useGlobalState('maxRt');\r\n\r\n return {\r\n maxRt,\r\n setMaxRt,\r\n };\r\n}\r\n\r\nexport function useSpacerOptions() {\r\n const [spacerOptions, setSpacerOptions] = useGlobalState('spacerOptions');\r\n\r\n return {\r\n spacerOptions,\r\n setSpacerOptions,\r\n };\r\n}\r\n\r\nexport function usePegRNA() {\r\n const [pegRNA, setPegRNA] = useGlobalState('pegRNA');\r\n\r\n return {\r\n pegRNA,\r\n setPegRNA,\r\n };\r\n}\r\n\r\nexport function usePe3sgRNA() {\r\n const [pe3sgRNA, setPe3SgRNA] = useGlobalState('pe3sgRNA');\r\n\r\n return {\r\n pe3sgRNA,\r\n setPe3SgRNA,\r\n };\r\n}\r\n\r\nexport function useSpacerError() {\r\n const [spacerError, setSpacerError] = useGlobalState('spacerError');\r\n return {\r\n spacerError,\r\n setSpacerError,\r\n };\r\n}\r\n\r\nexport function useSpacerCutError() {\r\n const [spacerCutError, setSpacerCutError] = useGlobalState('spacerCutError');\r\n return {\r\n spacerCutError,\r\n setSpacerCutError,\r\n };\r\n}\r\n\r\n\r\nexport function useStep() {\r\n const [step, setStep] = useGlobalState('step');\r\n return {\r\n step,\r\n setStep,\r\n };\r\n}\r\n\r\nexport function useStep2Loading() {\r\n const [step2Loading, setStep2Loading] = useGlobalState('step2Loading');\r\n return {\r\n step2Loading,\r\n setStep2Loading,\r\n };\r\n}\r\n\r\nexport function useStep3Loading() {\r\n const [step3Loading, setStep3Loading] = useGlobalState('step3Loading');\r\n return {\r\n step3Loading,\r\n setStep3Loading,\r\n };\r\n}\r\nexport function useStep4Loading() {\r\n const [step4Loading, setStep4Loading] = useGlobalState('step4Loading');\r\n return {\r\n step4Loading,\r\n setStep4Loading,\r\n };\r\n}\r\n\r\nexport function useStep5Loading() {\r\n const [step5Loading, setStep5Loading] = useGlobalState('step5Loading');\r\n return {\r\n step5Loading,\r\n setStep5Loading,\r\n };\r\n}\r\n\r\nexport function useCloningStrategy() {\r\n const [cloningStrategy, setCloningStrategy] = useGlobalState(\r\n 'cloningStrategy',\r\n );\r\n return {\r\n cloningStrategy,\r\n setCloningStrategy,\r\n };\r\n}\r\n\r\nexport function useStep3Advanced() {\r\n const [step3Advanced, setStep3Advanced] = useGlobalState('step3Advanced');\r\n return {\r\n step3Advanced,\r\n setStep3Advanced,\r\n };\r\n}\r\n\r\nexport function useMenuTab() {\r\n const [menuTab, setMenuTab] = useGlobalState('menuTab');\r\n return {\r\n menuTab,\r\n setMenuTab,\r\n };\r\n}\r\n","import React, { SetStateAction } from 'react';\nimport { Menu } from 'semantic-ui-react';\nimport { API_ROOT } from '../../config';\nimport { useMenuTab } from '../../hooks';\n\nfunction navCallback(\n tab: string,\n setMenuTab: (u: SetStateAction) => void,\n) {\n setMenuTab(tab);\n // window.history.pushState(null, '', `${tab}`);\n}\n\n// function ensureLocation(\n// menuTab: string,\n// setMenuTab: (u: SetStateAction) => void,\n// ) {\n// const locationTab = window.document.location.pathname.replace('/', '');\n// if (locationTab !== menuTab) {\n// setMenuTab(locationTab);\n// }\n// }\n\n// const IS_REGISTERED = false;\n// function registerOnPopState(\n// menuTab: string,\n// setMenuTab: (u: SetStateAction) => void,\n// ) {\n// if (!IS_REGISTERED) {\n// window.onpopstate = function (event: PopStateEvent) {\n// ensureLocation(menuTab, setMenuTab);\n// };\n// }\n// }\n\nconst AppMenu = () => {\n const { menuTab, setMenuTab } = useMenuTab();\n return (\n \n navCallback('home', setMenuTab)}\n as=\"as\"\n >\n navCallback('about', setMenuTab)}\n >\n navCallback('getting_started', setMenuTab)}\n >\n \n );\n};\n\nexport default AppMenu;\n","import React from 'react';\nimport { Step } from 'semantic-ui-react';\n\ntype Props = {\n step: number;\n vertical?: boolean;\n};\n\nconst onClickFactory = (step: number) => () => {\n const target = document.getElementById(`step-${step}-container`);\n if (target) {\n target.scrollIntoView({ block: 'end', behavior: 'smooth' });\n }\n};\n\nconst Steps = ({ step = 0, vertical = false }: Props) => (\n \n 0} active={step === 0} onClick={onClickFactory(1)}>\n \n Enter Sequence\n \n \n\n 1}\n active={step === 1}\n disabled={step < 1}\n onClick={onClickFactory(2)}\n >\n \n Select your spacer\n \n \n\n 2}\n active={step === 2}\n disabled={step < 2}\n onClick={onClickFactory(3)}\n >\n \n Design your pegRNA\n \n \n\n 3}\n active={step === 3}\n disabled={step < 3}\n onClick={onClickFactory(4)}\n >\n \n Choose a PE3 sequence\n \n \n\n 4}\n active={step === 4}\n disabled={step < 4}\n onClick={onClickFactory(5)}\n >\n \n Cloning strategy\n \n \n \n);\n\nexport default Steps;\n","import React, { Fragment, SetStateAction } from 'react';\nimport { useStep } from '../../hooks';\nimport { Grid, Icon } from 'semantic-ui-react';\nimport AppSteps from '../AppSteps';\nimport StepsProgress from '../../components/StepsProgress';\nimport { API_ROOT } from '../../config';\n\nconst onClickFactory =\n (step: number, setStep: (u: SetStateAction) => void) => () => {\n const target = document.getElementById(`step-${step}-container`);\n if (target) {\n target.scrollIntoView({ block: 'end', behavior: 'smooth' });\n // setStep(step - 1);\n }\n };\n\nconst steps = [\n {\n number: 1,\n name: 'Start',\n description: 'Enter Sequence information',\n },\n {\n number: 2,\n name: 'Spacer',\n description: 'Select your spacer',\n },\n {\n number: 3,\n name: 'pegRNA',\n description: 'Design your pegRNA',\n },\n {\n number: 4,\n name: 'PE3',\n description: 'Choose a PE3 sequence',\n },\n {\n number: 5,\n name: 'Cloning',\n description: 'Choose your cloning strategy',\n },\n];\n\nconst SideMenu = () => {\n const { step } = useStep();\n return (\n \n
\n \n
\n
\n \n \n
\n \n
\n );\n};\nexport default SideMenu;\n","import React, { Fragment } from 'react';\nimport { Message, MessageHeader } from 'semantic-ui-react';\nimport { useSpacerError } from '../../hooks';\n\nconst SpacerError = () => {\n const { spacerError } = useSpacerError();\n\n return (\n \n {spacerError && (\n \n Error!\n Looks like we couldn't predict any spacers for your sequence. You can\n set a custom spacer in the advanced options\n \n )}\n \n );\n};\n\nexport default SpacerError;\n","import React, { Component, ChangeEvent, Fragment } from 'react';\nimport { Divider, Form, InputOnChangeData } from 'semantic-ui-react';\nimport SpacerError from './SpacerError';\n\nexport type SubmitFormState = {\n wtSeq: string;\n mut: string;\n customSpacer: string;\n pam: string;\n minPbs: string;\n maxPbs: string;\n minRt: string;\n maxRt: string;\n showAdvanced: boolean;\n};\ntype Props = {\n onSubmit: (\n wtSeq: string,\n mut: string,\n customSpacer: string,\n pam: string,\n minPbs: number,\n maxPbs: number,\n minRt: number,\n maxRt: number,\n ) => Promise;\n loading: boolean;\n};\n\nclass SubmitForm extends Component {\n state = {\n wtSeq: '',\n mut: '',\n customSpacer: '',\n pam: 'NGG',\n minPbs: '8',\n maxPbs: '18',\n minRt: '9',\n maxRt: '16',\n showAdvanced: false,\n };\n\n handleChange = (\n e: ChangeEvent,\n { name, value }: InputOnChangeData,\n ) => {\n this.setState((state) => {\n const newState = {\n ...state,\n [name]: value,\n };\n this.calcRtRange(newState);\n return newState;\n });\n };\n\n handleRTChange = (\n e: ChangeEvent,\n { name, value }: InputOnChangeData,\n ) =>\n this.setState((state) => ({\n ...state,\n [name]: value,\n }));\n\n handleSubmit = async () => {\n // const { name, email } = this.state;\n // this.setState({ submittedName: name, submittedEmail: email });\n const {\n wtSeq,\n mut,\n customSpacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n } = this.state;\n this.props.onSubmit(\n wtSeq,\n mut,\n customSpacer,\n pam,\n parseInt(minPbs),\n parseInt(maxPbs),\n parseInt(minRt),\n parseInt(maxRt),\n );\n };\n\n handleAdvancedToggle = (e: any) => {\n e.preventDefault();\n this.setState((state) => ({ showAdvanced: !state.showAdvanced }));\n };\n\n calcRtRange = (state: SubmitFormState) => {\n const mutLength = state.mut.length;\n let minRt = 9;\n let maxRt = 16;\n if (mutLength > 4) {\n minRt = mutLength + 6;\n maxRt = mutLength + 16;\n }\n if (mutLength > 8) {\n minRt = mutLength + 8;\n maxRt = mutLength + 22;\n }\n if (mutLength > 20) {\n minRt = mutLength + 10;\n maxRt = mutLength + 30;\n }\n this.setState(() => ({ minRt: minRt.toString(), maxRt: maxRt.toString() }));\n };\n\n render() {\n const {\n wtSeq,\n mut,\n customSpacer,\n pam,\n minRt,\n maxRt,\n minPbs,\n maxPbs,\n showAdvanced,\n } = this.state;\n\n return (\n
\n \n
\n \n \n {showAdvanced && (\n \n \n

Advanced Options

\n \n \n \n \n \n \n \n \n
\n )}\n \n \n \n \n \n
\n );\n }\n}\n\nexport default SubmitForm;\n","export default {\n step1: {\n submit: \"Step1.Submit\"\n },\n step2: {\n submit: \"Step2.Submit\"\n },\n step3: {\n submit: \"Step3.Submit\"\n },\n step4: {\n submit: \"Step4.Submit\"\n },\n step5: {\n submit: \"Step5.Submit\"\n }\n}","import React from 'react';\r\nimport { generateSpacers, trackEvent } from '../../api';\r\nimport {\r\n useStep,\r\n useWtSeq,\r\n useMut,\r\n usePam,\r\n useMinPbs,\r\n useMaxPbs,\r\n useMinRt,\r\n useMaxRt,\r\n useCustomSpacer,\r\n useSequencePredictions,\r\n useSpacerOptions,\r\n useStep2Loading,\r\n useSpacerError,\r\n useSpacerCutError,\r\n} from '../../hooks';\r\nimport { SpacerOption } from '../../types/presto';\r\nimport Step1Form from './Step1Form';\r\nimport Events from '../../api/events';\r\n\r\nconst Submit = () => {\r\n const { setSpacer, setSelectedSpacerOption } = useSequencePredictions();\r\n const { setWtSeq } = useWtSeq();\r\n const { setMut } = useMut();\r\n const { setCustomSpacer } = useCustomSpacer();\r\n const { setPam } = usePam();\r\n const { setMinPbs } = useMinPbs();\r\n const { setMaxPbs } = useMaxPbs();\r\n const { setMinRt } = useMinRt();\r\n const { setMaxRt } = useMaxRt();\r\n const { setStep } = useStep();\r\n const { spacerOptions, setSpacerOptions } = useSpacerOptions();\r\n const { setStep2Loading, step2Loading } = useStep2Loading();\r\n const { setSpacerError } = useSpacerError();\r\n const { setSpacerCutError } = useSpacerCutError();\r\n\r\n async function onSubmit(\r\n wtSeq: string,\r\n mut: string,\r\n customSpacer: string,\r\n pam: string,\r\n minPbs: number,\r\n maxPbs: number,\r\n minRt: number,\r\n maxRt: number,\r\n ) {\r\n setStep2Loading(true);\r\n let finalSpacerOptions: SpacerOption[] = [];\r\n\r\n if (customSpacer !== '') {\r\n setSpacer(customSpacer.toUpperCase());\r\n const customSpacerOption = {\r\n spacer: customSpacer.toUpperCase(),\r\n cutToMut: null,\r\n quality: null,\r\n };\r\n finalSpacerOptions = [customSpacerOption];\r\n setSelectedSpacerOption(customSpacerOption);\r\n setSpacerOptions([customSpacerOption]);\r\n }\r\n\r\n const apiSpacerOptions = await generateSpacers(wtSeq, mut, pam);\r\n finalSpacerOptions = [\r\n ...finalSpacerOptions,\r\n ...spacerOptions,\r\n ...apiSpacerOptions,\r\n ];\r\n\r\n if (finalSpacerOptions.length === 0) {\r\n setSpacerError(true);\r\n setStep2Loading(false);\r\n return;\r\n }\r\n\r\n setSpacerError(false); \r\n\r\n //if (cutToMut<0) { //need to figure out how to format this part\r\n // setSpacerCutError(true);\r\n // setStep2Loading(false);\r\n // return;\r\n //}\r\n\r\n setSpacerCutError(true);\r\n\r\n setSpacerOptions(finalSpacerOptions);\r\n setSelectedSpacerOption(finalSpacerOptions[0]);\r\n\r\n setWtSeq(wtSeq);\r\n setMut(mut);\r\n setCustomSpacer(customSpacer);\r\n setSpacer(finalSpacerOptions[0].spacer);\r\n setPam(pam);\r\n setMinPbs(minPbs);\r\n setMaxPbs(maxPbs);\r\n setMinRt(minRt);\r\n setMaxRt(maxRt);\r\n setStep(1);\r\n\r\n trackEvent(Events.step1.submit);\r\n\r\n setTimeout(() => {\r\n const nextStep = document.getElementById('step-2-container');\r\n if (nextStep) {\r\n nextStep.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n setStep2Loading(false);\r\n }, 0);\r\n }\r\n return ;\r\n};\r\nexport default Submit;\r\n","import React, { Fragment } from 'react';\nimport { Segment, Grid } from 'semantic-ui-react';\nimport { useStep } from '../../hooks';\nimport Submit from './Submit';\n\nconst Step1 = () => {\n const { step } = useStep();\n return (\n \n
\n \n \n
\n \n

Start

\n \n
\n
\n
\n
\n
\n );\n};\nexport default Step1;\n","import React, { Component, SyntheticEvent } from 'react';\nimport { Dropdown, DropdownProps } from 'semantic-ui-react';\n\ntype Props = {\n options: string[];\n title: string;\n onChange: (sequence: string) => void;\n};\n\nexport default class SequenceOptionsDropdown extends Component {\n state = {\n value: this.props.options.length > 0 ? this.props.options[0] : '',\n };\n static defaultProps = { options: [], onChange: (_: string) => {} };\n handleChange = (\n _: SyntheticEvent,\n { value }: DropdownProps,\n ) => {\n this.setState({ value });\n this.props.onChange(value as string);\n };\n\n render() {\n const { value } = this.state;\n\n return (\n
\n {this.props.title}\n ({\n key: o,\n text: o,\n value: o,\n }))}\n placeholder=\"Choose an option\"\n value={value}\n selection\n scrolling\n />\n
\n );\n }\n}\n","import React, { SetStateAction } from 'react';\nimport { Form } from 'semantic-ui-react';\nimport SequenceOptionsDropDown from '../../components/SequenceOptionsDropDown';\nimport {\n useSequencePredictions,\n useSpacerOptions,\n useStep,\n useStep3Loading,\n} from '../../hooks';\n\ntype Props = {\n onSubmit: () => Promise;\n};\n\nconst onChangeFactory = (\n setSpacer: (u: SetStateAction) => void,\n setStep: (u: SetStateAction) => void,\n onSubmit: () => Promise,\n step: number,\n) => (sequence: string) => {\n setSpacer(sequence);\n if (step >= 2) {\n setStep(1);\n setTimeout(() => {\n onSubmit();\n }, 0);\n }\n};\n\nconst Step2Form = ({ onSubmit }: Props) => {\n const { spacerOptions } = useSpacerOptions();\n const { setSpacer } = useSequencePredictions();\n const { step3Loading } = useStep3Loading();\n const { step, setStep } = useStep();\n return (\n
\n
\n o.spacer)}\n onChange={onChangeFactory(setSpacer, setStep, onSubmit, step)}\n />\n
\n \n \n
\n );\n};\n\nexport default Step2Form;\n","import React from 'react';\nimport { trackEvent } from '../../api';\nimport events from '../../api/events';\nimport {\n useSequencePredictions,\n useCleanWtSeq,\n useCleanMutSeq,\n useStep,\n useWtSeq,\n useMut,\n usePam,\n useMinPbs,\n useMaxPbs,\n useMinRt,\n useMaxRt,\n useStep3Loading,\n} from '../../hooks';\nimport Step2Form from './Step2Form';\ndeclare var cutToMut: number; \n\nconst Submit = () => {\n const { updateSequencePredictions } = useSequencePredictions();\n const { getCleanWtSeq } = useCleanWtSeq();\n const { getCleanMutSeq } = useCleanMutSeq();\n const { setStep } = useStep();\n\n const { wtSeq } = useWtSeq();\n const { mut } = useMut();\n const { spacer } = useSequencePredictions();\n const { pam } = usePam();\n const { minPbs } = useMinPbs();\n const { maxPbs } = useMaxPbs();\n const { minRt } = useMinRt();\n const { maxRt } = useMaxRt();\n const { setStep3Loading } = useStep3Loading();\n\n async function onSubmit() {\n setStep3Loading(true);\n getCleanWtSeq(wtSeq, mut, spacer, pam, minPbs, maxPbs, minRt, maxRt);\n getCleanMutSeq(wtSeq, mut, spacer, pam, minPbs, maxPbs, minRt, maxRt);\n await updateSequencePredictions(\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n );\n \n\n\n\n\n setStep(2);\n\n trackEvent(events.step2.submit);\n\n setTimeout(() => {\n const nextStep = document.getElementById('step-3-container');\n if (nextStep) {\n nextStep.scrollIntoView({ behavior: 'smooth' });\n }\n setStep3Loading(false);\n }, 0);\n }\n return ;\n};\nexport default Submit;\n","import React from 'react';\nimport { Grid, Segment } from 'semantic-ui-react';\nimport { useStep } from '../../hooks';\nimport Submit from './Submit';\n\nconst Step2 = () => {\n const { step } = useStep();\n return (\n \n \n
\n \n

Spacer

\n \n
\n
\n
\n
\n );\n};\nexport default Step2;\n","import React from 'react';\n\ntype Props = {\n label: string;\n value: string | number | boolean;\n};\n\nconst renderValue = (value: string | number | boolean) => {\n if (typeof value === 'boolean') {\n return value ? 'True' : 'False';\n }\n return value || null;\n};\n\nconst Statistic = ({ label, value }: Props) => (\n

\n {`${label}: `}\n {renderValue(value)}\n

\n);\n\nexport default Statistic;\n","import React, { Fragment } from 'react';\nimport Statistic from './Statistic';\nimport SequenceOptionsDropDown from '../../components/SequenceOptionsDropDown';\nimport { useSequencePredictions, useStep3Advanced } from '../../hooks';\nimport { TemplateOption } from '../../types/presto';\n\nconst onChangeFactory = (\n updateSelectedTemplateOption: (option: TemplateOption) => void,\n templateOptions: TemplateOption[],\n) => (value: string) => {\n updateSelectedTemplateOption(\n templateOptions.find((t) => t.rt === value) || templateOptions[0],\n );\n};\n\nconst RTTemplates = () => {\n const {\n templateOptions,\n updateSelectedTemplateOption,\n selectedTemplateOption,\n } = useSequencePredictions();\n const { step3Advanced } = useStep3Advanced();\n\n return (\n \n {templateOptions.length > 0 && (\n \n option.rt)}\n onChange={onChangeFactory(\n updateSelectedTemplateOption,\n templateOptions,\n )}\n />\n {selectedTemplateOption && step3Advanced && (\n \n
\n
\n {[\n { label: 'fhr', value: selectedTemplateOption.fhr },\n { label: 'fhrGC', value: selectedTemplateOption.fhrGC },\n {\n label: 'fhrLength',\n value: selectedTemplateOption.fhrLength,\n },\n { label: 'rtLength', value: selectedTemplateOption.rtLength },\n { label: 'rtPolyT', value: selectedTemplateOption.rtPolyT },\n { label: 'rtTM', value: selectedTemplateOption.rtTM },\n ].map((o) => (\n \n ))}\n
\n \n )}\n \n )}\n \n );\n};\n\nexport default RTTemplates;\n\n// error: string;\n// fhr: string;\n// fhrGC: number;\n// fhrLength: number;\n// isDefault: boolean;\n// rt: string;\n// rtLength: number;\n// rtPolyT: boolean;\n// rtTM: number;\n// startsWithC: boolean;\n","import React, { Fragment } from 'react';\nimport SequenceOptionsDropDown from '../../components/SequenceOptionsDropDown';\nimport { useSequencePredictions, useStep3Advanced } from '../../hooks';\nimport { PBSOption } from '../../types/presto';\nimport Statistic from './Statistic';\n\nconst onChangeFactory = (\n updateSelectedPbsOption: (option: PBSOption) => void,\n PbsOptions: PBSOption[],\n) => (value: string) => {\n updateSelectedPbsOption(\n PbsOptions.find((p) => p.pbs === value) || PbsOptions[0],\n );\n};\n\nconst PBSOptions = () => {\n const {\n pbsOptions,\n updateSelectedPbsOption,\n selectedPbsOption,\n } = useSequencePredictions();\n const { step3Advanced } = useStep3Advanced();\n return (\n \n {pbsOptions.length > 0 && (\n option.pbs)}\n onChange={onChangeFactory(updateSelectedPbsOption, pbsOptions)}\n />\n )}\n {selectedPbsOption && step3Advanced && (\n \n
\n
\n {[\n { label: 'length', value: selectedPbsOption.length },\n { label: 'pbsGC', value: selectedPbsOption.pbsGC },\n {\n label: 'pbsPolyT',\n value: selectedPbsOption.pbsPolyT,\n },\n { label: 'pbsTM', value: selectedPbsOption.pbsTM },\n ].map((o) => (\n \n ))}\n
\n \n )}\n \n );\n};\n\nexport default PBSOptions;\n","import React from 'react';\nimport { Form, Grid } from 'semantic-ui-react';\nimport RTTemplates from './RTTemplates';\nimport PBSOptions from './PBSOptions';\nimport { useStep4Loading, useStep3Advanced } from '../../hooks';\n\ntype Props = {\n onSubmit: () => Promise;\n};\n\nconst handleAdvancedToggleFactory = (\n step3Advanced: boolean,\n setStep3Advanced: (u: React.SetStateAction) => void,\n) => (e: any) => {\n e.preventDefault();\n setStep3Advanced(!step3Advanced);\n};\n\nconst Step3Form = ({ onSubmit }: Props) => {\n const { step4Loading } = useStep4Loading();\n const { step3Advanced, setStep3Advanced } = useStep3Advanced();\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\nexport default Step3Form;\n","import React from 'react';\nimport { trackEvent } from '../../api';\nimport events from '../../api/events';\nimport { useStep, useStep4Loading } from '../../hooks';\nimport Step3Form from './Step3Form';\n\nconst Submit = () => {\n const { setStep } = useStep();\n const { setStep4Loading } = useStep4Loading();\n\n async function onSubmit() {\n setStep(3);\n setStep4Loading(true);\n\n trackEvent(events.step3.submit);\n\n setTimeout(() => {\n const nextStep = document.getElementById('step-4-container');\n if (nextStep) {\n nextStep.scrollIntoView({ behavior: 'smooth' });\n setStep4Loading(false);\n }\n }, 0);\n }\n return ;\n};\nexport default Submit;\n","import React, { Fragment } from 'react';\nimport { Message, MessageHeader } from 'semantic-ui-react';\nimport { useSequencePredictions } from '../../hooks';\n\nconst PegRNAWarnings = () => {\n const {\n warnings: { general, pegRna },\n } = useSequencePredictions();\n const warnings = [...general, ...pegRna];\n\n return (\n \n {warnings.length > 0 && (\n \n Warning!\n {warnings.map((warning, i) => (\n

{warning}

\n ))}\n
\n )}\n
\n );\n};\n\nexport default PegRNAWarnings;\n","import React from 'react';\nimport { Grid, Segment } from 'semantic-ui-react';\nimport { useStep } from '../../hooks';\nimport Submit from './Submit';\nimport PegRNAWarnings from './PegRNAWarnings';\nimport SpacerCutError from './SpacerCutError';\n\nconst Step2 = () => {\n const { step } = useStep();\n return (\n \n \n
\n \n

pegRNA

\n \n \n
\n
\n
\n
\n );\n};\nexport default Step2;\n","import { useSequencePredictions } from '../../hooks';\nimport React, { Component, Fragment, SyntheticEvent } from 'react';\nimport { Dropdown, DropdownProps } from 'semantic-ui-react';\nimport { PE3Option } from '../../types/presto';\nimport { API_ROOT } from '../../config';\n\ntype Props = {\n options: PE3Option[];\n title: string;\n onChange: (value: PE3Option) => void;\n};\n\n// class PE3OptionsDropdown extends Component {\n// state = {\n// value:\n// this.props.options.length > 0\n// ? this.props.options[0]\n// : { secondGuide: '', type: 'pe3' },\n// };\n// static defaultProps = { options: [], onChange: (_: PE3Option) => {} };\n// handleChange = (\n// _: SyntheticEvent,\n// { value }: DropdownItemProps,\n// ) => {\n// const selectedOption = this.props.options.filter(\n// (o) => o.secondGuide === value,\n// )[0];\n// this.setState({ value: selectedOption });\n// this.props.onChange(selectedOption);\n// };\n\n// render() {\n// const { value } = this.state;\n\n// return (\n//
\n// {this.props.title}\n// \n// \n// {this.props.options.map((o) => (\n// \n// ))}\n// \n// \n//
\n// );\n// }\n// }\n\nclass PE3OptionsDropdownAvatar extends Component {\n state = {\n value:\n this.props.options.length > 0 ? this.props.options[0].secondGuide : '',\n };\n static defaultProps = { options: [], onChange: (_: string) => {} };\n handleChange = (\n _: SyntheticEvent,\n { value }: DropdownProps,\n ) => {\n const selectedOption = this.props.options.filter(\n (o) => o.secondGuide === value,\n )[0];\n this.setState({ value: selectedOption.secondGuide });\n this.props.onChange(selectedOption);\n };\n\n render() {\n const { value } = this.state;\n\n return (\n
\n {this.props.title}\n ({\n key: o.secondGuide,\n text: o.secondGuide,\n value: o.secondGuide,\n image:\n o.type !== 'None'\n ? {\n src:\n o.type === 'pe3'\n ? `${API_ROOT}/images/pe3pill.png`\n : `${API_ROOT}/images/pe3bpill.png`,\n }\n : undefined,\n }))}\n value={value}\n selection\n scrolling\n >\n
\n );\n }\n}\n\nconst PE3Options = () => {\n const { pe3Options, updateSelectedPe3Option } = useSequencePredictions();\n return (\n \n {pe3Options.length > 0 && (\n \n )}\n \n );\n};\n\nexport default PE3Options;\n","import React from 'react';\nimport { Form, Grid } from 'semantic-ui-react';\nimport { useStep5Loading } from '../../hooks';\nimport PE3Options from './PE3Options';\n\ntype Props = {\n onSubmit: () => Promise;\n};\n\nconst Step4Form = ({ onSubmit }: Props) => {\n const { step5Loading } = useStep5Loading();\n return (\n
\n \n
\n \n
\n \n \n \n
\n );\n};\n\nexport default Step4Form;\n","import React from 'react';\nimport { trackEvent } from '../../api';\nimport events from '../../api/events';\nimport { useStep, useStep5Loading } from '../../hooks';\nimport Step4Form from './Step4Form';\n\nconst Submit = () => {\n const { setStep } = useStep();\n const { setStep5Loading } = useStep5Loading();\n\n async function onSubmit() {\n setStep(4);\n setStep5Loading(true);\n\n trackEvent(events.step4.submit);\n\n setTimeout(() => {\n const nextStep = document.getElementById('step-5-container');\n if (nextStep) {\n nextStep.scrollIntoView({ behavior: 'smooth' });\n }\n setStep5Loading(false);\n }, 1000);\n }\n return ;\n};\nexport default Submit;\n","import React, { Fragment } from 'react';\nimport { Message, MessageHeader } from 'semantic-ui-react';\nimport { useSequencePredictions } from '../../hooks';\n\nconst Pe3Warnings = () => {\n const {\n warnings: { general, pe3 },\n } = useSequencePredictions();\n const warnings = [...general, ...pe3];\n\n return (\n \n {warnings.length > 0 && (\n \n Warning!\n {warnings.map((warning, i) => (\n

{warning}

\n ))}\n
\n )}\n
\n );\n};\n\nexport default Pe3Warnings;\n","import React from 'react';\nimport { Grid, Segment } from 'semantic-ui-react';\nimport { useStep } from '../../hooks';\nimport Submit from './Submit';\nimport Pe3Warnings from './Pe3Warnings';\n\nconst Step2 = () => {\n const { step } = useStep();\n return (\n \n \n
\n \n

PE3

\n \n \n
\n
\n
\n
\n );\n};\nexport default Step2;\n","import React from 'react';\nimport { Button } from 'semantic-ui-react';\nimport { generateCSV, trackEvent } from '../../api';\nimport events from '../../api/events';\nimport { useSequencePredictions } from '../../hooks';\n\nconst FullResultsButton = () => {\n const {\n wtSeq,\n mut,\n spacer,\n pam,\n minPbs,\n maxPbs,\n minRt,\n maxRt,\n } = useSequencePredictions();\n const handleClick = () =>\n generateCSV(wtSeq, mut, spacer, pam, minPbs, maxPbs, minRt, maxRt);\n trackEvent(events.step5.submit);\n return (\n \n );\n};\n\nexport default FullResultsButton;\n","import React, { Component } from 'react';\nimport { Icon, Popup } from 'semantic-ui-react';\nimport copy from 'copy-to-clipboard';\n\nconst DEFAULT_HELP_TEXT = 'click to copy';\nconst SUCCESS_HELP_TEXT = \"you're all set\";\ntype Props = {\n value: string | undefined;\n};\n\nclass Copy extends Component {\n state = {\n helpText: DEFAULT_HELP_TEXT,\n isOpen: false,\n };\n handleCopy = () => {\n if (this.props.value) {\n copy(this.props.value);\n this.setState(() => ({ helpText: SUCCESS_HELP_TEXT }));\n console.log('indicate');\n setTimeout(() => {\n this.setState(() => ({ helpText: DEFAULT_HELP_TEXT }));\n }, 1000);\n }\n };\n\n handleMouseOver = () => {\n this.setState(() => ({ isOpen: true }));\n };\n handleMouseLeave = () => {\n this.setState(() => ({ isOpen: false }));\n };\n\n render() {\n return (\n \n }\n />\n );\n }\n}\n\nexport default Copy;\n","import React, { Component, SetStateAction, SyntheticEvent } from 'react';\nimport { Dropdown, DropdownProps } from 'semantic-ui-react';\nimport { useCloningStrategy } from '../../hooks';\n\nconst options = ['Richardson & Steyert et al. 2021', 'None'].map((o) => ({\n key: o,\n text: o,\n value: o,\n}));\n\nconst handleChangeFactory = (\n setCloningStrategy: (u: SetStateAction) => void,\n) => (_: SyntheticEvent, { value }: DropdownProps) => {\n setCloningStrategy(value as string);\n};\n\nconst CloningStrategyDropdown = () => {\n const { setCloningStrategy } = useCloningStrategy();\n return (\n
\n Cloning strategy\n \n
\n );\n};\n\nexport default CloningStrategyDropdown;\n","import React, { Fragment } from 'react';\nimport Copy from '../../components/Copy';\nimport { useCloningStrategy, usePegRNA } from '../../hooks';\nimport { FinalPegRNAAnnotation } from '../../types/presto';\nimport CloningStrategyDropdown from './CloningStrategyDropdown';\n\nfunction uniqBy(\n a: Array,\n key: (o: FinalPegRNAAnnotation) => any,\n) {\n let seen = new Set();\n return a.filter((item) => {\n let k = key(item);\n return seen.has(k) ? false : seen.add(k);\n });\n}\n\nconst getSequence = (annotations: FinalPegRNAAnnotation[]) =>\n annotations.map((a) => a.sequence).join('');\n\nconst getCloningStrategyAnnotations = (\n annotations: FinalPegRNAAnnotation[],\n cloningStrategy: string,\n) =>\n annotations.filter((a) =>\n cloningStrategy === 'None'\n ? ['rtt', 'pbs', 'spacer', 'cas9_scaffold'].includes(a.name)\n : true,\n );\n\nconst PegRNA = () => {\n const { pegRNA } = usePegRNA();\n const { cloningStrategy } = useCloningStrategy();\n const annotations = uniqBy(\n getCloningStrategyAnnotations(\n pegRNA?.annotations || ([] as FinalPegRNAAnnotation[]),\n cloningStrategy,\n ),\n (a: FinalPegRNAAnnotation) => a.name,\n );\n\n return (\n \n \n {pegRNA && (\n
\n
\n
\n Final pegRNA:\n \n
\n {annotations.map((annotation) => (\n
\n
\n \n {annotation.name}\n \n
\n ))}\n
\n
\n

\n {getCloningStrategyAnnotations(\n pegRNA.annotations,\n cloningStrategy,\n ).map((annotation) => (\n \n {annotation.sequence}\n \n ))}\n

\n
\n {/* */}\n
\n )}\n \n );\n};\n\nexport default PegRNA;\n","import React, { Fragment } from 'react';\nimport Copy from '../../components/Copy';\nimport {\n usePe3sgRNA,\n useSequencePredictions,\n useCloningStrategy,\n} from '../../hooks';\n\nconst Pe3sgRNA = () => {\n const { pe3Options } = useSequencePredictions();\n const { pe3sgRNA } = usePe3sgRNA();\n const { selectedPe3Option } = useSequencePredictions();\n const { cloningStrategy } = useCloningStrategy();\n\n return (\n
\n {pe3Options.length > 0 && selectedPe3Option?.secondGuide !== 'None' && (\n \n
\n
\n
\n \n PE3 {cloningStrategy !== 'None' ? 'sense' : ''}:\n \n \n
\n

\n \n {cloningStrategy !== 'None'\n ? pe3sgRNA.sense\n : selectedPe3Option?.secondGuide}\n \n

\n
\n
\n {cloningStrategy !== 'None' && (\n
\n
\n
\n PE3 antisense:\n \n
\n

\n \n {pe3sgRNA.antisense}\n \n

\n
\n
\n )}\n
\n )}\n
\n );\n};\n\nexport default Pe3sgRNA;\n","import React, { Fragment } from 'react';\nimport Copy from '../../components/Copy';\nimport { useSequencePredictions, useCloningStrategy } from '../../hooks';\n\nconst SpacersgRNA = () => {\n const {\n spacersgRNA,\n pe3Options,\n selectedSpacerOption,\n } = useSequencePredictions();\n const { cloningStrategy } = useCloningStrategy();\n\n return (\n
\n {pe3Options.length > 0 && (\n \n
\n
\n
\n \n Spacer {cloningStrategy !== 'None' ? 'sense' : ''}:\n \n \n
\n

\n \n {cloningStrategy !== 'None'\n ? spacersgRNA.sense\n : selectedSpacerOption?.spacer}\n \n

\n
\n
\n {cloningStrategy !== 'None' && (\n
\n
\n
\n Spacer antisense:\n \n
\n

\n \n {spacersgRNA.antisense}\n \n

\n
\n
\n )}\n
\n )}\n
\n );\n};\n\nexport default SpacersgRNA;\n","import React from 'react';\nimport { Grid, Segment } from 'semantic-ui-react';\nimport { useStep } from '../../hooks';\nimport FullResultsButton from './FullResultsButton';\nimport PegRNA from './PegRNA';\nimport Pe3sgRNA from './Pe3sgRNA';\nimport SpacersgRNA from './SpacersgRNA';\n\nconst Step5 = () => {\n const { step } = useStep();\n return (\n \n \n
\n \n

Cloning

\n \n
\n \n
\n \n
\n \n \n
\n \n \n );\n};\nexport default Step5;\n","import React, { Fragment } from 'react';\nimport { Grid } from 'semantic-ui-react';\n\nconst AboutContent = () => (\n
\n

About Pegassist.app

\n

\n Pegassist (v 0.8 beta) is a web app to design prime editing guide RNA\n (pegRNA) for genome editing with Cas9 nickase–reverse transcriptase\n fusions previously described by Liu and colleagues (Anzalone et al. Nature\n 2019).\n

\n\n

Instructions

\n

\n Give Pegassist your target genomic sequence and the edits you want to\n introduce. The app will propose sequences for a Prime Editing strategy,\n along with a cloning strategy to build these reagents using the Pegassist\n plasmid set (available soon on Addgene) developed by Richardson, Steyert,\n et al. 2021 in prep or those developed by Anzalone et al. 2019.\n

\n

\n You can keep the default options, or choose to look under the hood using\n Advanced Options to tweak parameters. Bear in mind, Prime Editing is an\n evolving technology, and this app is in beta. Pegassist outputs are based\n on available performance data as of January 2021 and may require\n experimental validation.\n

\n\n

Copyright and Citation

\n

\n All copyright is exclusively owned by the University of Maryland.\n Pegassist is free for non-profit and academic research. All commercial\n rights are reserved. If you use this software for reagent generation in a\n publication, please cite:\n

\n\n

Support

\n

\n This work is supported by The Department of Pharmacology, University of\n Maryland School of Medicine; The National Cancer Institute (T32CA154274),\n and The National Institutes of Health High-Risk, High-Reward Research\n Program (DP2MH122398).\n

\n\n

Development team: Poulopoulos Lab

\n

\n Prime editing:{' '}\n \n Ryan R. Richardson\n \n ,{' '}\n \n Marilyn Steyert\n \n ,{' '}\n \n Colin Robertson\n \n

\n

\n Python code:{' '}\n \n Marilyn Steyert\n \n ,{' '}\n \n Corinne Martin\n \n

\n

\n Web app: Corey Flynn\n

\n

\n User interface & design:{' '}\n Jeff Smith,{' '}\n \n Cheryl Brandenburg\n \n

\n\n

Links

\n Poulopoulos Lab\n
\n);\n\nconst AboutContainer = () => (\n \n
\n \n \n \n \n \n
\n);\nexport default AboutContainer;\n","import React from 'react';\nimport { Grid } from 'semantic-ui-react';\nimport { API_ROOT } from '../../config';\n\nconst GettingStartedContent = () => (\n
\n

Getting Started

\n

\n PegAssist requires minimal user effort to design prime editing guide RNA\n (pegRNA) and associated PE3/PE3b guides to improve efficiency and\n precision of genome editing.\n

\n\n

PegAssist needs from you:

\n
    \n
  • \n The wildtype gene sequence (include ~100 base pairs on each side of the\n desired edit) with parentheses around the region you wish to edit\n
  • \n
  • The desired edit for the region in parentheses
  • \n
  • \n For some: PegAssist will attempt to design a spacer, but some\n genes will have PAM sites distant from the desired edit. These spacers\n are less efficient and are not detected by PegAssist. These genes will\n require a specified spacer sequence to direct the Cas9 nickase. Be sure\n the cut site for this spacer is 5’ of the region of interest\n
  • \n
  • \n Advanced Options: The default values for PBS and RTT length are\n based on current data on editing efficiency, but this option is\n available to edit. The protospacer adjacent motif (PAM) sequence “NGG”\n is the default for use with Streptococcus pyogenes Cas9 (SpCas9). If\n you are using a different Cas9, the PAM sequence may be adjusted with\n IUPAC ambiguity letters. Acceptable characters are “ATGCMRWSYKVHDBN”\n
  • \n
\n\n

Examples of user input:

\n\n

To design a point mutation (Ex: G→A)

\n \n\n
\n

\n To design a 1 base pair deletion\n

\n \n\n
\n

\n To design a 1 base pair insertion\n

\n \n\n

User Selections

\n

\n Prime editing is still a new technology, and the available information on\n optimal pegRNA design is limited. The default selections and outputs on\n PegAssist are based on current performance data. All available options are\n provided in case you would like to make a specific selection. Be sure to\n follow the warnings and comments when selecting components to avoid low\n efficiency editing.\n

\n\n

Support

\n

\n This work is supported by The Department of Pharmacology, University of\n Maryland School of Medicine; The National Cancer Institute (T32CA154274),\n and The National Institutes of Health High-Risk, High-Reward Research\n Program (DP2MH122398).\n

\n\n

Ouput

\n

\n PegAssist will display the final pegRNA sequence with annotations to aid\n in cloning. For more information on the cloning steps involved, see\n Richardson & Steyert et al. 2021.\n

\n\n

Terms

\n

\n pegRNA – The prime editing guide RNA (pegRNA) is the full assembly\n of the spacer, a Cas9 scaffold, a PBS, and an RTT. This will guide the\n Cas9-Reverse Transcriptase fusion protein to your region of interest to\n produce the desired edit.\n

\n

\n Spacer – A region of homology that guides Cas9 to a specific\n genomic location. In standard CRISPR applications, this component on a\n scaffold would make up the gRNA. In prime editing the spacer will guide\n Cas9 nickase to cut the opposing strand.\n

\n

\n PBS – The primer binding site is a second region of homology which\n binds the strand opposite the spacer. This will position the RTT for\n extension.\n

\n

\n RTT/RT Template – The reverse transcriptase template contains the\n desired edit and some amount of RNA homologous to the target region.\n Reverse transcriptase will generate a 3’ extension of the gDNA bound to\n the PBS based on the RTT sequence.\n

\n

\n PE3/PE3b guide – A second guide RNA that directs Cas9 nickase to\n cut the unedited gDNA strand and improve editing efficiency. This will\n bias the mismatch repair mechanism to preferentially retain the edited\n DNA. PE3 guides make this cut further from the edited region than PE3b\n guides and are less likely to create this bias.\n

\n
\n);\n\nconst AboutContainer = () => (\n \n
\n \n \n \n \n \n
\n);\nexport default AboutContainer;\n","import React, { Fragment } from 'react';\nimport AppMenu from './AppMenu';\nimport SideMenu from './SideMenu';\nimport { Grid } from 'semantic-ui-react';\nimport './App.css';\nimport 'semantic-ui-css/semantic.min.css';\nimport { useStep, useMenuTab } from '../hooks';\nimport Step1 from './Step1';\nimport Step2 from './Step2';\nimport Step3 from './Step3';\nimport Step4 from './Step4';\nimport Step5 from './Step5';\nimport About from './About';\nimport GettingStarted from './GettingStarted';\n\nfunction App() {\n const { step } = useStep();\n const { menuTab } = useMenuTab();\n\n return (\n \n \n {menuTab === 'home' && (\n \n \n
\n \n \n {step >= 1 && }\n {step >= 2 && }\n {step >= 3 && }\n {step >= 4 && }\n \n
\n
\n )}\n {menuTab === 'about' && }\n {menuTab === 'getting_started' && }\n
\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""}