{"version":3,"sources":["components/Header.tsx","components/Footer.tsx","utils.ts","components/editorCommon.tsx","components/InputEditor.tsx","components/OutputStatusLine.tsx","components/WarningFab.tsx","components/OutputEditor.tsx","components/OptionsControl.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["Header","Typography","variant","component","gutterBottom","useStyles","makeStyles","theme","root","marginTop","spacing","icon","fontSize","Footer","classes","className","Grid","container","justifyContent","item","color","Link","href","countLines","s","trim","split","filter","v","length","useEditorStyles","statusLineWrapper","marginBottom","InputEditor","input","setInput","TextField","id","label","placeholder","multiline","fullWidth","autoFocus","rows","inputProps","wrap","value","onChange","event","target","Box","useMemo","Partial","name","status","line_count_before","title","address_count_before","line_count_after","address_count_after","OutputStatusLine","output","direction","v4","v6","fab","position","right","bottom","orange","backgroundColor","borderColor","palette","primary","light","popoverContent","margin","popoverTitle","textAlign","popoverBody","padding","minWidth","WarningFab","invalidLines","React","useState","anchorEl","setAnchorEl","open","Boolean","undefined","invalidCount","Tooltip","Fab","size","aria-label","onClick","currentTarget","Badge","badgeContent","Popover","onClose","anchorOrigin","vertical","horizontal","transformOrigin","Paper","square","OutputEditor","ipKind","ranges","join","invalid","OptionsControl","ref","toggleIpv4","toggleIpv6","bogonFilter","toggleReservedFilter","handleAggregate","ButtonGroup","Button","FormGroup","row","FormControlLabel","control","Switch","checked","forwardRef","main","editorWrapper","optionsControlWrapper","mainWrapper","sectionWrapper","App","controlRef","useRef","setOutput","setIpKind","setBogonFilter","a","reverse","aggregate","Object","assign","current","scrollIntoView","behavior","useEffect","Container","maxWidth","CssBaseline","elevation","p","prev","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"+RAEe,SAASA,IACtB,OACE,mCACE,cAACC,EAAA,EAAD,CAAYC,QAAQ,KAAKC,UAAU,KAAKC,cAAY,EAApD,6BAGA,cAACH,EAAA,EAAD,CAAYC,QAAQ,KAAKC,UAAU,KAAKC,cAAY,EAApD,SACG,mD,uCCHHC,EAAYC,aAAW,SAACC,GAAD,MAAY,CACvCC,KAAM,CACJC,UAAWF,EAAMG,QAAQ,IAE3BC,KAAM,CACJC,SAAU,YAIC,SAASC,IACtB,IAAMC,EAAUT,IAEhB,OACE,wBAAQU,UAAWD,EAAQN,KAA3B,SACE,eAACQ,EAAA,EAAD,CAAMC,WAAS,EAACC,eAAe,gBAA/B,UACE,cAACF,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,cAAClB,EAAA,EAAD,CAAYC,QAAQ,QAAQkB,MAAM,gBAAlC,SACE,eAACC,EAAA,EAAD,CACED,MAAM,UACNE,KAAK,2CAFP,UAIE,cAAC,IAAD,CAAYP,UAAWD,EAAQH,OAC9B,sBAIP,cAACK,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,cAAClB,EAAA,EAAD,CAAYC,QAAQ,QAAQkB,MAAM,gBAAlC,SACG,0E,aClCN,SAASG,EAAWC,GACzB,OAAKA,EAGEA,EACJC,OACAC,MAAM,MACNC,QAAO,SAACC,GAAD,OAAOA,KAAGC,OALX,ECAJ,IAAMC,EAAkBxB,aAAW,SAACC,GAAD,MAAY,CACpDwB,kBAAmB,CACjBtB,UAAWF,EAAMG,QAAQ,IACzBsB,aAAczB,EAAMG,SAAS,QCIlB,SAASuB,EAAT,GAMX,IALFC,EAKC,EALDA,MACAC,EAIC,EAJDA,SAKMrB,EAAUgB,IAEhB,OACE,qCACE,cAACM,EAAA,EAAD,CACEC,GAAG,QACHC,MAAM,QACNC,YAAY,aACZC,WAAS,EACTC,WAAS,EACTC,WAAS,EACTC,KAAM,GACNC,WAAY,CAAEC,KAAM,QACpBC,MAAOZ,EACPa,SAAU,SAACC,GAAD,OAAWb,EAASa,EAAMC,OAAOH,UAE7C,cAACI,EAAA,EAAD,CAAKnC,UAAWD,EAAQiB,kBAAxB,SACE,eAAC9B,EAAA,EAAD,CAAYC,QAAQ,UAAUkB,MAAM,gBAApC,oBACU+B,mBAAQ,kBAAM5B,EAAWW,KAAQ,CAACA,IAAS,YC/B7D,SAASkB,EAAT,GAAmE,IAAD,QAA/CC,EAA+C,EAA/CA,KAAMC,EAAyC,EAAzCA,OACvB,OACE,eAACrD,EAAA,EAAD,CAAYC,QAAQ,UAAUkB,MAAM,gBAApC,UACGiC,EADH,sBACWC,QADX,IACWA,OADX,EACWA,EAAQC,yBADnB,QACwC,EADxC,IAC2C,sBAAMC,MAAM,QAAZ,eAD3C,KAC0E,IAD1E,iBAEGF,QAFH,IAEGA,OAFH,EAEGA,EAAQG,4BAFX,QAEmC,IAFnC,yBAIE,6CAAIH,QAAJ,IAAIA,OAAJ,EAAIA,EAAQI,wBAAZ,QAAgC,IAChC,sBAAMF,MAAM,QAAZ,eALF,MAKiC,6CAAIF,QAAJ,IAAIA,OAAJ,EAAIA,EAAQK,2BAAZ,QAAmC,SAKzD,SAASC,EAAT,GAAwD,IAA5BC,EAA2B,EAA3BA,OACzC,OACE,eAAC7C,EAAA,EAAD,CAAMC,WAAS,EAAC6C,UAAU,MAAM5C,eAAe,gBAA/C,UACE,cAACF,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,cAACiC,EAAD,CAASC,KAAK,OAAOC,OAAM,OAAEO,QAAF,IAAEA,OAAF,EAAEA,EAAQE,OAEvC,cAAC/C,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,cAACiC,EAAD,CAASC,KAAK,OAAOC,OAAM,OAAEO,QAAF,IAAEA,OAAF,EAAEA,EAAQG,U,0ECRvC3D,EAAYC,aAAW,SAACC,GAAD,MAAY,CACvC0D,IAAK,CACHC,SAAU,WACVC,MAAO5D,EAAMG,QAAQ,GACrB0D,OAAQ7D,EAAMG,QAAQ,GACtBU,MAAOiD,IAAO,KACdC,gBAAiB,QACjBC,YAAahE,EAAMiE,QAAQC,QAAQC,OAKrCC,eAAgB,CACdC,OAAQrE,EAAMG,QAAQ,IAExBmE,aAAc,CACZC,UAAW,UAEbC,YAAa,CACXC,QAASzE,EAAMG,QAAQ,GACvBkE,OAAQ,EACRK,SAAU,YAIC,SAASC,EAAT,GAAiE,IAA3CC,EAA0C,EAA1CA,aAC7BrE,EAAUT,IAD6D,EAG7C+E,IAAMC,SAAS,MAH8B,mBAGtEC,EAHsE,KAG5DC,EAH4D,KAUvEC,EAAOC,QAAQH,GACfjD,EAAKmD,EAAO,6BAA0BE,EAEtCC,EAAexC,mBAAQ,kBAAM5B,EAAW4D,KAAe,CAACA,IAE9D,OAAOQ,EAAe,EACpB,qCACE,cAACC,EAAA,EAAD,CAASpC,MAAOmC,EAAe,iBAA/B,SACE,cAACE,EAAA,EAAD,CACEC,KAAK,QACL/E,UAAWD,EAAQmD,IACnB8B,aAAW,gBACXC,QAlBW,SAAChD,GAClBuC,EAAYvC,EAAMiD,gBAad,SAME,cAACC,EAAA,EAAD,CAAOC,aAAcR,EAAcvE,MAAM,YAAzC,SACE,cAAC,IAAD,UAIN,cAACgF,EAAA,EAAD,CACE/D,GAAIA,EACJmD,KAAMA,EACNF,SAAUA,EACVe,QA1Bc,WAClBd,EAAY,OA0BRe,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UAXhB,SAcE,eAACtD,EAAA,EAAD,CAAKnC,UAAWD,EAAQ6D,eAAxB,UACE,cAAC1E,EAAA,EAAD,CAAYC,QAAQ,KAAKa,UAAWD,EAAQ+D,aAA5C,2BAGA,cAAC6B,EAAA,EAAD,CAAOxG,QAAQ,WAAWyG,QAAM,EAAhC,SACE,qBAAK5F,UAAWD,EAAQiE,YAAxB,SACE,+BAAOI,gBAOjB,6BCxFW,SAASyB,EAAT,GAMX,IAAD,IALDC,EAKC,EALDA,OACAhD,EAIC,EAJDA,OAKM/C,EAAUgB,IAEhB,OACE,eAACoB,EAAA,EAAD,CAAKgB,SAAS,WAAd,UACG,IAGD,cAAC9B,EAAA,EAAD,CACEC,GAAG,QACHC,MAAM,SACNC,YAAY,WACZC,WAAS,EACTC,WAAS,EACTE,KAAM,GACNC,WAAY,CAAEC,KAAM,QACpBC,MAAO,CACM,SAAX+D,IAAA,OAAqBhD,QAArB,IAAqBA,GAArB,UAAqBA,EAAQE,UAA7B,aAAqB,EAAY+C,QACtB,SAAXD,IAAA,OAAqBhD,QAArB,IAAqBA,GAArB,UAAqBA,EAAQG,UAA7B,aAAqB,EAAY8C,SAEhCnF,QAAO,SAACC,GAAD,OAAOA,KACdmF,KAAK,QAEV,cAAC7D,EAAA,EAAD,CAAKnC,UAAWD,EAAQiB,kBAAxB,SACE,cAAC6B,EAAD,CAAkBC,OAAQA,MAE5B,cAACqB,EAAD,CAAYC,aAAY,OAAEtB,QAAF,IAAEA,OAAF,EAAEA,EAAQmD,a,iDC7BxC,SAASC,EAAT,EAgBEC,GACC,IAfCL,EAeF,EAfEA,OACAM,EAcF,EAdEA,WACAC,EAaF,EAbEA,WACAC,EAYF,EAZEA,YACAC,EAWF,EAXEA,qBACAC,EAUF,EAVEA,gBAWF,OACE,eAACvG,EAAA,EAAD,CAAMC,WAAS,EAACiG,IAAKA,EAAKpD,UAAU,MAAM5C,eAAe,eAAzD,UACE,cAACF,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,eAACqG,EAAA,EAAD,CAAapG,MAAM,UAAU2E,aAAW,uBAAxC,UACE,cAAC0B,EAAA,EAAD,CAAQrG,MAAM,UAAU4E,QAAS,kBAAMuB,KAAvC,uBAGA,cAACE,EAAA,EAAD,CAAQrG,MAAM,UAAU4E,QAAS,kBAAMuB,GAAgB,IAAvD,0BAKJ,cAACvG,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,eAACuG,EAAA,EAAD,CAAWC,KAAG,EAAd,UACE,cAACC,EAAA,EAAD,CACEC,QACE,cAACC,EAAA,EAAD,CACEC,QAAoB,SAAXlB,EACT9D,SAAUoE,EACV9D,KAAK,SAGTf,MAAM,SAER,cAACsF,EAAA,EAAD,CACEC,QACE,cAACC,EAAA,EAAD,CACEC,QAAoB,SAAXlB,EACT9D,SAAUqE,EACV/D,KAAK,SAGTf,MAAM,cAIZ,cAACtB,EAAA,EAAD,CAAMG,MAAI,EAAV,SACE,cAACyE,EAAA,EAAD,CAASpC,MAAM,qJAAf,SACE,cAACoE,EAAA,EAAD,CACEC,QACE,cAACC,EAAA,EAAD,CACEC,QAAyB,aAAhBV,EACTtE,SAAUuE,EACVjE,KAAK,oBAGTf,MAAM,gCAQH0F,2BAAWf,GCrEpB5G,EAAYC,aAAW,SAACC,GAAD,MAAY,CAMvC0H,KAAM,CACJxH,UAAWF,EAAMG,QAAQ,GACzBsB,aAAczB,EAAMG,QAAQ,IAE9BwH,cAAe,CACbzH,UAAWF,EAAMG,QAAQ,GACzBsB,aAAczB,EAAMG,QAAQ,GAC5BsE,QAASzE,EAAMG,QAAQ,IAEzByH,sBAAuB,CACrB1H,UAAWF,EAAMG,SAAS,GAC1BsB,aAAczB,EAAMG,SAAS,GAC7BsE,QAASzE,EAAMG,QAAQ,IAKzB0H,YAAa,CACX3H,UAAWF,EAAMG,QAAQ,GACzBsB,aAAczB,EAAMG,QAAQ,IAE9B2H,eAAgB,CACd5H,UAAWF,EAAMG,QAAQ,GACzBsB,aAAczB,EAAMG,QAAQ,QA4GjB4H,MAlGf,WACE,IAAMxH,EAAUT,IACVkI,EAAaC,iBAAO,MAFb,EAGanD,mBAAS,IAHtB,mBAGNnD,EAHM,KAGCC,EAHD,OAIekD,wBAASK,GAJxB,mBAIN7B,EAJM,KAIE4E,EAJF,OAKepD,mBAAS,QALxB,mBAKNwB,EALM,KAKE6B,EALF,OAMyBrD,wBACpCK,GAPW,mBAMN2B,EANM,KAMOsB,EANP,KAoCPpB,EAAe,uCAAG,4CAAAqB,EAAA,6DAAOC,EAAP,yCACM,8BADN,uBACdC,EADc,EACdA,UADc,KAEtBL,EAFsB,KAGpBM,OAHoB,KAIlB,CAAEF,WAJgB,UAKZC,EAAU5G,EAAO2G,EAAyB,aAAhBxB,GALd,8BAGb2B,OAHa,qCAQZ,OAAVT,QAAU,IAAVA,OAAA,EAAAA,EAAYU,UACVV,EAAWU,QAAQC,eAAe,CAAEC,SAAU,WAT1B,4CAAH,qDAgBrB,OALAC,qBAAU,WACRvF,GAAU0D,EAAgB1D,EAAOgF,WAEhC,CAACxB,IAGF,eAACgC,EAAA,EAAD,CAAWlJ,UAAU,OAAOY,UAAWD,EAAQmH,KAAMqB,SAAS,KAA9D,UACE,cAACC,EAAA,EAAD,IACA,cAACvJ,EAAD,IACA,uBAAMe,UAAWD,EAAQsH,YAAzB,UACE,cAAC1B,EAAA,EAAD,CACEvG,UAAU,UACVqJ,UAAW,EACXzI,UAAWD,EAAQuH,eAHrB,SAKE,cAACnF,EAAA,EAAD,CAAKuG,EAAG,EAAR,SACE,cAACxH,EAAD,CAAaC,MAAOA,EAAOC,SAAUA,QAGzC,cAACuE,EAAA,EAAD,CACEvG,UAAU,UACVqJ,UAAW,EACXzI,UAAWD,EAAQuH,eAHrB,SAKE,cAACnF,EAAA,EAAD,CAAKuG,EAAG,EAAR,SACE,cAAC,EAAD,CACE5C,OAAQA,EACRM,WAjEO,WACjBuB,GAAU,SAACgB,GACT,MAAa,SAATA,GAA4B,SAATA,EACd,OAEA,WA6DDtC,WAzDO,WACjBsB,GAAU,SAACgB,GACT,MAAa,SAATA,GAA4B,SAATA,EACd,OAEA,WAqDDrC,YAAaA,EACbC,qBAlDiB,WAC3BqB,GAAe,SAACe,GACd,MAAoB,aAAhBrC,OACF,EAEO,eA8CDE,gBAAiBA,EACjBL,IAAKqB,QAIX,cAAC7B,EAAA,EAAD,CACEvG,UAAU,UACVqJ,UAAW,EACXzI,UAAWD,EAAQuH,eAHrB,SAKE,cAACnF,EAAA,EAAD,CAAKuG,EAAG,EAAR,SACE,cAAC7C,EAAD,CAAcC,OAAQA,EAAQhD,OAAQA,WAI5C,cAAChD,EAAD,QCnIS8I,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCHdQ,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,MAEFC,SAASC,eAAe,SAM1Bb,M","file":"static/js/main.a2138c06.chunk.js","sourcesContent":["import Typography from \"@material-ui/core/Typography\";\n\nexport default function Header() {\n return (\n \n \n CIDR Aggregator\n \n \n {\"Aggregate or reverse CIDRs (i.e. IP ranges)\"}\n \n \n );\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Link from \"@material-ui/core/Link\";\nimport GitHubIcon from \"@material-ui/icons/GitHub\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(3),\n },\n icon: {\n fontSize: \"1rem\",\n },\n}));\n\nexport default function Footer() {\n const classes = useStyles();\n\n return (\n \n );\n}\n","export function countLines(s: string): number {\n if (!s) {\n return 0;\n }\n return s\n .trim()\n .split(\"\\n\")\n .filter((v) => v).length;\n}\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nexport const useEditorStyles = makeStyles((theme) => ({\n statusLineWrapper: {\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(-1),\n },\n}));\n","import { useMemo } from \"react\";\nimport TextField from \"@material-ui/core/TextField\";\n// import Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from \"@material-ui/core/Box\";\n\nimport { countLines } from \"../utils\";\nimport { useEditorStyles } from \"./editorCommon\";\n\nexport default function InputEditor({\n input,\n setInput,\n}: {\n input: string;\n setInput: (value: string) => void;\n}) {\n const classes = useEditorStyles();\n\n return (\n <>\n setInput(event.target.value)}\n />\n \n \n Lines: {useMemo(() => countLines(input), [input])}{\" \"}\n \n \n >\n );\n}\n","import Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\n\nfunction Partial({ name, status }: { name: string; status: any }) {\n return (\n \n {name}: {status?.line_count_before ?? 0} L /{\" \"}\n {status?.address_count_before ?? \"0\"}\n ➟ \n {status?.line_count_after ?? 0}\n L / {status?.address_count_after ?? \"0\"}\n \n );\n}\n\nexport default function OutputStatusLine({ output }: { output: any }) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useMemo, MouseEvent } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Box from \"@material-ui/core/Box\";\nimport Fab from \"@material-ui/core/Fab\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Popover from \"@material-ui/core/Popover\";\nimport Badge from \"@material-ui/core/Badge\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Paper from \"@material-ui/core/Paper\";\nimport orange from \"@material-ui/core/colors/orange\";\n\nimport { countLines } from \"../utils\";\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n position: \"absolute\",\n right: theme.spacing(3),\n bottom: theme.spacing(5),\n color: orange[500],\n backgroundColor: \"white\",\n borderColor: theme.palette.primary.light,\n // \"&:hover\": {\n // backgroundColor: \"white\",\n // }\n },\n popoverContent: {\n margin: theme.spacing(1),\n },\n popoverTitle: {\n textAlign: \"center\",\n },\n popoverBody: {\n padding: theme.spacing(1),\n margin: 0,\n minWidth: \"12em\",\n },\n}));\n\nexport default function WarningFab({ invalidLines }: { invalidLines: string }) {\n const classes = useStyles();\n\n const [anchorEl, setAnchorEl] = React.useState(null as any);\n const handleOpen = (event: MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => {\n setAnchorEl(null);\n };\n const open = Boolean(anchorEl);\n const id = open ? \"invalid-lines-popover\" : undefined;\n\n const invalidCount = useMemo(() => countLines(invalidLines), [invalidLines]);\n\n return invalidCount > 0 ? (\n <>\n \n \n \n \n \n \n \n \n \n \n Invalid lines\n \n \n \n {invalidLines}
\n
\n \n \n \n >\n ) : (\n <>>\n );\n}\n","import Box from \"@material-ui/core/Box\";\nimport TextField from \"@material-ui/core/TextField\";\n\nimport { useEditorStyles } from \"./editorCommon\";\nimport OutputStatusLine from \"./OutputStatusLine\";\nimport WarningFab from \"./WarningFab\";\n\nexport default function OutputEditor({\n ipKind,\n output,\n}: {\n ipKind: string;\n output: any;\n}) {\n const classes = useEditorStyles();\n\n return (\n \n {\" \"}\n {/* for Fab positioning */}\n {/* TODO: nowrap */}\n v)\n .join(\"\\n\")}\n />\n \n \n \n \n \n );\n}\n","import { forwardRef, ForwardedRef } from \"react\";\n\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Switch from \"@material-ui/core/Switch\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ButtonGroup from \"@material-ui/core/ButtonGroup\";\nimport Button from \"@material-ui/core/Button\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\nfunction OptionsControl(\n {\n ipKind,\n toggleIpv4,\n toggleIpv6,\n bogonFilter,\n toggleReservedFilter,\n handleAggregate,\n }: {\n ipKind: string;\n toggleIpv4: () => void;\n toggleIpv6: () => void;\n bogonFilter?: string;\n toggleReservedFilter: () => void;\n handleAggregate: (reverse?: boolean) => void;\n },\n ref: ForwardedRef\n) {\n return (\n \n \n \n \n \n \n \n \n \n \n }\n label=\"IPv4\"\n />\n \n }\n label=\"IPv6\"\n />\n \n \n \n \n \n }\n label=\"Exclude reserved IPs\"\n />\n \n \n \n );\n}\n\nexport default forwardRef(OptionsControl);\n","import React, { useState, useRef, useEffect } from \"react\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Box from \"@material-ui/core/Box\";\n\nimport Header from \"./components/Header\";\nimport Footer from \"./components/Footer\";\nimport InputEditor from \"./components/InputEditor\";\nimport OutputEditor from \"./components/OutputEditor\";\nimport OptionsControl from \"./components/OptionsControl\";\n\nconst useStyles = makeStyles((theme) => ({\n // root: {\n // display: 'flex',\n // flexDirection: 'column',\n // minHeight: '100vh',\n // },\n main: {\n marginTop: theme.spacing(5),\n marginBottom: theme.spacing(2),\n },\n editorWrapper: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n padding: theme.spacing(2),\n },\n optionsControlWrapper: {\n marginTop: theme.spacing(-1),\n marginBottom: theme.spacing(-1),\n padding: theme.spacing(1),\n // '& > *': {\n // margin: theme.spacing(1)\n // }\n },\n mainWrapper: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n sectionWrapper: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n // footer: {\n // padding: theme.spacing(3, 2),\n // marginTop: 'auto',\n // backgroundColor:\n // theme.palette.type === 'light' ? theme.palette.grey[200] : theme.palette.grey[800],\n // },\n}));\n\nfunction App() {\n const classes = useStyles();\n const controlRef = useRef(null as any);\n const [input, setInput] = useState(\"\");\n const [output, setOutput] = useState(undefined as any);\n const [ipKind, setIpKind] = useState(\"both\");\n const [bogonFilter, setBogonFilter] = useState(\n undefined as \"reserved\" | undefined\n );\n const toggleIpv4 = () => {\n setIpKind((prev) => {\n if (prev === \"both\" || prev === \"ipv4\") {\n return \"ipv6\";\n } /* ipv6 */ else {\n return \"both\";\n }\n });\n };\n const toggleIpv6 = () => {\n setIpKind((prev) => {\n if (prev === \"both\" || prev === \"ipv6\") {\n return \"ipv4\";\n } /* ipv4 */ else {\n return \"both\";\n }\n });\n };\n const toggleReservedFilter = () => {\n setBogonFilter((prev) => {\n if (bogonFilter === \"reserved\") {\n return undefined;\n } else {\n return \"reserved\";\n }\n });\n };\n const handleAggregate = async (reverse = false) => {\n const { aggregate } = await import(\"../../pkg/cidr_aggregator.js\");\n setOutput(\n Object.assign(\n { reverse },\n await aggregate(input, reverse, bogonFilter === \"reserved\")\n )\n );\n controlRef?.current &&\n controlRef.current.scrollIntoView({ behavior: \"smooth\" });\n };\n useEffect(() => {\n output && handleAggregate(output.reverse);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bogonFilter]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}