UNPKG

react-text-editor-kit

Version:

React Text Editor Kit is a customizable rich text editor component for React applications. It provides a flexible and easy-to-use interface for users to create and edit content with various formatting options. And also easy to integrate in react applicati

171 lines (155 loc) 5.31 kB
import React, { useState } from 'react'; import BackendFunctionExample from '../components/BackendFunctionExample'; import EnhancedReactEditorKit from '../components/EnhancedReactEditorKit'; /** * Example showing how to use backend functions in your React application */ const BackendFunctionUsage = () => { const [apiKey, setApiKey] = useState('your-api-key-here'); const [activeTab, setActiveTab] = useState('editor'); return ( <div style={{ padding: '20px', fontFamily: 'Arial, sans-serif' }}> <h1>Backend Function Integration Examples</h1> {/* API Key Input */} <div style={{ marginBottom: '20px' }}> <label htmlFor="apiKey">API Key: </label> <input id="apiKey" type="text" value={apiKey} onChange={(e) => setApiKey(e.target.value)} style={{ padding: '5px', marginLeft: '10px', width: '300px', border: '1px solid #ccc', borderRadius: '4px' }} /> </div> {/* Tab Navigation */} <div style={{ marginBottom: '20px' }}> <button onClick={() => setActiveTab('editor')} style={{ padding: '10px 20px', marginRight: '10px', backgroundColor: activeTab === 'editor' ? '#007bff' : '#f8f9fa', color: activeTab === 'editor' ? 'white' : 'black', border: '1px solid #ccc', borderRadius: '4px', cursor: 'pointer' }} > Enhanced Editor </button> <button onClick={() => setActiveTab('examples')} style={{ padding: '10px 20px', backgroundColor: activeTab === 'examples' ? '#007bff' : '#f8f9fa', color: activeTab === 'examples' ? 'white' : 'black', border: '1px solid #ccc', borderRadius: '4px', cursor: 'pointer' }} > Function Examples </button> </div> {/* Tab Content */} {activeTab === 'editor' && ( <div> <h2>Enhanced Text Editor with Backend Functions</h2> <EnhancedReactEditorKit apiKey={apiKey} value="<p>Start typing here...</p>" onChange={(content) => console.log('Content changed:', content)} toolbar={[ 'bold', 'italic', 'underline', 'fontSize', 'fontFamily', 'textColor', 'backgroundColor' ]} navbar={['file', 'edit', 'view', 'insert', 'format'] placeholder="Enter your text here..." /> </div> )} {activeTab === 'examples' && ( <div> <h2>Backend Function Patterns</h2> <BackendFunctionExample apiKey={apiKey} /> </div> )} {/* Usage Instructions */} <div style={{ marginTop: '30px', padding: '20px', backgroundColor: '#f8f9fa', border: '1px solid #dee2e6', borderRadius: '4px' }}> <h3>How to Use Backend Functions:</h3> <ol> <li> <strong>Set up your backend API</strong> to return functions as strings: <pre style={{ backgroundColor: '#e9ecef', padding: '10px', margin: '10px 0' }}> {`// Backend response example { "functions": { "handleInput": "function(content) { return { modifiedContent: content.toUpperCase() }; }", "formatText": "function(text) { return text.replace(/\\s+/g, ' ').trim(); }" } }`} </pre> </li> <li> <strong>Use the custom hooks</strong> in your components: <pre style={{ backgroundColor: '#e9ecef', padding: '10px', margin: '10px 0' }}> {`import { useBackendFunctions } from './hooks/useBackendFunctions'; const MyComponent = ({ apiKey }) => { const { functions, executeFunction, hasFunction } = useBackendFunctions( apiKey, 'http://your-api.com/functions' ); const handleClick = () => { if (hasFunction('myFunction')) { const result = executeFunction('myFunction', 'parameter1', 'parameter2'); console.log(result); } }; return <button onClick={handleClick}>Execute Function</button>; };`} </pre> </li> <li> <strong>Store functions in state</strong> for complex scenarios: <pre style={{ backgroundColor: '#e9ecef', padding: '10px', margin: '10px 0' }}> {`const [myFunction, setMyFunction] = useState(null); useEffect(() => { const fetchFunction = async () => { const response = await invokeApi({ path: 'http://your-api.com/function/myFunction', method: 'GET' }); if (response.function) { const func = new Function('return ' + response.function)(); setMyFunction(func); } }; fetchFunction(); }, []); useEffect(() => { if (myFunction) { const result = myFunction('some parameter'); console.log(result); } }, [myFunction]);`} </pre> </li> </ol> </div> </div> ); }; export default BackendFunctionUsage;