@dbmx/confy 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/_virtual/index2.js +2 -2
- package/esm/_virtual/index3.js +2 -2
- package/esm/components/Buttons/create.js +1 -1
- package/esm/components/Buttons/create.js.map +1 -1
- package/esm/components/Buttons/edit.js +1 -1
- package/esm/components/Buttons/edit.js.map +1 -1
- package/esm/components/Buttons/start.js +1 -1
- package/esm/components/Buttons/start.js.map +1 -1
- package/esm/components/Layout/index.js +1 -1
- package/esm/components/Layout/index.js.map +1 -1
- package/esm/components/MenuItem/index.js +28 -24
- package/esm/components/MenuItem/index.js.map +1 -1
- package/esm/node_modules/@testing-library/react-hooks/dom/index.js +1 -1
- package/esm/node_modules/@testing-library/react-hooks/lib/dom/index.js +1 -1
- package/esm/node_modules/classnames/index.js +1 -1
- package/esm/utils/authorizations.js +47 -0
- package/esm/utils/authorizations.js.map +1 -0
- package/package.json +5 -5
package/esm/_virtual/index2.js
CHANGED
package/esm/_virtual/index3.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sources":["../../../src/components/Buttons/create.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport SaveIcon from '@mui/icons-material/Save'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color:
|
|
1
|
+
{"version":3,"file":"create.js","sources":["../../../src/components/Buttons/create.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport SaveIcon from '@mui/icons-material/Save'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color: 'white',\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n}))(Button)\n\nconst create = ({ ...rest }) => {\n const { classes } = useStyles()\n\n return (\n <ColorButton\n {...rest}\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n className={classes.btn}\n startIcon={<SaveIcon />}\n >\n <FormattedMessage {...messages.create} />\n </ColorButton>\n )\n}\n\nexport default create\n"],"names":["useStyles","makeStyles","theme","btn","margin","spacing","ColorButton","withStyles","root","color","backgroundColor","green","Button","create","_ref","rest","_extends","_objectDestructuringEmpty","_useStyles","classes","React","createElement","type","variant","className","startIcon","SaveIcon","FormattedMessage","messages"],"mappings":";;;;;;;;;;AASA,IAAMA,SAAS,GAAGC,UAAU,EAAE,CAAC,UAAAC,KAAK,EAAA;EAAA,OAAK;AACvCC,IAAAA,GAAG,EAAE;AACHC,MAAAA,MAAM,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC;AACzB;GACD;AAAA,CAAC,CAAC;AAEH,IAAMC,WAAW,GAAGC,UAAU,CAAC,UAAAL,KAAK,EAAA;EAAA,OAAK;AACvCM,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,eAAe,EAAEC,KAAK,CAAC,GAAG,CAAC;AAC3B,MAAA,SAAS,EAAE;QACTD,eAAe,EAAEC,KAAK,CAAC,GAAG;AAC5B;AACF;GACD;AAAA,CAAC,CAAC,CAACC,MAAM,CAAC;AAEX,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAAoB;EAAA,IAAXC,IAAI,GAAAC,QAAA,CAAA,EAAA,GAAAC,yBAAA,CAAAH,IAAA,GAAAA,IAAA,EAAA;AACvB,EAAA,IAAAI,UAAA,GAAoBlB,SAAS,EAAE;IAAvBmB,OAAO,GAAAD,UAAA,CAAPC,OAAO;EAEf,oBACEC,cAAA,CAAAC,aAAA,CAACf,WAAW,EAAAU,QAAA,KACND,IAAI,EAAA;AACRO,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,OAAO,EAAC,WAAW;AACnBd,IAAAA,KAAK,EAAC,SAAS;IACfe,SAAS,EAAEL,OAAO,CAAChB,GAAI;AACvBsB,IAAAA,SAAS,eAAEL,cAAA,CAAAC,aAAA,CAACK,QAAQ,EAAE,IAAA;GAEtBN,CAAAA,eAAAA,cAAA,CAAAC,aAAA,CAACM,gBAAgB,EAAKC,QAAQ,CAACf,MAAS,CAC7B,CAAC;AAElB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sources":["../../../src/components/Buttons/edit.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport SaveIcon from '@mui/icons-material/Save'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color:
|
|
1
|
+
{"version":3,"file":"edit.js","sources":["../../../src/components/Buttons/edit.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport SaveIcon from '@mui/icons-material/Save'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color: 'white',\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n}))(Button)\n\nconst edit = ({ ...rest }) => {\n const { classes } = useStyles()\n\n return (\n <ColorButton\n {...rest}\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n className={classes.btn}\n startIcon={<SaveIcon />}\n >\n <FormattedMessage {...messages.edit} />\n </ColorButton>\n )\n}\n\nexport default edit\n"],"names":["useStyles","makeStyles","theme","btn","margin","spacing","ColorButton","withStyles","root","color","backgroundColor","green","Button","edit","_ref","rest","_extends","_objectDestructuringEmpty","_useStyles","classes","React","createElement","type","variant","className","startIcon","SaveIcon","FormattedMessage","messages"],"mappings":";;;;;;;;;;AASA,IAAMA,SAAS,GAAGC,UAAU,EAAE,CAAC,UAAAC,KAAK,EAAA;EAAA,OAAK;AACvCC,IAAAA,GAAG,EAAE;AACHC,MAAAA,MAAM,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC;AACzB;GACD;AAAA,CAAC,CAAC;AAEH,IAAMC,WAAW,GAAGC,UAAU,CAAC,UAAAL,KAAK,EAAA;EAAA,OAAK;AACvCM,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,eAAe,EAAEC,KAAK,CAAC,GAAG,CAAC;AAC3B,MAAA,SAAS,EAAE;QACTD,eAAe,EAAEC,KAAK,CAAC,GAAG;AAC5B;AACF;GACD;AAAA,CAAC,CAAC,CAACC,MAAM,CAAC;AAEX,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAAC,IAAA,EAAoB;EAAA,IAAXC,IAAI,GAAAC,QAAA,CAAA,EAAA,GAAAC,yBAAA,CAAAH,IAAA,GAAAA,IAAA,EAAA;AACrB,EAAA,IAAAI,UAAA,GAAoBlB,SAAS,EAAE;IAAvBmB,OAAO,GAAAD,UAAA,CAAPC,OAAO;EAEf,oBACEC,cAAA,CAAAC,aAAA,CAACf,WAAW,EAAAU,QAAA,KACND,IAAI,EAAA;AACRO,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,OAAO,EAAC,WAAW;AACnBd,IAAAA,KAAK,EAAC,SAAS;IACfe,SAAS,EAAEL,OAAO,CAAChB,GAAI;AACvBsB,IAAAA,SAAS,eAAEL,cAAA,CAAAC,aAAA,CAACK,QAAQ,EAAE,IAAA;GAEtBN,CAAAA,eAAAA,cAAA,CAAAC,aAAA,CAACM,gBAAgB,EAAKC,QAAQ,CAACf,IAAO,CAC3B,CAAC;AAElB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sources":["../../../src/components/Buttons/start.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color:
|
|
1
|
+
{"version":3,"file":"start.js","sources":["../../../src/components/Buttons/start.js"],"sourcesContent":["import React from 'react'\nimport { Button } from '@mui/material'\nimport withStyles from '@mui/styles/withStyles'\nimport { makeStyles } from 'tss-react/mui'\nimport messages from './messages'\nimport { FormattedMessage } from 'react-intl'\nimport { green } from '@mui/material/colors'\nimport PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline'\n\nconst useStyles = makeStyles()(theme => ({\n btn: {\n margin: theme.spacing(1),\n },\n}))\n\nconst ColorButton = withStyles(theme => ({\n root: {\n color: 'white',\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n}))(Button)\n\nconst start = ({ ...rest }) => {\n const { classes } = useStyles()\n\n return (\n <ColorButton\n {...rest}\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n className={classes.btn}\n startIcon={<PlayCircleOutlineIcon />}\n >\n <FormattedMessage {...messages.start} />\n </ColorButton>\n )\n}\n\nexport default start\n"],"names":["useStyles","makeStyles","theme","btn","margin","spacing","ColorButton","withStyles","root","color","backgroundColor","green","Button","start","_ref","rest","_extends","_objectDestructuringEmpty","_useStyles","classes","React","createElement","type","variant","className","startIcon","PlayCircleOutlineIcon","FormattedMessage","messages"],"mappings":";;;;;;;;;;AASA,IAAMA,SAAS,GAAGC,UAAU,EAAE,CAAC,UAAAC,KAAK,EAAA;EAAA,OAAK;AACvCC,IAAAA,GAAG,EAAE;AACHC,MAAAA,MAAM,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC;AACzB;GACD;AAAA,CAAC,CAAC;AAEH,IAAMC,WAAW,GAAGC,UAAU,CAAC,UAAAL,KAAK,EAAA;EAAA,OAAK;AACvCM,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE,OAAO;AACdC,MAAAA,eAAe,EAAEC,KAAK,CAAC,GAAG,CAAC;AAC3B,MAAA,SAAS,EAAE;QACTD,eAAe,EAAEC,KAAK,CAAC,GAAG;AAC5B;AACF;GACD;AAAA,CAAC,CAAC,CAACC,MAAM,CAAC;AAEX,IAAMC,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA,EAAoB;EAAA,IAAXC,IAAI,GAAAC,QAAA,CAAA,EAAA,GAAAC,yBAAA,CAAAH,IAAA,GAAAA,IAAA,EAAA;AACtB,EAAA,IAAAI,UAAA,GAAoBlB,SAAS,EAAE;IAAvBmB,OAAO,GAAAD,UAAA,CAAPC,OAAO;EAEf,oBACEC,cAAA,CAAAC,aAAA,CAACf,WAAW,EAAAU,QAAA,KACND,IAAI,EAAA;AACRO,IAAAA,IAAI,EAAC,QAAQ;AACbC,IAAAA,OAAO,EAAC,WAAW;AACnBd,IAAAA,KAAK,EAAC,SAAS;IACfe,SAAS,EAAEL,OAAO,CAAChB,GAAI;AACvBsB,IAAAA,SAAS,eAAEL,cAAA,CAAAC,aAAA,CAACK,qBAAqB,EAAE,IAAA;GAEnCN,CAAAA,eAAAA,cAAA,CAAAC,aAAA,CAACM,gBAAgB,EAAKC,QAAQ,CAACf,KAAQ,CAC5B,CAAC;AAElB;;;;"}
|
|
@@ -69,7 +69,7 @@ var getAuthorizedItems = function getAuthorizedItems(items, user, routes, contex
|
|
|
69
69
|
var subMenuClone = clone(subMenu);
|
|
70
70
|
var filtredSubMenu = filter(filterRequireAdmin, subMenuClone.menu);
|
|
71
71
|
subMenuClone.menu = filtredSubMenu;
|
|
72
|
-
return subMenuClone;
|
|
72
|
+
return isEmpty(subMenuClone.menu) ? null : subMenuClone;
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
var clearMenuEmpty = function clearMenuEmpty(item) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Layout/index.js"],"sourcesContent":["import React from 'react'\nimport { Drawer, Grid2, List, useMediaQuery } from '@mui/material'\nimport { useTheme } from '@mui/material/styles'\nimport { makeStyles } from 'tss-react/mui'\nimport { mapObjIndexed, values, compose, filter, map, clone, isEmpty } from 'ramda'\nimport PropTypes from 'prop-types'\nimport { Route, Switch } from 'react-router-dom'\nimport Content from '../Content'\nimport useMenu from '../../hooks/menu'\nimport Page from '../Page'\nimport useRoutes from '../../hooks/routes'\nimport useConfig from '../../hooks/config'\nimport MenuItem from '../MenuItem'\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n display: 'flex',\n minHeight: `calc(100vh - 64px)`,\n },\n list: {\n width: theme.spacing(40),\n\n overflow: 'auto',\n borderRight: '1px solid rgba(0, 0, 0, 0.12)',\n backgroundColor: theme.palette.background.paper,\n '&::-webkit-scrollbar': {\n width: '0.4em',\n },\n '&::-webkit-scrollbar-track': {\n boxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)',\n webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: theme.palette.grey.dark,\n borderRadius: '0.4em',\n },\n },\n paper: {\n top: '64px',\n },\n}))\n\nconst getAuthorizedItems = (items, user, routes, context) => {\n if (!user) return {}\n const filterRequireAdmin = menuItem => {\n if (menuItem.menu) return true\n if (routes[menuItem.route]) if (routes[menuItem.route].isAuthorized({ user, context })) return true\n return false\n }\n\n const filterMenu = subMenu => {\n if (!subMenu.menu) {\n if (filterRequireAdmin(subMenu)) {\n return subMenu\n }\n }\n if (subMenu?.menu == {}) return subMenu\n if (subMenu.menu) {\n let subMenuClone = clone(subMenu)\n\n const filtredSubMenu = filter(filterRequireAdmin, subMenuClone.menu)\n subMenuClone.menu = filtredSubMenu\n return subMenuClone\n }\n }\n const clearMenuEmpty = item => (isEmpty(item.menu) ? false : true)\n const authorizedItems = compose(map(filterMenu), filter(clearMenuEmpty))(items)\n // eslint-disable-next-line no-unused-vars\n const filteredItems = Object.fromEntries(Object.entries(authorizedItems).filter(([_, value]) => value))\n return filteredItems\n}\n\nconst LayoutDrawer = ({ children, miniDrawerOpen, handleDrawerToggle, user }) => {\n const { menu } = useMenu()\n const { classes } = useStyles()\n const routes = useRoutes()\n const { context } = useConfig()\n const displayDrawer = () => {\n const theme = useTheme()\n if (useMediaQuery(theme.breakpoints.up('md')))\n return (\n user && (\n <List component=\"nav\" className={classes.list} disablePadding>\n {compose(\n values,\n mapObjIndexed((item, key) => {\n return <MenuItem key={key} item={{ ...item, id: key }} />\n }),\n )(getAuthorizedItems(menu, user, routes, context))}\n </List>\n )\n )\n return (\n user && (\n <Drawer\n anchor={'left'}\n open={miniDrawerOpen}\n onClose={() => handleDrawerToggle()}\n classes={{ paper: classes.paper }}\n >\n <List component=\"nav\" className={classes.list} disablePadding>\n {compose(\n values,\n mapObjIndexed((item, key) => (\n <MenuItem handleDrawerToggle={handleDrawerToggle} key={key} item={{ ...item, id: key }} />\n )),\n )(getAuthorizedItems(menu, user, routes, context))}\n </List>\n </Drawer>\n )\n )\n }\n\n return (\n <Page>\n <Grid2 className={classes.root}>\n {displayDrawer()}\n <Content>{children} </Content>\n </Grid2>\n </Page>\n )\n}\n\nLayoutDrawer.propTypes = {\n children: PropTypes.node,\n miniDrawerOpen: PropTypes.bool,\n handleDrawerToggle: PropTypes.func,\n user: PropTypes.object,\n}\n\nconst Layout = ({ children, ...others }) => {\n const routes = useRoutes()\n\n return (\n <Switch>\n {map(\n route => {\n return (\n <Route key={route.id} exact={route.exact} path={route.path}>\n <route.component />\n </Route>\n )\n },\n routes.all.filter(route => route.main),\n )}\n <Route>\n <LayoutDrawer {...others}>{children}</LayoutDrawer>\n </Route>\n </Switch>\n )\n}\n\nLayout.propTypes = {\n children: PropTypes.node,\n}\n\nexport default Layout\n"],"names":["useStyles","makeStyles","theme","root","display","minHeight","list","width","spacing","overflow","borderRight","backgroundColor","palette","background","paper","boxShadow","webkitBoxShadow","grey","dark","borderRadius","top","getAuthorizedItems","items","user","routes","context","filterRequireAdmin","menuItem","menu","route","isAuthorized","filterMenu","subMenu","subMenuClone","clone","filtredSubMenu","filter","clearMenuEmpty","item","isEmpty","authorizedItems","compose","map","filteredItems","Object","fromEntries","entries","_ref","_ref2","_slicedToArray","_","value","LayoutDrawer","_ref3","children","miniDrawerOpen","handleDrawerToggle","_useMenu","useMenu","_useStyles","classes","useRoutes","_useConfig","useConfig","displayDrawer","useTheme","useMediaQuery","breakpoints","up","React","createElement","List","component","className","disablePadding","values","mapObjIndexed","key","MenuItem","_objectSpread","id","Drawer","anchor","open","onClose","Page","Grid2","Content","propTypes","PropTypes","node","bool","func","object","Layout","_ref4","others","_objectWithoutProperties","_excluded","Switch","Route","exact","path","all","main"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Layout/index.js"],"sourcesContent":["import React from 'react'\nimport { Drawer, Grid2, List, useMediaQuery } from '@mui/material'\nimport { useTheme } from '@mui/material/styles'\nimport { makeStyles } from 'tss-react/mui'\nimport { mapObjIndexed, values, compose, filter, map, clone, isEmpty } from 'ramda'\nimport PropTypes from 'prop-types'\nimport { Route, Switch } from 'react-router-dom'\nimport Content from '../Content'\nimport useMenu from '../../hooks/menu'\nimport Page from '../Page'\nimport useRoutes from '../../hooks/routes'\nimport useConfig from '../../hooks/config'\nimport MenuItem from '../MenuItem'\n\nconst useStyles = makeStyles()(theme => ({\n root: {\n display: 'flex',\n minHeight: `calc(100vh - 64px)`,\n },\n list: {\n width: theme.spacing(40),\n\n overflow: 'auto',\n borderRight: '1px solid rgba(0, 0, 0, 0.12)',\n backgroundColor: theme.palette.background.paper,\n '&::-webkit-scrollbar': {\n width: '0.4em',\n },\n '&::-webkit-scrollbar-track': {\n boxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)',\n webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: theme.palette.grey.dark,\n borderRadius: '0.4em',\n },\n },\n paper: {\n top: '64px',\n },\n}))\n\nconst getAuthorizedItems = (items, user, routes, context) => {\n if (!user) return {}\n const filterRequireAdmin = menuItem => {\n if (menuItem.menu) return true\n if (routes[menuItem.route]) if (routes[menuItem.route].isAuthorized({ user, context })) return true\n return false\n }\n\n const filterMenu = subMenu => {\n if (!subMenu.menu) {\n if (filterRequireAdmin(subMenu)) {\n return subMenu\n }\n }\n if (subMenu?.menu == {}) return subMenu\n if (subMenu.menu) {\n let subMenuClone = clone(subMenu)\n\n const filtredSubMenu = filter(filterRequireAdmin, subMenuClone.menu)\n subMenuClone.menu = filtredSubMenu\n return isEmpty(subMenuClone.menu) ? null : subMenuClone\n }\n }\n const clearMenuEmpty = item => (isEmpty(item.menu) ? false : true)\n const authorizedItems = compose(map(filterMenu), filter(clearMenuEmpty))(items)\n // eslint-disable-next-line no-unused-vars\n const filteredItems = Object.fromEntries(Object.entries(authorizedItems).filter(([_, value]) => value))\n return filteredItems\n}\n\nconst LayoutDrawer = ({ children, miniDrawerOpen, handleDrawerToggle, user }) => {\n const { menu } = useMenu()\n const { classes } = useStyles()\n const routes = useRoutes()\n const { context } = useConfig()\n const displayDrawer = () => {\n const theme = useTheme()\n if (useMediaQuery(theme.breakpoints.up('md')))\n return (\n user && (\n <List component=\"nav\" className={classes.list} disablePadding>\n {compose(\n values,\n mapObjIndexed((item, key) => {\n return <MenuItem key={key} item={{ ...item, id: key }} />\n }),\n )(getAuthorizedItems(menu, user, routes, context))}\n </List>\n )\n )\n return (\n user && (\n <Drawer\n anchor={'left'}\n open={miniDrawerOpen}\n onClose={() => handleDrawerToggle()}\n classes={{ paper: classes.paper }}\n >\n <List component=\"nav\" className={classes.list} disablePadding>\n {compose(\n values,\n mapObjIndexed((item, key) => (\n <MenuItem handleDrawerToggle={handleDrawerToggle} key={key} item={{ ...item, id: key }} />\n )),\n )(getAuthorizedItems(menu, user, routes, context))}\n </List>\n </Drawer>\n )\n )\n }\n\n return (\n <Page>\n <Grid2 className={classes.root}>\n {displayDrawer()}\n <Content>{children} </Content>\n </Grid2>\n </Page>\n )\n}\n\nLayoutDrawer.propTypes = {\n children: PropTypes.node,\n miniDrawerOpen: PropTypes.bool,\n handleDrawerToggle: PropTypes.func,\n user: PropTypes.object,\n}\n\nconst Layout = ({ children, ...others }) => {\n const routes = useRoutes()\n\n return (\n <Switch>\n {map(\n route => {\n return (\n <Route key={route.id} exact={route.exact} path={route.path}>\n <route.component />\n </Route>\n )\n },\n routes.all.filter(route => route.main),\n )}\n <Route>\n <LayoutDrawer {...others}>{children}</LayoutDrawer>\n </Route>\n </Switch>\n )\n}\n\nLayout.propTypes = {\n children: PropTypes.node,\n}\n\nexport default Layout\n"],"names":["useStyles","makeStyles","theme","root","display","minHeight","list","width","spacing","overflow","borderRight","backgroundColor","palette","background","paper","boxShadow","webkitBoxShadow","grey","dark","borderRadius","top","getAuthorizedItems","items","user","routes","context","filterRequireAdmin","menuItem","menu","route","isAuthorized","filterMenu","subMenu","subMenuClone","clone","filtredSubMenu","filter","isEmpty","clearMenuEmpty","item","authorizedItems","compose","map","filteredItems","Object","fromEntries","entries","_ref","_ref2","_slicedToArray","_","value","LayoutDrawer","_ref3","children","miniDrawerOpen","handleDrawerToggle","_useMenu","useMenu","_useStyles","classes","useRoutes","_useConfig","useConfig","displayDrawer","useTheme","useMediaQuery","breakpoints","up","React","createElement","List","component","className","disablePadding","values","mapObjIndexed","key","MenuItem","_objectSpread","id","Drawer","anchor","open","onClose","Page","Grid2","Content","propTypes","PropTypes","node","bool","func","object","Layout","_ref4","others","_objectWithoutProperties","_excluded","Switch","Route","exact","path","all","main"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ import { ListItemButton, ListItemIcon, ListItemText, Collapse, Divider, List } f
|
|
|
4
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
5
|
import { useHistory, useLocation } from 'react-router-dom';
|
|
6
6
|
import useMenu from '../../hooks/menu.js';
|
|
7
|
-
import messages from './messages.js';
|
|
8
7
|
import ExpandMore from '@mui/icons-material/ExpandMore';
|
|
9
8
|
import ExpandLess from '@mui/icons-material/ExpandLess';
|
|
10
9
|
import PropTypes from '../../node_modules/prop-types/index.js';
|
|
@@ -12,9 +11,9 @@ import classNames from '../../node_modules/classnames/index.js';
|
|
|
12
11
|
import useRoutes from '../../hooks/routes.js';
|
|
13
12
|
import { blue } from '@mui/material/colors';
|
|
14
13
|
import isEmpty from '../../node_modules/ramda/es/isEmpty.js';
|
|
15
|
-
import compose from '../../node_modules/ramda/es/compose.js';
|
|
16
14
|
import find from '../../node_modules/ramda/es/find.js';
|
|
17
15
|
import values from '../../node_modules/ramda/es/values.js';
|
|
16
|
+
import compose from '../../node_modules/ramda/es/compose.js';
|
|
18
17
|
import mapObjIndexed from '../../node_modules/ramda/es/mapObjIndexed.js';
|
|
19
18
|
|
|
20
19
|
var useStyles = makeStyles()(function (theme) {
|
|
@@ -35,7 +34,6 @@ var useStyles = makeStyles()(function (theme) {
|
|
|
35
34
|
};
|
|
36
35
|
});
|
|
37
36
|
var _MenuItem = function MenuItem(_ref) {
|
|
38
|
-
var _currentRoute;
|
|
39
37
|
var item = _ref.item,
|
|
40
38
|
handleDrawerToggle = _ref.handleDrawerToggle;
|
|
41
39
|
var nested = item.nested,
|
|
@@ -44,8 +42,8 @@ var _MenuItem = function MenuItem(_ref) {
|
|
|
44
42
|
Icon = item.icon,
|
|
45
43
|
_item$menu = item.menu,
|
|
46
44
|
items = _item$menu === undefined ? {} : _item$menu,
|
|
47
|
-
routeId = item.route
|
|
48
|
-
|
|
45
|
+
routeId = item.route;
|
|
46
|
+
item.parent;
|
|
49
47
|
var _useStyles = useStyles(),
|
|
50
48
|
classes = _useStyles.classes;
|
|
51
49
|
var history = useHistory();
|
|
@@ -56,25 +54,36 @@ var _MenuItem = function MenuItem(_ref) {
|
|
|
56
54
|
setCurrentMenuItem = _useMenu.setCurrentMenuItem;
|
|
57
55
|
var itemRoute = routes[routeId];
|
|
58
56
|
var currentRoute = routes.getRouteByPath(location.pathname);
|
|
59
|
-
if (!
|
|
57
|
+
if (!currentRoute) {
|
|
60
58
|
currentRoute = routes.getRouteByPath('/' + location.pathname.split('/')[1]);
|
|
61
59
|
}
|
|
62
60
|
if (nested && !itemRoute) console.error("you misspelled ".concat(routeId, " in menu.js"));
|
|
63
61
|
var path = itemRoute === null || itemRoute === undefined ? undefined : itemRoute.path;
|
|
64
62
|
var isExpandable = !isEmpty(items);
|
|
65
|
-
var isCurrentRoute =
|
|
63
|
+
var isCurrentRoute = path && location.pathname.startsWith(path);
|
|
64
|
+
var isParentOfCurrentRoute = find(function (item) {
|
|
65
|
+
var _currentRoute;
|
|
66
|
+
return item.route === ((_currentRoute = currentRoute) === null || _currentRoute === undefined ? undefined : _currentRoute.id);
|
|
67
|
+
}, values(items)) !== undefined;
|
|
66
68
|
useEffect(function () {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var isOpen = !nested && currentItem;
|
|
72
|
-
if (isOpen) setCurrentMenuItem(id);
|
|
73
|
-
}, [location.pathname, item]);
|
|
69
|
+
if (!nested && isParentOfCurrentRoute) {
|
|
70
|
+
setCurrentMenuItem(id);
|
|
71
|
+
}
|
|
72
|
+
}, [location.pathname]);
|
|
74
73
|
var handleClick = function handleClick() {
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
if (path) {
|
|
75
|
+
history.push(path);
|
|
76
|
+
if (typeof handleDrawerToggle !== 'undefined') {
|
|
77
|
+
handleDrawerToggle();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (isExpandable) {
|
|
81
|
+
if (currentMenuItem === id) {
|
|
82
|
+
setCurrentMenuItem(null);
|
|
83
|
+
} else {
|
|
84
|
+
setCurrentMenuItem(id);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
78
87
|
};
|
|
79
88
|
var MenuItemRoot = /*#__PURE__*/React__default.createElement(ListItemButton, {
|
|
80
89
|
selected: isCurrentRoute,
|
|
@@ -92,10 +101,7 @@ var _MenuItem = function MenuItem(_ref) {
|
|
|
92
101
|
unmountOnExit: true
|
|
93
102
|
}, /*#__PURE__*/React__default.createElement(Divider, null), /*#__PURE__*/React__default.createElement(List, {
|
|
94
103
|
component: "div",
|
|
95
|
-
disablePadding: true
|
|
96
|
-
onClick: function onClick() {
|
|
97
|
-
return typeof handleDrawerToggle !== 'undefined' && handleDrawerToggle();
|
|
98
|
-
}
|
|
104
|
+
disablePadding: true
|
|
99
105
|
}, compose(values, mapObjIndexed(function (item, key) {
|
|
100
106
|
return /*#__PURE__*/React__default.createElement(_MenuItem, {
|
|
101
107
|
key: key,
|
|
@@ -104,9 +110,7 @@ var _MenuItem = function MenuItem(_ref) {
|
|
|
104
110
|
nested: true,
|
|
105
111
|
parent: id
|
|
106
112
|
}),
|
|
107
|
-
|
|
108
|
-
return handleDrawerToggle();
|
|
109
|
-
}
|
|
113
|
+
handleDrawerToggle: handleDrawerToggle
|
|
110
114
|
});
|
|
111
115
|
}))(items))) : null;
|
|
112
116
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, MenuItemRoot, MenuItemChildren);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/MenuItem/index.js"],"sourcesContent":["import React, { useEffect } from 'react'\nimport { find, mapObjIndexed, values, compose, isEmpty } from 'ramda'\nimport { Divider, List, ListItemIcon, ListItemText, Collapse, ListItemButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport useMenu from '../../hooks/menu'\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/MenuItem/index.js"],"sourcesContent":["import React, { useEffect } from 'react'\nimport { find, mapObjIndexed, values, compose, isEmpty } from 'ramda'\nimport { Divider, List, ListItemIcon, ListItemText, Collapse, ListItemButton } from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport useMenu from '../../hooks/menu'\nimport ExpandMore from '@mui/icons-material/ExpandMore'\nimport ExpandLess from '@mui/icons-material/ExpandLess'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport useRoutes from '../../hooks/routes'\nimport { blue } from '@mui/material/colors'\n\nconst useStyles = makeStyles()(theme => ({\n listItem: {\n borderBottom: '1px solid rgba(0, 0, 0, 0.08)',\n },\n nested: {\n paddingLeft: theme.spacing(4),\n },\n selected: {\n color: blue[500],\n fontWeight: 'bold',\n },\n menuItemIcon: {\n minWidth: '50px',\n },\n}))\n\nconst MenuItem = ({ item, handleDrawerToggle }) => {\n const { nested, id, name, icon: Icon, menu: items = {}, route: routeId, parent } = item\n const { classes } = useStyles()\n const history = useHistory()\n const routes = useRoutes()\n const location = useLocation()\n const { currentMenuItem, setCurrentMenuItem } = useMenu()\n const itemRoute = routes[routeId]\n let currentRoute = routes.getRouteByPath(location.pathname)\n if (!currentRoute) {\n currentRoute = routes.getRouteByPath('/' + location.pathname.split('/')[1])\n }\n\n if (nested && !itemRoute) console.error(`you misspelled ${routeId} in menu.js`)\n\n const path = itemRoute?.path\n const isExpandable = !isEmpty(items)\n const isCurrentRoute = path && location.pathname.startsWith(path)\n const isParentOfCurrentRoute = find(item => item.route === currentRoute?.id, values(items)) !== undefined\n\n useEffect(() => {\n if (!nested && isParentOfCurrentRoute) {\n setCurrentMenuItem(id)\n }\n }, [location.pathname])\n\n const handleClick = () => {\n if (path) {\n history.push(path)\n if (typeof handleDrawerToggle !== 'undefined') {\n handleDrawerToggle()\n }\n }\n\n if (isExpandable) {\n if (currentMenuItem === id) {\n setCurrentMenuItem(null)\n } else {\n setCurrentMenuItem(id)\n }\n }\n }\n\n const MenuItemRoot = (\n <ListItemButton\n selected={isCurrentRoute}\n onClick={handleClick}\n className={classNames(classes.listItem, {\n [classes.nested]: nested,\n [classes.selected]: isCurrentRoute,\n })}\n >\n {!!Icon && (\n <ListItemIcon\n className={classNames(classes.menuItemIcon, {\n [classes.selected]: isCurrentRoute,\n })}\n >\n <Icon />\n </ListItemIcon>\n )}\n <ListItemText primary={name} inset={!Icon} />\n {isExpandable && currentMenuItem !== id && <ExpandMore />}\n {isExpandable && currentMenuItem === id && <ExpandLess />}\n </ListItemButton>\n )\n const MenuItemChildren = isExpandable ? (\n <Collapse in={currentMenuItem === id} timeout=\"auto\" unmountOnExit>\n <Divider />\n <List component=\"div\" disablePadding>\n {compose(\n values,\n mapObjIndexed((item, key) => (\n <MenuItem\n key={key}\n item={{ ...item, id: key, nested: true, parent: id }}\n handleDrawerToggle={handleDrawerToggle}\n />\n )),\n )(items)}\n </List>\n </Collapse>\n ) : null\n\n return (\n <>\n {MenuItemRoot}\n {MenuItemChildren}\n </>\n )\n}\n\nMenuItem.propTypes = {\n item: PropTypes.object.isRequired,\n handleDrawerToggle: PropTypes.func,\n}\n\nexport default MenuItem\n"],"names":["useStyles","makeStyles","theme","listItem","borderBottom","nested","paddingLeft","spacing","selected","color","blue","fontWeight","menuItemIcon","minWidth","MenuItem","_ref","item","handleDrawerToggle","id","name","Icon","icon","_item$menu","menu","items","routeId","route","parent","_useStyles","classes","history","useHistory","routes","useRoutes","location","useLocation","_useMenu","useMenu","currentMenuItem","setCurrentMenuItem","itemRoute","currentRoute","getRouteByPath","pathname","split","console","error","concat","path","isExpandable","isEmpty","isCurrentRoute","startsWith","isParentOfCurrentRoute","find","_currentRoute","values","undefined","useEffect","handleClick","push","MenuItemRoot","React","createElement","ListItemButton","onClick","className","classNames","_defineProperty","ListItemIcon","ListItemText","primary","inset","ExpandMore","ExpandLess","MenuItemChildren","Collapse","timeout","unmountOnExit","Divider","List","component","disablePadding","compose","mapObjIndexed","key","_MenuItem","_objectSpread","Fragment","propTypes","PropTypes","object","isRequired","func"],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { isAdmin, hasPermission, hasPermissions } from '@dbmx/users';
|
|
2
|
+
|
|
3
|
+
var userRequired = function userRequired(_ref) {
|
|
4
|
+
var user = _ref.user;
|
|
5
|
+
return !!user;
|
|
6
|
+
};
|
|
7
|
+
var adminRequired = function adminRequired(_ref2) {
|
|
8
|
+
var user = _ref2.user;
|
|
9
|
+
return isAdmin(user);
|
|
10
|
+
};
|
|
11
|
+
var permissionRequired = function permissionRequired(role) {
|
|
12
|
+
return function (_ref3) {
|
|
13
|
+
var user = _ref3.user;
|
|
14
|
+
return hasPermission(role, user);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
var permissionsRequired = function permissionsRequired() {
|
|
18
|
+
for (var _len = arguments.length, roles = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
19
|
+
roles[_key] = arguments[_key];
|
|
20
|
+
}
|
|
21
|
+
return function (_ref4) {
|
|
22
|
+
var user = _ref4.user;
|
|
23
|
+
for (var _i = 0, _roles = roles; _i < _roles.length; _i++) {
|
|
24
|
+
var role = _roles[_i];
|
|
25
|
+
if (hasPermissions(role, user)) return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
var hasConfyContext = function hasConfyContext(requiredContext) {
|
|
31
|
+
return function (_ref5) {
|
|
32
|
+
var context = _ref5.context;
|
|
33
|
+
return context === 'all' || requiredContext === context;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
var memberRequired = function memberRequired(memberId) {
|
|
37
|
+
return function (_ref6) {
|
|
38
|
+
var user = _ref6.user;
|
|
39
|
+
if (isAdmin(user)) return true;
|
|
40
|
+
return Array.isArray(user === null || user === undefined ? undefined : user.members) && memberId && user.members.some(function (member) {
|
|
41
|
+
return member.id === memberId;
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { adminRequired, hasConfyContext, memberRequired, permissionRequired, permissionsRequired, userRequired };
|
|
47
|
+
//# sourceMappingURL=authorizations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizations.js","sources":["../../src/utils/authorizations.js"],"sourcesContent":["import { isAdmin, hasPermission, hasPermissions } from '@dbmx/users'\n\nexport const userRequired = ({ user }) => !!user\nexport const adminRequired = ({ user }) => isAdmin(user)\nexport const permissionRequired =\n role =>\n ({ user }) =>\n hasPermission(role, user)\nexport const permissionsRequired =\n (...roles) =>\n ({ user }) => {\n for (const role of roles) if (hasPermissions(role, user)) return true\n return false\n }\n\nexport const hasConfyContext =\n requiredContext =>\n ({ context }) =>\n context === 'all' || requiredContext === context\n\nexport const memberRequired =\n memberId =>\n ({ user }) => {\n if (isAdmin(user)) return true\n return Array.isArray(user?.members) && memberId && user.members.some(member => member.id === memberId)\n }\n"],"names":["userRequired","_ref","user","adminRequired","_ref2","isAdmin","permissionRequired","role","_ref3","hasPermission","permissionsRequired","_len","arguments","length","roles","Array","_key","_ref4","_i","_roles","hasPermissions","hasConfyContext","requiredContext","_ref5","context","memberRequired","memberId","_ref6","isArray","members","some","member","id"],"mappings":";;IAEaA,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAAA,OAAO,CAAC,CAACA,IAAI;AAAA;IACnCC,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,KAAA,EAAA;AAAA,EAAA,IAAMF,IAAI,GAAAE,KAAA,CAAJF,IAAI;EAAA,OAAOG,OAAO,CAACH,IAAI,CAAC;AAAA;IAC3CI,kBAAkB,GAC7B,SADWA,kBAAkBA,CAC7BC,IAAI,EAAA;AAAA,EAAA,OACJ,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGN,IAAI,GAAAM,KAAA,CAAJN,IAAI;AAAA,IAAA,OACLO,aAAa,CAACF,IAAI,EAAEL,IAAI,CAAC;AAAA,GAAA;AAAA;AAChBQ,IAAAA,mBAAmB,GAC9B,SADWA,mBAAmBA,GAAA;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAC1BC,KAAK,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAALF,IAAAA,KAAK,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;EAAA,OACT,UAAAC,KAAA,EAAc;AAAA,IAAA,IAAXf,IAAI,GAAAe,KAAA,CAAJf,IAAI;AACL,IAAA,KAAA,IAAAgB,EAAA,GAAA,CAAA,EAAAC,MAAA,GAAmBL,KAAK,EAAAI,EAAA,GAAAC,MAAA,CAAAN,MAAA,EAAAK,EAAA,EAAA,EAAA;AAAnB,MAAA,IAAMX,IAAI,GAAAY,MAAA,CAAAD,EAAA,CAAA;MAAW,IAAIE,cAAc,CAACb,IAAI,EAAEL,IAAI,CAAC,EAAE,OAAO,IAAI;AAAA;AACrE,IAAA,OAAO,KAAK;GACb;AAAA;IAEUmB,eAAe,GAC1B,SADWA,eAAeA,CAC1BC,eAAe,EAAA;AAAA,EAAA,OACf,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGC,OAAO,GAAAD,KAAA,CAAPC,OAAO;AAAA,IAAA,OACRA,OAAO,KAAK,KAAK,IAAIF,eAAe,KAAKE,OAAO;AAAA,GAAA;AAAA;IAEvCC,cAAc,GACzB,SADWA,cAAcA,CACzBC,QAAQ,EAAA;EAAA,OACR,UAAAC,KAAA,EAAc;AAAA,IAAA,IAAXzB,IAAI,GAAAyB,KAAA,CAAJzB,IAAI;AACL,IAAA,IAAIG,OAAO,CAACH,IAAI,CAAC,EAAE,OAAO,IAAI;IAC9B,OAAOa,KAAK,CAACa,OAAO,CAAC1B,IAAI,KAAJA,IAAAA,IAAAA,IAAI,KAAJA,SAAAA,GAAAA,SAAAA,GAAAA,IAAI,CAAE2B,OAAO,CAAC,IAAIH,QAAQ,IAAIxB,IAAI,CAAC2B,OAAO,CAACC,IAAI,CAAC,UAAAC,MAAM,EAAA;AAAA,MAAA,OAAIA,MAAM,CAACC,EAAE,KAAKN,QAAQ;KAAC,CAAA;GACvG;AAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dbmx/confy",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Eric Basley <eric.basley@redpelicans.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
"tss-react": "^4.9.13"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@dbmx/auth": "^1.3.
|
|
58
|
-
"@dbmx/semver": "^1.1.
|
|
59
|
-
"@dbmx/users": "^1.1.
|
|
57
|
+
"@dbmx/auth": "^1.3.24",
|
|
58
|
+
"@dbmx/semver": "^1.1.25",
|
|
59
|
+
"@dbmx/users": "^1.1.34",
|
|
60
60
|
"@emotion/react": "^11.11.0",
|
|
61
61
|
"@emotion/styled": "^11.11.0",
|
|
62
62
|
"@mui/icons-material": "^6.1.3",
|
|
@@ -163,5 +163,5 @@
|
|
|
163
163
|
"@babel/preset-react"
|
|
164
164
|
]
|
|
165
165
|
},
|
|
166
|
-
"gitHead": "
|
|
166
|
+
"gitHead": "b0a25c058914409156ff9693df5f350e9f9c3ad8"
|
|
167
167
|
}
|