{"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 renameKey = (oldKey, newKey, path) => {\n if (oldKey === newKey || !newKey.trim()) return;\n const pathParts = path.split('.');\n const newData = {\n ...data\n };\n let current = newData;\n\n // Navigate to parent object\n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n\n // Check if new key already exists\n if (current.hasOwnProperty(newKey)) {\n return; // Don't rename if key already exists\n }\n\n // Rename the key\n const value = current[oldKey];\n delete current[oldKey];\n current[newKey] = value;\n updateData(newData);\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: 160,\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: 161,\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: 162,\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: 163,\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: 164,\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: 165,\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: 166,\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: 182,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(ChevronRight, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 184,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 177,\n columnNumber: 13\n }, this), !canExpand && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"w-6\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 189,\n columnNumber: 26\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex flex-col sm:flex-row sm:items-center space-y-2 sm:space-y-0 sm:space-x-2 flex-1\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center space-x-2 flex-1\",\n children: [getTypeIcon(value), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n defaultValue: key,\n onBlur: e => {\n const newKey = e.target.value.trim();\n if (newKey && newKey !== key) {\n renameKey(key, newKey, path);\n }\n },\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.target.blur(); // Trigger blur to save changes\n }\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 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-w-0 flex-1\",\n placeholder: \"Property name\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 195,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-500 hidden sm:inline\",\n children: \":\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 213,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 192,\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: 217,\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: 225,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center space-x-2 sm:space-x-2\",\n children: [/*#__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 min-w-0\",\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"string\",\n children: \"String\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 242,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"number\",\n children: \"Number\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 243,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"boolean\",\n children: \"Boolean\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 244,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"array\",\n children: \"Array\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 245,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"object\",\n children: \"Object\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 246,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"null\",\n children: \"Null\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 247,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 231,\n columnNumber: 15\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 flex-shrink-0\",\n title: \"Remove property\",\n children: /*#__PURE__*/_jsxDEV(Minus, {\n className: \"h-4 w-4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 255,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 250,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 230,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 175,\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: 272,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Item\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 273,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 268,\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: 285,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Property\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 286,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 281,\n columnNumber: 17\n }, this)]\n }, void 0, true)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 11\n }, this)]\n }, path, true, {\n fileName: _jsxFileName,\n lineNumber: 174,\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 min-h-96\",\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: 299,\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: 304,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: \"Add Property\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 305,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 300,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 298,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"overflow-y-auto\",\n style: {\n maxHeight: 'calc(24rem - 4rem)'\n },\n children: 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: 312,\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: 313,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 311,\n columnNumber: 11\n }, this) : Object.entries(data).map(([key, value]) => renderValue(value, key, `root.${key}`, 'root'))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 309,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 297,\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","renameKey","oldKey","trim","hasOwnProperty","getTypeIcon","className","children","fileName","_jsxFileName","lineNumber","columnNumber","Array","isArray","renderValue","isExpanded","canExpand","onClick","type","defaultValue","onBlur","e","target","onKeyDown","blur","placeholder","toString","onChange","title","map","item","index","entries","k","v","style","maxHeight","_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 renameKey = (oldKey, newKey, path) => {\n if (oldKey === newKey || !newKey.trim()) return;\n \n const pathParts = path.split('.');\n const newData = { ...data };\n let current = newData;\n \n // Navigate to parent object\n for (let i = 1; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n }\n \n // Check if new key already exists\n if (current.hasOwnProperty(newKey)) {\n return; // Don't rename if key already exists\n }\n \n // Rename the key\n const value = current[oldKey];\n delete current[oldKey];\n current[newKey] = value;\n \n updateData(newData);\n };\n\n const getTypeIcon = (value) => {\n if (value === null) return ;\n if (typeof value === 'string') return ;\n if (typeof value === 'number') return ;\n if (typeof value === 'boolean') return ;\n if (Array.isArray(value)) return ;\n if (typeof value === 'object') return ;\n return ;\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
\n
\n {canExpand && (\n toggleNode(path)}\n className=\"p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded\"\n >\n {isExpanded ? (\n \n ) : (\n \n )}\n \n )}\n \n {!canExpand &&
}\n \n
\n
\n {getTypeIcon(value)}\n \n {\n const newKey = e.target.value.trim();\n if (newKey && newKey !== key) {\n renameKey(key, newKey, path);\n }\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.target.blur(); // Trigger blur to save changes\n }\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 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-w-0 flex-1\"\n placeholder=\"Property name\"\n />\n \n \n
\n \n {!canExpand ? (\n 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 \n {Array.isArray(value) ? `Array (${value.length} items)` : `Object (${Object.keys(value).length} properties)`}\n \n )}\n \n
\n 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 min-w-0\"\n >\n \n \n \n \n \n \n \n \n removeProperty(key, parentPath)}\n className=\"p-1 text-red-600 hover:bg-red-100 dark:hover:bg-red-900 rounded flex-shrink-0\"\n title=\"Remove property\"\n >\n \n \n
\n
\n
\n \n {canExpand && isExpanded && (\n
\n {Array.isArray(value) ? (\n <>\n {value.map((item, index) => \n renderValue(item, index.toString(), `${path}.${index}`, path)\n )}\n 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 \n Add Item\n \n \n ) : (\n <>\n {Object.entries(value).map(([k, v]) => \n renderValue(v, k, `${path}.${k}`, path)\n )}\n 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 \n Add Property\n \n \n )}\n
\n )}\n
\n );\n };\n\n return (\n
\n
\n

Structured Data Editor

\n 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 \n Add Property\n \n
\n \n
\n {Object.keys(data).length === 0 ? (\n
\n \n

No properties yet. Click \"Add Property\" to start building your data structure.

\n
\n ) : (\n Object.entries(data).map(([key, value]) => \n renderValue(value, key, `root.${key}`, 'root')\n )\n )}\n
\n
\n );\n};\n\nexport default StructuredEditor;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,IAAI,EAAEC,KAAK,EAAEC,WAAW,EAAEC,YAAY,EAAEC,IAAI,EAAEC,IAAI,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,QAAQ,cAAc;AAAC,SAAAC,MAAA,IAAAC,OAAA,EAAAC,QAAA,IAAAC,SAAA;AAE5G,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,YAAY;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,KAAK;EAAAC,EAAA;EAC/D,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGnB,QAAQ,CAACgB,WAAW,CAAC;EAC7C,MAAM,CAACI,aAAa,EAAEC,gBAAgB,CAAC,GAAGrB,QAAQ,CAAC,IAAIsB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;EAErE,MAAMC,UAAU,GAAIC,OAAO,IAAK;IAC9BL,OAAO,CAACK,OAAO,CAAC;IAChBT,YAAY,CAACS,OAAO,CAAC;EACvB,CAAC;EAED,MAAMC,UAAU,GAAIC,IAAI,IAAK;IAC3B,MAAMC,WAAW,GAAG,IAAIL,GAAG,CAACF,aAAa,CAAC;IAC1C,IAAIO,WAAW,CAACC,GAAG,CAACF,IAAI,CAAC,EAAE;MACzBC,WAAW,CAACE,MAAM,CAACH,IAAI,CAAC;IAC1B,CAAC,MAAM;MACLC,WAAW,CAACG,GAAG,CAACJ,IAAI,CAAC;IACvB;IACAL,gBAAgB,CAACM,WAAW,CAAC;EAC/B,CAAC;EAED,MAAMI,WAAW,GAAGA,CAACC,GAAG,EAAEN,IAAI,KAAK;IACjC,MAAMO,MAAM,GAAG;MAAE,GAAGD;IAAI,CAAC;IACzB,MAAME,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACD,MAAM,CAAC;IAChC,MAAMG,MAAM,GAAG,WAAWF,IAAI,CAACG,MAAM,GAAG,CAAC,EAAE;IAC3CJ,MAAM,CAACG,MAAM,CAAC,GAAG,EAAE;IACnBb,UAAU,CAACU,MAAM,CAAC;IAClBZ,gBAAgB,CAAC,IAAIC,GAAG,CAAC,CAAC,GAAGF,aAAa,EAAEM,IAAI,CAAC,CAAC,CAAC;EACrD,CAAC;EAED,MAAMY,YAAY,GAAGA,CAACC,GAAG,EAAEb,IAAI,KAAK;IAClC,MAAMc,MAAM,GAAG,CAAC,GAAGD,GAAG,EAAE,EAAE,CAAC;IAC3B,MAAME,SAAS,GAAGf,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC;IACjC,MAAMlB,OAAO,GAAG;MAAE,GAAGN;IAAK,CAAC;IAC3B,IAAIyB,OAAO,GAAGnB,OAAO;IAErB,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACJ,MAAM,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;MAC7CD,OAAO,GAAGA,OAAO,CAACF,SAAS,CAACG,CAAC,CAAC,CAAC;IACjC;IAEA,IAAIH,SAAS,CAACJ,MAAM,KAAK,CAAC,EAAE;MAC1Bb,OAAO,CAACiB,SAAS,CAAC,CAAC,CAAC,CAAC,GAAGD,MAAM;IAChC,CAAC,MAAM;MACLG,OAAO,CAACF,SAAS,CAACA,SAAS,CAACJ,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGG,MAAM;IACnD;IAEAjB,UAAU,CAACC,OAAO,CAAC;EACrB,CAAC;EAED,MAAMqB,cAAc,GAAGA,CAACC,GAAG,EAAEC,UAAU,KAAK;IAC1C,MAAMN,SAAS,GAAGM,UAAU,CAACL,KAAK,CAAC,GAAG,CAAC;IACvC,MAAMlB,OAAO,GAAG;MAAE,GAAGN;IAAK,CAAC;IAC3B,IAAIyB,OAAO,GAAGnB,OAAO;IAErB,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACJ,MAAM,EAAEO,CAAC,EAAE,EAAE;MACzC,IAAIA,CAAC,KAAKH,SAAS,CAACJ,MAAM,GAAG,CAAC,EAAE;QAC9B,OAAOM,OAAO,CAACG,GAAG,CAAC;MACrB,CAAC,MAAM;QACLH,OAAO,GAAGA,OAAO,CAACF,SAAS,CAACG,CAAC,CAAC,CAAC;MACjC;IACF;IAEA,IAAIH,SAAS,CAACJ,MAAM,KAAK,CAAC,EAAE;MAC1B,OAAOb,OAAO,CAACsB,GAAG,CAAC;IACrB;IAEAvB,UAAU,CAACC,OAAO,CAAC;EACrB,CAAC;EAED,MAAMwB,WAAW,GAAGA,CAACC,KAAK,EAAEvB,IAAI,KAAK;IACnC,MAAMe,SAAS,GAAGf,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC;IACjC,MAAMlB,OAAO,GAAG;MAAE,GAAGN;IAAK,CAAC;IAC3B,IAAIyB,OAAO,GAAGnB,OAAO;IAErB,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACJ,MAAM,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;MAC7CD,OAAO,GAAGA,OAAO,CAACF,SAAS,CAACG,CAAC,CAAC,CAAC;IACjC;IAEA,MAAME,GAAG,GAAGL,SAAS,CAACA,SAAS,CAACJ,MAAM,GAAG,CAAC,CAAC;;IAE3C;IACA,IAAIY,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,OAAO,EAAE;MACzCN,OAAO,CAACG,GAAG,CAAC,GAAGG,KAAK,KAAK,MAAM;IACjC,CAAC,MAAM,IAAIA,KAAK,KAAK,MAAM,EAAE;MAC3BN,OAAO,CAACG,GAAG,CAAC,GAAG,IAAI;IACrB,CAAC,MAAM,IAAI,CAACI,KAAK,CAACD,KAAK,CAAC,IAAIA,KAAK,KAAK,EAAE,EAAE;MACxCN,OAAO,CAACG,GAAG,CAAC,GAAGK,MAAM,CAACF,KAAK,CAAC;IAC9B,CAAC,MAAM;MACLN,OAAO,CAACG,GAAG,CAAC,GAAGG,KAAK;IACtB;IAEA1B,UAAU,CAACC,OAAO,CAAC;EACrB,CAAC;EAED,MAAM4B,UAAU,GAAGA,CAACC,OAAO,EAAE3B,IAAI,KAAK;IACpC,MAAMe,SAAS,GAAGf,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC;IACjC,MAAMlB,OAAO,GAAG;MAAE,GAAGN;IAAK,CAAC;IAC3B,IAAIyB,OAAO,GAAGnB,OAAO;IAErB,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACJ,MAAM,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;MAC7CD,OAAO,GAAGA,OAAO,CAACF,SAAS,CAACG,CAAC,CAAC,CAAC;IACjC;IAEA,MAAME,GAAG,GAAGL,SAAS,CAACA,SAAS,CAACJ,MAAM,GAAG,CAAC,CAAC;IAE3C,QAAQgB,OAAO;MACb,KAAK,QAAQ;QACXV,OAAO,CAACG,GAAG,CAAC,GAAG,EAAE;QACjB;MACF,KAAK,QAAQ;QACXH,OAAO,CAACG,GAAG,CAAC,GAAG,CAAC;QAChB;MACF,KAAK,SAAS;QACZH,OAAO,CAACG,GAAG,CAAC,GAAG,KAAK;QACpB;MACF,KAAK,OAAO;QACVH,OAAO,CAACG,GAAG,CAAC,GAAG,EAAE;QACjB;MACF,KAAK,QAAQ;QACXH,OAAO,CAACG,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB;MACF,KAAK,MAAM;QACTH,OAAO,CAACG,GAAG,CAAC,GAAG,IAAI;QACnB;MACF;QACEH,OAAO,CAACG,GAAG,CAAC,GAAG,EAAE;IACrB;IAEAvB,UAAU,CAACC,OAAO,CAAC;IACnBH,gBAAgB,CAAC,IAAIC,GAAG,CAAC,CAAC,GAAGF,aAAa,EAAEM,IAAI,CAAC,CAAC,CAAC;EACrD,CAAC;EAED,MAAM4B,SAAS,GAAGA,CAACC,MAAM,EAAEnB,MAAM,EAAEV,IAAI,KAAK;IAC1C,IAAI6B,MAAM,KAAKnB,MAAM,IAAI,CAACA,MAAM,CAACoB,IAAI,CAAC,CAAC,EAAE;IAEzC,MAAMf,SAAS,GAAGf,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC;IACjC,MAAMlB,OAAO,GAAG;MAAE,GAAGN;IAAK,CAAC;IAC3B,IAAIyB,OAAO,GAAGnB,OAAO;;IAErB;IACA,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACJ,MAAM,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;MAC7CD,OAAO,GAAGA,OAAO,CAACF,SAAS,CAACG,CAAC,CAAC,CAAC;IACjC;;IAEA;IACA,IAAID,OAAO,CAACc,cAAc,CAACrB,MAAM,CAAC,EAAE;MAClC,OAAO,CAAC;IACV;;IAEA;IACA,MAAMa,KAAK,GAAGN,OAAO,CAACY,MAAM,CAAC;IAC7B,OAAOZ,OAAO,CAACY,MAAM,CAAC;IACtBZ,OAAO,CAACP,MAAM,CAAC,GAAGa,KAAK;IAEvB1B,UAAU,CAACC,OAAO,CAAC;EACrB,CAAC;EAED,MAAMkC,WAAW,GAAIT,KAAK,IAAK;IAC7B,IAAIA,KAAK,KAAK,IAAI,EAAE,oBAAOtC,OAAA;MAAMgD,SAAS,EAAC,eAAe;MAAAC,QAAA,EAAC;IAAC;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAM,CAAC;IACnE,IAAI,OAAOf,KAAK,KAAK,QAAQ,EAAE,oBAAOtC,OAAA,CAACN,IAAI;MAACsD,SAAS,EAAC;IAAwB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;IACjF,IAAI,OAAOf,KAAK,KAAK,QAAQ,EAAE,oBAAOtC,OAAA,CAACL,IAAI;MAACqD,SAAS,EAAC;IAAuB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;IAChF,IAAI,OAAOf,KAAK,KAAK,SAAS,EAAE,oBAAOtC,OAAA,CAACJ,UAAU;MAACoD,SAAS,EAAC;IAAyB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;IACzF,IAAIC,KAAK,CAACC,OAAO,CAACjB,KAAK,CAAC,EAAE,oBAAOtC,OAAA,CAACH,IAAI;MAACmD,SAAS,EAAC;IAAyB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;IAC7E,IAAI,OAAOf,KAAK,KAAK,QAAQ,EAAE,oBAAOtC,OAAA,CAACF,MAAM;MAACkD,SAAS,EAAC;IAAsB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;IACjF,oBAAOrD,OAAA,CAACN,IAAI;MAACsD,SAAS,EAAC;IAAuB;MAAAE,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAAE,CAAC;EACnD,CAAC;EAED,MAAMG,WAAW,GAAGA,CAAClB,KAAK,EAAEH,GAAG,EAAEpB,IAAI,EAAEqB,UAAU,KAAK;IACpD,MAAMqB,UAAU,GAAGhD,aAAa,CAACQ,GAAG,CAACF,IAAI,CAAC;IAC1C,MAAM2C,SAAS,GAAG,OAAOpB,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI;IAE7D,oBACEtC,OAAA;MAAgBgD,SAAS,EAAC,8DAA8D;MAAAC,QAAA,gBACtFjD,OAAA;QAAKgD,SAAS,EAAC,kCAAkC;QAAAC,QAAA,GAC9CS,SAAS,iBACR1D,OAAA;UACE2D,OAAO,EAAEA,CAAA,KAAM7C,UAAU,CAACC,IAAI,CAAE;UAChCiC,SAAS,EAAC,sDAAsD;UAAAC,QAAA,EAE/DQ,UAAU,gBACTzD,OAAA,CAACR,WAAW;YAACwD,SAAS,EAAC;UAAS;YAAAE,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAAE,CAAC,gBAEnCrD,OAAA,CAACP,YAAY;YAACuD,SAAS,EAAC;UAAS;YAAAE,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAAE;QACpC;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACK,CACT,EAEA,CAACK,SAAS,iBAAI1D,OAAA;UAAKgD,SAAS,EAAC;QAAK;UAAAE,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAE,CAAC,eAEtCrD,OAAA;UAAKgD,SAAS,EAAC,sFAAsF;UAAAC,QAAA,gBACnGjD,OAAA;YAAKgD,SAAS,EAAC,oCAAoC;YAAAC,QAAA,GAChDF,WAAW,CAACT,KAAK,CAAC,eAEnBtC,OAAA;cACE4D,IAAI,EAAC,MAAM;cACXC,YAAY,EAAE1B,GAAI;cAClB2B,MAAM,EAAGC,CAAC,IAAK;gBACb,MAAMtC,MAAM,GAAGsC,CAAC,CAACC,MAAM,CAAC1B,KAAK,CAACO,IAAI,CAAC,CAAC;gBACpC,IAAIpB,MAAM,IAAIA,MAAM,KAAKU,GAAG,EAAE;kBAC5BQ,SAAS,CAACR,GAAG,EAAEV,MAAM,EAAEV,IAAI,CAAC;gBAC9B;cACF,CAAE;cACFkD,SAAS,EAAGF,CAAC,IAAK;gBAChB,IAAIA,CAAC,CAAC5B,GAAG,KAAK,OAAO,EAAE;kBACrB4B,CAAC,CAACC,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB;cACF,CAAE;cACFlB,SAAS,EAAC,wMAAwM;cAClNmB,WAAW,EAAC;YAAe;cAAAjB,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAC5B,CAAC,eAEFrD,OAAA;cAAMgD,SAAS,EAAC,gCAAgC;cAAAC,QAAA,EAAC;YAAC;cAAAC,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAM,CAAC;UAAA;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACtD,CAAC,EAEL,CAACK,SAAS,gBACT1D,OAAA;YACE4D,IAAI,EAAC,MAAM;YACXtB,KAAK,EAAEA,KAAK,KAAK,IAAI,GAAG,MAAM,GAAGA,KAAK,CAAC8B,QAAQ,CAAC,CAAE;YAClDC,QAAQ,EAAGN,CAAC,IAAK1B,WAAW,CAAC0B,CAAC,CAACC,MAAM,CAAC1B,KAAK,EAAEvB,IAAI,CAAE;YACnDiC,SAAS,EAAC,yIAAyI;YACnJmB,WAAW,EAAC;UAAO;YAAAjB,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACpB,CAAC,gBAEFrD,OAAA;YAAMgD,SAAS,EAAC,0CAA0C;YAAAC,QAAA,EACvDK,KAAK,CAACC,OAAO,CAACjB,KAAK,CAAC,GAAG,UAAUA,KAAK,CAACZ,MAAM,SAAS,GAAG,WAAWF,MAAM,CAACD,IAAI,CAACe,KAAK,CAAC,CAACZ,MAAM;UAAc;YAAAwB,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACxG,CACP,eAEDrD,OAAA;YAAKgD,SAAS,EAAC,0CAA0C;YAAAC,QAAA,gBACvDjD,OAAA;cACEsC,KAAK,EACHA,KAAK,KAAK,IAAI,GAAG,MAAM,GACvB,OAAOA,KAAK,KAAK,QAAQ,GAAG,QAAQ,GACpC,OAAOA,KAAK,KAAK,QAAQ,GAAG,QAAQ,GACpC,OAAOA,KAAK,KAAK,SAAS,GAAG,SAAS,GACtCgB,KAAK,CAACC,OAAO,CAACjB,KAAK,CAAC,GAAG,OAAO,GAAG,QAClC;cACD+B,QAAQ,EAAGN,CAAC,IAAKtB,UAAU,CAACsB,CAAC,CAACC,MAAM,CAAC1B,KAAK,EAAEvB,IAAI,CAAE;cAClDiC,SAAS,EAAC,0IAA0I;cAAAC,QAAA,gBAEpJjD,OAAA;gBAAQsC,KAAK,EAAC,QAAQ;gBAAAW,QAAA,EAAC;cAAM;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC,eACtCrD,OAAA;gBAAQsC,KAAK,EAAC,QAAQ;gBAAAW,QAAA,EAAC;cAAM;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC,eACtCrD,OAAA;gBAAQsC,KAAK,EAAC,SAAS;gBAAAW,QAAA,EAAC;cAAO;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC,eACxCrD,OAAA;gBAAQsC,KAAK,EAAC,OAAO;gBAAAW,QAAA,EAAC;cAAK;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC,eACpCrD,OAAA;gBAAQsC,KAAK,EAAC,QAAQ;gBAAAW,QAAA,EAAC;cAAM;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC,eACtCrD,OAAA;gBAAQsC,KAAK,EAAC,MAAM;gBAAAW,QAAA,EAAC;cAAI;gBAAAC,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAQ,CAAC;YAAA;cAAAH,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAC5B,CAAC,eAETrD,OAAA;cACE2D,OAAO,EAAEA,CAAA,KAAMzB,cAAc,CAACC,GAAG,EAAEC,UAAU,CAAE;cAC/CY,SAAS,EAAC,+EAA+E;cACzFsB,KAAK,EAAC,iBAAiB;cAAArB,QAAA,eAEvBjD,OAAA,CAACT,KAAK;gBAACyD,SAAS,EAAC;cAAS;gBAAAE,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAE;YAAC;cAAAH,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OACvB,CAAC;UAAA;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACN,CAAC;QAAA;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACH,CAAC;MAAA;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACH,CAAC,EAELK,SAAS,IAAID,UAAU,iBACtBzD,OAAA;QAAKgD,SAAS,EAAC,MAAM;QAAAC,QAAA,EAClBK,KAAK,CAACC,OAAO,CAACjB,KAAK,CAAC,gBACnBtC,OAAA,CAAAE,SAAA;UAAA+C,QAAA,GACGX,KAAK,CAACiC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KACrBjB,WAAW,CAACgB,IAAI,EAAEC,KAAK,CAACL,QAAQ,CAAC,CAAC,EAAE,GAAGrD,IAAI,IAAI0D,KAAK,EAAE,EAAE1D,IAAI,CAC9D,CAAC,eACDf,OAAA;YACE2D,OAAO,EAAEA,CAAA,KAAMhC,YAAY,CAACW,KAAK,EAAEvB,IAAI,CAAE;YACzCiC,SAAS,EAAC,8GAA8G;YAAAC,QAAA,gBAExHjD,OAAA,CAACV,IAAI;cAAC0D,SAAS,EAAC;YAAS;cAAAE,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAE,CAAC,eAC5BrD,OAAA;cAAAiD,QAAA,EAAM;YAAQ;cAAAC,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAM,CAAC;UAAA;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACf,CAAC;QAAA,eACT,CAAC,gBAEHrD,OAAA,CAAAE,SAAA;UAAA+C,QAAA,GACGzB,MAAM,CAACkD,OAAO,CAACpC,KAAK,CAAC,CAACiC,GAAG,CAAC,CAAC,CAACI,CAAC,EAAEC,CAAC,CAAC,KAChCpB,WAAW,CAACoB,CAAC,EAAED,CAAC,EAAE,GAAG5D,IAAI,IAAI4D,CAAC,EAAE,EAAE5D,IAAI,CACxC,CAAC,eACDf,OAAA;YACE2D,OAAO,EAAEA,CAAA,KAAMvC,WAAW,CAACkB,KAAK,EAAEvB,IAAI,CAAE;YACxCiC,SAAS,EAAC,8GAA8G;YAAAC,QAAA,gBAExHjD,OAAA,CAACV,IAAI;cAAC0D,SAAS,EAAC;YAAS;cAAAE,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAE,CAAC,eAC5BrD,OAAA;cAAAiD,QAAA,EAAM;YAAY;cAAAC,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAM,CAAC;UAAA;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACnB,CAAC;QAAA,eACT;MACH;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACE,CACN;IAAA,GArHOtC,IAAI;MAAAmC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OAsHT,CAAC;EAEV,CAAC;EAED,oBACErD,OAAA;IAAKgD,SAAS,EAAC,+FAA+F;IAAAC,QAAA,gBAC5GjD,OAAA;MAAKgD,SAAS,EAAC,wCAAwC;MAAAC,QAAA,gBACrDjD,OAAA;QAAIgD,SAAS,EAAC,sDAAsD;QAAAC,QAAA,EAAC;MAAsB;QAAAC,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAAI,CAAC,eAChGrD,OAAA;QACE2D,OAAO,EAAEA,CAAA,KAAMvC,WAAW,CAACb,IAAI,EAAE,MAAM,CAAE;QACzCyC,SAAS,EAAC,gGAAgG;QAAAC,QAAA,gBAE1GjD,OAAA,CAACV,IAAI;UAAC0D,SAAS,EAAC;QAAS;UAAAE,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAE,CAAC,eAC5BrD,OAAA;UAAAiD,QAAA,EAAM;QAAY;UAAAC,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAM,CAAC;MAAA;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACnB,CAAC;IAAA;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACN,CAAC,eAENrD,OAAA;MAAKgD,SAAS,EAAC,iBAAiB;MAAC6B,KAAK,EAAE;QAAEC,SAAS,EAAE;MAAqB,CAAE;MAAA7B,QAAA,EACzEzB,MAAM,CAACD,IAAI,CAAChB,IAAI,CAAC,CAACmB,MAAM,KAAK,CAAC,gBAC7B1B,OAAA;QAAKgD,SAAS,EAAC,mDAAmD;QAAAC,QAAA,gBAChEjD,OAAA,CAACF,MAAM;UAACkD,SAAS,EAAC;QAAmC;UAAAE,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAE,CAAC,eACxDrD,OAAA;UAAAiD,QAAA,EAAG;QAA8E;UAAAC,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAG,CAAC;MAAA;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAClF,CAAC,GAEN7B,MAAM,CAACkD,OAAO,CAACnE,IAAI,CAAC,CAACgE,GAAG,CAAC,CAAC,CAACpC,GAAG,EAAEG,KAAK,CAAC,KACpCkB,WAAW,CAAClB,KAAK,EAAEH,GAAG,EAAE,QAAQA,GAAG,EAAE,EAAE,MAAM,CAC/C;IACD;MAAAe,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACE,CAAC;EAAA;IAAAH,QAAA,EAAAC,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OACH,CAAC;AAEV,CAAC;AAAC/C,EAAA,CA/TIH,gBAAgB;AAAA4E,EAAA,GAAhB5E,gBAAgB;AAiUtB,eAAeA,gBAAgB;AAAC,IAAA4E,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}