- Complete React app with 7 developer tools - JSON Tool with visual structured editor - Serialize Tool with visual structured editor - URL, Base64, CSV/JSON, Beautifier, Diff tools - Responsive navigation with dropdown menu - Dark/light mode toggle - Mobile-responsive design with sticky header - All tools working with copy/paste functionality
1 line
42 KiB
JSON
1 line
42 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"/Users/dwindown/CascadeProjects/developer-tools/src/pages/SerializeTool.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Database, Edit3 } from 'lucide-react';\nimport ToolLayout from '../components/ToolLayout';\nimport CopyButton from '../components/CopyButton';\nimport StructuredEditor from '../components/StructuredEditor';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst SerializeTool = () => {\n _s();\n const [input, setInput] = useState('');\n const [output, setOutput] = useState('');\n const [mode, setMode] = useState('serialize'); // 'serialize' or 'unserialize'\n const [error, setError] = useState('');\n const [editorMode, setEditorMode] = useState('text'); // 'text' or 'visual'\n const [structuredData, setStructuredData] = useState({});\n\n // Simple PHP serialize implementation for common data types\n const phpSerialize = data => {\n if (data === null) return 'N;';\n if (typeof data === 'boolean') return data ? 'b:1;' : 'b:0;';\n if (typeof data === 'number') {\n return Number.isInteger(data) ? `i:${data};` : `d:${data};`;\n }\n if (typeof data === 'string') {\n return `s:${data.length}:\"${data}\";`;\n }\n if (Array.isArray(data)) {\n let result = `a:${data.length}:{`;\n data.forEach((item, index) => {\n result += phpSerialize(index) + phpSerialize(item);\n });\n result += '}';\n return result;\n }\n if (typeof data === 'object') {\n const keys = Object.keys(data);\n let result = `a:${keys.length}:{`;\n keys.forEach(key => {\n result += phpSerialize(key) + phpSerialize(data[key]);\n });\n result += '}';\n return result;\n }\n return 'N;';\n };\n\n // Simple PHP unserialize implementation\n const phpUnserialize = str => {\n let index = 0;\n const parseValue = () => {\n const type = str[index];\n index += 2; // Skip type and ':'\n\n switch (type) {\n case 'N':\n index++; // Skip ';'\n return null;\n case 'b':\n const boolVal = str[index] === '1';\n index += 2; // Skip value and ';'\n return boolVal;\n case 'i':\n let intStr = '';\n while (str[index] !== ';') {\n intStr += str[index++];\n }\n index++; // Skip ';'\n return parseInt(intStr);\n case 'd':\n let floatStr = '';\n while (str[index] !== ';') {\n floatStr += str[index++];\n }\n index++; // Skip ';'\n return parseFloat(floatStr);\n case 's':\n let lenStr = '';\n while (str[index] !== ':') {\n lenStr += str[index++];\n }\n index++; // Skip ':'\n index++; // Skip '\"'\n const length = parseInt(lenStr);\n const stringVal = str.substr(index, length);\n index += length + 2; // Skip string and '\";'\n return stringVal;\n case 'a':\n let arrayLenStr = '';\n while (str[index] !== ':') {\n arrayLenStr += str[index++];\n }\n index += 2; // Skip ':{'\n const arrayLength = parseInt(arrayLenStr);\n const result = {};\n let isArray = true;\n for (let i = 0; i < arrayLength; i++) {\n const key = parseValue();\n const value = parseValue();\n result[key] = value;\n if (typeof key !== 'number' || key !== i) {\n isArray = false;\n }\n }\n index++; // Skip '}'\n\n // Convert to array if all keys are sequential integers\n if (isArray && arrayLength > 0) {\n const arr = [];\n for (let i = 0; i < arrayLength; i++) {\n arr[i] = result[i];\n }\n return arr;\n }\n return result;\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n };\n return parseValue();\n };\n const handleSerialize = () => {\n try {\n const data = JSON.parse(input);\n const serialized = phpSerialize(data);\n setOutput(serialized);\n } catch (err) {\n setOutput(`Error: ${err.message}`);\n }\n };\n const handleUnserialize = () => {\n try {\n const unserialized = phpUnserialize(input);\n setOutput(JSON.stringify(unserialized, null, 2));\n } catch (err) {\n setOutput(`Error: ${err.message}`);\n }\n };\n const handleProcess = () => {\n if (mode === 'serialize') {\n handleSerialize();\n } else {\n handleUnserialize();\n }\n };\n\n // Editor mode switching functions\n const switchToTextEditor = () => {\n if (editorMode === 'visual') {\n try {\n const jsonString = JSON.stringify(structuredData, null, 2);\n setInput(jsonString);\n } catch (err) {\n setError('Error converting structured data to JSON');\n }\n }\n setEditorMode('text');\n };\n const switchToVisualEditor = () => {\n if (editorMode === 'text' && input.trim()) {\n try {\n const parsed = JSON.parse(input);\n setStructuredData(parsed);\n setError('');\n } catch (err) {\n setError('Invalid JSON format. Please fix the JSON before switching to visual editor.');\n return;\n }\n }\n setEditorMode('visual');\n };\n const handleStructuredDataChange = newData => {\n setStructuredData(newData);\n try {\n const jsonString = JSON.stringify(newData, null, 2);\n setInput(jsonString);\n setError('');\n } catch (err) {\n setError('Error updating JSON from structured data');\n }\n };\n const clearAll = () => {\n setInput('');\n setOutput('');\n };\n const loadSample = () => {\n if (mode === 'serialize') {\n setInput(`{\n \"name\": \"John Doe\",\n \"age\": 30,\n \"active\": true,\n \"scores\": [85, 92, 78],\n \"address\": {\n \"street\": \"123 Main St\",\n \"city\": \"New York\"\n }\n}`);\n } else {\n setInput('a:4:{s:4:\"name\";s:8:\"John Doe\";s:3:\"age\";i:30;s:6:\"active\";b:1;s:6:\"scores\";a:3:{i:0;i:85;i:1;i:92;i:2;i:78;}}');\n }\n };\n return /*#__PURE__*/_jsxDEV(ToolLayout, {\n title: \"Serialize Encoder/Decoder\",\n description: \"Encode and decode serialized data (PHP serialize format)\",\n icon: Database,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex bg-gray-100 dark:bg-gray-800 rounded-lg p-1 mb-6 w-fit\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setMode('serialize'),\n className: `px-4 py-2 rounded-md font-medium transition-colors ${mode === 'serialize' ? 'bg-white dark:bg-gray-700 text-primary-600 shadow-sm' : 'text-gray-600 dark:text-gray-400'}`,\n children: \"Serialize\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 219,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setMode('unserialize'),\n className: `px-4 py-2 rounded-md font-medium transition-colors ${mode === 'unserialize' ? 'bg-white dark:bg-gray-700 text-primary-600 shadow-sm' : 'text-gray-600 dark:text-gray-400'}`,\n children: \"Unserialize\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 229,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 218,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex flex-wrap gap-3 mb-6\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n onClick: handleProcess,\n className: \"tool-button\",\n children: mode === 'serialize' ? 'Serialize Data' : 'Unserialize Data'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 243,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: loadSample,\n className: \"tool-button-secondary\",\n children: \"Load Sample\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 246,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: clearAll,\n className: \"tool-button-secondary\",\n children: \"Clear All\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 249,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 242,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 lg:grid-cols-2 gap-6\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-2\",\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300\",\n children: mode === 'serialize' ? 'JSON to Serialize' : 'Serialized Data to Decode'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 258,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/_jsxDEV(\"textarea\", {\n value: input,\n onChange: e => setInput(e.target.value),\n placeholder: mode === 'serialize' ? 'Enter JSON data to serialize...' : 'Enter serialized data to decode...',\n className: \"tool-input h-96\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 261,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 257,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-2\",\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-medium text-gray-700 dark:text-gray-300\",\n children: mode === 'serialize' ? 'Serialized Output' : 'JSON Output'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 277,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"relative\",\n children: [/*#__PURE__*/_jsxDEV(\"textarea\", {\n value: output,\n readOnly: true,\n placeholder: mode === 'serialize' ? 'Serialized data will appear here...' : 'Decoded JSON will appear here...',\n className: \"tool-input h-96 bg-gray-50 dark:bg-gray-800\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 281,\n columnNumber: 13\n }, this), output && /*#__PURE__*/_jsxDEV(CopyButton, {\n text: output\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 24\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 280,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 276,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 255,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-gray-50 dark:bg-gray-800 rounded-md p-4 mt-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h4\", {\n className: \"text-gray-800 dark:text-gray-200 font-medium mb-3\",\n children: \"PHP Serialize Format Reference\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 298,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"String:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 301,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono text-gray-800 dark:text-gray-200\",\n children: \"s:length:\\\"value\\\";\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 302,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 300,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"Integer:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 305,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono text-gray-800 dark:text-gray-200\",\n children: \"i:value;\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 306,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 304,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"Boolean:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 309,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono text-gray-800 dark:text-gray-200\",\n children: \"b:0; or b:1;\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 310,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"Null:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 313,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono text-gray-800 dark:text-gray-200\",\n children: \"N;\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 314,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 312,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"Array:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 317,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono\",\n children: \"a:length:{...}\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 318,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 316,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 dark:text-gray-400\",\n children: \"Float:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 321,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"ml-2 font-mono text-gray-800 dark:text-gray-200\",\n children: \"d:value;\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 322,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 320,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 299,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 297,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-md p-4 mt-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h4\", {\n className: \"text-blue-800 dark:text-blue-200 font-medium mb-2\",\n children: \"Usage Tips\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 329,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"ul\", {\n className: \"text-blue-700 dark:text-blue-300 text-sm space-y-1\",\n children: [/*#__PURE__*/_jsxDEV(\"li\", {\n children: \"\\u2022 PHP serialize format is commonly used for storing complex data structures\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 331,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n children: \"\\u2022 Input JSON data to serialize it into PHP format\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 332,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n children: \"\\u2022 Paste serialized data to convert it back to readable JSON\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 333,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n children: \"\\u2022 Supports strings, integers, floats, booleans, arrays, and objects\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 334,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 330,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 328,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 212,\n columnNumber: 5\n }, this);\n};\n_s(SerializeTool, \"5OLOx/MgdQCByTLD33AdOf4gJ/8=\");\n_c = SerializeTool;\nexport default SerializeTool;\nvar _c;\n$RefreshReg$(_c, \"SerializeTool\");","map":{"version":3,"names":["React","useState","Database","Edit3","ToolLayout","CopyButton","StructuredEditor","jsxDEV","_jsxDEV","SerializeTool","_s","input","setInput","output","setOutput","mode","setMode","error","setError","editorMode","setEditorMode","structuredData","setStructuredData","phpSerialize","data","Number","isInteger","length","Array","isArray","result","forEach","item","index","keys","Object","key","phpUnserialize","str","parseValue","type","boolVal","intStr","parseInt","floatStr","parseFloat","lenStr","stringVal","substr","arrayLenStr","arrayLength","i","value","arr","Error","handleSerialize","JSON","parse","serialized","err","message","handleUnserialize","unserialized","stringify","handleProcess","switchToTextEditor","jsonString","switchToVisualEditor","trim","parsed","handleStructuredDataChange","newData","clearAll","loadSample","title","description","icon","children","className","onClick","fileName","_jsxFileName","lineNumber","columnNumber","onChange","e","target","placeholder","readOnly","text","_c","$RefreshReg$"],"sources":["/Users/dwindown/CascadeProjects/developer-tools/src/pages/SerializeTool.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Database, Edit3 } from 'lucide-react';\nimport ToolLayout from '../components/ToolLayout';\nimport CopyButton from '../components/CopyButton';\nimport StructuredEditor from '../components/StructuredEditor';\n\nconst SerializeTool = () => {\n const [input, setInput] = useState('');\n const [output, setOutput] = useState('');\n const [mode, setMode] = useState('serialize'); // 'serialize' or 'unserialize'\n const [error, setError] = useState('');\n const [editorMode, setEditorMode] = useState('text'); // 'text' or 'visual'\n const [structuredData, setStructuredData] = useState({});\n\n // Simple PHP serialize implementation for common data types\n const phpSerialize = (data) => {\n if (data === null) return 'N;';\n if (typeof data === 'boolean') return data ? 'b:1;' : 'b:0;';\n if (typeof data === 'number') {\n return Number.isInteger(data) ? `i:${data};` : `d:${data};`;\n }\n if (typeof data === 'string') {\n return `s:${data.length}:\"${data}\";`;\n }\n if (Array.isArray(data)) {\n let result = `a:${data.length}:{`;\n data.forEach((item, index) => {\n result += phpSerialize(index) + phpSerialize(item);\n });\n result += '}';\n return result;\n }\n if (typeof data === 'object') {\n const keys = Object.keys(data);\n let result = `a:${keys.length}:{`;\n keys.forEach(key => {\n result += phpSerialize(key) + phpSerialize(data[key]);\n });\n result += '}';\n return result;\n }\n return 'N;';\n };\n\n // Simple PHP unserialize implementation\n const phpUnserialize = (str) => {\n let index = 0;\n \n const parseValue = () => {\n const type = str[index];\n index += 2; // Skip type and ':'\n \n switch (type) {\n case 'N':\n index++; // Skip ';'\n return null;\n case 'b':\n const boolVal = str[index] === '1';\n index += 2; // Skip value and ';'\n return boolVal;\n case 'i':\n let intStr = '';\n while (str[index] !== ';') {\n intStr += str[index++];\n }\n index++; // Skip ';'\n return parseInt(intStr);\n case 'd':\n let floatStr = '';\n while (str[index] !== ';') {\n floatStr += str[index++];\n }\n index++; // Skip ';'\n return parseFloat(floatStr);\n case 's':\n let lenStr = '';\n while (str[index] !== ':') {\n lenStr += str[index++];\n }\n index++; // Skip ':'\n index++; // Skip '\"'\n const length = parseInt(lenStr);\n const stringVal = str.substr(index, length);\n index += length + 2; // Skip string and '\";'\n return stringVal;\n case 'a':\n let arrayLenStr = '';\n while (str[index] !== ':') {\n arrayLenStr += str[index++];\n }\n index += 2; // Skip ':{'\n const arrayLength = parseInt(arrayLenStr);\n const result = {};\n let isArray = true;\n \n for (let i = 0; i < arrayLength; i++) {\n const key = parseValue();\n const value = parseValue();\n result[key] = value;\n if (typeof key !== 'number' || key !== i) {\n isArray = false;\n }\n }\n index++; // Skip '}'\n \n // Convert to array if all keys are sequential integers\n if (isArray && arrayLength > 0) {\n const arr = [];\n for (let i = 0; i < arrayLength; i++) {\n arr[i] = result[i];\n }\n return arr;\n }\n \n return result;\n default:\n throw new Error(`Unknown type: ${type}`);\n }\n };\n \n return parseValue();\n };\n\n const handleSerialize = () => {\n try {\n const data = JSON.parse(input);\n const serialized = phpSerialize(data);\n setOutput(serialized);\n } catch (err) {\n setOutput(`Error: ${err.message}`);\n }\n };\n\n const handleUnserialize = () => {\n try {\n const unserialized = phpUnserialize(input);\n setOutput(JSON.stringify(unserialized, null, 2));\n } catch (err) {\n setOutput(`Error: ${err.message}`);\n }\n };\n\n const handleProcess = () => {\n if (mode === 'serialize') {\n handleSerialize();\n } else {\n handleUnserialize();\n }\n };\n\n // Editor mode switching functions\n const switchToTextEditor = () => {\n if (editorMode === 'visual') {\n try {\n const jsonString = JSON.stringify(structuredData, null, 2);\n setInput(jsonString);\n } catch (err) {\n setError('Error converting structured data to JSON');\n }\n }\n setEditorMode('text');\n };\n\n const switchToVisualEditor = () => {\n if (editorMode === 'text' && input.trim()) {\n try {\n const parsed = JSON.parse(input);\n setStructuredData(parsed);\n setError('');\n } catch (err) {\n setError('Invalid JSON format. Please fix the JSON before switching to visual editor.');\n return;\n }\n }\n setEditorMode('visual');\n };\n\n const handleStructuredDataChange = (newData) => {\n setStructuredData(newData);\n try {\n const jsonString = JSON.stringify(newData, null, 2);\n setInput(jsonString);\n setError('');\n } catch (err) {\n setError('Error updating JSON from structured data');\n }\n };\n\n const clearAll = () => {\n setInput('');\n setOutput('');\n };\n\n const loadSample = () => {\n if (mode === 'serialize') {\n setInput(`{\n \"name\": \"John Doe\",\n \"age\": 30,\n \"active\": true,\n \"scores\": [85, 92, 78],\n \"address\": {\n \"street\": \"123 Main St\",\n \"city\": \"New York\"\n }\n}`);\n } else {\n setInput('a:4:{s:4:\"name\";s:8:\"John Doe\";s:3:\"age\";i:30;s:6:\"active\";b:1;s:6:\"scores\";a:3:{i:0;i:85;i:1;i:92;i:2;i:78;}}');\n }\n };\n\n return (\n <ToolLayout\n title=\"Serialize Encoder/Decoder\"\n description=\"Encode and decode serialized data (PHP serialize format)\"\n icon={Database}\n >\n {/* Mode Toggle */}\n <div className=\"flex bg-gray-100 dark:bg-gray-800 rounded-lg p-1 mb-6 w-fit\">\n <button\n onClick={() => setMode('serialize')}\n className={`px-4 py-2 rounded-md font-medium transition-colors ${\n mode === 'serialize'\n ? 'bg-white dark:bg-gray-700 text-primary-600 shadow-sm'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n Serialize\n </button>\n <button\n onClick={() => setMode('unserialize')}\n className={`px-4 py-2 rounded-md font-medium transition-colors ${\n mode === 'unserialize'\n ? 'bg-white dark:bg-gray-700 text-primary-600 shadow-sm'\n : 'text-gray-600 dark:text-gray-400'\n }`}\n >\n Unserialize\n </button>\n </div>\n\n {/* Controls */}\n <div className=\"flex flex-wrap gap-3 mb-6\">\n <button onClick={handleProcess} className=\"tool-button\">\n {mode === 'serialize' ? 'Serialize Data' : 'Unserialize Data'}\n </button>\n <button onClick={loadSample} className=\"tool-button-secondary\">\n Load Sample\n </button>\n <button onClick={clearAll} className=\"tool-button-secondary\">\n Clear All\n </button>\n </div>\n\n {/* Input/Output Grid */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Input */}\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300\">\n {mode === 'serialize' ? 'JSON to Serialize' : 'Serialized Data to Decode'}\n </label>\n <div className=\"relative\">\n <textarea\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={\n mode === 'serialize' \n ? 'Enter JSON data to serialize...' \n : 'Enter serialized data to decode...'\n }\n className=\"tool-input h-96\"\n />\n </div>\n </div>\n\n {/* Output */}\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300\">\n {mode === 'serialize' ? 'Serialized Output' : 'JSON Output'}\n </label>\n <div className=\"relative\">\n <textarea\n value={output}\n readOnly\n placeholder={\n mode === 'serialize' \n ? 'Serialized data will appear here...' \n : 'Decoded JSON will appear here...'\n }\n className=\"tool-input h-96 bg-gray-50 dark:bg-gray-800\"\n />\n {output && <CopyButton text={output} />}\n </div>\n </div>\n </div>\n\n {/* Serialize Format Reference */}\n <div className=\"bg-gray-50 dark:bg-gray-800 rounded-md p-4 mt-6\">\n <h4 className=\"text-gray-800 dark:text-gray-200 font-medium mb-3\">PHP Serialize Format Reference</h4>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">String:</span>\n <span className=\"ml-2 font-mono text-gray-800 dark:text-gray-200\">s:length:\"value\";</span>\n </div>\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">Integer:</span>\n <span className=\"ml-2 font-mono text-gray-800 dark:text-gray-200\">i:value;</span>\n </div>\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">Boolean:</span>\n <span className=\"ml-2 font-mono text-gray-800 dark:text-gray-200\">b:0; or b:1;</span>\n </div>\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">Null:</span>\n <span className=\"ml-2 font-mono text-gray-800 dark:text-gray-200\">N;</span>\n </div>\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">Array:</span>\n <span className=\"ml-2 font-mono\">a:length:{...}</span>\n </div>\n <div>\n <span className=\"text-gray-600 dark:text-gray-400\">Float:</span>\n <span className=\"ml-2 font-mono text-gray-800 dark:text-gray-200\">d:value;</span>\n </div>\n </div>\n </div>\n\n {/* Usage Tips */}\n <div className=\"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-md p-4 mt-6\">\n <h4 className=\"text-blue-800 dark:text-blue-200 font-medium mb-2\">Usage Tips</h4>\n <ul className=\"text-blue-700 dark:text-blue-300 text-sm space-y-1\">\n <li>• PHP serialize format is commonly used for storing complex data structures</li>\n <li>• Input JSON data to serialize it into PHP format</li>\n <li>• Paste serialized data to convert it back to readable JSON</li>\n <li>• Supports strings, integers, floats, booleans, arrays, and objects</li>\n </ul>\n </div>\n </ToolLayout>\n );\n};\n\nexport default SerializeTool;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |