{"version":3,"sources":["components/MenuButton.tsx","components/Menu.tsx","components/MenuItem.tsx","components/Header.tsx","components/Content.tsx","_lib/endpoint.ts","components/ContinuosSlider.tsx","components/Snack.tsx","components/SearchHeader.tsx","components/ComponentSelector.tsx","components/FormControlCondition.tsx","canvas/Point.tsx","canvas/Tie.tsx","_lib/coordChange.ts","canvas/CL.tsx","routes/Home/index.tsx","routes/Documents/LangSelector.tsx","routes/Documents/index.tsx","routes/Database/Table.tsx","routes/Database/index.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["MenuButton","props","color","style","container","onClick","console","log","line","background","lineTop","transform","open","lineMiddle","opacity","lineBottom","height","width","display","flexDirection","justifyContent","alignItems","cursor","padding","zIndex","transition","transformOrigin","marginBottom","marginTop","Menu","styles","menuList","children","position","top","left","paddingTop","MenuItem","useState","hover","setHover","handleHover","animation","animationDelay","delay","menuItem","fontFamily","fontSize","margin","textDecoration","exact","value","to","activeStyle","fontWeight","onMouseEnter","onMouseLeave","title","Header","setOpen","menu","menuItems","map","val","index","key","root","logo","logolink","linkGroup","e","i","link","backgroundColor","paddingLeft","paddingRight","listStyleType","Content","marginLeft","marginRight","ContinuosSlider","min","max","onChange","setValue","Slider","step","event","newValue","ErrorSnack","error","onClose","Snackbar","autoHideDuration","SnackbarContent","role","message","SearchHeader","text","onChangeContent","listComponents","flex","TextField","type","target","placeholder","InputProps","startAdornment","InputAdornment","ComponentSelector","state","searchingName","searchingLists","callSearch","a","fetch","method","headers","body","JSON","stringify","name","toLowerCase","res","json","setState","data","this","length","overflow","className","components","component","indexOf","selected","onClickContent","calcButton","React","Component","FormControlCondition","const","isNumber","RegExp","test","FormControlLabel","control","Checkbox","checked","nextConst","onCheckConst","valueDef","label","flexGrow","hasErr","undefined","valStr","onChangeValue","parseFloat","onError","Point","fill","x","y","info","onMouseOut","radius","toFixed","Number","align","draggable","zindex","Tie","liq","vap","showtie","L","V","points","stroke","xyTransform","ternP","comy","comx","p","q","Y","Math","sqrt","CL","push","strokeWidth","CLs","datas","x1","y1","x2","y2","Home","waiting","openSelector","selectedComponents","constT","constP","showcl","showexp","componentDidMount","fetchData","id","componentDidUpdate","_","prevState","filter","startCalculate","fetchT","fetchP","callFlashes","callEquil","comp","P","T","result","header","mode","names","cancleComponent","cancleComponentIdx","findIndex","saveCanvas","canvasSave","refs","canvas","d","toDataURL","w","window","document","write","setExpData","expText","expData","split","forEach","k","isMobile","ternaryWidth","translated","LinearProgress","overflowX","whiteSpace","listStyle","Chip","variant","onDelete","flexWrap","FormGroup","newComponents","calculateButton","saveButton","Switch","ref","closed","Typography","gutterBottom","multiline","borderRadius","border","LangSelector","lang","font","Document","loading","changeLang","loadMD","path","markdownRaw","githubRes","markdown","ReactHtmlParser","tableIcons","Add","forwardRef","Check","Clear","Delete","DetailPanel","Edit","Export","Filter","FirstPage","LastPage","NextPage","PreviousPage","ResetSearch","Search","SortArrow","ThirdStateCheck","ViewColumn","DataTable","icons","columns","Database","field","dStatus","eStatus","results","slice","datum","maxWidth","FormControl","InputLabel","Select","labelId","onDStatusChange","onTStatusChange","filterData","App","updateWindowDimensions","addEventListener","componentWillUnmount","removeEventListener","innerWidth","innerHeight","Boolean","location","hostname","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.cb4c571f.chunk.js","sourcesContent":["import React, { CSSProperties } from 'react';\n\ntype MenuButtonProps = {\n open: boolean,\n color?: string,\n onClick?: () => void,\n};\n\nexport default function MenuButton(props: MenuButtonProps) {\n const color = props.color? props.color : 'black';\n return (\n
{ console.log('hi') }}>\n
\n
\n
\n
\n )\n}\n\nconst style: { [key: string]: CSSProperties } = {\n container: {\n height: '32px',\n width: '32px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n padding: '4px',\n zIndex: 100,\n },\n line: {\n height: '2px',\n width: '30px',\n transition: 'all 0.2s ease',\n },\n lineTop: {\n transformOrigin: 'top left',\n marginBottom: '8px',\n },\n lineBottom: {\n transformOrigin: 'top left',\n marginTop: '8px',\n },\n}","import React from 'react';\n\ntype MenuProps = {\n open: boolean,\n children: React.ReactElement[],\n}\n\n\nexport default function Menu(props: MenuProps) {\n return (\n
\n {\n props.open ?\n
\n {props.children}\n
: null\n }\n
\n )\n}\n\nconst styles: { [key: string]: React.CSSProperties } = {\n container: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100vw',\n display: 'flex',\n flexDirection: 'column',\n background: 'black',\n opacity: 0.9,\n color: '#fafafa',\n transition: 'height 0.3s ease',\n zIndex: 0,\n },\n menuList: {\n paddingTop: '3rem',\n display: 'flex',\n flexDirection: 'column',\n }\n}","import React, { useState } from 'react';\nimport { NavLink } from 'react-router-dom';\n\ntype MenuItemProps = {\n delay: string,\n value: { title: string, to: string, exact: boolean}\n onClick: () => void,\n}\n\nexport default function MenuItem(props: MenuItemProps) {\n const [hover, setHover] = useState(false);\n const handleHover = () => {\n setHover(!hover);\n }\n const styles: {[key: string]: React.CSSProperties} = {\n container: {\n animation: '1s appear forwards',\n animationDelay: props.delay,\n height: 70,\n },\n menuItem: {\n fontFamily: `'Open Sans', sans-serif`,\n fontSize: '1.2rem',\n padding: '1rem 0',\n margin: '0 5%',\n cursor: 'pointer',\n color: hover ? 'gray' : '#fafafa',\n transition: 'color 0.2s ease-in-out',\n animation: '0.5s slideIn forwards',\n animationDelay: props.delay,\n textDecoration: 'none',\n },\n line: {\n width: '90%',\n height: '1px',\n background: 'gray',\n margin: '0 auto',\n animation: '0.5s shrink forwards',\n animationDelay: props.delay,\n marginTop: 20,\n }\n }\n return (\n
\n { handleHover(); }}\n onMouseLeave={() => { handleHover(); }}\n onClick={() => props.onClick()}\n >\n {props.value.title}\n \n
\n
\n )\n\n}","import React, { useState } from 'react';\nimport { NavLink, Link } from 'react-router-dom';\nimport MenuButton from './MenuButton';\nimport Menu from './Menu';\nimport MenuItem from './MenuItem';\n\n\nfunction Header({ width }: { width: number }) {\n const [open, setOpen] = useState(false);\n\n const menu = [{\n title: 'Program',\n to: '/',\n exact: true,\n }, {\n title: 'Documentation',\n to: '/docs',\n exact: false,\n }, {\n title: 'Database',\n to: 'db',\n exact: false,\n }];\n\n // for mobile\n const menuItems = menu.map((val, index) => {\n return (\n setOpen(false)}\n />)\n });\n return (\n
\n
SAFT-GO
\n {width > 850 ?\n
    \n {menu.map((e, i) => (\n
  • {e.title}
  • \n ))}\n
\n :\n
\n \n {menuItems}\n \n setOpen(!open)} color={open ? 'white': 'black'}/>\n
\n }\n
\n );\n}\nexport default Header;\n\nconst style: { [key: string]: React.CSSProperties } = {\n root: {\n backgroundColor: 'rgba(174,196,255,0.22)',\n height: 76,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: '8%',\n paddingRight: '8%',\n },\n logo: {\n display: 'flex',\n fontSize: 30,\n alignItems: 'center'\n },\n logolink: {\n color: 'black',\n textDecoration: 'none',\n },\n linkGroup: {\n display: 'flex',\n width: 500,\n alignItems: 'center',\n justifyContent: 'space-between',\n listStyleType: 'none',\n },\n link: {\n display: 'flex',\n fontSize: 26,\n color: 'black',\n textDecoration: 'none',\n // marginRight: 30\n }\n};","import React from 'react';\n\ntype ContentProps = {\n children: any,\n}\nexport function Content(props: ContentProps) {\n return (\n
\n {props.children}\n
\n )\n}","export const EQUIL_ENDPOINT = \"/api/equil\";\nexport const DATA_ENDPOINT = \"/api/datas\";\nexport const SEARCH_ENDPOINT = \"/api/search\";\nexport const FLASHES_ENDPOINT = \"/api/flashes\";\n// client_id & secret deprecated\n// export const GITHUB_MARKDOWN_ENDPOINT = 'https://api.github.com/markdown?client_id=a64b2351101664c50a0c&client_secret=8c90116485321b0cc23d45b1b3101658d1c41e56';\nexport const GITHUB_MARKDOWN_ENDPOINT = 'https://api.github.com/markdown';","import React, { useState } from 'react';\nimport { Slider } from '@material-ui/core';\n\ntype ContinuosSliderProps = {\n val: number,\n min?: number,\n max?: number,\n onChange?: (val: number) => void\n}\n\nexport default function ContinuosSlider({ val, min, max, onChange }: ContinuosSliderProps) {\n const [value, setValue] = useState(val);\n const handleChange = (event: any, newValue: number | number[]) => {\n setValue(newValue as number);\n onChange && onChange(newValue as number);\n }\n\n return \n}","import ErrorIcon from '@material-ui/icons/Error';\nimport React from 'react';\nimport { Snackbar, SnackbarContent } from '@material-ui/core';\n\n\ntype SnackProps = {\n error: string,\n onClose?: () => void,\n}\nexport function ErrorSnack({ error, onClose }: SnackProps) {\n\n return (\n \n \n \n {error} \n
\n }\n />\n \n )\n}","import React from 'react';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { TextField, InputAdornment } from '@material-ui/core';\n\ntype SearchHeaderProps = {\n text: string,\n onChangeContent?: (text: string) => void,\n onSearched?: () => void,\n listComponents?: React.ReactElement,\n}\nexport default function SearchHeader({ text, onChangeContent, listComponents }: SearchHeaderProps) {\n return (\n
\n onChangeContent && onChangeContent(event.target.value)}\n placeholder=\"Search Components\"\n InputProps={{\n startAdornment: (\n \n \n \n )\n }}\n style={{ flex: 1, width: '100%', marginTop: 10, marginBottom: 10}}\n />\n
\n {listComponents}\n
\n
\n )\n}","import React from 'react';\nimport { Component } from '../routes/Home';\nimport SearchHeader from './SearchHeader';\nimport { SEARCH_ENDPOINT } from '../_lib/endpoint';\n\ntype ComponentSelectorProps = {\n components: Component[],\n onClickContent: (idx: number) => void,\n calcButton: React.ReactElement\n};\ntype State = {\n searchingName: string,\n searchingLists: any[],\n}\nexport default class ComponentSelector extends React.Component {\n state: State = {\n searchingName: '',\n searchingLists: [],\n }\n callSearch = async (searchingName: string) => {\n const res = await fetch(SEARCH_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ name: searchingName.toLowerCase() })\n });\n const json = await res.json();\n this.setState({ searchingLists: json.data });\n // console.log(this.state.searchingLists);\n }\n\n render() { \n return (\n
\n {\n this.setState({searchingName});\n searchingName.length >=2 && this.callSearch(searchingName);\n }}\n />\n
    \n {this.props.components.map((component,i ) => (\n (component.name.toLowerCase().indexOf(this.state.searchingName.toLowerCase()) > -1) ?
  • this.props.onClickContent(i)}>\n {component.name}\n
  • :
  • \n ))}\n
\n {this.props.calcButton}\n
\n )\n }\n}","import React from 'react';\nimport { FormControlLabel, Checkbox, TextField } from '@material-ui/core';\n\ntype FormControlConditionProps = {\n valueDef: string,\n placeholder?: string,\n onChangeValue?: (e: number | undefined) => void,\n onError?: (err: string) => void,\n onCheckConst?: (check: boolean) => void,\n};\ntype State = {\n const: boolean,\n val: string | null,\n hasErr?: boolean,\n};\nclass FormControlCondition extends React.Component {\n state: State = {\n const: false,\n val: null,\n }\n isNumber = (val: string) => {\n const floatRegex = new RegExp(/^(\\d*\\.?\\d*)$/);\n return floatRegex.test(val);\n }\n render() {\n\n return (\n
\n {\n const nextConst = !this.state.const;\n this.setState({ const: nextConst });\n this.props.onCheckConst && this.props.onCheckConst(nextConst);\n }}\n value={this.props.valueDef}\n />\n }\n label={this.props.valueDef}\n />\n
\n {\n const valStr = e.target.value;\n if (valStr.length === 0) {\n this.setState({ val: null, hasErr: false });\n this.props.onChangeValue && this.props.onChangeValue(undefined)\n return\n }\n if (this.isNumber(valStr)) {\n const val = parseFloat(valStr);\n this.setState({ val: valStr, hasErr: false });\n this.props.onChangeValue && this.props.onChangeValue(val);\n } else {\n this.setState({ hasErr: true });\n this.props.onError && this.props.onError('숫자를 입력해야합니다.');\n }\n }}\n />\n
\n
\n )\n }\n}\n\nexport default FormControlCondition;","import React from 'react';\nimport { Circle, Group, Text } from 'react-konva';\n\ntype PointProps = {\n setHover: (state: boolean) => void,\n fill: string,\n x: number,\n y: number,\n hover: boolean,\n info: number[],\n};\nexport default function Point({ setHover, fill, x, y, info, hover }: PointProps) {\n return (\n \n setHover(true)} onMouseOut={() => setHover(false)} radius={3} fill={fill} x={x} y={y} />\n {hover &&\n { return val.toFixed ? Number(val.toFixed(3)) : val })}\n x={x} y={y} width={120} align=\"center\" fill=\"black\" draggable zindex={100} />}\n \n )\n}","import React, { useState } from 'react';\nimport { Group, Line } from 'react-konva';\nimport Point from './Point';\n\ntype XY = {\n x: number,\n y: number\n}\ntype TieProps = {\n liq: XY,\n vap: XY,\n info: { L: number[], V: number[] },\n showtie?: boolean,\n};\n\nexport default function Tie({ liq, vap, info, showtie }: TieProps) {\n const [hover, setHover] = useState(false);\n return (\n \n \n \n {(hover || showtie) && }\n \n );\n}","export function coordChange(a: number, b: number, c: number): ({ x: number, y: number }) {\n const sq3 = Math.sqrt(3);\n const y = a / 2 * sq3;\n const x = c + y / sq3;\n return { x, y };\n}\n\n// points: 삼각형의 각 좌표 배열 [x1, y1, x2, y2, x3, y3]\n// 2\n// 1 3\nexport function xyTransform(points: number[], ternP: number[]): ({x: number, y: number}) {\n const comy = points[3] - points[5]; // y2-y3\n const comx = points[2] - points[4]; // x2-x3\n const p = ternP[0] * comy;\n const q = ternP[1] * comy;\n const Y = points[1] + p;\n // y=comy/comx*(x-x2)+y2\n // y=comy/comx*x-comy/comx*x2+y2\n // comx*y-comy*x+comy*x2-y2*comx = 0\n // Math.abs( comx*Y-comy*X+comy*x2-y2*comx )/Math.sqrt(comx*comx+comy*comy) == q)\n // (1) comx*Y-comy*X+comy*x2-y2*comx = q*Math.sqrt(comx*comx+comy*comy)\n // (2) comx*Y-comy*X+comy*x2-y2*comx = -q*Math.sqrt(comx*comx+comy*comy)\n const X1 = -(q * Math.sqrt(comx * comx + comy * comy) - comx * Y - comy * points[2] + points[3] * comx) / (comy);\n // const X2 = (q * Math.sqrt(comx * comx + comy * comy) - comx * Y - comy * points[2] + points[3] * comx) / (comy);\n // const line = (x: number) => { return comy / comx * (x - points[2]) + points[3] };\n // if (line(X1) < Y) return {x: X1, y: Y};\n return {x: X1, y: Y};\n // return {x: X2, y: Y};\n}","// ## connect line\nimport React from 'react';\nimport { Line, Group } from 'react-konva';\ntype CLProps = {\n x: number[],\n y: number[],\n}\nexport function CL({ x, y }: CLProps) {\n let points = [];\n for (let i = 0; i < x.length; i++) {\n points.push(x[i]);\n points.push(y[i]);\n }\n return (\n \n )\n}\n\n\ntype CLsProps = {\n datas: { liq: { x: number, y: number }, vap: { x: number, y: number } }[]\n}\n\nexport function CLs({ datas }: CLsProps) {\n let x1: number[] = [], y1: number[] = [];\n let x2: number[] = [], y2: number[] = [];\n\n for (let i = 0; i < datas.length; i++) {\n x1.push(datas[i].liq.x);\n y1.push(datas[i].liq.y);\n\n x2.push(datas[i].vap.x);\n y2.push(datas[i].vap.y);\n }\n\n return (\n \n \n \n \n )\n}\n","import React from 'react';\nimport { Content } from '../../components/Content';\nimport { EQUIL_ENDPOINT, DATA_ENDPOINT, FLASHES_ENDPOINT } from '../../_lib/endpoint';\n\n\nimport ContinuosSlider from '../../components/ContinuosSlider';\nimport { Typography, Chip, FormGroup, FormControlLabel, TextField, LinearProgress } from '@material-ui/core';\nimport Switch from '@material-ui/core/Switch';\nimport { ErrorSnack } from '../../components/Snack';\n\nimport './index.css';\nimport ComponentSelector from '../../components/ComponentSelector';\nimport FormControlCondition from '../../components/FormControlCondition';\nimport { Stage, Layer, Line, Text } from 'react-konva';\nimport Tie from '../../canvas/Tie';\nimport { xyTransform } from '../../_lib/coordChange';\nimport { CLs } from '../../canvas/CL';\nimport Point from '../../canvas/Point';\n\ntype FetchResult = {\n result: {\n data: { P: number, T: number, x: number[], y: number[] }[],\n header: { min: number, max: number },\n mode: string,\n names: string[],\n }\n}\ntype HomeProps = {\n width: number,\n height: number,\n}\nexport type Component = {\n id: string,\n name: string,\n selected?: boolean,\n}\ntype State = {\n data: {\n P: number,\n T: number,\n x: number[],\n y: number[],\n }[],\n waiting: boolean,\n T?: number,\n P?: number,\n fetchT?: number,\n fetchP?: number,\n openSelector: boolean,\n mode?: string,\n min?: number,\n max?: number,\n names?: string[],\n selectedComponents: Component[],\n error: string,\n components: Component[],\n constT: boolean,\n constP: boolean,\n showcl: boolean,\n showtie: boolean,\n showexp: boolean,\n expData?: number[][],\n expText?: string,\n}\n\nclass Home extends React.Component {\n state: State = {\n data: [],\n waiting: false,\n // T: 300,\n // P: 1,\n openSelector: false,\n selectedComponents: [],\n error: '',\n components: [],\n constT: false,\n constP: false,\n showcl: true,\n showtie: false,\n showexp: false,\n }\n\n componentDidMount = async () => {\n const fetchData = await fetch(DATA_ENDPOINT, { method: 'POST' });\n const json = await fetchData.json();\n const components = json.data.map((e: any) => { return { ...e.data, id: e.id } });\n\n this.setState({ components });\n }\n componentDidUpdate = (_: HomeProps, prevState: State) => {\n if (prevState.components !== this.state.components) {\n const selectedComponents = this.state.components.filter(component => component.selected === true);\n this.setState({ selectedComponents });\n }\n // console.log(this.state.T, this.state.P);\n }\n startCalculate = () => {\n if (this.state.error) return;\n if (this.state.selectedComponents.length !== 3) {\n this.setState({ error: '3개의 물질을 선택하세요.' });\n return;\n }\n if (!this.state.constT && !this.state.constP) {\n this.setState({ error: '온도나 압력을 고정해주세요.' });\n return;\n }\n if (this.state.constT && this.state.constP) {\n if (!this.state.fetchT && !this.state.fetchP) {\n this.setState({ error: 'Constant 설정한 property에 값을 입력해야합니다.' });\n return\n }\n this.callFlashes();\n return;\n }\n if ((this.state.constT && this.state.fetchT) || (this.state.constP && this.state.fetchP)) {\n console.log('call equil');\n this.callEquil();\n }\n }\n callEquil = async () => {\n const { selectedComponents } = this.state;\n console.log(selectedComponents);\n const id = selectedComponents.map(comp => { return comp.id });\n\n this.setState({ waiting: true });\n const res = await fetch(EQUIL_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: this.state.constP ? JSON.stringify({ P: this.state.fetchP, id }) : JSON.stringify({ T: this.state.fetchT, id }),\n });\n const json: FetchResult = await res.json()\n const { data, header, mode, names } = json.result;\n if (!data || data.length === 0) {\n this.setState({ error: '계산이 잘 되지 않는 조합입니다...', waiting: false });\n return;\n }\n const { min, max } = header;\n this.setState({ data, min, max, mode, names, waiting: false });\n if (mode === 'BUBLP') {\n this.setState({ P: min });\n } else {\n this.setState({ T: min });\n }\n }\n\n // fetch method 작성할 것.\n callFlashes = async () => {\n const { selectedComponents } = this.state;\n console.log(selectedComponents);\n const id = selectedComponents.map(comp => { return comp.id });\n\n this.setState({ waiting: true });\n const res = await fetch(FLASHES_ENDPOINT, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ P: this.state.fetchP, T: this.state.fetchT, id }),\n });\n const json: FetchResult = await res.json();\n console.log(json);\n const { data, names } = json.result;\n const mode = 'FLASH';\n\n if (!data || data.length === 0) {\n this.setState({ error: '계산이 잘 되지 않는 조합입니다...', waiting: false, mode });\n return;\n }\n this.setState({ data, mode, names, waiting: false });\n }\n\n cancleComponent = (index: number) => {\n let components = [...this.state.components]\n const cancleComponentIdx = this.state.components.findIndex(component => component.name === this.state.selectedComponents[index].name);\n if (cancleComponentIdx > -1) {\n components[cancleComponentIdx].selected = false;\n this.setState({ components });\n }\n }\n\n saveCanvas = () => {\n const canvasSave = this.refs.canvas as HTMLCanvasElement;\n const d = canvasSave && canvasSave.toDataURL();\n const w = window.open();\n w && w.document.write(\"img from canvas\");\n }\n\n setExpData = (expText: string) => {\n // const { expText } = this.state;\n this.setState({ expText })\n let expData: number[][] = [];\n if (expText) {\n const lines: string[] = expText.split('\\n');\n lines.forEach(e => {\n let line: number[] = [];\n const ok = e.split(' ').length === 3;\n if (ok) {\n e.split(' ').forEach((k => {\n line.push(parseFloat(k));\n }));\n expData.push(line);\n }\n });\n }\n this.setState({expData});\n }\n render() {\n // const trianglePoints = [new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(1 / 2, Math.sqrt(3) / 2, 0)];\n\n const { data, waiting, T, P, mode, names } = this.state;\n // const len = data.length;\n const { width } = this.props;\n const isMobile = (width) < 850 ? true : false;\n const ternaryWidth = isMobile ? width - 20 : Math.min((width - 380) * 0.7 - 20, 650);\n const points = [ternaryWidth * 0.015026, ternaryWidth * 0.92, ternaryWidth * 0.5, ternaryWidth * 0.08, ternaryWidth * 0.984974, ternaryWidth * 0.92];\n\n const translated = data.map(e => {\n // const xy_x = coordChange(e.x[0], e.x[1], e.x[2]);\n // const xy_y = coordChange(e.y[0], e.y[1], e.y[2]);\n const liq = xyTransform(points, e.x);\n const vap = xyTransform(points, e.y);\n return { liq, vap, T: e.T, P: e.P, x: e.x, y: e.y };\n });\n\n const expData = this.state.expData && this.state.expData.map(e => {\n return xyTransform(points, e)\n });\n\n return (\n
\n {waiting &&
}\n
    \n {this.state.selectedComponents && this.state.selectedComponents.map((comp, i) => (\n
  • \n this.cancleComponent(i)} />\n
  • \n ))}\n
