{"version":3,"sources":["services/axios.js","components/Title/index.js","utilities/feedback.js","contexts/FeedbackContext.js","hooks/useFeedback.js","components/AlertBox/index.js","containers/Templates/components/Actions/index.js","components/Loader/index.js","containers/Templates/List/index.js","utilities/page_size.js","containers/Templates/components/Simple/index.js","containers/Templates/components/Advanced/index.js","containers/Templates/New/index.js","assets/html.png","containers/Templates/Init/index.js","assets/writer.png","contexts/PlanContext.js","hooks/usePlan.js","containers/Documents/components/Actions/index.js","containers/Documents/List/index.js","containers/Documents/Init/index.js","containers/Documents/New/index.js","containers/Webhooks/components/Actions/index.js","containers/Webhooks/List/index.js","containers/Webhooks/New/index.js","containers/Apps/components/Actions/index.js","containers/Apps/List/index.js","containers/Apps/New/index.js","containers/Users/Profil/index.js","containers/Statistics/components/BarCount/index.js","containers/Statistics/components/DoughnutTemplate/index.js","containers/Statistics/index.js","containers/Plans/Choose/index.js","assets/success.png","containers/Plans/Success/index.js","components/Routing/index.js","containers/Layout/index.js","components/Feedback/index.js","containers/Authentification/Login/index.js","containers/Authentification/Register/index.js","assets/picture1.png","assets/picture2.png","assets/picture3.png","assets/picture4.png","assets/logo.png","containers/Homepage/index.js","containers/Documentation/Account/index.js","assets/docs/01.png","assets/docs/02.png","assets/docs/03.png","containers/Documentation/Templates/index.js","assets/docs/04.png","containers/Documentation/Html/index.js","assets/docs/05.png","assets/docs/06.png","containers/Documentation/Styling/index.js","containers/Documentation/Api/index.js","containers/Documentation/Webhook/index.js","containers/Documentation/index.js","containers/Authentification/ForgotForm/index.js","containers/Authentification/ResetForm/index.js","App.js","reportWebVitals.js","index.js"],"names":["axios","Axios","create","timeout","headers","Accept","cache","LRU","max","interceptors","request","use","a","config","token","Cookies","get","Authorization","error","Promise","reject","configure","style","h1","fontSize","borderBottom","marginBottom","Title","value","variant","component","id","align","Typography","noWrap","BASE_FEEDBACK","open","severity","message","SUCCESS_FEEDBACK","ERROR_FEEDBACK","FeedbackContext","React","createContext","FeedbackProvider","children","useState","feedback","setFeedback","Provider","useFeedback","useContext","AlertBox","onClose","submit","title","text","canceltext","submitText","Dialog","sx","width","DialogTitle","DialogContent","DialogContentText","DialogActions","Button","onClick","color","Actions","mod","refetch","anchorEl","setAnchorEl","setOpen","isMenuOpen","Boolean","navigate","useNavigate","useAxios","url","process","method","manual","destroyTemplate","duplicateTemplate","switchTemplate","then","catch","err","response","data","IconButton","event","currentTarget","size","getContentAnchorEl","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","MenuItem","ListItemIcon","result","root","margin","textAlign","marginTop","Loader","Container","CircularProgress","button","marginLeft","Action","styled","theme","padding","spacing","breakpoints","down","up","TemplatesList","order","setOrder","orderBy","setOrderBy","page","setPage","rowsPerPage","setRowsPerPage","useCache","loading","descendingComparator","b","createSortHandler","property","handleRequestSort","Box","startIcon","Alert","length","TableContainer","Table","minWidth","TableHead","TableRow","numeric","disablePadding","label","map","headCell","TableCell","sortDirection","TableSortLabel","active","direction","visuallyHidden","TableBody","array","comparator","stabilizedThis","el","index","sort","stableSort","getComparator","slice","row","app","documents_count","format","updated_at","TablePagination","rowsPerPageOptions","count","onPageChange","newPage","onRowsPerPageChange","parseInt","target","PAGE_SIZES","TabPanel","props","other","role","hidden","p","a11yProps","select","actions","paddingBottom","SimpleTemplate","template","setTemplate","preview","setHtml","html","tab","setTab","useTheme","handleChange","e","name","Grid","container","item","xs","Tabs","onChange","indicatorColor","textColor","Tab","axis","onChangeIndex","dir","editor","FullEditor","_","getData","console","log","simpleUpload","uploadUrl","image","resizeUnit","resizeOptions","toolbar","removeItems","shouldNotGroupWhenFull","mode","maxLines","sample","editorChange","setOptions","enableBasicAutocompletion","enableLiveAutocompletion","enableSnippets","highlightActiveLine","showLineNumbers","TextField","fullWidth","FormControl","InputLabel","Select","orientation","page_size","FormHelperText","filter","pop","margin_top","margin_bottom","margin_left","margin_right","AdvancedTemplate","css","TemplateNew","useParams","Math","random","rand","setRand","setPreview","executePost","executePatch","fetchTemplate","createOrUpdate","useEffect","html_beautify","indent_size","type","window","Simple","Advanced","Divider","flexItem","workerUrl","fileUrl","renderError","display","paper","opacity","img","Mod","Paper","marginRight","cursor","TemplateInit","app_id","errors","setErrors","prevTemplate","handleMod","validTemplate","md","required","helperText","elevation","src","htmlIcon","alt","disabled","PlanContext","PlanProvider","fetchPlan","app_counter","document","document_counter","plan","setPlan","usePlan","state","fetchDownload","publishDocument","destroyDocument","DocumentsList","documentIcon","documentColor","Tooltip","Chip","icon","DocumentInit","payload","template_id","setDocument","prevDocument","validForm","paddingRight","DocumentNew","fetchDocument","destroyWebhook","WebhooksList","target_url","app_name","WebhookNew","webhook","setWebhook","fetchWebhook","checkForm","destroyApp","AppsList","AppNew","setApp","fetchApp","localStorage","setItem","input","divider","Profil","font_size","max_lines","profil","setProfil","fetchProfil","set","height","readOnly","ChartJS","register","CategoryScale","LinearScale","PointElement","LineElement","Legend","chart","maxHeight","BarCount","labels","setLabels","datasets","borderColor","backgroundColor","dataset","setDataset","tmpLabels","tmpValues","Object","entries","key","push","prevChart","options","responsive","plugins","legend","position","ArcElement","DoughnutTemplate","borderWidth","counter","Statistics","templateCounter","documentsCounter","Link","href","getItem","date","expired_at","Card","CardContent","palette","success","main","created","warning","pending","alignItems","mr","LinearProgress","round","tiers","price","description","buttonText","buttonVariant","subheader","ChoosePlan","GlobalStyles","styles","ul","listStyle","maxWidth","tier","sm","CardHeader","titleTypographyProps","action","subheaderTypographyProps","primary","justifyContent","mb","line","CardActions","choice","SuccessPlan","Routing","exact","path","element","Choose","Success","drawerWidth","openedMixin","transition","transitions","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","DrawerHeader","mixins","AppBar","MuiAppBar","shouldForwardProp","prop","zIndex","drawer","Drawer","MuiDrawer","flexShrink","whiteSpace","boxSizing","navlink","textDecoration","Layout","CssBaseline","Toolbar","edge","flexGrow","remove","removeItem","List","to","placement","ListItem","ListItemText","Feedback","Snackbar","autoHideDuration","prevFeedback","avatar","typography","Root","Login","email","password","auth","setAuth","setError","setLoading","fetchLogin","Avatar","Collapse","in","noValidate","autoComplete","autoFocus","api_key","login","Register","appsumo","setRegister","password_confirmation","postRegister","logo","logo_block","mainValue","secondaryValue","feature","fontWeight","MozBoxShadow","WebkitBoxShadow","boxShadow","MozBorderRadius","WebkitBorderRadius","borderRadius","Homepage","matches","useMediaQuery","flexWrap","my","mx","bgcolor","pt","gutterBottom","paragraph","ListItemAvatar","purple","Stack","rel","topImage","imageStyle","disableGutters","pb","feature1","feature2","feature3","borderTop","mt","py","Date","getFullYear","h3","Account","Templates","scrollTo","img01","img02","img03","Html","minLines","Infinity","img04","Styling","img05","img06","alert","Api","Webhook","Documentation","underline","compopent","ForgotForm","setEmail","emailSent","setEmailSent","sryle","post","finally","ResetForm","setPassword","passwordConfirmation","setPasswordConfirmation","showError","setShowError","showSuccess","setShowSuccess","labelWidth","params","_response","_e","App","Helmet","content","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.a2cbd622.chunk.js","sourcesContent":["import Axios from 'axios';\n/* eslint-disable-next-line */\nimport LRU from 'lru-cache';\nimport Cookies from 'js-cookie';\nimport { configure } from 'axios-hooks';\n\n/* eslint-disable-next-line */\nexport const logout = () => {\n Cookies.remove('token');\n Cookies.remove('theme');\n Cookies.remove('api_key');\n localStorage.removeItem('app');\n};\n\nconst axios = Axios.create({\n timeout: 180000,\n // withCredentials: true,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n});\n\nconst cache = new LRU({ max: 10 });\n\n// request interceptor to add token to request headers\naxios.interceptors.request.use(\n async (config) => {\n const token = Cookies.get('token');\n if (token) {\n config.headers = {\n Authorization: `Bearer ${token}`,\n };\n }\n return config;\n },\n (error) => Promise.reject(error)\n);\nconfigure({ axios, cache });\n","import React from 'react';\nimport { Typography } from '@mui/material';\n\nconst style = {\n h1: {\n fontSize: '1.6rem',\n borderBottom: '1px solid #1976d2',\n marginBottom: '12px',\n },\n};\n\nconst Title = ({ value, variant, component, id, align }) => {\n return (\n \n {value}\n \n );\n};\nexport default Title;\n","export const BASE_FEEDBACK = {\n open: false,\n severity: 'success',\n message: '',\n};\n\nexport const SUCCESS_FEEDBACK = ({ message = '' }) => ({\n open: true,\n severity: 'success',\n message,\n});\n\nexport const INFO_FEEDBACK = ({ message = '' }) => ({\n open: true,\n severity: 'info',\n message,\n});\n\nexport const WARNING_FEEDBACK = ({ message = '' }) => ({\n open: true,\n severity: 'warning',\n message,\n});\n\nexport const ERROR_FEEDBACK = ({ message = '' }) => ({\n open: true,\n severity: 'error',\n message,\n});\n","import React, { useState } from 'react';\nimport { BASE_FEEDBACK } from '../utilities/feedback';\n\nconst FeedbackContext = React.createContext();\n\n/* eslint-disable-next-line */\nconst FeedbackProvider = ({ children }) => {\n const [feedback, setFeedback] = useState(BASE_FEEDBACK);\n\n return (\n \n {children}\n \n );\n};\nexport { FeedbackContext, FeedbackProvider };\n","import { useContext } from 'react';\nimport { FeedbackContext } from '../contexts/FeedbackContext';\n\nexport const useFeedback = () => {\n const { feedback, setFeedback } = useContext(FeedbackContext);\n\n return [feedback, setFeedback];\n};\nexport default useFeedback;\n","import React from 'react';\nimport {\n DialogTitle,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n Button,\n} from '@mui/material';\n\nconst AlertBox = ({\n open,\n onClose,\n submit,\n title,\n text,\n canceltext = 'Annuler',\n submitText = 'Envoyer',\n}) => {\n return (\n \n {title}\n \n {text}\n \n \n \n {submit && (\n \n )}\n \n \n );\n};\n\nexport default AlertBox;\n","import React, { useState } from 'react';\nimport { IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport { useNavigate } from 'react-router';\nimport useAxios from 'axios-hooks';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport { useFeedback } from '../../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK, ERROR_FEEDBACK } from '../../../../utilities/feedback';\nimport AlertBox from '../../../../components/AlertBox';\n\nconst Actions = ({ id, mod, refetch }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [open, setOpen] = useState(false);\n const isMenuOpen = Boolean(anchorEl);\n const [, setFeedback] = useFeedback();\n const navigate = useNavigate();\n\n const handleMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n const [, destroyTemplate] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates/${id}`,\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, duplicateTemplate] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates/duplicate/${id}`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, switchTemplate] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates/switch/${id}`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const switchTemplateMod = () => {\n switchTemplate()\n .then((result) => {\n refetch();\n navigate(`/app/templates/${result.data.id}/edit`);\n })\n .catch((err) =>\n setFeedback(\n ERROR_FEEDBACK({\n message: err.response.data.error,\n })\n )\n );\n };\n\n const copyTemplate = () => {\n duplicateTemplate()\n .then((result) => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Template duplicated',\n })\n );\n refetch();\n navigate(`/app/templates/${result.data.id}/edit`);\n })\n .catch((err) =>\n setFeedback(\n ERROR_FEEDBACK({\n message: err.response.data.error,\n })\n )\n );\n };\n\n const deleteTemplate = () => {\n destroyTemplate()\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Template removed',\n })\n );\n refetch();\n })\n .catch((err) =>\n setFeedback(\n ERROR_FEEDBACK({\n message: err.response.data.error,\n })\n )\n );\n setOpen(false);\n };\n\n return (\n <>\n setOpen(false)}\n submit={deleteTemplate}\n title=\"Delete\"\n text=\"Do you want to remove this template ?\"\n canceltext=\"Cancel\"\n submitText=\"Delete\"\n />\n \n \n \n \n navigate(`/app/templates/${id}/edit`)}>\n \n \n \n Edit\n \n \n \n \n \n Duplicate\n \n \n \n \n \n Switch to {mod === 'simple' ? 'Advanced' : 'Simple'} mod\n \n setOpen(true)}>\n \n \n \n Delete\n \n \n \n );\n};\nexport default Actions;\n","import { Container, CircularProgress } from '@mui/material';\nimport React from 'react';\n\nconst style = {\n root: {\n margin: 'auto',\n textAlign: 'center',\n marginBottom: '4px',\n marginTop: '4px',\n },\n};\n\nconst Loader = () => {\n return (\n \n \n \n );\n};\nexport default Loader;\n","import React, { useState } from 'react';\nimport {\n styled,\n Button,\n Box,\n CircularProgress,\n Alert,\n Container,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableSortLabel,\n TableContainer,\n Table,\n TablePagination,\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport useAxios from 'axios-hooks';\nimport { useNavigate } from 'react-router';\nimport { visuallyHidden } from '@mui/utils';\nimport Moment from 'react-moment';\nimport Title from '../../../components/Title';\nimport Actions from '../components/Actions';\nimport Loader from '../../../components/Loader';\n\nconst style = {\n button: {\n marginLeft: '10px',\n },\n};\n\nconst Action = styled(Container)(({ theme }) => ({\n marginBottom: '14px',\n textAlign: 'end',\n padding: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst TemplatesList = () => {\n const navigate = useNavigate();\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('updated_at');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(25);\n const [{ data, loading, error }, refetch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const headCells = [\n {\n id: 'id',\n numeric: false,\n disablePadding: false,\n label: '#',\n },\n {\n id: 'title',\n numeric: false,\n disablePadding: false,\n label: 'Title',\n },\n {\n id: 'app',\n numeric: false,\n disablePadding: false,\n label: 'Application',\n },\n {\n id: 'mod',\n numeric: false,\n disablePadding: false,\n label: 'Mode',\n },\n {\n id: 'documents_count',\n numeric: false,\n disablePadding: false,\n label: 'Nb Docs',\n },\n {\n id: 'updated_at',\n numeric: false,\n disablePadding: false,\n label: 'Updated At',\n },\n {\n id: 'action',\n numeric: true,\n disablePadding: false,\n label: 'Actions',\n },\n ];\n\n /* eslint-disable-next-line */\n const descendingComparator = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n };\n\n /* eslint-disable-next-line */\n const getComparator = (order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n };\n\n const stableSort = (array, comparator) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n /* eslint-disable-next-line */\n const order = comparator(a[0], b[0]);\n if (order !== 0) {\n return order;\n }\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const createSortHandler = (property) => (event) => {\n handleRequestSort(event, property);\n };\n\n return (\n \n \n <Action>\n <Button\n style={style.button}\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={loading ? <CircularProgress color=\"secondary\" size={20} /> : <RefreshIcon />}\n onClick={() => refetch()}\n >\n Refresh\n </Button>\n <Button\n style={style.button}\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<AddIcon />}\n onClick={() => navigate('/app/templates/initialize')}\n >\n Create a template\n </Button>\n </Action>\n {error && <Alert severity=\"error\">{error}</Alert>}\n {loading && <Loader />}\n {!loading && (\n <Container>\n {data.length === 0 && (\n <Alert severity=\"warning\" sx={{ marginBottom: '10px' }}>\n Get started, make your first PDF template\n </Alert>\n )}\n <TableContainer>\n <Table sx={{ minWidth: 750 }} aria-labelledby=\"tableTitle\">\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n key={headCell.id}\n align={headCell.numeric ? 'right' : 'left'}\n padding={headCell.disablePadding ? 'none' : 'normal'}\n sortDirection={orderBy === headCell.id ? order : false}\n >\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {stableSort(data, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => {\n return (\n <TableRow>\n <TableCell>{row.id}</TableCell>\n <TableCell>{row.title}</TableCell>\n <TableCell>{row.app}</TableCell>\n <TableCell>{row.mod}</TableCell>\n <TableCell>{row.documents_count}</TableCell>\n <TableCell>\n <Moment format=\"YYYY-MM-DD HH:mm:ss\">{row.updated_at}</Moment>\n </TableCell>\n <TableCell align=\"right\">\n <Actions id={row.id} mod={row.mod} refetch={refetch} />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[25, 50, 100]}\n component=\"div\"\n count={data.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </Container>\n )}\n </Box>\n );\n};\nexport default TemplatesList;\n","export const PAGE_SIZES = [\n { format: 'A0', size: '841 x 1189 mm' },\n { format: 'A1', size: '594 x 841 mm' },\n { format: 'A2', size: '420 x 594 mm' },\n { format: 'A3', size: '297 x 420 mm' },\n { format: 'A4', size: '210 x 297 mm' },\n { format: 'A5', size: '148 x 210 mm\t' },\n { format: 'A6', size: '105 x 148 mm\t' },\n { format: 'A7', size: '74 x 105 mm\t' },\n { format: 'A8', size: '52 x 74 mm' },\n { format: 'A9', size: '37 x 52 mm\t' },\n];\nexport default PAGE_SIZES;\n","import React, { useState } from 'react';\nimport {\n Grid,\n Tabs,\n FormControl,\n MenuItem,\n TextField,\n Box,\n Typography,\n Tab,\n useTheme,\n InputLabel,\n Select,\n FormHelperText,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport SwipeableViews from 'react-swipeable-views';\nimport AceEditor from 'react-ace';\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport Cookies from 'js-cookie';\n// import ClassicEditor from '../../../../components/Editor/ckeditor';\n// import ClassicEditor from 'ckeditor5/packages/ckeditor5-build-classic';\nimport FullEditor from 'ckeditor5-build-full';\nimport { PAGE_SIZES } from '../../../../utilities/page_size';\n/* eslint-disable-next-line */\nimport '../../../../components/Themes/index.js';\n\nconst TabPanel = (props) => {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`full-width-tabpanel-${index}`}\n aria-labelledby={`full-width-tab-${index}`}\n {...other}\n >\n {value === index && (\n <Box sx={{ p: 3 }}>\n <Typography>{children}</Typography>\n </Box>\n )}\n </div>\n );\n};\n\nTabPanel.propTypes = {\n children: PropTypes.node.isRequired,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\nconst a11yProps = (index) => {\n return {\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n };\n};\n\nconst style = {\n select: {\n marginTop: '16px',\n },\n actions: {\n margin: 'auto',\n textAlign: 'right',\n paddingBottom: '12px',\n },\n};\n\nconst SimpleTemplate = ({ template, setTemplate, preview, setHtml, html }) => {\n const [tab, setTab] = useState(0);\n const theme = useTheme();\n\n const handleChangeTab = (event, value) => {\n setTab(value);\n };\n\n const handleChangeIndex = (index) => {\n setTab(index);\n };\n\n const editorChange = (name, value) => {\n setTemplate({ ...template, [name]: value });\n };\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setTemplate({ ...template, [name]: value });\n };\n\n return (\n <Grid container spacing={1}>\n <Grid item xs={12}>\n <Tabs\n value={tab}\n onChange={handleChangeTab}\n indicatorColor=\"secondary\"\n textColor=\"inherit\"\n variant=\"fullWidth\"\n >\n <Tab label=\"RichText mode\" {...a11yProps(0)} />\n <Tab label=\"Sample Data\" {...a11yProps(1)} />\n <Tab label=\"Settings\" {...a11yProps(2)} />\n </Tabs>\n </Grid>\n <Grid item xs={12}>\n <SwipeableViews\n axis={theme.direction === 'rtl' ? 'x-reverse' : 'x'}\n index={tab}\n onChangeIndex={handleChangeIndex}\n >\n <TabPanel value={tab} index={0} dir={theme.direction}>\n {html && template.id && (\n <CKEditor\n editor={FullEditor}\n data={html}\n /* onReady={(editor) => {\n editor &&\n editor.editing.view.change((writer) => {\n writer.setStyle(\n 'min-height',\n '500px',\n editor.editing.view.document.getRoot()\n );\n });\n }} */\n onChange={(_, editor) => {\n const data = editor.getData();\n console.log(data);\n setHtml(data || '<p></p>');\n }}\n config={{\n simpleUpload: {\n uploadUrl: `${process.env.REACT_APP_API_URL}/templates/upload/${template.id}`,\n headers: { Authorization: `Bearer ${Cookies.get('token')}` },\n },\n image: {\n resizeUnit: 'px',\n resizeOptions: [\n {\n name: 'resizeImage:original',\n label: 'Original',\n value: null,\n },\n {\n name: 'resizeImage:100',\n label: '100px',\n value: '100',\n },\n {\n name: 'resizeImage:200',\n label: '200px',\n value: '200',\n },\n ],\n },\n toolbar: {\n removeItems: ['restrictedEditingException', 'mediaEmbed'],\n shouldNotGroupWhenFull: true,\n },\n }}\n />\n )}\n </TabPanel>\n <TabPanel value={tab} index={1} dir={theme.direction}>\n <AceEditor\n mode=\"json\"\n fontSize={parseInt(Cookies.get('font_size'), 10)}\n theme={Cookies.get('theme')}\n maxLines={Cookies.get('max_lines')}\n value={template.sample}\n width=\"100%\"\n onChange={(value) => editorChange('sample', value)}\n name=\"sample\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </TabPanel>\n <TabPanel value={tab} index={2} dir={theme.direction}>\n <Grid container spacing={1}>\n <Grid item xs={preview ? 12 : 6}>\n <TextField\n fullWidth\n label=\"Title\"\n name=\"title\"\n value={template.title}\n onChange={handleChange}\n />\n <FormControl style={style.select} fullWidth>\n <InputLabel>Orientation</InputLabel>\n <Select\n value={template.orientation}\n name=\"orientation\"\n label=\"Orientation\"\n onChange={handleChange}\n >\n <MenuItem value=\"Portrait\">Portrait</MenuItem>\n <MenuItem value=\"Landscape\">Landscape</MenuItem>\n </Select>\n </FormControl>\n <FormControl fullWidth margin=\"normal\">\n <InputLabel>Format</InputLabel>\n <Select\n value={template.page_size}\n name=\"page_size\"\n label=\"Format\"\n onChange={handleChange}\n >\n {PAGE_SIZES.map((row) => (\n <MenuItem value={row.format}>{row.format}</MenuItem>\n ))}\n </Select>\n <FormHelperText>\n {PAGE_SIZES.filter((row) => row.format === template.page_size).pop().size}\n </FormHelperText>\n </FormControl>\n <Grid container spacing={1}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n margin=\"normal\"\n label=\"Margin Top\"\n name=\"margin_top\"\n value={template.margin_top}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Bottom\"\n name=\"margin_bottom\"\n margin=\"normal\"\n value={template.margin_bottom}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Left\"\n name=\"margin_left\"\n value={template.margin_left}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Right\"\n name=\"margin_right\"\n value={template.margin_right}\n onChange={handleChange}\n />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </TabPanel>\n </SwipeableViews>\n </Grid>\n </Grid>\n );\n};\nexport default SimpleTemplate;\n","import React, { useState } from 'react';\nimport {\n Grid,\n Tabs,\n FormControl,\n MenuItem,\n TextField,\n Box,\n Typography,\n Tab,\n useTheme,\n InputLabel,\n FormHelperText,\n Select,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport SwipeableViews from 'react-swipeable-views';\nimport AceEditor from 'react-ace';\nimport Cookies from 'js-cookie';\n/* eslint-disable-next-line */\nimport '../../../../components/Themes/index.js';\nimport { PAGE_SIZES } from '../../../../utilities/page_size';\n\nconst TabPanel = (props) => {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`full-width-tabpanel-${index}`}\n aria-labelledby={`full-width-tab-${index}`}\n {...other}\n >\n {value === index && (\n <Box sx={{ p: 3 }}>\n <Typography>{children}</Typography>\n </Box>\n )}\n </div>\n );\n};\n\nTabPanel.propTypes = {\n children: PropTypes.node.isRequired,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\nconst a11yProps = (index) => {\n return {\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n };\n};\n\nconst AdvancedTemplate = ({ template, setTemplate, preview, setHtml, html }) => {\n const [tab, setTab] = useState(0);\n const theme = useTheme();\n\n const handleChangeTab = (event, value) => {\n setTab(value);\n };\n\n const handleChangeIndex = (index) => {\n setTab(index);\n };\n\n const editorChange = (name, value) => {\n if (name === 'html') {\n setHtml(value);\n } else {\n setTemplate({ ...template, [name]: value });\n }\n };\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setTemplate({ ...template, [name]: value });\n };\n\n return (\n <Grid container spacing={1}>\n <Grid item xs={12}>\n <Tabs\n value={tab}\n onChange={handleChangeTab}\n indicatorColor=\"secondary\"\n textColor=\"inherit\"\n variant=\"fullWidth\"\n >\n <Tab label=\"HTML template\" {...a11yProps(0)} />\n <Tab label=\"CSS style\" {...a11yProps(1)} />\n <Tab label=\"Sample Data\" {...a11yProps(2)} />\n <Tab label=\"Settings\" {...a11yProps(3)} />\n </Tabs>\n </Grid>\n <Grid item xs={12}>\n <SwipeableViews\n axis={theme.direction === 'rtl' ? 'x-reverse' : 'x'}\n index={tab}\n onChangeIndex={handleChangeIndex}\n >\n <TabPanel value={tab} index={0} dir={theme.direction}>\n <AceEditor\n mode=\"html\"\n fontSize={parseInt(Cookies.get('font_size'), 10)}\n theme={Cookies.get('theme')}\n maxLines={Cookies.get('max_lines')}\n value={html}\n width=\"100%\"\n onChange={(value) => editorChange('html', value)}\n name=\"html\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </TabPanel>\n <TabPanel value={tab} index={1} dir={theme.direction}>\n <AceEditor\n mode=\"css\"\n fontSize={parseInt(Cookies.get('font_size'), 10)}\n theme={Cookies.get('theme')}\n maxLines={Cookies.get('max_lines')}\n value={template.css}\n width=\"100%\"\n onChange={(value) => editorChange('css', value)}\n name=\"css\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </TabPanel>\n <TabPanel value={tab} index={2} dir={theme.direction}>\n <AceEditor\n mode=\"json\"\n fontSize={parseInt(Cookies.get('font_size'), 10)}\n theme={Cookies.get('theme')}\n maxLines={Cookies.get('max_lines')}\n value={template.sample}\n width=\"100%\"\n onChange={(value) => editorChange('sample', value)}\n name=\"sample\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </TabPanel>\n <TabPanel value={tab} index={3} dir={theme.direction}>\n <Grid container spacing={1}>\n <Grid item xs={preview ? 12 : 6}>\n <TextField\n fullWidth\n label=\"Title\"\n name=\"title\"\n margin=\"normal\"\n value={template.title}\n onChange={handleChange}\n />\n <FormControl fullWidth margin=\"normal\">\n <InputLabel>Orientation</InputLabel>\n <Select\n value={template.orientation}\n name=\"orientation\"\n label=\"Orientation\"\n onChange={handleChange}\n >\n <MenuItem value=\"Portrait\">Portrait</MenuItem>\n <MenuItem value=\"Landscape\">Landscape</MenuItem>\n </Select>\n </FormControl>\n <FormControl fullWidth margin=\"normal\">\n <InputLabel>Format</InputLabel>\n <Select\n value={template.page_size}\n name=\"page_size\"\n label=\"Format\"\n onChange={handleChange}\n >\n {PAGE_SIZES.map((row) => (\n <MenuItem value={row.format}>{row.format}</MenuItem>\n ))}\n </Select>\n <FormHelperText>\n {PAGE_SIZES.filter((row) => row.format === template.page_size).pop().size}\n </FormHelperText>\n </FormControl>\n <Grid container spacing={1}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n margin=\"normal\"\n label=\"Margin Top\"\n name=\"margin_top\"\n value={template.margin_top}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Bottom\"\n name=\"margin_bottom\"\n margin=\"normal\"\n value={template.margin_bottom}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Left\"\n name=\"margin_left\"\n value={template.margin_left}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Margin Right\"\n name=\"margin_right\"\n value={template.margin_right}\n onChange={handleChange}\n />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </TabPanel>\n </SwipeableViews>\n </Grid>\n </Grid>\n );\n};\nexport default AdvancedTemplate;\n","import React, { useState, useEffect } from 'react';\nimport { Box, Grid, Button, Divider, styled, Alert } from '@mui/material';\nimport { useParams } from 'react-router-dom';\n// import 'ace-builds/src-noconflict/mode-html';\n// import 'ace-builds/src-noconflict/ext-language_tools';\nimport useAxios from 'axios-hooks';\nimport { Worker, Viewer } from '@react-pdf-viewer/core';\nimport '@react-pdf-viewer/core/lib/styles/index.css';\nimport SaveIcon from '@mui/icons-material/Save';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport BugReportIcon from '@mui/icons-material/BugReport';\n/* eslint-disable-next-line */\nimport { html_beautify } from 'js-beautify';\nimport SimpleTemplate from '../components/Simple';\nimport AdvancedTemplate from '../components/Advanced';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\nimport Title from '../../../components/Title';\n\nconst style = {\n button: {\n marginLeft: '10px',\n },\n};\n\nconst Action = styled(Box)(({ theme }) => ({\n margin: 'auto',\n textAlign: 'right',\n paddingBottom: '12px',\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst TemplateNew = () => {\n const { id } = useParams();\n const [, setFeedback] = useFeedback();\n const [rand, setRand] = useState(Math.random());\n const [preview, setPreview] = useState(true);\n const [html, setHtml] = useState('');\n const [template, setTemplate] = useState({\n title: '',\n mod: 'simple',\n html: '',\n css: '',\n sample: '',\n orientation: 'Portrait',\n page_size: 'A4',\n margin_top: 10,\n margin_bottom: 10,\n margin_left: 10,\n margin_right: 10,\n });\n\n const [, executePost] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n manual: true,\n }\n );\n\n const [, executePatch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates/${id}`,\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, fetchTemplate] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates/${id}/edit`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const createTemplate = () => {\n executePost({ data: template }).then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Template created',\n })\n );\n });\n };\n\n const updateTemplate = () => {\n executePatch({ data: { ...template, html } }).then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Template updated',\n })\n );\n setRand(Math.random());\n });\n };\n\n const createOrUpdate = () => (id ? updateTemplate() : createTemplate());\n\n useEffect(() => {\n if (id)\n fetchTemplate().then(({ data }) => {\n setTemplate({ ...template, ...data });\n setHtml(html_beautify(data.html, { indent_size: 2, type: 'html' }));\n });\n }, [id]);\n\n return (\n <Box>\n <Title value=\"Create Template\" component=\"h1\" variant=\"h1\" />\n <Action>\n <Button\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<SaveIcon />}\n onClick={() => createOrUpdate()}\n >\n Save\n </Button>\n <Button\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={preview ? <VisibilityIcon /> : <VisibilityOffIcon />}\n onClick={() => setPreview(!preview)}\n >\n Preview\n </Button>\n <Button\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<BugReportIcon />}\n onClick={() =>\n window.open(\n `${process.env.REACT_APP_API_URL}/templates/sample/${id}/html?rand=${rand}`,\n '_blank'\n )\n }\n >\n Debug\n </Button>\n </Action>\n <Grid container spacing={1}>\n <Grid item xs>\n {template.mod === 'simple' ? (\n <SimpleTemplate\n template={template}\n setTemplate={setTemplate}\n preview={preview}\n setHtml={setHtml}\n html={html}\n />\n ) : (\n <AdvancedTemplate\n template={template}\n setTemplate={setTemplate}\n preview={preview}\n setHtml={setHtml}\n html={html}\n />\n )}\n </Grid>\n {preview && (\n <>\n <Divider orientation=\"vertical\" flexItem />\n <Grid item xs>\n <Worker workerUrl=\"https://unpkg.com/pdfjs-dist@2.6.347/build/pdf.worker.min.js\">\n <Viewer\n fileUrl={`${process.env.REACT_APP_API_URL}/templates/sample/${id}/pdf?rand=${rand}`}\n renderError={() => <Alert severity=\"error\">Invalid data Payload.</Alert>}\n />\n </Worker>\n </Grid>\n </>\n )}\n </Grid>\n </Box>\n );\n};\nexport default TemplateNew;\n","export default __webpack_public_path__ + \"static/media/html.485b6e20.png\";","import React, { useState } from 'react';\nimport {\n Box,\n Container,\n Button,\n TextField,\n Grid,\n Paper,\n Typography,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n FormHelperText,\n styled,\n} from '@mui/material';\nimport useAxios from 'axios-hooks';\nimport { useNavigate } from 'react-router';\nimport Title from '../../../components/Title';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\nimport htmlIcon from '../../../assets/html.png';\nimport editorIcon from '../../../assets/writer.png';\n\nconst style = {\n root: {\n marginTop: '40px',\n },\n mod: {\n display: 'inline-flex',\n marginBottom: '8px',\n },\n paper: {\n opacity: 0.5,\n },\n active: {\n opacity: 1,\n },\n img: {\n width: '80%',\n margin: '8px',\n },\n};\n\nconst Mod = styled(Paper)(({ theme }) => ({\n width: '23%',\n marginRight: '8px',\n textAlign: 'center',\n cursor: 'pointer',\n padding: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n width: '50%',\n },\n [theme.breakpoints.up('md')]: {\n width: '23%',\n },\n}));\n\nconst TemplateInit = () => {\n const [, setFeedback] = useFeedback();\n const navigate = useNavigate();\n const [template, setTemplate] = useState({\n title: '',\n app_id: null,\n mod: 'simple',\n });\n const [errors, setErrors] = useState({\n title: '',\n app_id: '',\n });\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setTemplate((prevTemplate) => ({ ...prevTemplate, [name]: value }));\n };\n\n const handleMod = (value) => {\n setTemplate({ ...template, mod: value });\n };\n\n const [{ data }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [, executePost] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates`,\n method: 'POST',\n },\n {\n useCache: false,\n manual: true,\n }\n );\n\n const createTemplate = () => {\n executePost({ data: template })\n .then((result) => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: \"Template created. Let's go for customization\",\n })\n );\n navigate(`/app/templates/${result.data.id}/edit`);\n })\n .catch((err) => {\n setErrors(err.response.data);\n });\n };\n\n const validTemplate = template.title !== '';\n\n return (\n <Box>\n <Title value=\"Initialize Template\" component=\"h1\" variant=\"h1\" />\n <Container style={style.root}>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6}>\n <TextField\n required\n label=\"Title\"\n name=\"title\"\n size=\"small\"\n fullWidth\n error={errors.title}\n helperText={errors.title}\n value={template.title}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={12} md={6} />\n <Grid item xs={12} md={6}>\n <FormControl fullWidth required size=\"small\">\n <InputLabel>Application</InputLabel>\n <Select\n value={template.app_id}\n name=\"app_id\"\n label=\"Application\"\n error={errors.app_id}\n onChange={handleChange}\n required\n >\n {data &&\n data.map((row) => {\n return <MenuItem value={row.id}>{row.name}</MenuItem>;\n })}\n </Select>\n <FormHelperText error>{errors.app_id}</FormHelperText>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={6} />\n <Grid item xs={12}>\n <Box style={style.mod}>\n <Mod\n style={template.mod === 'advanced' ? style.active : style.paper}\n elevation={3}\n onClick={() => handleMod('advanced')}\n >\n <img style={style.img} src={htmlIcon} alt=\"From HTML/CSS\" />\n <Typography>From HTML/CSS</Typography>\n </Mod>\n <Mod\n style={template.mod === 'simple' ? style.active : style.paper}\n elevation={3}\n onClick={() => handleMod('simple')}\n >\n <img style={style.img} src={editorIcon} alt=\"From WISIWIG Editor\" />\n <Typography>From WYSIWYG Editor</Typography>\n </Mod>\n </Box>\n </Grid>\n <Grid item xs={12}>\n <Button\n disabled={!validTemplate}\n variant=\"contained\"\n color=\"secondary\"\n onClick={createTemplate}\n >\n Create my template\n </Button>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default TemplateInit;\n","export default \"data:image/png;base64,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\"","import React, { useState, useEffect } from 'react';\nimport useAxios from 'axios-hooks';\n\nconst PlanContext = React.createContext();\n\n/* eslint-disable-next-line */\nconst PlanProvider = ({ children }) => {\n const [, fetchPlan] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/plans`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [plan, setPlan] = useState({\n label: '',\n app: 0,\n app_counter: 0,\n document: 0,\n document_counter: 0,\n });\n\n useEffect(() => {\n fetchPlan().then(({ data }) => setPlan({ ...plan, ...data }));\n }, []);\n\n return (\n <PlanContext.Provider\n /* eslint-disable-next-line */\n value={{\n plan,\n setPlan,\n }}\n >\n {children}\n </PlanContext.Provider>\n );\n};\nexport { PlanContext, PlanProvider };\n","import { useContext } from 'react';\nimport { PlanContext } from '../contexts/PlanContext';\n\nexport const usePlan = () => {\n const { plan, setPlan } = useContext(PlanContext);\n\n return [plan, setPlan];\n};\nexport default usePlan;\n","import React, { useState } from 'react';\nimport { IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport useAxios from 'axios-hooks';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport DownloadIcon from '@mui/icons-material/Download';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useNavigate } from 'react-router';\nimport EditIcon from '@mui/icons-material/Edit';\nimport PublishIcon from '@mui/icons-material/Publish';\nimport { usePlan } from '../../../../hooks/usePlan';\nimport { useFeedback } from '../../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../../utilities/feedback';\nimport AlertBox from '../../../../components/AlertBox';\n\nconst Actions = ({ id, state, refetch }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [open, setOpen] = useState(false);\n const [plan, setPlan] = usePlan();\n const navigate = useNavigate();\n const isMenuOpen = Boolean(anchorEl);\n const [, setFeedback] = useFeedback();\n\n const handleMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n const [, fetchDownload] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/download/${id}`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, publishDocument] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/publish/${id}`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, destroyDocument] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/${id}`,\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const downloadDocument = () => {\n fetchDownload().then((result) => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Document downloaded',\n })\n );\n window.open(result.data.url, '_blank');\n });\n };\n\n const deleteDocument = () => {\n destroyDocument().then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Document removed',\n })\n );\n refetch();\n setOpen(false);\n });\n };\n\n const generateDocument = () => {\n publishDocument().then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Document published',\n })\n );\n setPlan({ ...plan, document_counter: plan.document_counter + 1 });\n refetch();\n });\n };\n\n return (\n <>\n <AlertBox\n open={open}\n onClose={() => setOpen(false)}\n submit={deleteDocument}\n title=\"Are your sure ?\"\n text=\"Do you want to remove this document ?\"\n canceltext=\"Cancel\"\n submitText=\"Delete\"\n />\n <IconButton onClick={handleMenuOpen} size=\"large\">\n <MoreVertIcon color=\"secondary\" />\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n getContentAnchorEl={null}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n keepMounted\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n open={isMenuOpen}\n onClose={handleMenuClose}\n >\n <MenuItem onClick={() => navigate(`/app/documents/${id}/edit`)}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n Edit\n </MenuItem>\n <MenuItem\n onClick={generateDocument}\n disabled={state !== 'draft' || plan.document_counter >= plan.document}\n >\n <ListItemIcon>\n <PublishIcon />\n </ListItemIcon>\n Publish\n </MenuItem>\n <MenuItem onClick={downloadDocument} disabled={state !== 'created'}>\n <ListItemIcon>\n <DownloadIcon />\n </ListItemIcon>\n Download\n </MenuItem>\n <MenuItem onClick={() => setOpen(true)}>\n <ListItemIcon>\n <DeleteIcon />\n </ListItemIcon>\n Delete\n </MenuItem>\n </Menu>\n </>\n );\n};\nexport default Actions;\n","import React, { useState } from 'react';\nimport {\n styled,\n Box,\n Button,\n CircularProgress,\n Chip,\n Alert,\n Container,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableSortLabel,\n TableContainer,\n Table,\n TablePagination,\n Tooltip,\n} from '@mui/material';\nimport { visuallyHidden } from '@mui/utils';\nimport AddIcon from '@mui/icons-material/Add';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport useAxios from 'axios-hooks';\nimport { useNavigate } from 'react-router';\nimport InfoIcon from '@mui/icons-material/Info';\nimport WarningIcon from '@mui/icons-material/Warning';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport Moment from 'react-moment';\nimport Title from '../../../components/Title';\nimport Actions from '../components/Actions';\nimport Loader from '../../../components/Loader';\n\nconst style = {\n button: {\n marginLeft: '10px',\n },\n};\n\nconst Action = styled(Container)(({ theme }) => ({\n marginBottom: '14px',\n textAlign: 'end',\n padding: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst DocumentsList = () => {\n const navigate = useNavigate();\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('updated_at');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(25);\n const [{ data, loading, error }, refetch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const headCells = [\n {\n id: 'id',\n numeric: false,\n disablePadding: true,\n label: '#',\n },\n {\n id: 'state',\n numeric: false,\n disablePadding: false,\n label: 'State',\n },\n {\n id: 'title',\n numeric: false,\n disablePadding: false,\n label: 'Title',\n },\n {\n id: 'template',\n numeric: false,\n disablePadding: false,\n label: 'Template',\n },\n {\n id: 'updated_at',\n numeric: false,\n disablePadding: false,\n label: 'Updated At',\n },\n {\n id: 'action',\n numeric: true,\n disablePadding: false,\n label: 'Actions',\n },\n ];\n\n /* eslint-disable-next-line */\n const descendingComparator = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n };\n\n /* eslint-disable-next-line */\n const getComparator = (order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n };\n\n const stableSort = (array, comparator) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n /* eslint-disable-next-line */\n const order = comparator(a[0], b[0]);\n if (order !== 0) {\n return order;\n }\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const createSortHandler = (property) => (event) => {\n handleRequestSort(event, property);\n };\n\n const documentIcon = ({ state }) => {\n switch (state) {\n case 'draft':\n return <InfoIcon />;\n case 'pending':\n return <InfoIcon />;\n case 'wip':\n return <WarningIcon />;\n case 'created':\n return <CheckCircleIcon />;\n default:\n return '';\n }\n };\n\n const documentColor = ({ state }) => {\n switch (state) {\n case 'draft':\n return 'info';\n case 'pending':\n return 'warning';\n case 'wip':\n return 'warning';\n case 'created':\n return 'success';\n case 'error':\n return 'error';\n default:\n return 'success';\n }\n };\n\n return (\n <Box>\n <Title value=\"Documents\" component=\"h1\" variant=\"h1\" />\n <Action>\n <Button\n style={style.button}\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={loading ? <CircularProgress color=\"secondary\" size={20} /> : <RefreshIcon />}\n onClick={() => refetch()}\n >\n Refresh\n </Button>\n <Button\n style={style.button}\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<AddIcon />}\n onClick={() => navigate('/app/documents/initialize')}\n >\n Create a document\n </Button>\n </Action>\n {error && <Alert severity=\"error\">{error}</Alert>}\n {loading && <Loader />}\n {!loading && (\n <Container>\n {data.length === 0 && (\n <Alert severity=\"warning\" sx={{ marginBottom: '10px' }}>\n Get started, make your first PDF document\n </Alert>\n )}\n <TableContainer>\n <Table sx={{ minWidth: 750 }} aria-labelledby=\"tableTitle\">\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n key={headCell.id}\n align={headCell.numeric ? 'right' : 'left'}\n padding={headCell.disablePadding ? 'none' : 'normal'}\n sortDirection={orderBy === headCell.id ? order : false}\n >\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {stableSort(data, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => {\n return (\n <TableRow>\n <TableCell>{row.id}</TableCell>\n <TableCell>\n {row.state === 'error' ? (\n <Tooltip title={row.error}>\n <Chip\n icon={documentIcon(row)}\n color={documentColor(row)}\n label={row.state}\n variant=\"outlined\"\n />\n </Tooltip>\n ) : (\n <Chip\n icon={documentIcon(row)}\n color={documentColor(row)}\n label={row.state}\n variant=\"outlined\"\n />\n )}\n </TableCell>\n <TableCell>{row.title}</TableCell>\n <TableCell>{row.template}</TableCell>\n <TableCell>\n <Moment format=\"YYYY-MM-DD HH:mm:ss\">{row.updated_at}</Moment>\n </TableCell>\n <TableCell align=\"right\">\n <Actions id={row.id} state={row.state} refetch={refetch} />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[25, 50, 100]}\n component=\"div\"\n count={data.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </Container>\n )}\n </Box>\n );\n};\nexport default DocumentsList;\n","import React, { useState } from 'react';\nimport {\n Box,\n Container,\n Button,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Grid,\n TextField,\n FormHelperText,\n} from '@mui/material';\nimport useAxios from 'axios-hooks';\nimport { useNavigate } from 'react-router';\nimport Title from '../../../components/Title';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\n\nconst style = {\n root: {\n marginTop: '40px',\n },\n};\n\nconst DocumentInit = () => {\n const [, setFeedback] = useFeedback();\n const navigate = useNavigate();\n const [document, setDocument] = useState({\n title: '',\n payload: '{}',\n template_id: null,\n });\n const [errors, setErrors] = useState({\n title: '',\n template_id: '',\n });\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setDocument((prevDocument) => ({ ...prevDocument, [name]: value }));\n };\n\n const [{ data }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/templates`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [, executePost] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents`,\n method: 'POST',\n },\n {\n useCache: false,\n manual: true,\n }\n );\n\n const createDocument = () => {\n executePost({ data: document })\n .then((result) => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: \"Document created. Let's go for read data\",\n })\n );\n navigate(`/app/documents/${result.data.id}/edit`);\n })\n .catch((err) => {\n setErrors(err.response.data);\n });\n };\n\n const validForm = document.title !== '' && document.template !== null;\n\n return (\n <Box>\n <Title value=\"Initialize Document\" component=\"h1\" variant=\"h1\" />\n <Container style={style.root}>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6}>\n <TextField\n required\n label=\"Title\"\n name=\"title\"\n size=\"small\"\n fullWidth\n error={errors.title}\n helperText={errors.title}\n value={document.title}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={12} md={6} />\n <Grid item xs={12} md={6}>\n <FormControl fullWidth required size=\"small\">\n <InputLabel>Template</InputLabel>\n <Select\n value={document.template_id}\n name=\"template_id\"\n label=\"Template\"\n error={errors.template_id}\n onChange={handleChange}\n >\n {data &&\n data.map((row) => {\n return <MenuItem value={row.id}>{row.title}</MenuItem>;\n })}\n </Select>\n <FormHelperText error>{errors.template_id}</FormHelperText>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={6} />\n <Grid item xs={12} md={6}>\n <Button\n disabled={!validForm}\n variant=\"contained\"\n color=\"secondary\"\n onClick={createDocument}\n >\n Create my document\n </Button>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default DocumentInit;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Chip,\n Typography,\n Box,\n Grid,\n Button,\n Divider,\n Tabs,\n Tab,\n useTheme,\n styled,\n Alert,\n} from '@mui/material';\nimport SwipeableViews from 'react-swipeable-views';\nimport { useParams } from 'react-router-dom';\nimport { useNavigate } from 'react-router';\nimport AceEditor from 'react-ace';\nimport useAxios from 'axios-hooks';\nimport { Worker, Viewer } from '@react-pdf-viewer/core';\nimport '@react-pdf-viewer/core/lib/styles/index.css';\nimport SaveIcon from '@mui/icons-material/Save';\nimport PublishIcon from '@mui/icons-material/Publish';\nimport Cookies from 'js-cookie';\nimport InfoIcon from '@mui/icons-material/Info';\nimport WarningIcon from '@mui/icons-material/Warning';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport Title from '../../../components/Title';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\n\nconst TabPanel = (props) => {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`full-width-tabpanel-${index}`}\n aria-labelledby={`full-width-tab-${index}`}\n {...other}\n >\n {value === index && (\n <Box sx={{ p: 3 }}>\n <Typography>{children}</Typography>\n </Box>\n )}\n </div>\n );\n};\n\nTabPanel.propTypes = {\n children: PropTypes.node.isRequired,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\nconst a11yProps = (index) => {\n return {\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n };\n};\n\nconst style = {\n button: {\n marginLeft: '10px',\n },\n};\n\nconst Action = styled(Box)(({ theme }) => ({\n marginBottom: '14px',\n textAlign: 'end',\n paddingRight: '0',\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst DocumentNew = () => {\n const { id } = useParams();\n const navigate = useNavigate();\n const theme = useTheme();\n const [, setFeedback] = useFeedback();\n const [tab, setTab] = useState(0);\n const [rand, setRand] = useState(Math.random());\n const [document, setDocument] = useState({\n template: '',\n payload: '{}',\n });\n\n const [, executePatch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/${id}`,\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, fetchDocument] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/${id}/edit`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, publishDocument] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/documents/publish/${id}`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const updateDocument = () => {\n executePatch({ data: document }).then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Document updated',\n })\n );\n setRand(Math.random());\n setDocument({ ...document, state: 'draft' });\n });\n };\n\n const generateDocument = () => {\n publishDocument().then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Document published',\n })\n );\n setDocument({ ...document, state: 'created' });\n navigate('/app/documents');\n });\n };\n\n const handleChangeTab = (event, value) => {\n setTab(value);\n };\n\n const handleChangeIndex = (index) => {\n setTab(index);\n };\n\n const editorChange = (name, value) => {\n setDocument({ ...document, [name]: value });\n };\n\n const documentIcon = ({ state }) => {\n switch (state) {\n case 'draft':\n return <InfoIcon />;\n case 'pending':\n return <InfoIcon />;\n case 'wip':\n return <WarningIcon />;\n case 'error':\n return <WarningIcon />;\n case 'created':\n return <CheckCircleIcon />;\n default:\n return '';\n }\n };\n\n const documentColor = ({ state }) => {\n switch (state) {\n case 'draft':\n return 'info';\n case 'pending':\n return 'warning';\n case 'wip':\n return 'warning';\n case 'error':\n return 'error';\n case 'created':\n return 'success';\n default:\n return 'success';\n }\n };\n\n useEffect(() => {\n if (id) fetchDocument().then(({ data }) => setDocument({ ...document, ...data }));\n }, [id]);\n\n return (\n <Box>\n <Title value=\"Create Document\" component=\"h1\" variant=\"h1\" />\n <Action>\n <Chip\n icon={documentIcon(document)}\n color={documentColor(document)}\n label={document.state}\n variant=\"outlined\"\n />\n <Button\n disabled={document.state === 'pending' || document.state === 'wip'}\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<SaveIcon />}\n onClick={updateDocument}\n >\n Save\n </Button>\n <Button\n disabled={document.state !== 'draft'}\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<PublishIcon />}\n onClick={generateDocument}\n >\n Publish\n </Button>\n </Action>\n <Grid container spacing={1}>\n <Grid item xs>\n <Grid container spacing={1}>\n <Grid item xs={12}>\n <Tabs\n value={tab}\n onChange={handleChangeTab}\n indicatorColor=\"secondary\"\n textColor=\"inherit\"\n variant=\"fullWidth\"\n >\n <Tab label=\"Sample Data\" {...a11yProps(0)} />\n </Tabs>\n </Grid>\n <Grid item xs={12}>\n <SwipeableViews\n axis={theme.direction === 'rtl' ? 'x-reverse' : 'x'}\n index={tab}\n onChangeIndex={handleChangeIndex}\n >\n <TabPanel value={tab} index={0} dir={theme.direction}>\n <AceEditor\n mode=\"json\"\n fontSize={parseInt(Cookies.get('font_size'), 10)}\n theme={Cookies.get('theme')}\n maxLines={Cookies.get('max_lines')}\n value={document.payload}\n width=\"100%\"\n onChange={(value) => editorChange('payload', value)}\n name=\"payload\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: false,\n }}\n />\n </TabPanel>\n </SwipeableViews>\n </Grid>\n </Grid>\n </Grid>\n <Divider orientation=\"vertical\" flexItem />\n <Grid item xs>\n <Worker workerUrl=\"https://unpkg.com/pdfjs-dist@2.6.347/build/pdf.worker.min.js\">\n <Viewer\n fileUrl={`${process.env.REACT_APP_API_URL}/documents/sample/${id}?rand=${rand}`}\n renderError={() => <Alert severity=\"error\">Invalid data Payload.</Alert>}\n />\n </Worker>\n </Grid>\n </Grid>\n </Box>\n );\n};\nexport default DocumentNew;\n","import React, { useState } from 'react';\nimport { IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\n/* eslint-disable-next-line */\nimport { useNavigate } from 'react-router';\nimport useAxios from 'axios-hooks';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useFeedback } from '../../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK, ERROR_FEEDBACK } from '../../../../utilities/feedback';\nimport AlertBox from '../../../../components/AlertBox';\n\nconst Actions = ({ id, refetch }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [open, setOpen] = useState(false);\n const isMenuOpen = Boolean(anchorEl);\n const [, setFeedback] = useFeedback();\n const navigate = useNavigate();\n\n const handleMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n const [, destroyWebhook] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/webhook_endpoints/${id}`,\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const deleteWebhook = () => {\n destroyWebhook()\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Webhook removed',\n })\n );\n refetch();\n })\n .catch((response) =>\n setFeedback(\n ERROR_FEEDBACK({\n message: response.message,\n })\n )\n );\n setOpen(false);\n };\n\n return (\n <>\n <AlertBox\n open={open}\n onClose={() => setOpen(false)}\n submit={deleteWebhook}\n title=\"Delete\"\n text=\"Do you want to remove this Webhook ?\"\n canceltext=\"Cancel\"\n submitText=\"Delete\"\n />\n <IconButton onClick={handleMenuOpen} size=\"large\">\n <MoreVertIcon color=\"secondary\" />\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n getContentAnchorEl={null}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n keepMounted\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n open={isMenuOpen}\n onClose={handleMenuClose}\n >\n <MenuItem onClick={() => navigate(`/app/webhook_endpoints/${id}/edit`)}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n Edit\n </MenuItem>\n <MenuItem onClick={() => setOpen(true)}>\n <ListItemIcon>\n <DeleteIcon />\n </ListItemIcon>\n Delete\n </MenuItem>\n </Menu>\n </>\n );\n};\nexport default Actions;\n","import React, { useState } from 'react';\nimport {\n styled,\n Box,\n Button,\n Container,\n Alert,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableSortLabel,\n TableContainer,\n Table,\n TablePagination,\n} from '@mui/material';\nimport { visuallyHidden } from '@mui/utils';\nimport AddIcon from '@mui/icons-material/Add';\nimport useAxios from 'axios-hooks';\n/* eslint-disable-next-line */\nimport { useNavigate } from 'react-router';\nimport Title from '../../../components/Title';\nimport Actions from '../components/Actions';\nimport Loader from '../../../components/Loader';\n\nconst Action = styled(Container)(({ theme }) => ({\n marginBottom: '14px',\n textAlign: 'end',\n padding: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst WebhooksList = () => {\n const navigate = useNavigate();\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('updated_at');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(5);\n const [{ data, loading, error }, refetch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}//webhook_endpoints`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const headCells = [\n {\n id: 'target_url',\n numeric: false,\n disablePadding: false,\n label: 'Target URL',\n },\n {\n id: 'app_name',\n numeric: false,\n disablePadding: false,\n label: 'Application',\n },\n {\n id: 'action',\n numeric: true,\n disablePadding: false,\n label: 'Actions',\n },\n ];\n\n /* eslint-disable-next-line */\n const descendingComparator = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n };\n\n /* eslint-disable-next-line */\n const getComparator = (order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n };\n\n const stableSort = (array, comparator) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n /* eslint-disable-next-line */\n const order = comparator(a[0], b[0]);\n if (order !== 0) {\n return order;\n }\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const createSortHandler = (property) => (event) => {\n handleRequestSort(event, property);\n };\n\n return (\n <Box>\n <Title value=\"Webhooks\" component=\"h1\" variant=\"h1\" />\n <Action>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<AddIcon />}\n onClick={() => navigate('/app/webhook_endpoints/new')}\n >\n Create a webhook\n </Button>\n </Action>\n {error && <Alert severity=\"error\">{error}</Alert>}\n {loading && <Loader />}\n {!loading && (\n <Container>\n {data.length === 0 && (\n <Alert severity=\"warning\" sx={{ marginBottom: '10px' }}>\n Get started, use your first Webhook\n </Alert>\n )}\n <TableContainer>\n <Table sx={{ minWidth: 750 }} aria-labelledby=\"tableTitle\">\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n key={headCell.id}\n align={headCell.numeric ? 'right' : 'left'}\n padding={headCell.disablePadding ? 'none' : 'normal'}\n sortDirection={orderBy === headCell.id ? order : false}\n >\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {stableSort(data, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => {\n return (\n <TableRow>\n <TableCell>{row.target_url}</TableCell>\n <TableCell>{row.app_name}</TableCell>\n <TableCell align=\"right\">\n <Actions id={row.id} refetch={refetch} />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[5, 10, 25]}\n component=\"div\"\n count={data.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </Container>\n )}\n </Box>\n );\n};\nexport default WebhooksList;\n","import React, { useState, useEffect } from 'react';\nimport {\n Container,\n Box,\n Grid,\n TextField,\n Button,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n FormHelperText,\n} from '@mui/material';\nimport { useParams } from 'react-router-dom';\n/* eslint-disable-next-line */\nimport { useNavigate } from 'react-router';\nimport useAxios from 'axios-hooks';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\nimport Title from '../../../components/Title';\nimport 'ace-builds/src-noconflict/mode-html';\nimport 'ace-builds/src-noconflict/theme-xcode';\nimport 'ace-builds/src-noconflict/ext-language_tools';\nimport '@react-pdf-viewer/core/lib/styles/index.css';\n\nconst style = {\n root: {\n marginTop: '40px',\n },\n};\n\nconst WebhookNew = () => {\n const { id } = useParams();\n const navigate = useNavigate();\n const [, setFeedback] = useFeedback();\n const [webhook, setWebhook] = useState({\n target_url: '',\n app_id: null,\n });\n const [errors, setErrors] = useState({\n target_url: '',\n app_id: '',\n });\n\n const [, executePost] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/webhook_endpoints`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n manual: true,\n }\n );\n\n const [, executePatch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/webhook_endpoints/${id}`,\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [{ data }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [, fetchWebhook] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/webhook_endpoints/${id}/edit`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const createWebhook = () => {\n executePost({ data: webhook })\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Webhook created',\n })\n );\n navigate('/app/webhook_endpoints');\n })\n .catch((error) => {\n setErrors(error.response.data);\n });\n };\n\n const updateWebhook = () => {\n executePatch({ data: webhook })\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Webhook updated',\n })\n );\n navigate('/app/webhook_endpoints');\n })\n .catch((error) => {\n setErrors(error.response.data);\n });\n };\n\n const createOrUpdate = () => (id ? updateWebhook() : createWebhook());\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setWebhook({ ...webhook, [name]: value });\n };\n\n const checkForm = webhook.target_url !== '' && webhook.app !== null;\n\n useEffect(() => {\n /* eslint-disable-next-line */\n if (id) fetchWebhook().then(({ data }) => setWebhook({ ...webhook, ...data }));\n }, [id]);\n\n return (\n <Box>\n <Title value=\"Create Webhook\" component=\"h1\" variant=\"h1\" />\n <Container style={style.root}>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6}>\n <TextField\n size=\"small\"\n required\n fullWidth\n label=\"Target URL\"\n name=\"target_url\"\n error={errors.target_url}\n helperText={errors.target_url}\n value={webhook.target_url}\n onChange={handleChange}\n />\n </Grid>\n <Grid item xs={12} md={6} />\n <Grid item xs={12} md={6}>\n <FormControl fullWidth size=\"small\" required>\n <InputLabel>Application</InputLabel>\n <Select\n value={webhook.app_id}\n name=\"app_id\"\n label=\"Application\"\n onChange={handleChange}\n error={errors.app_id}\n >\n {data &&\n data.map((row) => {\n return <MenuItem value={row.id}>{row.name}</MenuItem>;\n })}\n </Select>\n <FormHelperText error>{errors.app_id}</FormHelperText>\n </FormControl>\n </Grid>\n <Grid item xs={12}>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n disabled={!checkForm}\n startIcon={<SaveIcon />}\n onClick={() => createOrUpdate()}\n >\n Save\n </Button>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default WebhookNew;\n","import React, { useState } from 'react';\nimport { IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { useNavigate } from 'react-router';\nimport useAxios from 'axios-hooks';\nimport { usePlan } from '../../../../hooks/usePlan';\nimport { useFeedback } from '../../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK, ERROR_FEEDBACK } from '../../../../utilities/feedback';\nimport AlertBox from '../../../../components/AlertBox';\n\nconst Actions = ({ id, refetch }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [open, setOpen] = useState(false);\n const [plan, setPlan] = usePlan();\n const isMenuOpen = Boolean(anchorEl);\n const [, setFeedback] = useFeedback();\n const navigate = useNavigate();\n\n const handleMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n const [, destroyApp] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps/${id}`,\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const deleteApp = () => {\n destroyApp()\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'App removed',\n })\n );\n setPlan({ ...plan, app_counter: plan.app_counter - 1 });\n refetch();\n })\n .catch((err) =>\n setFeedback(\n ERROR_FEEDBACK({\n message: err.response.data.error,\n })\n )\n );\n setOpen(false);\n };\n\n return (\n <>\n <AlertBox\n open={open}\n onClose={() => setOpen(false)}\n submit={deleteApp}\n title=\"Are you sur ?\"\n text=\"Do you want to remove this app ?\"\n canceltext=\"Cancel\"\n submitText=\"Delete\"\n />\n <IconButton onClick={handleMenuOpen} size=\"large\">\n <MoreVertIcon color=\"secondary\" />\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n getContentAnchorEl={null}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n keepMounted\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n open={isMenuOpen}\n onClose={handleMenuClose}\n >\n <MenuItem onClick={() => navigate(`/app/apps/${id}/edit`)}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n Edit\n </MenuItem>\n <MenuItem onClick={() => setOpen(true)}>\n <ListItemIcon>\n <DeleteIcon />\n </ListItemIcon>\n Delete\n </MenuItem>\n </Menu>\n </>\n );\n};\nexport default Actions;\n","import React, { useState } from 'react';\nimport {\n styled,\n Box,\n Button,\n Container,\n Alert,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableSortLabel,\n TableContainer,\n Table,\n TablePagination,\n} from '@mui/material';\nimport { visuallyHidden } from '@mui/utils';\nimport Moment from 'react-moment';\nimport AddIcon from '@mui/icons-material/Add';\nimport useAxios from 'axios-hooks';\nimport { useNavigate } from 'react-router';\nimport { usePlan } from '../../../hooks/usePlan';\nimport Title from '../../../components/Title';\nimport Actions from '../components/Actions';\nimport Loader from '../../../components/Loader';\n\nconst Action = styled(Container)(({ theme }) => ({\n marginBottom: '14px',\n textAlign: 'end',\n padding: theme.spacing(1),\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n [theme.breakpoints.up('md')]: {\n textAlign: 'end',\n },\n}));\n\nconst AppsList = () => {\n const navigate = useNavigate();\n const [plan] = usePlan();\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('updated_at');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(5);\n const [{ data, loading, error }, refetch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const headCells = [\n {\n id: 'name',\n numeric: false,\n disablePadding: false,\n label: 'Name',\n },\n {\n id: 'updated_at',\n numeric: false,\n disablePadding: false,\n label: 'updated At',\n },\n {\n id: 'action',\n numeric: true,\n disablePadding: false,\n label: 'Actions',\n },\n ];\n\n /* eslint-disable-next-line */\n const descendingComparator = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n };\n\n /* eslint-disable-next-line */\n const getComparator = (order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n };\n\n const stableSort = (array, comparator) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n /* eslint-disable-next-line */\n const order = comparator(a[0], b[0]);\n if (order !== 0) {\n return order;\n }\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const createSortHandler = (property) => (event) => {\n handleRequestSort(event, property);\n };\n\n return (\n <Box>\n <Title value=\"Applications\" component=\"h1\" variant=\"h1\" />\n <Action>\n <Button\n size=\"small\"\n disabled={plan.app <= plan.app_counter}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<AddIcon />}\n onClick={() => navigate('/app/apps/new')}\n >\n Create an Application\n </Button>\n </Action>\n {error && <Alert severity=\"error\">{error}</Alert>}\n {loading && <Loader />}\n {!loading && (\n <Container>\n {plan.app <= plan.app_counter && (\n <Alert severity=\"warning\">\n You are using all your apps slots <b>({`${plan.app_counter}/${plan.app}`})</b>. If you\n need more apps, upgrade your account\n </Alert>\n )}\n <TableContainer>\n <Table sx={{ minWidth: 750 }} aria-labelledby=\"tableTitle\">\n <TableHead>\n <TableRow>\n {headCells.map((headCell) => (\n <TableCell\n key={headCell.id}\n align={headCell.numeric ? 'right' : 'left'}\n padding={headCell.disablePadding ? 'none' : 'normal'}\n sortDirection={orderBy === headCell.id ? order : false}\n >\n <TableSortLabel\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? order : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {stableSort(data, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => {\n return (\n <TableRow>\n <TableCell>{row.name}</TableCell>\n <TableCell>\n <Moment format=\"YYYY-MM-DD HH:mm:ss\">{row.updated_at}</Moment>\n </TableCell>\n <TableCell align=\"right\">\n <Actions id={row.id} refetch={refetch} />\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={[5, 10, 25]}\n component=\"div\"\n count={data.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n />\n </Container>\n )}\n </Box>\n );\n};\nexport default AppsList;\n","import React, { useState, useEffect } from 'react';\nimport { Container, Box, Grid, TextField, Button } from '@mui/material';\nimport { useParams } from 'react-router-dom';\nimport { useNavigate } from 'react-router';\nimport 'ace-builds/src-noconflict/mode-html';\nimport 'ace-builds/src-noconflict/theme-xcode';\nimport 'ace-builds/src-noconflict/ext-language_tools';\nimport useAxios from 'axios-hooks';\nimport '@react-pdf-viewer/core/lib/styles/index.css';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { usePlan } from '../../../hooks/usePlan';\nimport Title from '../../../components/Title';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\n\nconst style = {\n root: {\n marginTop: '40px',\n },\n};\n\nconst AppNew = () => {\n const { id } = useParams();\n const navigate = useNavigate();\n const [plan, setPlan] = usePlan();\n const [, setFeedback] = useFeedback();\n const [app, setApp] = useState({\n name: '',\n });\n const [errors, setErrors] = useState({\n name: '',\n });\n\n const [, executePost] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps`,\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n manual: true,\n }\n );\n\n const [, executePatch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps/${id}`,\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, fetchApp] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/apps/${id}/edit`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const createApp = () => {\n executePost({ data: app })\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'App created',\n })\n );\n localStorage.setItem('app', true);\n setPlan({ ...plan, app_counter: plan.app_counter + 1 });\n navigate('/app/apps');\n })\n .catch((error) => {\n setErrors(error.response.data);\n });\n };\n\n const updateApp = () => {\n executePatch({ data: app })\n .then(() => {\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'App updated',\n })\n );\n navigate('/app/apps');\n })\n .catch((error) => {\n setErrors(error.response.data);\n });\n };\n\n const createOrUpdate = () => (id ? updateApp() : createApp());\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setApp({ ...app, [name]: value });\n };\n\n useEffect(() => {\n if (id) fetchApp().then(({ data }) => setApp({ ...app, ...data }));\n }, [id]);\n\n return (\n <Box>\n <Title value=\"Create Application\" component=\"h1\" variant=\"h1\" />\n <Container style={style.root}>\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <TextField\n size=\"small\"\n fullWidth\n label=\"Name\"\n name=\"name\"\n error={errors.name}\n helperText={errors.name}\n value={app.name}\n onChange={handleChange}\n required\n />\n </Grid>\n <Grid item xs={12}>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n disabled={app.name === ''}\n startIcon={<SaveIcon />}\n onClick={() => createOrUpdate()}\n >\n Save\n </Button>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default AppNew;\n","import React, { useState, useEffect } from 'react';\nimport {\n TextField,\n Divider,\n Container,\n Box,\n Grid,\n Button,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Alert,\n} from '@mui/material';\nimport useAxios from 'axios-hooks';\nimport SaveIcon from '@mui/icons-material/Save';\nimport Cookies from 'js-cookie';\nimport AceEditor from 'react-ace';\nimport { useFeedback } from '../../../hooks/useFeedback';\nimport { SUCCESS_FEEDBACK } from '../../../utilities/feedback';\nimport Title from '../../../components/Title';\nimport '@react-pdf-viewer/core/lib/styles/index.css';\n/* eslint-disable-next-line */\nimport \"../../../components/Themes/index.js\";\n\nconst style = {\n root: {\n marginTop: '40px',\n },\n button: {\n marginTop: '20px',\n },\n input: {\n marginBottom: '20px',\n },\n divider: {\n marginTop: '10px',\n marginBottom: '10px',\n },\n};\n\nconst Profil = () => {\n const [, setFeedback] = useFeedback();\n const [profil, setProfil] = useState({\n name: '',\n theme: 'ambiance',\n font_size: 18,\n max_lines: 30,\n });\n const [errors, setErrors] = useState({\n name: '',\n theme: '',\n font_size: '',\n max_lines: '',\n });\n\n const [, executePatch] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/profil`,\n method: 'PATCH',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const [, fetchProfil] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/profil`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n { manual: true }\n );\n\n const updateProfil = () => {\n executePatch({ data: profil })\n .then(() => {\n setErrors({});\n setFeedback(\n SUCCESS_FEEDBACK({\n message: 'Profil updated',\n })\n );\n Cookies.set('theme', profil.theme);\n Cookies.set('font_size', profil.font_size);\n Cookies.set('max_lines', profil.max_lines);\n })\n .catch((error) => {\n setErrors(error.response.data);\n });\n };\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setProfil({ ...profil, [name]: value });\n };\n\n useEffect(() => {\n fetchProfil().then(({ data }) => setProfil({ ...profil, ...data }));\n }, []);\n\n return (\n <Box>\n <Title value=\"My Account\" component=\"h1\" variant=\"h1\" />\n <Container style={style.root}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Alert severity=\"info\">\n Your personal API key is : <b>{Cookies.get('api_key')}</b>\n </Alert>\n </Grid>\n <Grid item xs={6}>\n <TextField\n required\n label=\"Your name\"\n name=\"name\"\n size=\"small\"\n fullWidth\n style={style.input}\n error={errors.name}\n helperText={errors.name}\n value={profil.name}\n onChange={handleChange}\n />\n <TextField\n required\n label=\"Font size\"\n name=\"font_size\"\n size=\"small\"\n fullWidth\n type=\"number\"\n style={style.input}\n error={errors.font_size}\n helperText={errors.font_size}\n value={parseInt(profil.font_size, 10)}\n onChange={handleChange}\n />\n <TextField\n required\n label=\"Max lines\"\n name=\"max_lines\"\n size=\"small\"\n fullWidth\n type=\"number\"\n style={style.input}\n error={errors.max_lines}\n helperText={errors.max_lines}\n value={parseInt(profil.max_lines, 10)}\n onChange={handleChange}\n />\n <FormControl fullWidth required>\n <InputLabel>Theme</InputLabel>\n <Select\n value={profil.theme}\n name=\"theme\"\n size=\"small\"\n label=\"Thème\"\n onChange={handleChange}\n >\n <MenuItem value=\"ambiance\">Ambiance</MenuItem>\n <MenuItem value=\"chaos\">Chaos</MenuItem>\n <MenuItem value=\"chrome\">Chrome</MenuItem>\n <MenuItem value=\"clouds_midnight\">Clouds Midnight</MenuItem>\n <MenuItem value=\"clouds\">Clouds</MenuItem>\n <MenuItem value=\"cobalt\">Cobalt</MenuItem>\n <MenuItem value=\"crimson_editor\">Crimson Editor</MenuItem>\n <MenuItem value=\"dawn\">Dawn</MenuItem>\n <MenuItem value=\"dracula\">Dracula</MenuItem>\n <MenuItem value=\"dreamweaver\">Dreamweaver</MenuItem>\n <MenuItem value=\"eclipse\">Eclipse</MenuItem>\n <MenuItem value=\"github\">Github</MenuItem>\n <MenuItem value=\"gob\">Gob</MenuItem>\n <MenuItem value=\"gruvbox\">Gruvbox</MenuItem>\n <MenuItem value=\"idle_fingers\">Idel Fingers</MenuItem>\n <MenuItem value=\"iplastic\">Iplastic</MenuItem>\n <MenuItem value=\"kr_theme\">KR Theme</MenuItem>\n <MenuItem value=\"kuroir\">Kuroir</MenuItem>\n <MenuItem value=\"merbivore_soft\">Merbivore Soft</MenuItem>\n <MenuItem value=\"merbivore\">Merbivore</MenuItem>\n <MenuItem value=\"mono_industrial\">Mono Industrial</MenuItem>\n <MenuItem value=\"monokai\">Monokai</MenuItem>\n <MenuItem value=\"nord_dark\">Nord Dark</MenuItem>\n <MenuItem value=\"one_dark\">One Dark</MenuItem>\n <MenuItem value=\"pastel_on_dark\">Pastel On Dark</MenuItem>\n <MenuItem value=\"solarized_dark\">Solarized Dark</MenuItem>\n <MenuItem value=\"solarized_light\">Solarized Light</MenuItem>\n <MenuItem value=\"sqlserver\">SQL Server</MenuItem>\n <MenuItem value=\"terminal\">Terminal</MenuItem>\n <MenuItem value=\"textmate\">Textmate</MenuItem>\n <MenuItem value=\"tomorrow_night_blue\">Tomorrow Night Blue</MenuItem>\n <MenuItem value=\"tomorrow_night_bright\">Tomorrow Night Bright</MenuItem>\n <MenuItem value=\"tomorrow_night_eighties\">Tomorrow Night Eighties</MenuItem>\n <MenuItem value=\"tomorrow_night\">Tomorrow Night</MenuItem>\n <MenuItem value=\"tomorrow\">Tomorrow</MenuItem>\n <MenuItem value=\"twilight\">Twilight</MenuItem>\n <MenuItem value=\"vibrant_ink\">Vibrand Ink</MenuItem>\n <MenuItem value=\"xcode\">Xcode</MenuItem>\n </Select>\n </FormControl>\n <Button\n style={style.button}\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<SaveIcon />}\n onClick={() => updateProfil()}\n >\n Save\n </Button>\n </Grid>\n <Grid item xs={6}>\n <AceEditor\n mode=\"html\"\n theme={profil.theme}\n fontSize={parseInt(profil.font_size, 10)}\n value=\"<h1>Hello World !</h1>\"\n height=\"100px\"\n width=\"100%\"\n onChange={null}\n name=\"sample\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Divider style={style.divider} />\n <AceEditor\n mode=\"css\"\n theme={profil.theme}\n fontSize={parseInt(profil.font_size, 10)}\n value=\".h1 { color: red }\"\n height=\"100px\"\n readOnly\n width=\"100%\"\n onChange={null}\n name=\"sample\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Divider style={style.divider} />\n <AceEditor\n mode=\"json\"\n theme={profil.theme}\n fontSize={parseInt(profil.font_size, 10)}\n value='{ \"name: \"John DOE\" }'\n height=\"100px\"\n readOnly\n width=\"100%\"\n onChange={null}\n name=\"sample\"\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default Profil;\n","import React, { useState, useEffect } from 'react';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n} from 'chart.js';\nimport { Alert } from '@mui/material';\nimport { Line } from 'react-chartjs-2';\nimport useAxios from 'axios-hooks';\nimport Loader from '../../../../components/Loader';\n\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend);\n\nconst style = {\n chart: {\n maxHeight: '300px',\n },\n};\n\nconst BarCount = () => {\n const options = {\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n },\n title: {\n display: true,\n text: 'Documents',\n },\n },\n };\n\n const [labels, setLabels] = useState([]);\n const [dataset, setDataset] = useState({\n labels,\n datasets: [\n {\n label: 'Created',\n data: [],\n borderColor: 'rgb(255, 99, 132)',\n backgroundColor: 'rgba(255, 99, 132, 0.5)',\n },\n ],\n });\n\n const [{ data, loading }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/stats/count`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n useEffect(() => {\n if (data) {\n const tmpLabels = [];\n const tmpValues = [];\n /* eslint-disable-next-line */\n for (const [key, value] of Object.entries(data)) {\n tmpLabels.push(key);\n tmpValues.push(value);\n }\n setLabels(tmpLabels);\n setDataset((prevChart) => ({\n ...prevChart,\n labels: tmpLabels,\n datasets: [{ ...prevChart.datasets[0], data: tmpValues }],\n }));\n }\n }, [data]);\n\n return (\n <>\n {loading && <Loader />}\n {!loading && dataset.datasets[0].data.length !== 0 ? (\n <Line options={options} data={dataset} style={style.chart} />\n ) : (\n <Alert severity=\"info\">No data available</Alert>\n )}\n </>\n );\n};\nexport default BarCount;\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js';\nimport { Alert } from '@mui/material';\nimport { Doughnut } from 'react-chartjs-2';\nimport useAxios from 'axios-hooks';\nimport Loader from '../../../../components/Loader';\n\nChartJS.register(ArcElement, Tooltip, Legend);\n\nconst style = {\n chart: {\n maxHeight: '300px',\n },\n};\n\nconst DoughnutTemplate = () => {\n const options = {\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n },\n title: {\n display: true,\n text: 'Documents by template',\n },\n },\n };\n\n const [dataset, setDataset] = useState({\n labels: [],\n datasets: [\n {\n label: 'Documents by templates',\n data: [],\n backgroundColor: [\n 'rgba(255, 99, 132, 0.2)',\n 'rgba(54, 162, 235, 0.2)',\n 'rgba(255, 206, 86, 0.2)',\n 'rgba(75, 192, 192, 0.2)',\n 'rgba(153, 102, 255, 0.2)',\n 'rgba(255, 159, 64, 0.2)',\n ],\n borderColor: [\n 'rgba(255, 99, 132, 1)',\n 'rgba(54, 162, 235, 1)',\n 'rgba(255, 206, 86, 1)',\n 'rgba(75, 192, 192, 1)',\n 'rgba(153, 102, 255, 1)',\n 'rgba(255, 159, 64, 1)',\n ],\n borderWidth: 1,\n },\n ],\n });\n\n const [{ data, loading }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/stats/templates`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n useEffect(() => {\n if (data) {\n const tmpLabels = [];\n const tmpValues = [];\n /* eslint-disable-next-line */\n for (const [key, value] of Object.entries(data)) {\n tmpLabels.push(key);\n tmpValues.push(value);\n }\n setDataset((prevChart) => ({\n ...prevChart,\n labels: tmpLabels,\n datasets: [{ ...prevChart.datasets[0], data: tmpValues }],\n }));\n }\n }, [data]);\n\n return (\n <>\n {loading && <Loader />}\n {!loading && dataset.datasets[0].data.length !== 0 ? (\n <Doughnut options={options} data={dataset} style={style.chart} />\n ) : (\n <Alert severity=\"info\">No data available</Alert>\n )}\n </>\n );\n};\nexport default DoughnutTemplate;\n","import React from 'react';\nimport {\n Card,\n CardContent,\n Grid,\n Typography,\n Alert,\n LinearProgress,\n Box,\n Link,\n} from '@mui/material';\nimport useAxios from 'axios-hooks';\nimport Moment from 'react-moment';\nimport BarCount from './components/BarCount';\nimport DoughnutTemplate from './components/DoughnutTemplate';\n\nconst style = {\n chart: {},\n title: {\n textAlign: 'center',\n },\n counter: {\n textAlign: 'center',\n fontSize: '35px',\n },\n};\n\nconst Statistics = () => {\n const [{ data: templateCounter }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/stats/templates_count`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [{ data: documentsCounter }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/stats/documents_count`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const [{ data: plan }] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/plans`,\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n },\n {\n useCache: false,\n }\n );\n\n const getColor = () => {\n if (plan.document_counter === plan.document) {\n return 'error';\n }\n if ((plan.document_counter / plan.document) * 100 > 80) {\n return 'warning';\n }\n return 'success';\n };\n\n return (\n <Grid container spacing={2}>\n {plan && plan.label === 'AppSumo' && (\n <Grid item xs={12}>\n <Alert severity=\"info\">\n <>\n You are currently in AppSumo special plan (49€ for one year){` `}\n <b>\n [<Link href=\"/app/plans/choose\">Change plan</Link>]\n </b>\n </>\n </Alert>\n </Grid>\n )}\n {!localStorage.getItem('app') && (\n <Grid item xs={12}>\n <Alert severity=\"warning\">Get started, create your first app...</Alert>\n </Grid>\n )}\n {plan && plan.label === 'Trial' && (\n <Grid item xs={12}>\n <Alert severity=\"warning\">\n <>\n Your free trial expire at {` `}\n <b>\n <Moment date={plan.expired_at} />\n {` `}\n </b>\n <b>\n [<Link href=\"/app/plans/choose\">Upgrade</Link>]\n </b>\n </>\n </Alert>\n </Grid>\n )}\n {plan && plan.label === 'Free' && (\n <Grid item xs={12}>\n <Alert severity=\"warning\">\n <>\n <b>Your free Trial is expired.</b>\n Your have been downgraded to free plan.{` `}\n <b>\n [<Link href=\"/app/plans/choose\">Upgrade</Link>]\n </b>\n </>\n </Alert>\n </Grid>\n )}\n <Grid item xs={12} md={4}>\n <Card>\n <CardContent>\n <Typography variant=\"h6\" component=\"p\" color=\"secondary\" style={style.title}>\n Templates\n </Typography>\n <Typography component=\"p\" color=\"secondary\" style={style.counter}>\n {/* eslint-disable-next-line */}\n {templateCounter ? templateCounter : 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} md={4}>\n <Card>\n <CardContent>\n <Typography\n variant=\"h6\"\n component=\"p\"\n sx={{ color: (theme) => theme.palette.success.main }}\n style={style.title}\n >\n Documents published\n </Typography>\n <Typography\n component=\"p\"\n sx={{ color: (theme) => theme.palette.success.main }}\n style={style.counter}\n >\n {documentsCounter && documentsCounter.created ? documentsCounter.created : 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} md={4}>\n <Card>\n <CardContent>\n <Typography\n variant=\"h6\"\n component=\"p\"\n sx={{ color: (theme) => theme.palette.warning.main }}\n style={style.title}\n >\n Generations in progress\n </Typography>\n <Typography\n component=\"p\"\n sx={{ color: (theme) => theme.palette.warning.main }}\n style={style.counter}\n >\n {documentsCounter && documentsCounter.pending ? documentsCounter.pending : 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12}>\n <Card>\n <CardContent>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Documents generated\n </Typography>\n {plan && (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Box sx={{ width: '100%', mr: 1 }}>\n <LinearProgress\n variant=\"determinate\"\n color={getColor()}\n value={(plan.document_counter / plan.document) * 100}\n />\n </Box>\n <Box sx={{ minWidth: 35 }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {` ${Math.round(plan.document_counter)}/${Math.round(plan.document)}`}\n </Typography>\n </Box>\n </Box>\n )}\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} md={6} style={style.chart}>\n <BarCount />\n </Grid>\n <Grid item xs={12} md={6} style={style.chart}>\n <DoughnutTemplate />\n </Grid>\n </Grid>\n );\n};\nexport default Statistics;\n","import React from 'react';\nimport {\n Container,\n Grid,\n Card,\n CardHeader,\n CardContent,\n Box,\n Typography,\n CardActions,\n Button,\n GlobalStyles,\n Alert,\n} from '@mui/material';\nimport StarIcon from '@mui/icons-material/StarBorder';\nimport Title from '../../../components/Title';\nimport { usePlan } from '../../../hooks/usePlan';\n\nconst tiers = [\n {\n title: 'Free',\n price: '0',\n description: [\n '1 application',\n 'Unlimited templates',\n '400 documents per month',\n '1 user',\n 'Email support',\n ],\n buttonText: 'Choose this plan',\n buttonVariant: 'outlined',\n },\n {\n title: 'Pro',\n subheader: 'Most popular',\n price: '20',\n description: [\n '5 applications',\n 'Unlimited templates',\n '3 000 documents per month',\n '5 users (coming soon)',\n 'Email and chat support',\n ],\n buttonText: 'Choose this plan',\n buttonVariant: 'contained',\n },\n {\n title: 'Enterprise',\n price: '250',\n description: [\n 'Unlimited application',\n 'Unlimited templates',\n '20 000 documents per month',\n '10 users (coming soon)',\n 'Email and phone support',\n ],\n buttonText: 'Choose this plan',\n buttonVariant: 'outlined',\n },\n];\n\nconst ChoosePlan = () => {\n const [plan] = usePlan();\n\n const upgrade = (choice) => {\n if (choice === 'Pro') {\n window.open('https://buy.stripe.com/5kA3eo9XH1q5b5u8ww', '_blank');\n }\n if (choice === 'Enterprise') {\n window.open('https://buy.stripe.com/bIYcOYfi10m14H6fYZ', '_blank');\n }\n if (choice === 'AppSumo') {\n window.open('https://buy.stripe.com/cN216g2vf4Ch6PefZ0', '_blank');\n }\n };\n\n return (\n <>\n <Title value=\"Choose a Plan\" component=\"h1\" variant=\"h1\" />\n <GlobalStyles styles={{ ul: { margin: 0, padding: 0, listStyle: 'none' } }} />\n {plan && plan.label === 'AppSumo' && (\n <Grid item xs={12}>\n <Alert severity=\"info\">\n You are currently in AppSumo special plan (49€ for one year)\n </Alert>\n </Grid>\n )}\n <Container maxWidth=\"md\" component=\"main\" style={{ marginTop: 20 }}>\n <Grid container spacing={5} alignItems=\"flex-end\">\n {tiers.map((tier) => (\n // Enterprise card is full width at sm breakpoint\n <Grid item key={tier.title} xs={12} sm={12} md={4}>\n <Card>\n <CardHeader\n title={tier.title}\n subheader={tier.subheader}\n titleTypographyProps={{ align: 'center' }}\n action={tier.title === 'Pro' ? <StarIcon /> : null}\n subheaderTypographyProps={{\n align: 'center',\n }}\n sx={{\n /* eslint-disable-next-line */\n backgroundColor: (theme) =>\n theme.palette.mode === 'light'\n ? theme.palette.primary.main\n : theme.palette.primary.main,\n }}\n />\n <CardContent>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'baseline',\n mb: 2,\n }}\n >\n <Typography component=\"h2\" variant=\"h3\" color=\"text.primary\">\n {tier.price}€\n </Typography>\n <Typography variant=\"h6\" color=\"text.secondary\">\n {tier.title === 'AppSumo' ? '/year' : '/mo'}\n </Typography>\n </Box>\n <ul>\n {tier.description.map((line) => (\n <Typography component=\"li\" variant=\"subtitle1\" align=\"center\" key={line}>\n {line}\n </Typography>\n ))}\n </ul>\n </CardContent>\n <CardActions>\n {tier.title !== 'Free' ? (\n <Button\n fullWidth\n variant={tier.buttonVariant}\n onClick={() => upgrade(tier.title)}\n disabled={tier.title === plan.label}\n >\n {tier.title === plan.label ? 'Current plan' : tier.buttonText}\n </Button>\n ) : (\n <p />\n )}\n </CardActions>\n </Card>\n </Grid>\n ))}\n </Grid>\n </Container>\n </>\n );\n};\nexport default ChoosePlan;\n","export default __webpack_public_path__ + \"static/media/success.674167bb.png\";","import React from 'react';\nimport { Typography, Container } from '@mui/material';\nimport success from '../../../assets/success.png';\n\nconst SuccessPlan = () => {\n return (\n <Container style={{ 'text-align': 'center' }}>\n <Typography variant=\"h4\">Your account has been updated !</Typography>\n <Typography variant=\"body1\" style={{ margin: 20 }}>\n Thank you for your subscription. If you have any question,you can contact us at{` `}\n <b>contact@fastpdf.io</b>\n </Typography>\n <img src={success} alt=\"Thank you\" style={{ margin: 20, width: '25%' }} />\n </Container>\n );\n};\nexport default SuccessPlan;\n","import React from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport TemplatesList from '../../containers/Templates/List';\nimport TemplateNew from '../../containers/Templates/New';\nimport TemplateInit from '../../containers/Templates/Init';\nimport DocumentsList from '../../containers/Documents/List';\nimport DocumentInit from '../../containers/Documents/Init';\nimport DocumentNew from '../../containers/Documents/New';\nimport WebhooksList from '../../containers/Webhooks/List';\nimport WebhookNew from '../../containers/Webhooks/New';\nimport AppsList from '../../containers/Apps/List';\nimport AppNew from '../../containers/Apps/New';\nimport Profil from '../../containers/Users/Profil';\nimport Statistics from '../../containers/Statistics';\nimport ChoosePlan from '../../containers/Plans/Choose';\nimport SuccessPlan from '../../containers/Plans/Success';\n\nconst Routing = () => {\n return (\n <Routes>\n <Route exact path=\"/\" element={<Statistics />} />\n <Route exact path=\"/profil\" element={<Profil />} />\n <Route exact path=\"/templates\" element={<TemplatesList />} />\n <Route exact path=\"/templates/initialize\" element={<TemplateInit />} />\n <Route exact path=\"/templates/new\" element={<TemplateNew />} />\n <Route exact path=\"/templates/:id/edit\" element={<TemplateNew />} />\n <Route exact path=\"/documents\" element={<DocumentsList />} />\n <Route exact path=\"/documents/initialize\" element={<DocumentInit />} />\n <Route exact path=\"/documents/:id/edit\" element={<DocumentNew />} />\n <Route exact path=\"/webhook_endpoints\" element={<WebhooksList />} />\n <Route exact path=\"/webhook_endpoints/new\" element={<WebhookNew />} />\n <Route exact path=\"/webhook_endpoints/:id/edit\" element={<WebhookNew />} />\n <Route exact path=\"/apps\" element={<AppsList />} />\n <Route exact path=\"/apps/new\" element={<AppNew />} />\n <Route exact path=\"/apps/:id/edit\" element={<AppNew />} />\n <Route exact path=\"/plans/choose\" element={<ChoosePlan />} />\n <Route exact path=\"/plans/success\" element={<SuccessPlan />} />\n </Routes>\n );\n};\nexport default Routing;\n","import React from 'react';\nimport {\n styled,\n useTheme,\n Box,\n Drawer as MuiDrawer,\n AppBar as MuiAppBar,\n Toolbar,\n List,\n CssBaseline,\n Typography,\n Divider,\n IconButton,\n ListItem,\n ListItemIcon,\n ListItemText,\n Tooltip,\n} from '@mui/material';\nimport { NavLink } from 'react-router-dom';\nimport { useNavigate } from 'react-router';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport LogoutIcon from '@mui/icons-material/Logout';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\nimport AppsIcon from '@mui/icons-material/Apps';\nimport SwapHorizIcon from '@mui/icons-material/SwapHoriz';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport DashboardIcon from '@mui/icons-material/Dashboard';\nimport { logout } from '../../services/axios';\nimport Routing from '../../components/Routing';\n\nconst drawerWidth = 240;\n\nconst openedMixin = (theme) => ({\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflowX: 'hidden',\n});\n\nconst closedMixin = (theme) => ({\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: 'hidden',\n width: `calc(${theme.spacing(7)} + 1px)`,\n [theme.breakpoints.up('sm')]: {\n width: `calc(${theme.spacing(9)} + 1px)`,\n },\n});\n\nconst DrawerHeader = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n}));\n\nconst AppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== 'open',\n})(({ theme, open }) => ({\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n ...(open && {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n}));\n\nconst Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' })(\n ({ theme, open }) => ({\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n ...(open && {\n ...openedMixin(theme),\n '& .MuiDrawer-paper': openedMixin(theme),\n }),\n ...(!open && {\n ...closedMixin(theme),\n '& .MuiDrawer-paper': closedMixin(theme),\n }),\n })\n);\n\nconst styles = {\n navlink: {\n textDecoration: 'none',\n color: 'unset',\n },\n};\n\nconst Layout = () => {\n const theme = useTheme();\n const navigate = useNavigate();\n const [open, setOpen] = React.useState(false);\n\n const submitLogout = () => {\n logout();\n navigate('/login');\n };\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n <Box sx={{ display: 'flex' }}>\n <CssBaseline />\n <AppBar position=\"fixed\" open={open} color=\"primary\">\n <Toolbar>\n <IconButton\n color=\"inherit\"\n onClick={handleDrawerOpen}\n edge=\"start\"\n sx={{\n marginRight: '36px',\n ...(open && { display: 'none' }),\n }}\n >\n <MenuIcon />\n </IconButton>\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flexGrow: 1 }}>\n FastPDF.io\n </Typography>\n <Tooltip title=\"My Account\">\n <IconButton\n color=\"inherit\"\n onClick={() => navigate('/app/profil')}\n edge=\"end\"\n sx={{\n marginLeft: '36px',\n }}\n >\n <AccountCircleIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Logout\">\n <IconButton\n color=\"inherit\"\n onClick={submitLogout}\n edge=\"end\"\n sx={{\n marginLeft: '36px',\n }}\n >\n <LogoutIcon />\n </IconButton>\n </Tooltip>\n </Toolbar>\n </AppBar>\n <Drawer variant=\"permanent\" open={open}>\n <DrawerHeader>\n <IconButton onClick={handleDrawerClose}>\n {theme.direction === 'rtl' ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n </DrawerHeader>\n <Divider />\n <List>\n <NavLink to=\"/app\" style={styles.navlink}>\n <Tooltip title=\"Dashboard\" placement=\"right\">\n <ListItem button key=\"statistics\">\n <ListItemIcon>\n <DashboardIcon />\n </ListItemIcon>\n <ListItemText primary=\"Dashboard\" />\n </ListItem>\n </Tooltip>\n </NavLink>\n <NavLink to=\"/app/templates\" style={styles.navlink}>\n <Tooltip title=\"Templates\" placement=\"right\">\n <ListItem button key=\"template\">\n <ListItemIcon>\n <PictureAsPdfIcon />\n </ListItemIcon>\n <ListItemText primary=\"Templates\" />\n </ListItem>\n </Tooltip>\n </NavLink>\n <NavLink to=\"/app/documents\" style={styles.navlink}>\n <Tooltip title=\"Documents\" placement=\"right\">\n <ListItem button key=\"documents\">\n <ListItemIcon>\n <NoteAddIcon />\n </ListItemIcon>\n <ListItemText primary=\"Documents\" />\n </ListItem>\n </Tooltip>\n </NavLink>\n <NavLink to=\"/app/webhook_endpoints\" style={styles.navlink}>\n <Tooltip title=\"Webhooks\" placement=\"right\">\n <ListItem button key=\"webhook_endpoints\">\n <ListItemIcon>\n <SwapHorizIcon />\n </ListItemIcon>\n <ListItemText primary=\"Webhooks\" />\n </ListItem>\n </Tooltip>\n </NavLink>\n <NavLink to=\"/app/apps\" style={styles.navlink}>\n <Tooltip title=\"Applications\" placement=\"right\">\n <ListItem button key=\"apps\">\n <ListItemIcon>\n <AppsIcon />\n </ListItemIcon>\n <ListItemText primary=\"Applications\" />\n </ListItem>\n </Tooltip>\n </NavLink>\n </List>\n <Divider />\n </Drawer>\n <Box component=\"main\" sx={{ flexGrow: 1, p: 3 }}>\n <DrawerHeader />\n <Routing />\n </Box>\n </Box>\n );\n};\nexport default Layout;\n","import React from 'react';\nimport { Snackbar, Alert } from '@mui/material';\nimport { useFeedback } from '../../hooks/useFeedback';\n\nconst Feedback = () => {\n const [{ open, severity, message }, setFeedback] = useFeedback();\n\n return (\n <Snackbar\n open={open}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n autoHideDuration={6000}\n onClose={() => {\n setFeedback((prevFeedback) => ({ ...prevFeedback, open: false }));\n }}\n >\n <Alert severity={severity}>{message}</Alert>\n </Snackbar>\n );\n};\n\nexport default Feedback;\n","import React, { useState } from 'react';\nimport {\n Avatar,\n Button,\n CssBaseline,\n TextField,\n Container,\n Typography,\n Alert,\n Collapse,\n CircularProgress,\n Link,\n Box,\n styled,\n Grid,\n} from '@mui/material';\nimport LockOutlinedIcon from '@mui/icons-material/LockOutlined';\nimport useAxios from 'axios-hooks';\nimport Cookies from 'js-cookie';\nimport { useNavigate } from 'react-router';\nimport { usePlan } from '../../../hooks/usePlan';\n\nconst style = {\n avatar: {\n margin: 'auto',\n marginTop: '20px',\n marginBottom: '10px',\n backgroundColor: '#9c27b0',\n },\n typography: {\n marginBottom: '10px',\n },\n submit: {\n marginTop: '20px',\n },\n register: {\n marginTop: '20px',\n display: 'block',\n textDecoration: 'none',\n },\n};\n\nconst Root = styled(Box)(({ theme }) => ({\n margin: 'auto',\n width: '50%',\n textAlign: 'center',\n [theme.breakpoints.down('md')]: {\n width: '90%',\n },\n [theme.breakpoints.up('md')]: {\n width: '30%',\n },\n}));\n\nconst Login = () => {\n const [auth, setAuth] = useState({ email: '', password: '' });\n const [, setPlan] = usePlan();\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const navigate = useNavigate();\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setAuth({ ...auth, [name]: value });\n };\n\n const [, fetchLogin] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/login`,\n method: 'POST',\n },\n { manual: true }\n );\n\n const login = () => {\n setError('');\n setLoading(true);\n fetchLogin({ data: auth }).then((result) => {\n setLoading(false);\n if (result.data.error) {\n setError(result.data.error);\n } else {\n Cookies.set('token', result.data.token);\n Cookies.set('theme', result.data.theme);\n Cookies.set('api_key', result.data.api_key);\n setPlan({\n label: result.data.plan.label,\n app: parseInt(result.data.plan.app, 10),\n app_counter: parseInt(result.data.plan.app_counter, 10),\n document: parseInt(result.data.plan.document, 10),\n document_counter: parseInt(result.data.plan.document_counter, 10),\n });\n if (result.data.app !== false) {\n localStorage.setItem('app', result.data.app);\n }\n navigate('/app/');\n }\n });\n };\n\n return (\n <Root>\n <Container>\n <CssBaseline />\n <Avatar style={style.avatar}>\n <LockOutlinedIcon />\n </Avatar>\n <Typography style={style.typography}>Authentication</Typography>\n <Collapse in={error}>\n <Alert severity=\"error\">{error}</Alert>\n </Collapse>\n <form noValidate>\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n fullWidth\n id=\"email\"\n onChange={handleChange}\n label=\"Email\"\n name=\"email\"\n autoComplete=\"email\"\n autoFocus\n />\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n fullWidth\n name=\"password\"\n onChange={handleChange}\n label=\"Password\"\n type=\"password\"\n id=\"password\"\n />\n <Button\n style={style.submit}\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n onClick={login}\n >\n {loading ? <CircularProgress color=\"secondary\" size={25} /> : `Login`}\n </Button>\n </form>\n </Container>\n <Container style={style.root}>\n <Grid container>\n <Grid item xs={12}>\n <Link href=\"/register\" style={style.register}>\n Register\n </Link>\n </Grid>\n <Grid item xs={12}>\n <Link href=\"/forgot_password\" style={style.register}>\n Forgot password ?\n </Link>\n </Grid>\n </Grid>\n </Container>\n </Root>\n );\n};\nexport default Login;\n","import React, { useState } from 'react';\nimport {\n Avatar,\n Button,\n CssBaseline,\n TextField,\n Container,\n Typography,\n CircularProgress,\n Link,\n Box,\n styled,\n} from '@mui/material';\nimport LockOutlinedIcon from '@mui/icons-material/LockOutlined';\nimport useAxios from 'axios-hooks';\nimport Cookies from 'js-cookie';\nimport { useNavigate } from 'react-router';\nimport { usePlan } from '../../../hooks/usePlan';\n\nconst style = {\n avatar: {\n margin: 'auto',\n marginTop: '20px',\n marginBottom: '10px',\n backgroundColor: '#9c27b0',\n },\n typography: {\n marginBottom: '10px',\n },\n submit: {\n marginTop: '20px',\n },\n login: {\n marginTop: '20px',\n display: 'block',\n textDecoration: 'none',\n },\n};\n\nconst Root = styled(Box)(({ theme }) => ({\n margin: 'auto',\n width: '50%',\n textAlign: 'center',\n [theme.breakpoints.down('md')]: {\n width: '90%',\n },\n [theme.breakpoints.up('md')]: {\n width: '30%',\n },\n}));\n\nconst Register = () => {\n const [register, setRegister] = useState({ email: '', password: '', appsumo: '' });\n const [, setPlan] = usePlan();\n const [errors, setErrors] = useState({\n email: '',\n password: '',\n password_confirmation: '',\n appsumo: '',\n });\n const [loading, setLoading] = useState(false);\n const navigate = useNavigate();\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setRegister({ ...register, [name]: value });\n };\n\n const [, postRegister] = useAxios(\n {\n url: `${process.env.REACT_APP_API_URL}/register`,\n method: 'POST',\n },\n { manual: true }\n );\n\n const registration = () => {\n setErrors('');\n setLoading(true);\n postRegister({ data: register })\n .then((result) => {\n setLoading(false);\n Cookies.set('token', result.data.token);\n Cookies.set('theme', result.data.theme);\n Cookies.set('api_key', result.data.api_key);\n setPlan({\n label: result.data.plan.label,\n app: parseInt(result.data.plan.app, 10),\n app_counter: parseInt(result.data.plan.app_counter, 10),\n document: parseInt(result.data.plan.document, 10),\n document_counter: parseInt(result.data.plan.document_counter, 10),\n });\n navigate('/app/');\n })\n .catch((error) => {\n setLoading(false);\n setErrors(error.response.data);\n });\n };\n\n return (\n <Root>\n <Container>\n <CssBaseline />\n <Avatar style={style.avatar}>\n <LockOutlinedIcon />\n </Avatar>\n <Typography style={style.typography}>Registration</Typography>\n <form noValidate>\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n fullWidth\n onChange={handleChange}\n label=\"Email\"\n name=\"email\"\n autoComplete=\"email\"\n error={errors.email}\n helperText={errors.email}\n />\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n fullWidth\n name=\"password\"\n onChange={handleChange}\n label=\"Password\"\n type=\"password\"\n error={errors.password}\n helperText={errors.password}\n />\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n fullWidth\n name=\"password_confirmation\"\n onChange={handleChange}\n label=\"Password confirmation\"\n type=\"password\"\n error={errors.password_confirmation}\n helperText={errors.password_confirmation}\n />\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n fullWidth\n onChange={handleChange}\n label=\"Your AppSumo code\"\n name=\"appsumo\"\n error={errors.appsumo}\n helperText={errors.appsumo}\n />\n <Button\n style={style.submit}\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n onClick={registration}\n >\n {loading ? <CircularProgress color=\"secondary\" size={25} /> : `Register`}\n </Button>\n </form>\n </Container>\n <Container style={style.root}>\n <Link href=\"/login\" style={style.login}>\n Already a account ?\n </Link>\n </Container>\n </Root>\n );\n};\nexport default Register;\n","export default __webpack_public_path__ + \"static/media/picture1.7294f3c0.png\";","export default __webpack_public_path__ + \"static/media/picture2.e9bafad9.png\";","export default __webpack_public_path__ + \"static/media/picture3.05a8e4ca.png\";","export default __webpack_public_path__ + \"static/media/picture4.dca3fb58.png\";","export default __webpack_public_path__ + \"static/media/logo.d91cb8c6.png\";","import * as React from 'react';\nimport AppBar from '@mui/material/AppBar';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Card from '@mui/material/Card';\nimport CardActions from '@mui/material/CardActions';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport Grid from '@mui/material/Grid';\nimport StarIcon from '@mui/icons-material/StarBorder';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport Container from '@mui/material/Container';\nimport Image from 'material-ui-image';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport ApiIcon from '@mui/icons-material/Api';\nimport FlipCameraAndroidIcon from '@mui/icons-material/FlipCameraAndroid';\nimport QueryStatsIcon from '@mui/icons-material/QueryStats';\nimport { Avatar, ListItemText, ListItemAvatar, Stack, Divider } from '@mui/material';\nimport { purple } from '@mui/material/colors';\nimport { useNavigate } from 'react-router-dom';\nimport { useMediaQuery, useTheme } from '@material-ui/core';\nimport topImage from '../../assets/picture1.png';\nimport feature1 from '../../assets/picture2.png';\nimport feature2 from '../../assets/picture3.png';\nimport feature3 from '../../assets/picture4.png';\nimport logo from '../../assets/logo.png';\n\nconst tiers = [\n {\n title: 'Free',\n price: '0',\n description: [\n '1 application',\n 'Unlimited templates',\n '400 documents per month',\n '1 user',\n 'Email support',\n ],\n buttonText: 'Get started for free',\n buttonVariant: 'outlined',\n },\n {\n title: 'Pro',\n subheader: 'Most popular',\n price: '20',\n description: [\n '5 applications',\n 'Unlimited templates',\n '3 000 documents per month',\n '5 users (coming soon)',\n 'Email and chat support',\n ],\n buttonText: '30 days free trial',\n buttonVariant: 'contained',\n },\n {\n title: 'Enterprise',\n price: '250',\n description: [\n 'Unlimited application',\n 'Unlimited templates',\n '20 000 documents per month',\n '10 users (coming soon)',\n 'Email and phone support',\n ],\n buttonText: 'Contact us',\n buttonVariant: 'outlined',\n },\n];\n\n/* const footers = [\n {\n title: 'Company',\n description: ['Team', 'History', 'Contact us', 'Locations'],\n },\n {\n title: 'Features',\n description: ['Cool stuff', 'Random feature', 'Team feature', 'Developer stuff', 'Another one'],\n },\n {\n title: 'Resources',\n description: ['Resource', 'Resource name', 'Another resource', 'Final resource'],\n },\n {\n title: 'Legal',\n description: ['Privacy policy', 'Terms of use'],\n },\n]; */\n\nconst style = {\n logo: {\n maxHeight: '95px',\n },\n logo_block: {\n marginTop: '-45px',\n },\n mainValue: {\n marginBottom: '50px',\n },\n secondaryValue: {\n marginTop: '25px',\n },\n feature: {\n marginTop: '10px',\n },\n title: {\n marginTop: '20px',\n fontWeight: 'bold',\n },\n img: {\n width: '90%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Homepage = () => {\n const navigate = useNavigate();\n const theme = useTheme();\n const matches = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n <>\n <GlobalStyles styles={{ ul: { margin: 0, padding: 0, listStyle: 'none' } }} />\n <CssBaseline />\n <AppBar\n position=\"static\"\n color=\"primary\"\n elevation={0}\n /* eslint-disable-next-line */\n sx={{ borderBottom: (theme) => `1px solid ${theme.palette.divider}` }}\n >\n <Toolbar sx={{ flexWrap: 'wrap' }}>\n <Typography variant=\"h6\" color=\"inherit\" noWrap sx={{ flexGrow: 1 }}>\n {matches ? 'FastPdf.io' : ''}\n </Typography>\n <nav>\n <Link variant=\"outlined\" color=\"text.secondary\" href=\"/login\" sx={{ my: 1, mx: 1.5 }}>\n Login\n </Link>\n <Button href=\"/register\" color=\"secondary\" variant=\"contained\" sx={{ my: 1, mx: 1.5 }}>\n Get Started for FREE\n </Button>\n </nav>\n </Toolbar>\n </AppBar>\n {!matches && (\n <Container style={style.logo_block}>\n <img src={logo} alt=\"FastPdf.io logo\" style={style.logo} />\n </Container>\n )}\n <main>\n <Box\n sx={{\n bgcolor: 'background.paper',\n // height: '100vh',\n pt: 8,\n }}\n >\n <Container>\n <Typography\n component=\"h1\"\n variant=\"h2\"\n align=\"center\"\n color=\"text.primary\"\n gutterBottom\n style={style.mainValue}\n >\n Automate your PDF\n <br />\n generation\n </Typography>\n <Grid container>\n <Grid item xs={12} md={6}>\n <Typography\n variant=\"h5\"\n color=\"text.secondary\"\n style={style.secondaryValue}\n paragraph\n >\n FastPDF.io allow you generate PDF files from pre-defined templates and JSON data.\n </Typography>\n <Typography\n variant=\"body\"\n color=\"text.secondary\"\n style={style.secondaryValue}\n paragraph\n >\n <List>\n <ListItem>\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: purple[500] }}>\n <PictureAsPdfIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Create templates from HTML string or friendly interface (low code)\" />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: purple[500] }}>\n <FlipCameraAndroidIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Insert dynamic data\" />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: purple[500] }}>\n <ApiIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Use our REST API for automation\" />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: purple[500] }}>\n <QueryStatsIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText primary=\"Monitor usage in realtime\" />\n </ListItem>\n </List>\n </Typography>\n <Stack sx={{ pt: 4 }} direction=\"row\" spacing={2} justifyContent=\"center\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => navigate('/register')}\n >\n Get started for free\n </Button>\n <Button variant=\"contained\" color=\"primary\" onClick={() => navigate('/docs')}>\n Read documentation\n </Button>\n </Stack>\n <Container sx={{ pt: 2, textAlign: 'center' }}>\n <a\n href=\"https://www.producthunt.com/posts/fastpdf-io?utm_source=badge-review&utm_medium=badge&utm_souce=badge-fastpdf-io#discussion-body\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img\n src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=329848&theme=light\"\n alt=\"FastPdf.io - Automate your PDF generation | Product Hunt\"\n width=\"250\"\n height=\"54\"\n />\n </a>\n </Container>\n </Grid>\n <Grid item xs={false} md={6}>\n <Image src={topImage} imageStyle={{ width: 'unset' }} />\n </Grid>\n </Grid>\n </Container>\n </Box>\n <Container disableGutters maxWidth=\"sm\" sx={{ pt: 8, pb: 6 }}>\n <Typography component=\"h2\" variant=\"h3\" align=\"center\" color=\"text.primary\" gutterBottom>\n Features\n </Typography>\n <Divider />\n </Container>\n <Container>\n <Grid container spacing={2}>\n <Grid item xs={12} md={6}>\n <Typography variant=\"h5\" color=\"secondary\" component=\"p\" style={style.title}>\n User friendly interface\n </Typography>\n <Typography variant=\"h6\" color=\"text.secondary\" component=\"p\" style={style.feature}>\n Create and manage PDF templates from HTML/CSS or with\n {` `}our editor to reduce development and support costs (low code).\n </Typography>\n </Grid>\n <Grid item xs={12} md={6}>\n <Box>\n <img src={feature1} alt=\"Feature 1\" style={style.img} />\n </Box>\n </Grid>\n </Grid>\n <Grid container direction={matches ? 'column-reverse' : 'row'}>\n <Grid item xs={12} md={6}>\n <img src={feature2} alt=\"Feature 2\" style={style.img} />\n </Grid>\n <Grid item xs={12} md={6}>\n <Typography variant=\"h5\" color=\"secondary\" component=\"p\" style={style.title}>\n A simple API\n </Typography>\n <Typography variant=\"h6\" color=\"text.secondary\" component=\"p\" style={style.feature}>\n Use our REST API with JSON data and create dynamic documents in few secondes.\n </Typography>\n </Grid>\n </Grid>\n <Grid container>\n <Grid item xs={12} md={6}>\n <Typography variant=\"h5\" color=\"secondary\" component=\"p\" style={style.title}>\n Live preview\n </Typography>\n <Typography variant=\"h6\" color=\"text.secondary\" component=\"p\">\n Don't waste your time... Use realtime preview and make awesome PDF in few\n minutes.\n </Typography>\n </Grid>\n <Grid item xs={12} md={6}>\n <img src={feature3} alt=\"Feature 3\" style={style.img} />\n </Grid>\n </Grid>\n </Container>\n <Container disableGutters maxWidth=\"sm\" sx={{ pt: 8, pb: 6 }}>\n <Typography component=\"h1\" variant=\"h2\" align=\"center\" color=\"text.primary\" gutterBottom>\n Pricing\n </Typography>\n <Divider />\n <Typography\n variant=\"h5\"\n align=\"center\"\n color=\"text.secondary\"\n component=\"p\"\n style={style.feature}\n >\n Free trial. No credit card required\n </Typography>\n </Container>\n <Container maxWidth=\"md\" component=\"main\">\n <Grid container spacing={5} alignItems=\"flex-end\">\n {tiers.map((tier) => (\n // Enterprise card is full width at sm breakpoint\n <Grid item key={tier.title} xs={12} sm={12} md={4}>\n <Card>\n <CardHeader\n title={tier.title}\n subheader={tier.subheader}\n titleTypographyProps={{ align: 'center' }}\n action={tier.title === 'Pro' ? <StarIcon /> : null}\n subheaderTypographyProps={{\n align: 'center',\n }}\n sx={{\n /* eslint-disable-next-line */\n backgroundColor: (theme) =>\n theme.palette.mode === 'light'\n ? theme.palette.primary.main\n : theme.palette.primary.main,\n }}\n />\n <CardContent>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'baseline',\n mb: 2,\n }}\n >\n <Typography component=\"h2\" variant=\"h3\" color=\"text.primary\">\n {tier.price}€\n </Typography>\n <Typography variant=\"h6\" color=\"text.secondary\">\n /mo\n </Typography>\n </Box>\n <ul>\n {tier.description.map((line) => (\n <Typography component=\"li\" variant=\"subtitle1\" align=\"center\" key={line}>\n {line}\n </Typography>\n ))}\n </ul>\n </CardContent>\n <CardActions>\n <Button\n fullWidth\n variant={tier.buttonVariant}\n onClick={() => navigate('/register')}\n >\n {tier.buttonText}\n </Button>\n </CardActions>\n </Card>\n </Grid>\n ))}\n </Grid>\n </Container>\n </main>\n {/* Footer */}\n <Container\n maxWidth=\"md\"\n component=\"footer\"\n sx={{\n /* eslint-disable-next-line */\n borderTop: (theme) => `1px solid ${theme.palette.divider}`,\n mt: 8,\n py: [3, 6],\n }}\n >\n {/* <Grid container spacing={4} justifyContent=\"space-evenly\">\n {footers.map((footer) => (\n <Grid item xs={6} sm={3} key={footer.title}>\n <Typography variant=\"h6\" color=\"text.primary\" gutterBottom>\n {footer.title}\n </Typography>\n <ul>\n {footer.description.map((item) => (\n <li key={item}>\n <Link href=\"#\" variant=\"subtitle1\" color=\"text.secondary\">\n {item}\n </Link>\n </li>\n ))}\n </ul>\n </Grid>\n ))}\n </Grid> */}\n <Typography variant=\"body2\" color=\"text.secondary\" align=\"center\">\n {'Copyright © '}\n <Link color=\"inherit\" href=\"https://fastpdf.io\">\n FastPDF.io\n </Link>{' '}\n {new Date().getFullYear()}\n {'.'}\n </Typography>\n </Container>\n {/* End footer */}\n </>\n );\n};\nexport default Homepage;\n","import React from 'react';\nimport { Typography, Container, Button } from '@mui/material';\nimport { useNavigate } from 'react-router';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n};\n\nconst Account = () => {\n const navigate = useNavigate();\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n Getting started\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Create your acount\n </Typography>\n <Typography>\n To create an account, go to the <b>Register page</b> and fill in you email and password.\n </Typography>\n <Typography>\n Once your account created, fill in your credentials in the <b>Sign in page</b> to get\n access to your dashboard.\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Create your first app\n </Typography>\n <Typography>\n In your dashboard you can create apps that will regroup your templates and documents. To\n create an app, click on <b>Applications</b> in sidebar menu, click on{` `}\n <b>Create an application</b> button and give a name to your app. Then click on{` `}\n <b>Save</b> button.\n </Typography>\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs/templates')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Creating templates >\n </Button>\n </Container>\n </>\n );\n};\nexport default Account;\n","export default __webpack_public_path__ + \"static/media/01.c9c6d41d.png\";","export default __webpack_public_path__ + \"static/media/02.0a64c9c4.png\";","export default __webpack_public_path__ + \"static/media/03.9c071748.png\";","import React, { useEffect } from 'react';\nimport { Typography, Container, Button, ListItem, List } from '@mui/material';\nimport { useNavigate } from 'react-router';\nimport img01 from '../../../assets/docs/01.png';\nimport img02 from '../../../assets/docs/02.png';\nimport img03 from '../../../assets/docs/03.png';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n img: {\n width: '100%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Templates = () => {\n const navigate = useNavigate();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n Creating templates\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Creating a template\n </Typography>\n <Typography>\n To create a template, go to the <b>Template page</b> and click on{` `}\n <b>Create a template</b>.\n </Typography>\n <Typography sx={{ mb: 2 }}>\n Select a application, give a name and choose a template's mode\n </Typography>\n <img style={style.img} src={img01} alt=\"\" />\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Simple VS advanced mode\n </Typography>\n <Typography sx={{ mb: 2 }}>\n Simple Mode provide a WYSIWYG component for generating simple PDF template. But you can\n use a JSON payload to provide dynamic data into your template.\n </Typography>\n <img style={style.img} src={img02} alt=\"\" />\n <Typography>Advanced Mode is composed of four components :</Typography>\n <List>\n <ListItem>A HTML editor to structure your PDF</ListItem>\n <ListItem>A CSS editor to style your PDF</ListItem>\n <ListItem>a JSON payload to provide dynamic data in your PDF</ListItem>\n <ListItem>\n A settings component to customize PDF rendering (margins, orientation etc...)\n </ListItem>\n </List>\n <img style={style.img} src={img03} alt=\"\" />\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Two actions are possible\n </Typography>\n <Typography>You can enable/disable preview</Typography>\n <Typography>Save template and see live preview</Typography>\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs')}\n variant=\"outlined\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n < Creating Account\n </Button>\n <Button\n onClick={() => navigate('/docs/html')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Dynamic data >\n </Button>\n </Container>\n </>\n );\n};\nexport default Templates;\n","export default __webpack_public_path__ + \"static/media/04.94c465ae.png\";","import React, { useEffect } from 'react';\nimport { Typography, Container, Button, ListItem, List } from '@mui/material';\nimport AceEditor from 'react-ace';\nimport { useNavigate } from 'react-router';\nimport img04 from '../../../assets/docs/04.png';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n img: {\n width: '100%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Html = () => {\n const navigate = useNavigate();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n HTML editor and Dynamic data\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Define your HTML Body\n </Typography>\n <Typography>\n The core of a template is HTML. You can structure your document by defining paragraphs\n with <b><p></b> or headings with <b><h1></b>, <b><h2></b>, …. You can\n use <b><div></b>, <b><span></b> or <b><img></b> elements.\n </Typography>\n <Typography>You can use lot of HTML tags.</Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Dynamic Data with Liquid syntax\n </Typography>\n <Typography>\n You can use{` `}\n <a href=\"https://shopify.github.io/liquid/\" target=\"_blank\" rel=\"noreferrer\">\n Liquid syntax\n </a>\n {` `}\n to insert dynamic data in your template. Liquid syntax allow you to :\n </Typography>\n <List>\n <ListItem>Insert content in your template</ListItem>\n <ListItem>Add conditions</ListItem>\n <ListItem>Display list if items</ListItem>\n <ListItem>Use powerful transformations</ListItem>\n </List>\n <Typography>\n To add sample data in your template, use <b>Sample data</b> tab\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Sample data example\n </Typography>\n <Typography sx={{ marginBottom: '20px' }}>\n We declare variables in a JSON structure :\n </Typography>\n <AceEditor\n mode=\"json\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable-next-line */\n value={\"{\\n \\\"name\\\": \\\"John DOE\\\",\\n \\\"email\\\": \\\"contact@fastpdf.io\\\"\\n }\"}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n Then we use this information in template by calling a variable with <b>@data</b> prefix\n </Typography>\n <AceEditor\n mode=\"html\"\n fontSize={15}\n theme=\"chaos\"\n minLines={10}\n width=\"100%\"\n /* eslint-disable-next-line */\n value={\"<h1>Hello {{ @data.name }}</h1>\\n<p>My email is {{ @data.email }}</p>\"}\n maxLines={Infinity}\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n You can see result in live preview at the right.\n </Typography>\n <img style={style.img} src={img04} alt=\"\" />\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Full Liquid documentation\n </Typography>\n <Typography>\n If you want to go further, you can read the full documenation at{` `}\n <a href=\"https://shopify.github.io/liquid/\" target=\"_blank\" rel=\"noreferrer\">\n https://shopify.github.io/liquid/\n </a>\n .\n </Typography>\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs/templates')}\n variant=\"outlined\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n < Creating templates\n </Button>\n <Button\n onClick={() => navigate('/docs/styling')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Styling your PDF >\n </Button>\n </Container>\n </>\n );\n};\nexport default Html;\n","export default __webpack_public_path__ + \"static/media/05.e009c0b0.png\";","export default __webpack_public_path__ + \"static/media/06.8bf41973.png\";","import React, { useEffect } from 'react';\nimport { Typography, Container, Button, Box } from '@mui/material';\nimport AceEditor from 'react-ace';\nimport { useNavigate } from 'react-router';\nimport img05 from '../../../assets/docs/05.png';\nimport img06 from '../../../assets/docs/06.png';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n img: {\n width: '100%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Styling = () => {\n const navigate = useNavigate();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n Styling your template\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Define your CSS style\n </Typography>\n <Typography sx={{ marginBottom: '20px' }}>\n You can style your documents using CSS3 syntax.\n </Typography>\n <AceEditor\n mode=\"css\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable-next-line */\n value={\"h1 {\\n font-style: italic;\\n text-align: center;\\n}\\nh2 {\\n color: blue\\n}\\n\"}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Box sx={{ marginBottom: '20px' }} />\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n You can see result in live preview at the right.\n </Typography>\n <img style={style.img} src={img05} alt=\"\" />\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Import UI library\n </Typography>\n <Box sx={{ marginBottom: '20px' }} />\n <Typography>\n You can import your own CSS file with simply use the @import instruction. It's\n working with font, external css files, backgrounds images etc...\n </Typography>\n <Box sx={{ marginBottom: '20px' }} />\n <AceEditor\n mode=\"css\"\n fontSize={15}\n theme=\"chaos\"\n value=\"@import url('https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css');\"\n minLines={5}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Box sx={{ marginBottom: '20px' }} />\n <Typography>And use it in the HTML editor</Typography>\n <Box sx={{ marginBottom: '20px' }} />\n <AceEditor\n mode=\"html\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable-next-line */\n value={\"<h1>Hello {{ data.name }}</h1>\\n<p>My email is {{ @data.email }}</p>\\n<p>This is a material button : </p>\\n<button class=\\\"mdc-button foo-button\\\">\\n <div class=\\\"mdc-button__ripple\\\"></div>\\n <span class=\\\"mdc-button__label\\\">Button</span>\\n</button>\"}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Container style={style.root}>\n <img style={style.img} src={img06} alt=\"\" />\n </Container>\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs/html')}\n variant=\"outlined\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n < Creating template\n </Button>\n <Button\n onClick={() => navigate('/docs/api')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Using REST API >\n </Button>\n </Container>\n </>\n );\n};\nexport default Styling;\n","import React, { useEffect } from 'react';\nimport { Typography, Container, Button, Alert, List, ListItem } from '@mui/material';\nimport AceEditor from 'react-ace';\nimport { useNavigate } from 'react-router';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n alert: {\n marginTop: '10px',\n marginBottom: '10px',\n },\n img: {\n width: '100%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Api = () => {\n const navigate = useNavigate();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n Generating a document with REST API\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Get your API key and Template ID\n </Typography>\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n For using our API, you need your <b>[API_KEY]</b> and <b>[TEMPLATE_ID]</b>. This\n informations are available in your profil and template's list.\n </Typography>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Generate a document\n </Typography>\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n To generate a document, use this endpoint:{` `}\n <b>https://api.fastpdf.io/api/documents/generate</b>\n {` `}with HTTP POST request. This is a cURL example (with a data payload).\n </Typography>\n <AceEditor\n mode=\"emacs\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable */\n value={`curl 'https://api.fastpdf.io/api/documents/generate' \\\\\n -H 'Token: [API_KEY]' \\\\\n -H 'Content-Type: application/json' \\\\\n -d '{\n \"document\": {\n \"template\": \"[TEMPLATE_ID]\",\n \"title\": \"Document title\",\n \"payload\": \"{ \\\"name\\\": \\\"John Doe\\\" }\",\n \"meta\": \"{ \\\"foo\\\": \\\"bar\\\" }\"\n }\n }'`}\n /* eslint-enable */\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Alert style={style.alert} severity=\"info\">\n {/* eslint-disable-next-line */}\n Don't forget to replace [TEMPLATE_ID] and [API_KEY] by your own credentials\n </Alert>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n API response will look like this :\n </Typography>\n <AceEditor\n mode=\"json\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable-next-line */\n value={`{\n id: \"47788203-6f84-4f9b-9b77-d20194542ad1\",\n payload:\"{ \\\\\"name\\\\\": \\\\\"John Doe\\\\\" }\"\n meta:\"{ \\\\\"foo\\\\\": \\\\\"bar\\\\\" }\",\n created_at: \"2021-12-20T10:37:24.935Z\",\n updated_at: \"2021-12-20T10:37:25.854Z\",\n url: \"https://api.fastpdf.io/files/47788203-6f84-4f9b-9b77-d20194542ad1.pdf\",\n title: \"Document title\",\n state: \"created\",\n template_id: \"e9a74ca1-40de-491a-ab88-b34b4775bd04\"\n}`}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n PDF generation is asyncronous.\n </Typography>\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n You need to check if your document is ready. For that, call this API endpoint to get your\n document state.\n </Typography>\n <AceEditor\n mode=\"emacs\"\n fontSize={15}\n theme=\"chaos\"\n value={`curl 'https://api.fastpdf.io/api/documents/[DOCUMENT_ID]' \\\\\n -H 'Token: [API_KEY]'`}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n <Typography sx={{ marginTop: '20px' }}>A document can have differentes states</Typography>\n <List>\n <ListItem>\n <b>Draft</b>\n {` `} : Document is a draft\n </ListItem>\n <ListItem>\n <b>Pending</b>\n {` `} : Document is in queue for generation\n </ListItem>\n <ListItem>\n <b>Wip</b>\n {` `} : Document generation in progress\n </ListItem>\n <ListItem>\n <b>Created</b>\n {` `} : PDF document created\n </ListItem>\n <ListItem>\n <b>Error</b>\n {` `} : PDF document generation failed\n </ListItem>\n </List>\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs/styling')}\n variant=\"outlined\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n < Styling your template\n </Button>\n <Button\n onClick={() => navigate('/docs/webhook')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Use Webhook >\n </Button>\n </Container>\n </>\n );\n};\nexport default Api;\n","import React, { useEffect } from 'react';\nimport { Typography, Container, Button, Alert } from '@mui/material';\nimport { useNavigate } from 'react-router';\nimport AceEditor from 'react-ace';\n\nconst style = {\n root: {\n marginTop: '20px',\n marginBottom: '20px',\n },\n h3: {\n borderBottom: '1px solid #1976d2',\n marginBottom: '20px',\n },\n img: {\n width: '100%',\n MozBoxShadow: '10px 10px 5px #ccc',\n WebkitBoxShadow: '10px 10px 5px #ccc',\n boxShadow: '10px 10px 5px #ccc',\n MozBorderRadius: '25px',\n WebkitBorderRadius: '25px',\n borderRadius: '5px',\n marginBottom: '10px',\n },\n};\n\nconst Webhook = () => {\n const navigate = useNavigate();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <Container style={style.root}>\n <Typography component=\"h2\" variant=\"h4\">\n Setting a Webhook\n </Typography>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Configure a Webhook\n </Typography>\n <Typography sx={{ marginTop: '20px' }}>\n Documents generation is asyncronous. So you can configure webhooks to get notified when a\n document's generation is done.\n </Typography>\n <Typography sx={{ marginTop: '20px' }}>\n Go to the <b>Webhook page</b> and set a target URL. Then click on <b>Save</b> button.\n </Typography>\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n That all... When your document is ready, your webhooks will be called using POST request\n with a <code>Content-type: application/json</code> header with all document's\n informations.\n </Typography>\n <Alert severity=\"warning\">Your webhooks must generate a 200 OK response.</Alert>\n </Container>\n <Container style={style.root}>\n <Typography component=\"h3\" style={style.h3} variant=\"h5\">\n Testing your Webhook\n </Typography>\n <Typography sx={{ marginTop: '20px', marginBottom: '20px' }}>\n JSON content in your webhooks look like this :\n </Typography>\n <AceEditor\n mode=\"json\"\n fontSize={15}\n theme=\"chaos\"\n /* eslint-disable-next-line */\n value={`{\n id: \"47788203-6f84-4f9b-9b77-d20194542ad1\",\n payload: {},\n created_at: \"2021-12-20T10:37:24.935Z\",\n updated_at: \"2021-12-20T10:37:25.854Z\",\n url: \"https://api.fastpdf.io/files/47788203-6f84-4f9b-9b77-d20194542ad1.pdf\",\n title: \"Title's document\",\n state: \"created\",\n template_id: \"e9a74ca1-40de-491a-ab88-b34b4775bd04\"\n}`}\n minLines={10}\n width=\"100%\"\n readOnly\n setOptions={{\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: true,\n highlightActiveLine: true,\n showLineNumbers: true,\n }}\n />\n </Container>\n <Container style={style.root} sx={{ textAlign: 'center' }}>\n <Button\n onClick={() => navigate('/docs/api')}\n variant=\"outlined\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n < Using REST API\n </Button>\n <Button\n onClick={() => navigate('/register')}\n variant=\"contained\"\n color=\"secondary\"\n sx={{ margin: '10px' }}\n >\n Create a account ?\n </Button>\n </Container>\n </>\n );\n};\nexport default Webhook;\n","import React from 'react';\nimport {\n Container,\n Box,\n GlobalStyles,\n CssBaseline,\n AppBar,\n Toolbar,\n Typography,\n Link,\n Button,\n Grid,\n List,\n ListItem,\n} from '@mui/material';\nimport { Routes, Route } from 'react-router-dom';\nimport Account from './Account';\nimport Templates from './Templates';\nimport Html from './Html';\nimport Styling from './Styling';\nimport Api from './Api';\nimport Webhook from './Webhook';\n\nconst Documentation = () => {\n return (\n <Box styles={{ marginBottom: '20px' }}>\n <GlobalStyles styles={{ ul: { margin: 0, padding: 0, listStyle: 'none' } }} />\n <CssBaseline />\n <AppBar\n position=\"static\"\n color=\"primary\"\n elevation={0}\n sx={{ borderBottom: (theme) => `1px solid ${theme.palette.divider}` }}\n >\n <Toolbar sx={{ flexWrap: 'wrap' }}>\n <Typography variant=\"h6\" color=\"inherit\" noWrap sx={{ flexGrow: 1 }}>\n <Link href=\"/\" underline=\"none\" sx={{ color: '#FFFFFF' }}>\n FastPDF.io\n </Link>\n </Typography>\n <nav>\n <Link variant=\"outlined\" color=\"text.secondary\" href=\"/login\" sx={{ my: 1, mx: 1.5 }}>\n Login\n </Link>\n <Button href=\"/register\" color=\"secondary\" variant=\"contained\" sx={{ my: 1, mx: 1.5 }}>\n Get Started for FREE\n </Button>\n </nav>\n </Toolbar>\n </AppBar>\n <Container sx={{ margin: 'auto', marginTop: '20px', marginBottom: '40px' }}>\n <Grid container spacing={2}>\n <Grid item xs={12} sm={9}>\n <Routes>\n <Route exact path=\"/\" element={<Account />} />\n <Route exact path=\"/templates\" element={<Templates />} />\n <Route exact path=\"/html\" element={<Html />} />\n <Route exact path=\"/styling\" element={<Styling />} />\n <Route exact path=\"/api\" element={<Api />} />\n <Route exact path=\"/webhook\" element={<Webhook />} />\n </Routes>\n </Grid>\n <Grid item xs={false} sm={3}>\n <Typography variant=\"h5\" compopent=\"h1\">\n Documentation\n </Typography>\n <List>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs\">\n Getting started\n </Link>\n </ListItem>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs/templates\">\n Creating templates\n </Link>\n </ListItem>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs/html\">\n Dynamic data\n </Link>\n </ListItem>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs/styling\">\n Styling your PDF\n </Link>\n </ListItem>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs/api\">\n Using REST API\n </Link>\n </ListItem>\n <ListItem>\n <Link sx={{ textDecoration: 'none' }} href=\"/docs/webhook\">\n Using Webhook\n </Link>\n </ListItem>\n </List>\n </Grid>\n </Grid>\n </Container>\n </Box>\n );\n};\nexport default Documentation;\n","import React, { useState } from 'react';\nimport axios from 'axios';\nimport {\n TextField,\n Button,\n Container,\n Typography,\n CssBaseline,\n CircularProgress,\n Avatar,\n Link,\n Box,\n styled,\n} from '@mui/material';\nimport Alert from '@mui/material/Alert';\nimport HelpIcon from '@mui/icons-material/HelpOutline';\n\nconst style = {\n avatar: {\n margin: 'auto',\n marginTop: '20px',\n marginBottom: '10px',\n backgroundColor: '#9c27b0',\n },\n typography: {\n marginBottom: '10px',\n },\n submit: {\n marginTop: '20px',\n },\n register: {\n marginTop: '20px',\n display: 'block',\n textDecoration: 'none',\n },\n};\n\nconst Root = styled(Box)(({ theme }) => ({\n margin: 'auto',\n width: '50%',\n textAlign: 'center',\n [theme.breakpoints.down('md')]: {\n width: '90%',\n },\n [theme.breakpoints.up('md')]: {\n width: '30%',\n },\n}));\n\nconst ForgotForm = () => {\n const [email, setEmail] = useState('');\n const [emailSent, setEmailSent] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const submitEmail = () => {\n setLoading(true);\n axios.post(`${process.env.REACT_APP_API_URL}/password/forgot`, { email }).finally(() => {\n setLoading(false);\n setEmailSent(true);\n });\n };\n\n return (\n <Root>\n <Container>\n <CssBaseline />\n <Avatar style={style.avatar}>\n <HelpIcon />\n </Avatar>\n <Typography sryle={style.typography}>Forgot password ?</Typography>\n {emailSent === false && (\n <form>\n <TextField\n id=\"email\"\n name=\"email\"\n margin=\"normal\"\n size=\"small\"\n label=\"Email\"\n variant=\"outlined\"\n onChange={(event) => setEmail(event.target.value)}\n required\n fullWidth\n />\n <Button\n variant=\"contained\"\n style={style.submit}\n fullWidth\n color=\"primary\"\n onClick={submitEmail}\n >\n {!loading ? 'Submit' : <CircularProgress color=\"inherit\" />}\n </Button>\n </form>\n )}\n {emailSent && (\n <Alert severity=\"info\">\n If your account exists, you will receive an email with instructions for reset your\n password.\n </Alert>\n )}\n <Container style={style.root}>\n <Link href=\"/login\" style={style.register}>\n Go back\n </Link>\n </Container>\n </Container>\n </Root>\n );\n};\nexport default ForgotForm;\n","import React, { useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n TextField,\n CircularProgress,\n Avatar,\n Button,\n Container,\n CssBaseline,\n Typography,\n Link,\n Collapse,\n} from '@mui/material';\nimport Alert from '@mui/material/Alert';\nimport HelpIcon from '@mui/icons-material/HelpOutline';\nimport axios from 'axios';\n\nconst style = {\n root: {\n margin: 'auto',\n width: '50%',\n textAlign: 'center',\n },\n avatar: {\n margin: 'auto',\n marginTop: '20px',\n marginBottom: '10px',\n },\n typography: {\n marginBottom: '10px',\n },\n submit: {\n marginTop: '20px',\n },\n register: {\n marginTop: '20px',\n display: 'block',\n textDecoration: 'none',\n },\n alert: {\n marginBottom: '20px',\n },\n};\n\nconst ResetForm = () => {\n const { token } = useParams();\n const [password, setPassword] = useState('');\n const [passwordConfirmation, setPasswordConfirmation] = useState('');\n const [showError, setShowError] = useState(false);\n const [loading, setLoading] = useState(false);\n const [showSuccess, setShowSuccess] = useState(false);\n\n const submitPassword = () => {\n setLoading(true);\n if (password !== passwordConfirmation) {\n setShowError(true);\n setLoading(false);\n } else {\n const params = {\n password,\n token,\n };\n\n axios\n .post(`${process.env.REACT_APP_API_URL}/password/reset`, params)\n .then((_response) => {\n setShowSuccess(true);\n setShowError(false);\n })\n .catch((_e) => {\n setShowError(false);\n })\n .finally(() => {\n setLoading(false);\n });\n }\n };\n\n return (\n <Container style={style.root}>\n <CssBaseline />\n <Container>\n <Avatar style={style.avatar}>\n <HelpIcon />\n </Avatar>\n <Typography style={style.typography}>Reset your password</Typography>\n {showError && (\n <Collapse in={showError}>\n <Alert severity=\"error\" style={style.alert}>\n Password confirmation is incorrect\n </Alert>\n </Collapse>\n )}\n {showSuccess && (\n <Alert severity=\"success\" style={style.alert}>\n Your password has been reset.\n </Alert>\n )}\n {showSuccess === false && (\n <form>\n <TextField\n id=\"password\"\n label=\"New password\"\n variant=\"outlined\"\n size=\"small\"\n required\n fullWidth\n name=\"password\"\n onChange={(event) => setPassword(event.target.value)}\n type=\"password\"\n labelWidth={120}\n />\n <TextField\n variant=\"outlined\"\n label=\"Password confirmation\"\n required\n size=\"small\"\n margin=\"normal\"\n name=\"passwordConfirmation\"\n onChange={(event) => setPasswordConfirmation(event.target.value)}\n fullWidth\n type=\"password\"\n labelWidth={240}\n />\n <Button variant=\"contained\" fullWidth color=\"primary\" onClick={submitPassword}>\n {!loading ? 'Submit' : <CircularProgress color=\"inherit\" />}\n </Button>\n </form>\n )}\n <Container style={style.root}>\n <Link href=\"/login\" style={style.register}>\n Login page\n </Link>\n </Container>\n </Container>\n </Container>\n );\n};\nexport default ResetForm;\n","import React from 'react';\nimport { BrowserRouter as Router, Routes, Route } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport './App.css';\nimport './services/axios';\nimport Layout from './containers/Layout';\nimport { FeedbackProvider } from './contexts/FeedbackContext';\nimport { PlanProvider } from './contexts/PlanContext';\nimport Feedback from './components/Feedback';\nimport Login from './containers/Authentification/Login';\nimport Register from './containers/Authentification/Register';\nimport Homepage from './containers/Homepage';\nimport Documentation from './containers/Documentation';\nimport ForgotForm from './containers/Authentification/ForgotForm';\nimport ResetForm from './containers/Authentification/ResetForm';\nimport logo from './assets/logo.png';\n\nexport default function App() {\n return (\n <FeedbackProvider>\n <PlanProvider>\n <Helmet>\n <title>FastPDF.io - Automate your PDF generation\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 );\n}\n","const reportWebVitals = (onPerfEntry) => {\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":""}