Files
dewedev/node_modules/.cache/babel-loader/33ee7b456a270f576a4a4ae5edfcc5d35041b2523145966076c15d6edded7b4c.json
dwindown 7f2dd5260f Initial commit: Developer Tools MVP with visual editor
- 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
2025-08-02 09:31:26 +07:00

1 line
38 KiB
JSON

{"ast":null,"code":"var _jsxFileName = \"/Users/dwindown/CascadeProjects/developer-tools/src/components/StructuredEditor.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Plus, Minus, ChevronDown, ChevronRight, Type, Hash, ToggleLeft, List, Braces } from 'lucide-react';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst StructuredEditor = ({\n onDataChange,\n initialData = {}\n}) => {\n _s();\n const [data, setData] = useState(initialData);\n const [expandedNodes, setExpandedNodes] = useState(new Set(['root']));\n const updateData = newData => {\n setData(newData);\n onDataChange(newData);\n };\n const toggleNode = path => {\n const newExpanded = new Set(expandedNodes);\n if (newExpanded.has(path)) {\n newExpanded.delete(path);\n } else {\n newExpanded.add(path);\n }\n setExpandedNodes(newExpanded);\n };\n const addProperty = (obj, path) => {\n const newObj = {\n ...obj\n };\n const keys = Object.keys(newObj);\n const newKey = `property${keys.length + 1}`;\n newObj[newKey] = '';\n updateData(newObj);\n setExpandedNodes(new Set([...expandedNodes, path]));\n };\n const addArrayItem = (arr, path) => {\n const newArr = [...arr, ''];\n const pathParts = path.split('.');\n const newData = {\n ...data\n };\n let current = newData;\n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n if (pathParts.length === 2) {\n newData[pathParts[1]] = newArr;\n } else {\n current[pathParts[pathParts.length - 1]] = newArr;\n }\n updateData(newData);\n };\n const removeProperty = (key, parentPath) => {\n const pathParts = parentPath.split('.');\n const newData = {\n ...data\n };\n let current = newData;\n for (let i = 1; i < pathParts.length; i++) {\n if (i === pathParts.length - 1) {\n delete current[key];\n } else {\n current = current[pathParts[i]];\n }\n }\n if (pathParts.length === 1) {\n delete newData[key];\n }\n updateData(newData);\n };\n const updateValue = (value, path) => {\n const pathParts = path.split('.');\n const newData = {\n ...data\n };\n let current = newData;\n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n const key = pathParts[pathParts.length - 1];\n\n // Auto-detect type\n if (value === 'true' || value === 'false') {\n current[key] = value === 'true';\n } else if (value === 'null') {\n current[key] = null;\n } else if (!isNaN(value) && value !== '') {\n current[key] = Number(value);\n } else {\n current[key] = value;\n }\n updateData(newData);\n };\n const changeType = (newType, path) => {\n const pathParts = path.split('.');\n const newData = {\n ...data\n };\n let current = newData;\n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n const key = pathParts[pathParts.length - 1];\n switch (newType) {\n case 'string':\n current[key] = '';\n break;\n case 'number':\n current[key] = 0;\n break;\n case 'boolean':\n current[key] = false;\n break;\n case 'array':\n current[key] = [];\n break;\n case 'object':\n current[key] = {};\n break;\n case 'null':\n current[key] = null;\n break;\n default:\n current[key] = '';\n }\n updateData(newData);\n setExpandedNodes(new Set([...expandedNodes, path]));\n };\n const getTypeIcon = value => {\n if (value === null) return /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-500\",\n children: \"\\u2205\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 135,\n columnNumber: 32\n }, this);\n if (typeof value === 'string') return /*#__PURE__*/_jsxDEV(Type, {\n className: \"h-4 w-4 text-green-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 136,\n columnNumber: 43\n }, this);\n if (typeof value === 'number') return /*#__PURE__*/_jsxDEV(Hash, {\n className: \"h-4 w-4 text-blue-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 137,\n columnNumber: 43\n }, this);\n if (typeof value === 'boolean') return /*#__PURE__*/_jsxDEV(ToggleLeft, {\n className: \"h-4 w-4 text-purple-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 138,\n columnNumber: 44\n }, this);\n if (Array.isArray(value)) return /*#__PURE__*/_jsxDEV(List, {\n className: \"h-4 w-4 text-orange-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 38\n }, this);\n if (typeof value === 'object') return /*#__PURE__*/_jsxDEV(Braces, {\n className: \"h-4 w-4 text-red-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 43\n }, this);\n return /*#__PURE__*/_jsxDEV(Type, {\n className: \"h-4 w-4 text-gray-600\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 12\n }, this);\n };\n const renderValue = (value, key, path, parentPath) => {\n const isExpanded = expandedNodes.has(path);\n const canExpand = typeof value === 'object' && value !== null;\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"ml-4 border-l border-gray-200 dark:border-gray-700 pl-4 mb-2\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center space-x-2 mb-2\",\n children: [canExpand && /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => toggleNode(path),\n className: \"p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded\",\n children: isExpanded ? /*#__PURE__*/_jsxDEV(ChevronDown, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 157,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(ChevronRight, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 159,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 152,\n columnNumber: 13\n }, this), !canExpand && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"w-6\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 164,\n columnNumber: 26\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center space-x-2 flex-1\",\n children: [getTypeIcon(value), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n value: key,\n onChange: e => {\n // Handle key rename logic here if needed\n },\n className: \"px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\",\n placeholder: \"Property name\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 169,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-500\",\n children: \":\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 179,\n columnNumber: 13\n }, this), !canExpand ? /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n value: value === null ? 'null' : value.toString(),\n onChange: e => updateValue(e.target.value, path),\n className: \"flex-1 px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\",\n placeholder: \"Value\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 182,\n columnNumber: 15\n }, this) : /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-sm text-gray-600 dark:text-gray-400\",\n children: Array.isArray(value) ? `Array (${value.length} items)` : `Object (${Object.keys(value).length} properties)`\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 190,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: value === null ? 'null' : typeof value === 'string' ? 'string' : typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : Array.isArray(value) ? 'array' : 'object',\n onChange: e => changeType(e.target.value, path),\n className: \"px-2 py-1 text-xs border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\",\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"string\",\n children: \"String\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 206,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"number\",\n children: \"Number\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 207,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"boolean\",\n children: \"Boolean\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 208,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"array\",\n children: \"Array\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 209,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"object\",\n children: \"Object\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 210,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"null\",\n children: \"Null\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 211,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 195,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => removeProperty(key, parentPath),\n className: \"p-1 text-red-600 hover:bg-red-100 dark:hover:bg-red-900 rounded\",\n children: /*#__PURE__*/_jsxDEV(Minus, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 218,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 214,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 166,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 150,\n columnNumber: 9\n }, this), canExpand && isExpanded && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"ml-6\",\n children: Array.isArray(value) ? /*#__PURE__*/_jsxDEV(_Fragment, {\n children: [value.map((item, index) => renderValue(item, index.toString(), `${path}.${index}`, path)), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => addArrayItem(value, path),\n className: \"flex items-center space-x-1 px-2 py-1 text-sm text-blue-600 hover:bg-blue-100 dark:hover:bg-blue-900 rounded\",\n children: [/*#__PURE__*/_jsxDEV(Plus, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 234,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Item\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 235,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 230,\n columnNumber: 17\n }, this)]\n }, void 0, true) : /*#__PURE__*/_jsxDEV(_Fragment, {\n children: [Object.entries(value).map(([k, v]) => renderValue(v, k, `${path}.${k}`, path)), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => addProperty(value, path),\n className: \"flex items-center space-x-1 px-2 py-1 text-sm text-blue-600 hover:bg-blue-100 dark:hover:bg-blue-900 rounded\",\n children: [/*#__PURE__*/_jsxDEV(Plus, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 247,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Property\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 248,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 243,\n columnNumber: 17\n }, this)]\n }, void 0, true)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 224,\n columnNumber: 11\n }, this)]\n }, path, true, {\n fileName: _jsxFileName,\n lineNumber: 149,\n columnNumber: 7\n }, this);\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border border-gray-300 dark:border-gray-600 rounded-lg p-4 bg-white dark:bg-gray-800\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"text-lg font-medium text-gray-900 dark:text-gray-100\",\n children: \"Structured Data Editor\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 261,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => addProperty(data, 'root'),\n className: \"flex items-center space-x-1 px-3 py-1 text-sm bg-blue-600 text-white rounded hover:bg-blue-700\",\n children: [/*#__PURE__*/_jsxDEV(Plus, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 266,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Property\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 267,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 260,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"max-h-96 overflow-y-auto\",\n children: [Object.entries(data).map(([key, value]) => renderValue(value, key, `root.${key}`, 'root')), Object.keys(data).length === 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center text-gray-500 dark:text-gray-400 py-8\",\n children: [/*#__PURE__*/_jsxDEV(Braces, {\n className: \"h-12 w-12 mx-auto mb-2 opacity-50\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 278,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"No properties yet. Click \\\"Add Property\\\" to start building your data structure.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 279,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 277,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 271,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 259,\n columnNumber: 5\n }, this);\n};\n_s(StructuredEditor, \"CynZdsGZU1lgNsY7J0734MKTPtE=\");\n_c = StructuredEditor;\nexport default StructuredEditor;\nvar _c;\n$RefreshReg$(_c, \"StructuredEditor\");","map":{"version":3,"names":["React","useState","Plus","Minus","ChevronDown","ChevronRight","Type","Hash","ToggleLeft","List","Braces","jsxDEV","_jsxDEV","Fragment","_Fragment","StructuredEditor","onDataChange","initialData","_s","data","setData","expandedNodes","setExpandedNodes","Set","updateData","newData","toggleNode","path","newExpanded","has","delete","add","addProperty","obj","newObj","keys","Object","newKey","length","addArrayItem","arr","newArr","pathParts","split","current","i","removeProperty","key","parentPath","updateValue","value","isNaN","Number","changeType","newType","getTypeIcon","className","children","fileName","_jsxFileName","lineNumber","columnNumber","Array","isArray","renderValue","isExpanded","canExpand","onClick","type","onChange","e","placeholder","toString","target","map","item","index","entries","k","v","_c","$RefreshReg$"],"sources":["/Users/dwindown/CascadeProjects/developer-tools/src/components/StructuredEditor.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Plus, Minus, ChevronDown, ChevronRight, Type, Hash, ToggleLeft, List, Braces } from 'lucide-react';\n\nconst StructuredEditor = ({ onDataChange, initialData = {} }) => {\n const [data, setData] = useState(initialData);\n const [expandedNodes, setExpandedNodes] = useState(new Set(['root']));\n\n const updateData = (newData) => {\n setData(newData);\n onDataChange(newData);\n };\n\n const toggleNode = (path) => {\n const newExpanded = new Set(expandedNodes);\n if (newExpanded.has(path)) {\n newExpanded.delete(path);\n } else {\n newExpanded.add(path);\n }\n setExpandedNodes(newExpanded);\n };\n\n const addProperty = (obj, path) => {\n const newObj = { ...obj };\n const keys = Object.keys(newObj);\n const newKey = `property${keys.length + 1}`;\n newObj[newKey] = '';\n updateData(newObj);\n setExpandedNodes(new Set([...expandedNodes, path]));\n };\n\n const addArrayItem = (arr, path) => {\n const newArr = [...arr, ''];\n const pathParts = path.split('.');\n const newData = { ...data };\n let current = newData;\n \n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n \n if (pathParts.length === 2) {\n newData[pathParts[1]] = newArr;\n } else {\n current[pathParts[pathParts.length - 1]] = newArr;\n }\n \n updateData(newData);\n };\n\n const removeProperty = (key, parentPath) => {\n const pathParts = parentPath.split('.');\n const newData = { ...data };\n let current = newData;\n \n for (let i = 1; i < pathParts.length; i++) {\n if (i === pathParts.length - 1) {\n delete current[key];\n } else {\n current = current[pathParts[i]];\n }\n }\n \n if (pathParts.length === 1) {\n delete newData[key];\n }\n \n updateData(newData);\n };\n\n const updateValue = (value, path) => {\n const pathParts = path.split('.');\n const newData = { ...data };\n let current = newData;\n \n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n \n const key = pathParts[pathParts.length - 1];\n \n // Auto-detect type\n if (value === 'true' || value === 'false') {\n current[key] = value === 'true';\n } else if (value === 'null') {\n current[key] = null;\n } else if (!isNaN(value) && value !== '') {\n current[key] = Number(value);\n } else {\n current[key] = value;\n }\n \n updateData(newData);\n };\n\n const changeType = (newType, path) => {\n const pathParts = path.split('.');\n const newData = { ...data };\n let current = newData;\n \n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n \n const key = pathParts[pathParts.length - 1];\n \n switch (newType) {\n case 'string':\n current[key] = '';\n break;\n case 'number':\n current[key] = 0;\n break;\n case 'boolean':\n current[key] = false;\n break;\n case 'array':\n current[key] = [];\n break;\n case 'object':\n current[key] = {};\n break;\n case 'null':\n current[key] = null;\n break;\n default:\n current[key] = '';\n }\n \n updateData(newData);\n setExpandedNodes(new Set([...expandedNodes, path]));\n };\n\n const getTypeIcon = (value) => {\n if (value === null) return <span className=\"text-gray-500\">∅</span>;\n if (typeof value === 'string') return <Type className=\"h-4 w-4 text-green-600\" />;\n if (typeof value === 'number') return <Hash className=\"h-4 w-4 text-blue-600\" />;\n if (typeof value === 'boolean') return <ToggleLeft className=\"h-4 w-4 text-purple-600\" />;\n if (Array.isArray(value)) return <List className=\"h-4 w-4 text-orange-600\" />;\n if (typeof value === 'object') return <Braces className=\"h-4 w-4 text-red-600\" />;\n return <Type className=\"h-4 w-4 text-gray-600\" />;\n };\n\n const renderValue = (value, key, path, parentPath) => {\n const isExpanded = expandedNodes.has(path);\n const canExpand = typeof value === 'object' && value !== null;\n\n return (\n <div key={path} className=\"ml-4 border-l border-gray-200 dark:border-gray-700 pl-4 mb-2\">\n <div className=\"flex items-center space-x-2 mb-2\">\n {canExpand && (\n <button\n onClick={() => toggleNode(path)}\n className=\"p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded\"\n >\n {isExpanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </button>\n )}\n \n {!canExpand && <div className=\"w-6\" />}\n \n <div className=\"flex items-center space-x-2 flex-1\">\n {getTypeIcon(value)}\n \n <input\n type=\"text\"\n value={key}\n onChange={(e) => {\n // Handle key rename logic here if needed\n }}\n className=\"px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\"\n placeholder=\"Property name\"\n />\n \n <span className=\"text-gray-500\">:</span>\n \n {!canExpand ? (\n <input\n type=\"text\"\n value={value === null ? 'null' : value.toString()}\n onChange={(e) => updateValue(e.target.value, path)}\n className=\"flex-1 px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\"\n placeholder=\"Value\"\n />\n ) : (\n <span className=\"text-sm text-gray-600 dark:text-gray-400\">\n {Array.isArray(value) ? `Array (${value.length} items)` : `Object (${Object.keys(value).length} properties)`}\n </span>\n )}\n \n <select\n value={\n value === null ? 'null' :\n typeof value === 'string' ? 'string' :\n typeof value === 'number' ? 'number' :\n typeof value === 'boolean' ? 'boolean' :\n Array.isArray(value) ? 'array' : 'object'\n }\n onChange={(e) => changeType(e.target.value, path)}\n className=\"px-2 py-1 text-xs border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100\"\n >\n <option value=\"string\">String</option>\n <option value=\"number\">Number</option>\n <option value=\"boolean\">Boolean</option>\n <option value=\"array\">Array</option>\n <option value=\"object\">Object</option>\n <option value=\"null\">Null</option>\n </select>\n \n <button\n onClick={() => removeProperty(key, parentPath)}\n className=\"p-1 text-red-600 hover:bg-red-100 dark:hover:bg-red-900 rounded\"\n >\n <Minus className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n \n {canExpand && isExpanded && (\n <div className=\"ml-6\">\n {Array.isArray(value) ? (\n <>\n {value.map((item, index) => \n renderValue(item, index.toString(), `${path}.${index}`, path)\n )}\n <button\n onClick={() => addArrayItem(value, path)}\n className=\"flex items-center space-x-1 px-2 py-1 text-sm text-blue-600 hover:bg-blue-100 dark:hover:bg-blue-900 rounded\"\n >\n <Plus className=\"h-4 w-4\" />\n <span>Add Item</span>\n </button>\n </>\n ) : (\n <>\n {Object.entries(value).map(([k, v]) => \n renderValue(v, k, `${path}.${k}`, path)\n )}\n <button\n onClick={() => addProperty(value, path)}\n className=\"flex items-center space-x-1 px-2 py-1 text-sm text-blue-600 hover:bg-blue-100 dark:hover:bg-blue-900 rounded\"\n >\n <Plus className=\"h-4 w-4\" />\n <span>Add Property</span>\n </button>\n </>\n )}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div className=\"border border-gray-300 dark:border-gray-600 rounded-lg p-4 bg-white dark:bg-gray-800\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-medium text-gray-900 dark:text-gray-100\">Structured Data Editor</h3>\n <button\n onClick={() => addProperty(data, 'root')}\n className=\"flex items-center space-x-1 px-3 py-1 text-sm bg-blue-600 text-white rounded hover:bg-blue-700\"\n >\n <Plus className=\"h-4 w-4\" />\n <span>Add Property</span>\n </button>\n </div>\n \n <div className=\"max-h-96 overflow-y-auto\">\n {Object.entries(data).map(([key, value]) => \n renderValue(value, key, `root.${key}`, 'root')\n )}\n \n {Object.keys(data).length === 0 && (\n <div className=\"text-center text-gray-500 dark:text-gray-400 py-8\">\n <Braces className=\"h-12 w-12 mx-auto mb-2 opacity-50\" />\n <p>No properties yet. Click \"Add Property\" to start building your data structure.</p>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default StructuredEditor;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}