\n
\n
\n \n this.setState({ fetchP })} onError={(error) => this.setState({ error })} onCheckConst={(constP) => this.setState({ constP })} />\n this.setState({ fetchT })} onError={(error) => this.setState({ error })} onCheckConst={(constT) => this.setState({ constT })} />\n \n\n {\n let newComponents = [...this.state.components];\n // switching value\n newComponents[i].selected = newComponents[i].selected ? false : true;\n this.setState({ components: newComponents });\n }}\n calcButton={\n }\n />\n \n\n {/* exp data input */}\n
\n
\n
\n \n this.setState({ showcl: !this.state.showcl })} value=\"Show connected line\" />}\n label=\"Binodal curve\"\n />\n this.setState({ showtie: !this.state.showtie })} value=\"Show tieline\" />}\n label=\"Tieline\"\n />\n this.setState({ showexp: !this.state.showexp })} value=\"Show exp data\" />}\n label=\"Exp data\"\n />\n \n
\n \n \n {/* label */}\n \n \n \n\n {/* background triangle */}\n \n\n {/* fill with calculated data */}\n {/* bublP */}\n {mode === \"BUBLP\" && data && P && translated.map((e, i) => {\n if (P < e.P * 1.001 && P > e.P * 0.999) {\n return \n }\n return null;\n })}\n\n {/* bublT */}\n {mode === \"BUBLT\" && data && T && translated.map((e, i) => {\n if (T < e.T * 1.001 && T > e.T * 0.999) {\n return \n }\n return null;\n })}\n\n {/* for flash */}\n {mode === \"FLASH\" && data && translated.map((e, i) => {\n return \n })}\n {mode === \"FLASH\" && data && this.state.showcl && }\n\n {/* exp data plot */}\n {expData && this.state.showexp &&\n expData.map((e, i) =>\n { }} fill=\"purple\" x={e.x} y={e.y} info={[]} />\n )\n }\n \n \n \n
\n
\n {P && mode && mode === \"BUBLP\" ?\n
\n P : {P.toFixed(3)} atm\n this.setState({ P })} min={this.state.min} max={this.state.max} />\n
\n : T && mode === \"BUBLT\" ?\n
\n T : {T.toFixed(3)} K\n this.setState({ T })} min={this.state.min} max={this.state.max} />\n
\n : <>\n }\n
\n
\n {this.state.showexp && this.setExpData(e.target.value)} />}\n
\n
\n
\n {/* */}\n this.setState({ error: '' })} />\n
\n );\n }\n}\nconst styles: { [key: string]: React.CSSProperties } = {\n calculateButton: {\n width: '100%', height: 40, backgroundColor: \"#FECF58\", borderRadius: 10, fontSize: 17, border: 'none'\n },\n saveButton: {\n marginTop: 10, width: '100%', height: 40, backgroundColor: \"#ABCDEF\", borderRadius: 10, fontSize: 17, border: 'none',\n }\n}\n// const mobileStyles: { [key: string]: React.CSSProperties } = {\n\n// }\n\nexport default Home;","import React from 'react';\n\ntype lp = {\n lang: string,\n onClick: (lang: string) => void,\n}\nexport function LangSelector({ lang, onClick }: lp) {\n return (\n \n );\n}\n\nconst styles: { [key: string]: React.CSSProperties } = {\n font: {\n marginTop: 10,\n fontWeight: \"bold\",\n }\n};","import React from 'react';\nimport { Content } from '../../components/Content';\nimport './index.css';\nimport './github.css';\nimport ReactHtmlParser from 'react-html-parser';\nimport { GITHUB_MARKDOWN_ENDPOINT } from '../../_lib/endpoint';\nimport { LinearProgress } from '@material-ui/core';\nimport { LangSelector } from './LangSelector';\n\ntype State = {\n markdown?: string,\n loading: boolean,\n lang: string,\n}\nclass Document extends React.Component<{}, State> {\n state: State = { lang: 'ko', loading: true };\n changeLang = (lang: string) => {\n this.setState({ lang, loading: true });\n this.loadMD(lang);\n }\n loadMD = async (lang: string) => {\n let path: string;\n if (lang === 'ko') {\n path = '/Readme.md';\n } else {\n path = '/Readme_eng.md';\n }\n const res = await fetch(path);\n const markdownRaw = await res.text();\n const githubRes = await fetch(GITHUB_MARKDOWN_ENDPOINT, {\n method: 'POST',\n body: JSON.stringify({ text: markdownRaw })\n })\n const markdown = await githubRes.text();\n this.setState({ markdown, loading: false });\n }\n componentDidMount = () => {\n this.loadMD('ko');\n }\n render() {\n const { markdown, loading } = this.state;\n return (\n <>\n {loading &&
}\n \n
\n \n
\n \n
\n
\n {ReactHtmlParser(markdown ? markdown : '')}\n
\n
\n \n );\n }\n}\nexport default Document;","import React, { forwardRef } from 'react';\nimport AddBox from '@material-ui/icons/AddBox';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport Check from '@material-ui/icons/Check';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport Clear from '@material-ui/icons/Clear';\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\nimport Edit from '@material-ui/icons/Edit';\nimport FilterList from '@material-ui/icons/FilterList';\nimport FirstPage from '@material-ui/icons/FirstPage';\nimport LastPage from '@material-ui/icons/LastPage';\nimport Remove from '@material-ui/icons/Remove';\nimport SaveAlt from '@material-ui/icons/SaveAlt';\nimport Search from '@material-ui/icons/Search';\nimport ViewColumn from '@material-ui/icons/ViewColumn';\nimport MaterialTable, { Icons } from 'material-table';\n\nconst tableIcons: Icons = {\n Add: forwardRef((props, ref) => ),\n Check: forwardRef((props, ref) => ),\n Clear: forwardRef((props, ref) => ),\n Delete: forwardRef((props, ref) => ),\n DetailPanel: forwardRef((props, ref) => ),\n Edit: forwardRef((props, ref) => ),\n Export: forwardRef((props, ref) => ),\n Filter: forwardRef((props, ref) => ),\n FirstPage: forwardRef((props, ref) => ),\n LastPage: forwardRef((props, ref) => ),\n NextPage: forwardRef((props, ref) => ),\n PreviousPage: forwardRef((props, ref) => ),\n ResetSearch: forwardRef((props, ref) => ),\n Search: forwardRef((props, ref) => ),\n SortArrow: forwardRef((props, ref) => ),\n ThirdStateCheck: forwardRef((props, ref) => ),\n ViewColumn: forwardRef((props, ref) => )\n};\n\ntype DataTableProps = {\n columns: { title: string, field: string }[],\n data: object[],\n title: string,\n}\nclass DataTable extends React.Component {\n render() {\n return (\n \n )\n }\n}\n\nexport default DataTable;","import React from 'react';\nimport { DATA_ENDPOINT } from '../../_lib/endpoint';\nimport DataTable from './Table';\nimport './index.css';\nimport { Select, MenuItem, InputLabel, FormControl } from '@material-ui/core';\n\ntype FilterValue = 'Zero' | 'NonZero' | 'None';\ntype Component = {\n id: string,\n name: string,\n d: number,\n e: number,\n}\ntype State = {\n columns: { title: string, field: string }[],\n data: Component[],\n dStatus: FilterValue,\n eStatus: FilterValue,\n}\n\nclass Database extends React.Component<{}, State> {\n state: State = {\n columns: [\n { title: 'Name', field: 'name' },\n { title: 'Mw', field: 'Mw' },\n { title: 'Pc', field: 'Pc' },\n { title: 'Tc', field: 'Tc' },\n { title: 'Tb', field: 'Tb' },\n { title: 'ω', field: 'w' },\n { title: 'ε', field: 'epsilon' },\n { title: 'm', field: 'm' },\n { title: 'σ', field: 'sigma' },\n { title: 'k', field: 'k' },\n { title: 'e', field: 'e' },\n { title: 'd', field: 'd' },\n { title: 'x', field: 'x' },\n ],\n data: [],\n dStatus: 'None',\n eStatus: 'None',\n }\n\n componentDidMount = async () => {\n const fetchData = await fetch(DATA_ENDPOINT, { method: 'POST' });\n const json = await fetchData.json();\n const data = json.data.map((e: any) => { return e.data });\n\n this.setState({ data });\n }\n\n filterData(data: Component[]) {\n let results = data.slice();\n if (this.state.dStatus === 'NonZero') {\n results = results.filter((datum: Component) => datum.d !== 0)\n } else if (this.state.dStatus === 'Zero') {\n results = results.filter((datum: Component) => datum.d === 0)\n }\n if (this.state.eStatus === 'NonZero') {\n results = results.filter((datum: Component) => datum.e !== 0)\n } else if (this.state.eStatus === 'Zero') {\n results = results.filter((datum: Component) => datum.e === 0)\n }\n return results\n }\n\n onDStatusChange(e: any) {\n this.setState({ dStatus: e.target.value })\n }\n\n onTStatusChange(e: any) {\n this.setState({ eStatus: e.target.value })\n }\n\n render() {\n return (\n
\n \n 극성 필터\n this.onDStatusChange(e)}>\n 필터 없음\n Polar component\n Nonpolar component\n \n \n \n 회합성 필터\n this.onTStatusChange(e)}>\n 필터 없음\n Associating component\n Nonassociating component\n \n \n \n
\n );\n }\n}\nexport default Database;","import React from 'react';\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\nimport Header from './components/Header';\nimport Home from './routes/Home';\nimport Document from './routes/Documents';\nimport Database from './routes/Database';\n\ntype State = {\n width: number,\n height: number,\n};\nclass App extends React.Component<{}, State> {\n state: State = {\n width: 0,\n height: 0,\n }\n componentDidMount = () => {\n this.updateWindowDimensions();\n window.addEventListener('resize', this.updateWindowDimensions);\n }\n\n componentWillUnmount = () => {\n window.removeEventListener('resize', this.updateWindowDimensions);\n }\n\n updateWindowDimensions = () => {\n this.setState({ width: window.innerWidth, height: window.innerHeight });\n }\n\n render() {\n return (\n \n
\n \n \n \n \n \n \n );\n }\n}\n\nexport default App;","// 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.1/8 is 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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: 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(\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n window.location.href\n );\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: string, config?: 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: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\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.then(registration => {\n registration.unregister();\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';\n\nReactDOM.render(, document.getElementById('root'));\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"],"sourceRoot":""}