dappros/ethora

View on GitHub
client-web/build-prod/static/js/639.53b99eab.chunk.js.map

Summary

Maintainability
Test Coverage
{"version":3,"file":"static/js/639.53b99eab.chunk.js","mappings":"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","sources":["pages/Owner/NewAppModal.tsx","../node_modules/@mui/material/esm/useMediaQuery/useMediaQuery.js","pages/Owner/DeletAppModal.tsx","pages/Owner/EditAppModal.tsx","pages/Owner/RotateModal.tsx","pages/Owner/Apps.tsx","pages/Owner/index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { useFormik } from \"formik\";\nimport TextField from \"@mui/material/TextField\";\nimport { useStoreState } from \"../../store\";\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport * as http from '../../http'\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Checkbox from \"@mui/material/Checkbox\";\n\ntype TProps = {\n  open: boolean;\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport default function NewAppModal({ open, setOpen }: TProps) {\n  const fileRef = React.useRef<HTMLInputElement>(null);\n  const setApp = useStoreState((state) => state.setApp);\n  const [loading, setLoading] = useState(false)\n\n  const formik = useFormik({\n    initialValues: {\n      appName: \"\",\n      appDescription: \"\",\n      appGoogleId: \"\",\n      defaultAccessProfileOpen: false,\n      defaultAccessAssetsOpen: false,\n      usersCanFree: false,\n      newUserTokenGift: 0,\n      coinsDayliBonus: 0,\n    },\n    validate: (values) => {\n      const errors: Record<string, string> = {};\n\n      if (!values.appName) {\n        errors.appName = \"Required\";\n      }\n\n      return errors;\n    },\n    onSubmit: ({\n      appName,\n      appDescription,\n      appGoogleId,\n      defaultAccessAssetsOpen,\n      defaultAccessProfileOpen,\n      usersCanFree\n    }) => {\n      setLoading(true);\n      const fd = new FormData();\n      let file;\n      if (fileRef.current) {\n        const files = fileRef.current.files;\n        if (files) {\n          file = files[0];\n        }\n      }\n\n      if (file) {\n        fd.append(\"file\", file);\n      }\n\n      fd.append(\"appName\", appName);\n      fd.append(\"appDescription\", appDescription);\n      fd.append(\"appGoogleId\", appGoogleId);\n      fd.append(\"defaultAccessAssetsOpen\", defaultAccessAssetsOpen.toString());\n      fd.append(\"defaultAccessProfileOpen\", defaultAccessProfileOpen.toString());\n      fd.append(\"usersCanFree\", usersCanFree.toString());\n\n      http.createApp(fd)\n        .then(response => {\n          setApp(response.data.app)\n          setOpen(false)\n        })\n        .finally(() => setLoading(false))\n    }\n  });\n\n  return (\n    <Dialog onClose={() => {}} open={open}>\n      <Box>\n        <DialogTitle\n          style={{ display: \"flex\", justifyContent: \"space-between\" }}\n        >\n          New App\n          <IconButton disabled={loading} onClick={() => setOpen(false)}>\n            <CloseIcon />\n          </IconButton>\n        </DialogTitle>\n        <Box sx={{ width: \"100%\", typography: \"body1\", padding: 1 }}>\n        <form onSubmit={formik.handleSubmit}>\n          <Box>\n            <TextField\n              error={\n                formik.touched.appName && formik.errors.appName ? true : false\n              }\n              helperText={\n                formik.touched.appName && formik.errors.appName\n                  ? formik.errors.appName\n                  : \"\"\n              }\n              margin=\"dense\"\n              label=\"App Name\"\n              name=\"appName\"\n              variant=\"standard\"\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              value={formik.values.appName}\n            />\n          </Box>\n          <Box>\n            <TextField\n              margin=\"dense\"\n              label=\"Google Client Id\"\n              name=\"appGoogleId\"\n              variant=\"standard\"\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              value={formik.values.appGoogleId}\n            />\n          </Box>\n          <Box style={{ display: \"inline-flex\", flexDirection: \"column\" }}>\n            <FormControlLabel\n              checked={formik.values.defaultAccessProfileOpen}\n              name=\"defaultAccessProfileOpen\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\n                      \"defaultAccessProfileOpen\",\n                      e.target.checked\n                    )\n                  }\n                />\n              }\n              label=\"defaultAccessProfileOpen\"\n              labelPlacement=\"end\"\n              onChange={formik.handleChange}\n            />\n            <FormControlLabel\n              checked={formik.values.defaultAccessAssetsOpen}\n              name=\"defaultAccessAssetsOpen\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\n                      \"defaultAccessAssetsOpen\",\n                      e.target.checked\n                    )\n                  }\n                />\n              }\n              label=\"defaultAccessAssetsOpen\"\n              labelPlacement=\"end\"\n            />\n            <FormControlLabel\n              checked={formik.values.usersCanFree}\n              name=\"usersCanFree\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\"usersCanFree\", e.target.checked)\n                  }\n                />\n              }\n              label=\"usersCanFree\"\n              labelPlacement=\"end\"\n            />\n\n            <input ref={fileRef} type=\"file\" accept=\"image/*\"></input>\n            <LoadingButton\n              loading={loading}\n              variant=\"contained\"\n              style={{ marginTop: \"15px\" }}\n              type=\"submit\"\n              disabled={loading}\n            >\n              Create App\n            </LoadingButton>\n          </Box>\n        </form>\n        </Box>\n      </Box>\n    </Dialog>\n  );\n}\n","import * as React from 'react';\nimport { getThemeProps, useThemeWithoutDefault as useTheme } from '@mui/system';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n  const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n  const [match, setMatch] = React.useState(() => {\n    if (noSsr && supportMatchMedia) {\n      return matchMedia(query).matches;\n    }\n    if (ssrMatchMedia) {\n      return ssrMatchMedia(query).matches;\n    }\n\n    // Once the component is mounted, we rely on the\n    // event listeners to return the correct matches value.\n    return defaultMatches;\n  });\n  useEnhancedEffect(() => {\n    let active = true;\n    if (!supportMatchMedia) {\n      return undefined;\n    }\n    const queryList = matchMedia(query);\n    const updateMatch = () => {\n      // Workaround Safari wrong implementation of matchMedia\n      // TODO can we remove it?\n      // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n      if (active) {\n        setMatch(queryList.matches);\n      }\n    };\n    updateMatch();\n    // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n    queryList.addListener(updateMatch);\n    return () => {\n      active = false;\n      queryList.removeListener(updateMatch);\n    };\n  }, [query, matchMedia, supportMatchMedia]);\n  return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia) {\n  const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n  const getServerSnapshot = React.useMemo(() => {\n    if (ssrMatchMedia !== null) {\n      const {\n        matches\n      } = ssrMatchMedia(query);\n      return () => matches;\n    }\n    return getDefaultSnapshot;\n  }, [getDefaultSnapshot, query, ssrMatchMedia]);\n  const [getSnapshot, subscribe] = React.useMemo(() => {\n    if (matchMedia === null) {\n      return [getDefaultSnapshot, () => () => {}];\n    }\n    const mediaQueryList = matchMedia(query);\n    return [() => mediaQueryList.matches, notify => {\n      // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n      mediaQueryList.addListener(notify);\n      return () => {\n        mediaQueryList.removeListener(notify);\n      };\n    }];\n  }, [getDefaultSnapshot, matchMedia, query]);\n  const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n  return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n  const theme = useTheme();\n  // Wait for jsdom to support the match media feature.\n  // All the browsers MUI support have this built-in.\n  // This defensive check is here for simplicity.\n  // Most of the time, the match media logic isn't central to people tests.\n  const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n  const {\n    defaultMatches = false,\n    matchMedia = supportMatchMedia ? window.matchMedia : null,\n    ssrMatchMedia = null,\n    noSsr\n  } = getThemeProps({\n    name: 'MuiUseMediaQuery',\n    props: options,\n    theme\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof queryInput === 'function' && theme === null) {\n      console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n    }\n  }\n  let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n  query = query.replace(/^@media( ?)/m, '');\n\n  // TODO: Drop `useMediaQueryOld` and use  `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n  const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n  const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue({\n      query,\n      match\n    });\n  }\n  return match;\n}","import * as React from 'react';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport { useTheme } from '@mui/material/styles';\nimport * as http from '../../http'\nimport { useStoreState } from '../../store'\n\ntype TProps = {\n  open: boolean;\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n  app?: {\n    appName: string\n    _id: string\n  } | null;\n};\n\nexport default function DeletAppModal(props: TProps) {\n  const [loading, setLoading] = React.useState(false)\n  const deleteApp = useStoreState(state => state.deleteApp)\n  const theme = useTheme();\n  const fullScreen = useMediaQuery(theme.breakpoints.down('md'));\n\n  const onDelete = () => {\n    if (props.app && props.app?._id) {\n      setLoading(true)\n      http.deleteApp(props.app._id)\n        .then(() => {\n          deleteApp(props.app?._id as string)\n          props.setOpen(false)\n        })\n        .finally(() => setLoading(false))\n    }\n  }\n\n  return (\n    <div>\n      <Dialog\n        fullScreen={fullScreen}\n        open={props.open}\n        onClose={() => {}}\n        aria-labelledby=\"responsive-dialog-title\"\n      >\n        <DialogTitle id=\"responsive-dialog-title\">\n          Are you sure want to remove application {props.app?.appName}\n        </DialogTitle>\n        <DialogContent>\n          <DialogContentText>\n            Your app clients(mobile, web) will not be able to send requests to Platform API after deleting the app\n          </DialogContentText>\n        </DialogContent>\n        <DialogActions>\n          <Button disabled={loading} variant=\"contained\" autoFocus onClick={() => props.setOpen(false)}>\n            Cancel\n          </Button>\n          <LoadingButton variant=\"contained\" loading={loading} color=\"error\" onClick={onDelete} autoFocus>\n            Delete\n          </LoadingButton>\n        </DialogActions>\n      </Dialog>\n    </div>\n  );\n}\n","import React, { useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Box from \"@mui/material/Box\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { useFormik } from \"formik\";\nimport TextField from \"@mui/material/TextField\";\nimport { useStoreState } from \"../../store\";\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport * as http from '../../http'\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Checkbox from \"@mui/material/Checkbox\";\n\ntype TProps = {\n  open: boolean;\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n  app: {\n    _id: string,\n    appName: string,\n    appDescription: string,\n    appGoogleId: string,\n    defaultAccessProfileOpen: boolean,\n    defaultAccessAssetsOpen: boolean,\n    usersCanFree: boolean,\n  }\n};\n\nexport default function EditAppModal({ open, setOpen, app }: TProps) {\n  const fileRef = React.useRef<HTMLInputElement>(null);\n  const [loading, setLoading] = useState(false)\n  const updateApp = useStoreState(state => state.updateApp)\n\n  const formik = useFormik({\n    initialValues: {\n      appName: app.appName,\n      appDescription: app.appDescription ? app.appDescription : '',\n      appGoogleId: app.appGoogleId ? app.appGoogleId : '',\n      defaultAccessProfileOpen: app.defaultAccessProfileOpen,\n      defaultAccessAssetsOpen: app.defaultAccessAssetsOpen,\n      usersCanFree: app.usersCanFree\n    },\n    validate: (values) => {\n      const errors: Record<string, string> = {};\n\n      if (!values.appName) {\n        errors.appName = \"Required\";\n      }\n\n      return errors;\n    },\n    onSubmit: ({\n      appName,\n      appDescription,\n      appGoogleId,\n      defaultAccessAssetsOpen,\n      defaultAccessProfileOpen,\n      usersCanFree\n    }) => {\n      setLoading(true);\n      const fd = new FormData();\n      let file;\n      if (fileRef.current) {\n        const files = fileRef.current.files;\n        if (files) {\n          file = files[0];\n        }\n      }\n\n      if (file) {\n        fd.append(\"file\", file);\n      }\n\n      fd.append(\"appName\", appName);\n      fd.append(\"appDesctription\", appDescription);\n      fd.append(\"appGoogleId\", appGoogleId);\n      fd.append(\"defaultAccessAssetsOpen\", defaultAccessAssetsOpen.toString());\n      fd.append(\"defaultAccessProfileOpen\", defaultAccessProfileOpen.toString());\n      fd.append(\"usersCanFree\", usersCanFree.toString());\n\n      http.updateApp(app._id, fd)\n        .then(response => {\n          updateApp(response.data.app)\n          setOpen(false)\n        })\n        .finally(() => setLoading(false))\n    }\n  });\n\n  return (\n    <Dialog onClose={() => {}} open={open}>\n      <Box>\n        <DialogTitle\n          style={{ display: \"flex\", justifyContent: \"space-between\" }}\n        >\n          Edit App\n          <IconButton disabled={loading} onClick={() => setOpen(false)}>\n            <CloseIcon />\n          </IconButton>\n        </DialogTitle>\n        <Box sx={{ width: \"100%\", typography: \"body1\", padding: 1 }}>\n        <form onSubmit={formik.handleSubmit}>\n          <Box>\n            <TextField\n              error={\n                formik.touched.appName && formik.errors.appName ? true : false\n              }\n              helperText={\n                formik.touched.appName && formik.errors.appName\n                  ? formik.errors.appName\n                  : \"\"\n              }\n              margin=\"dense\"\n              label=\"App Name\"\n              name=\"appName\"\n              variant=\"standard\"\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              value={formik.values.appName}\n            />\n          </Box>\n          <Box>\n            <TextField\n              margin=\"dense\"\n              label=\"Google Client Id\"\n              name=\"appGoogleId\"\n              variant=\"standard\"\n              onChange={formik.handleChange}\n              onBlur={formik.handleBlur}\n              value={formik.values.appGoogleId}\n            />\n          </Box>\n          <Box style={{ display: \"inline-flex\", flexDirection: \"column\" }}>\n            <FormControlLabel\n              checked={formik.values.defaultAccessProfileOpen}\n              name=\"defaultAccessProfileOpen\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\n                      \"defaultAccessProfileOpen\",\n                      e.target.checked\n                    )\n                  }\n                />\n              }\n              label=\"defaultAccessProfileOpen\"\n              labelPlacement=\"end\"\n              onChange={formik.handleChange}\n            />\n            <FormControlLabel\n              checked={formik.values.defaultAccessAssetsOpen}\n              name=\"defaultAccessAssetsOpen\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\n                      \"defaultAccessAssetsOpen\",\n                      e.target.checked\n                    )\n                  }\n                />\n              }\n              label=\"defaultAccessAssetsOpen\"\n              labelPlacement=\"end\"\n            />\n            <FormControlLabel\n              checked={formik.values.usersCanFree}\n              name=\"usersCanFree\"\n              control={\n                <Checkbox\n                  onChange={(e) =>\n                    formik.setFieldValue(\"usersCanFree\", e.target.checked)\n                  }\n                />\n              }\n              label=\"usersCanFree\"\n              labelPlacement=\"end\"\n            />\n\n            <input ref={fileRef} type=\"file\" accept=\"image/*\"></input>\n            <LoadingButton\n              loading={loading}\n              variant=\"contained\"\n              style={{ marginTop: \"15px\" }}\n              type=\"submit\"\n            >\n              Update App\n            </LoadingButton>\n          </Box>\n        </form>\n        </Box>\n      </Box>\n    </Dialog>\n  );\n}\n","import * as React from 'react';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport { useTheme } from '@mui/material/styles';\nimport * as http from '../../http'\nimport { useStoreState } from '../../store'\n\ntype TProps = {\n  open: boolean;\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n  app?: {\n    appName: string\n    _id: string\n  } | null;\n};\n\nexport default function RotateModal(props: TProps) {\n  const [loading, setLoading] = React.useState(false)\n  const updateApp = useStoreState(state => state.updateApp)\n  const theme = useTheme();\n  const fullScreen = useMediaQuery(theme.breakpoints.down('md'));\n\n  const onRotate = () => {\n    if (props.app && props.app?._id) {\n      setLoading(true)\n      http.rotateAppJwt(props.app._id)\n        .then((response) => {\n          updateApp(response.data.app)\n          props.setOpen(false)\n        })\n        .finally(() => setLoading(false))\n    }\n  }\n\n  return (\n    <div>\n      <Dialog\n        fullScreen={fullScreen}\n        open={props.open}\n        onClose={() => {}}\n        aria-labelledby=\"responsive-dialog-title\"\n      >\n        <DialogTitle id=\"responsive-dialog-title\">\n          Are you sure want to rotate JWT for application {props.app?.appName}\n        </DialogTitle>\n        <DialogContent>\n          <DialogContentText>\n            You will need to update your app clients(mobile, web) with new App Jwt\n          </DialogContentText>\n        </DialogContent>\n        <DialogActions>\n          <Button disabled={loading} variant=\"contained\" autoFocus onClick={() => props.setOpen(false)}>\n            Cancel\n          </Button>\n          <LoadingButton variant=\"contained\" loading={loading} color=\"error\" onClick={onRotate} autoFocus>\n            Rotate\n          </LoadingButton>\n        </DialogActions>\n      </Dialog>\n    </div>\n  );\n}\n","import * as React from \"react\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport Box from \"@mui/material/Box\";\nimport { IconButton, Typography } from \"@mui/material\";\nimport AddCircleIcon from \"@mui/icons-material/AddCircle\";\nimport { useStoreState } from \"../../store\";\nimport NoDataImage from \"../../components/NoDataImage\";\nimport NewAppModal from \"./NewAppModal\";\nimport DeleteAppModal from './DeletAppModal';\nimport EditAppModal from \"./EditAppModal\";\nimport RotateModal from \"./RotateModal\";\n\nexport default function BasicTable() {\n  const apps = useStoreState((state) => state.apps)\n  const [open, setOpen] = React.useState(false)\n  const [showDelete, setShowDelete] = React.useState(false)\n  const [showEdit, setShowEdit] = React.useState(false)\n  const [showRotate, setShowRotate] = React.useState(false)\n  const [currentApp, setCurrentApp] = React.useState({\n    _id: '',\n    appName: '',\n    appDescription: '',\n    appGoogleId: '',\n    defaultAccessProfileOpen: false,\n    defaultAccessAssetsOpen: false,\n    usersCanFree: false\n  })\n\n  const onDelete = (app: any) => {\n    setCurrentApp(app)\n    setShowDelete(true)\n  }\n\n  const onEdit = (app: any) => {\n    setCurrentApp(app)\n    setShowEdit(true)\n  }\n\n  const onRotateJwt = (app: any) => {\n    setCurrentApp(app)\n    setShowRotate(true)\n  }\n\n  return (\n    <TableContainer\n      component={Paper}\n      style={{ margin: \"0 auto\" }}\n    >\n      <Box style={{ display: \"flex\", alignItems: \"center\" }}>\n        <Typography variant=\"h6\" style={{ margin: \"16px\" }}>\n          Apps\n        </Typography>\n        <IconButton onClick={() => setOpen(true)} size=\"large\">\n          <AddCircleIcon fontSize=\"large\"></AddCircleIcon>\n        </IconButton>\n      </Box>\n      { apps.length === 0 && (\n        <Box style={{display: 'flex', flexDirection: 'column', alignItems: 'center'}}>\n          <NoDataImage></NoDataImage>\n          <Typography style={{marginTop: '20px', marginBottom: '20px'}}>You have not created any apps.</Typography>\n        </Box>\n      ) }\n\n      {\n        apps.length > 0 && (\n          <Table sx={{ minWidth: 650 }} aria-label=\"simple table\">\n            <TableHead>\n              <TableRow>\n                <TableCell width={200}>Application Name</TableCell>\n                <TableCell align=\"right\">Is Assets Open</TableCell>\n                <TableCell align=\"right\">Is Profile Open</TableCell>\n                <TableCell align=\"right\">Is Users Can Free</TableCell>\n                <TableCell align=\"right\">Created</TableCell>\n                <TableCell align=\"right\">Actions</TableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {apps.map((app) => (\n                <TableRow\n                  key={app._id}\n                  sx={{ \"&:last-child td, &:last-child th\": { border: 0 } }}\n                >\n                  <TableCell component=\"th\" scope=\"row\">\n                    {app.appName}\n                  </TableCell>\n                  <TableCell align=\"right\">\n                    {app.defaultAccessAssetsOpen.toString()}\n                  </TableCell>\n                  <TableCell align=\"right\">\n                    {app.defaultAccessProfileOpen.toString()}\n                  </TableCell>\n                  <TableCell align=\"right\">{app.usersCanFree.toString()}</TableCell>\n                  <TableCell align=\"right\">\n                    {new Date(app.createdAt).toDateString()}\n                  </TableCell>\n                  <TableCell align=\"right\">\n                    <Box style={{display: 'flex', flexDirection: 'column'}}>\n                      <a href=\"/\" onClick={(e) => {\n                        e.preventDefault()\n                        onDelete(app)\n                      }}>Delete</a>\n                      <a \n                        href={`data:text/json;chatset=utf-8,${encodeURIComponent(\n                          JSON.stringify({appJwt: app.appToken})\n                        )}`}\n                        style={{display: 'none'}}\n                        download = \"data.json\"\n                        id={`app-jwt-${app._id}`}\n                      >download jwt</a>\n                      <a href=\"/\" onClick={(e) => {\n                        e.preventDefault()\n                        const el = document.querySelector(`#app-jwt-${app._id}`) as HTMLElement\n                        el?.click()\n                      }}>\n                        Download App JWT\n                      </a>\n                      <a href=\"/\" onClick={(e) => {\n                        e.preventDefault()\n                        onRotateJwt(app)\n                      }}>Rotate App Jwt</a>\n                      <a href=\"/\" onClick={(e) => {\n                        e.preventDefault()\n                        onEdit(app)\n                      }}>Edit</a>\n                    </Box>\n                  </TableCell>\n                </TableRow>\n              ))}\n            </TableBody>\n          </Table>\n        )\n      }\n      <NewAppModal open={open} setOpen={setOpen}></NewAppModal>\n      <DeleteAppModal app={currentApp} open={showDelete} setOpen={setShowDelete}/>\n      <RotateModal app={currentApp} open={showRotate} setOpen={setShowRotate}></RotateModal>\n      {showEdit && <EditAppModal app={currentApp} open={showEdit} setOpen={setShowEdit}></EditAppModal>}\n    </TableContainer>\n  );\n}\n","import * as React from \"react\";\nimport { useStoreState } from \"../../store\";\nimport { useHistory } from \"react-router-dom\";\nimport Apps from \"./Apps\";\nimport Box from \"@mui/material/Box\";\nimport Users from \"./Users\";\nimport { Container } from \"@mui/material\";\n\nexport default function Owner() {\n  return (\n    <div style={{ backgroundColor: \"#edf0f4\", padding: \"20px\" }}>\n      <Container maxWidth={\"lg\"}>\n        <Box style={{ marginTop: \"20px\" }}>\n          <Apps />\n        </Box>\n\n        <Box style={{ marginTop: \"20px\" }}>\n          <Users />\n        </Box>\n      </Container>\n    </div>\n  );\n}\n"],"names":["NewAppModal","open","setOpen","fileRef","React","setApp","useStoreState","state","useState","loading","setLoading","formik","useFormik","initialValues","appName","appDescription","appGoogleId","defaultAccessProfileOpen","defaultAccessAssetsOpen","usersCanFree","newUserTokenGift","coinsDayliBonus","validate","values","errors","onSubmit","file","fd","FormData","current","files","append","toString","http","then","response","data","app","finally","Dialog","onClose","Box","DialogTitle","style","display","justifyContent","IconButton","disabled","onClick","Close","sx","width","typography","padding","handleSubmit","TextField","error","touched","helperText","margin","label","name","variant","onChange","handleChange","onBlur","handleBlur","value","flexDirection","FormControlLabel","checked","control","Checkbox","e","setFieldValue","target","labelPlacement","ref","type","accept","LoadingButton","marginTop","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","supportMatchMedia","window","matches","match","setMatch","useEnhancedEffect","active","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","mediaQueryList","notify","getSnapshot","subscribe","useMediaQuery","queryInput","options","theme","useTheme","getThemeProps","props","replace","useMediaQueryImplementation","undefined","DeletAppModal","deleteApp","fullScreen","breakpoints","down","id","DialogContent","DialogContentText","DialogActions","Button","autoFocus","color","_id","EditAppModal","updateApp","RotateModal","BasicTable","apps","showDelete","setShowDelete","showEdit","setShowEdit","showRotate","setShowRotate","currentApp","setCurrentApp","TableContainer","component","Paper","alignItems","Typography","size","AddCircle","fontSize","length","NoDataImage","marginBottom","Table","minWidth","TableHead","TableRow","TableCell","align","TableBody","map","border","scope","Date","createdAt","toDateString","href","preventDefault","onDelete","encodeURIComponent","JSON","stringify","appJwt","appToken","download","el","document","querySelector","click","onRotateJwt","onEdit","Owner","backgroundColor","Container","maxWidth","Users"],"sourceRoot":""}