import { IconX } from '@tabler/icons'; import 'github-markdown-css/github-markdown.css'; import MarkdownIt from 'markdown-it'; import { updateRequestDocs } from 'providers/ReduxStore/slices/collections/index'; import { closeDocs } from 'providers/ReduxStore/slices/docs'; import { useTheme } from 'providers/Theme/index'; import { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { findCollectionByUid, findItemInCollection } from 'utils/collections/index'; import Editor from './DocumentEditor'; import MarkdownBody from './MarkdownBody'; import StyledContentWrapper from './StyledContentWrapper'; import StyledWrapper from './StyledWrapper'; const md = new MarkdownIt(); const getItem = (collections, collectionUid, itemUid) => { const collection = findCollectionByUid(collections, collectionUid); if (!collection) { return new Error('Collection not found'); } const item = findItemInCollection(collection, itemUid); if (!item) { return new Error('Item not found'); } return item; }; const Documentation = () => { const dispatch = useDispatch(); const themeContext = useTheme(); const tabs = useSelector((state) => state.tabs.tabs); const activeTabUid = useSelector((state) => state.tabs.activeTabUid); const collections = useSelector((state) => state.collections); const isShowDocs = useSelector((state) => state.docs.isShow); const tab = tabs.find((tab) => tab.uid === activeTabUid); const item = getItem(collections.collections, tab?.collectionUid, tab?.uid); const [isEditing, setIsEditing] = useState(false); const draftDocs = item.draft?.request?.docs; const savedDocs = item?.request?.docs || ''; const docs = draftDocs !== undefined ? draftDocs : savedDocs; const toggleViewMode = () => { setIsEditing((prev) => !prev); }; const setCloseDocs = () => { dispatch(closeDocs()); }; const handleChange = (e) => { dispatch( updateRequestDocs({ itemUid: tab.uid, collectionUid: tab.collectionUid, docs: e.target.value }) ); }; const htmlFromMarkdown = md.render(docs); if (!isShowDocs) { return null; } if (!tab) { return null; } return (

Documentation

{isEditing ? ( ) : ( {htmlFromMarkdown} )}
); }; export default Documentation;