1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"D:\\\\aiproject\\\\goAgent\\\\todo\\\\client\\\\src\\\\components\\\\TodoItem.js\";\nimport React from 'react';\nimport styled from 'styled-components';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ItemContainer = styled.div`\n display: flex;\n align-items: center;\n padding: 20px;\n background: ${props => props.completed ? '#f8f9fa' : 'white'};\n border: 2px solid ${props => props.completed ? '#e9ecef' : '#f0f0f0'};\n border-radius: 16px;\n transition: all 0.3s ease;\n cursor: ${props => props.isHistory ? 'default' : 'pointer'};\n opacity: ${props => props.completed ? 0.7 : 1};\n\n &:hover {\n border-color: ${props => props.completed ? '#e9ecef' : props.isHistory ? '#f0f0f0' : '#667eea'};\n box-shadow: ${props => props.completed || props.isHistory ? 'none' : '0 6px 16px rgba(102, 126, 234, 0.15)'};\n transform: ${props => props.completed || props.isHistory ? 'none' : 'translateY(-2px)'};\n }\n`;\n_c = ItemContainer;\nconst PriorityIndicator = styled.div`\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: ${props => props.color};\n margin-right: 20px;\n flex-shrink: 0;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n`;\n_c2 = PriorityIndicator;\nconst TodoContent = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 6px;\n`;\n_c3 = TodoContent;\nconst TodoTitle = styled.span`\n font-size: 17px;\n color: ${props => props.completed ? '#6c757d' : '#333'};\n text-decoration: ${props => props.completed ? 'line-through' : 'none'};\n font-weight: 500;\n line-height: 1.4;\n`;\n_c4 = TodoTitle;\nconst PriorityLabel = styled.span`\n font-size: 13px;\n color: ${props => props.color};\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n`;\n_c5 = PriorityLabel;\nconst CheckButton = styled.button`\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: 2px solid ${props => props.completed ? '#28a745' : '#dee2e6'};\n background: ${props => props.completed ? '#28a745' : 'white'};\n cursor: ${props => props.isHistory ? 'default' : 'pointer'};\n transition: all 0.3s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n opacity: ${props => props.isHistory ? 0.6 : 1};\n\n &:hover {\n border-color: ${props => props.isHistory ? props.completed ? '#28a745' : '#dee2e6' : '#28a745'};\n background: ${props => props.completed ? '#28a745' : props.isHistory ? 'white' : 'rgba(40, 167, 69, 0.1)'};\n transform: ${props => props.isHistory ? 'none' : 'scale(1.1)'};\n }\n\n &::after {\n content: '✓';\n color: white;\n font-size: 16px;\n font-weight: bold;\n opacity: ${props => props.completed ? 1 : 0};\n transition: opacity 0.3s ease;\n }\n`;\n_c6 = CheckButton;\nconst priorityConfig = {\n low: {\n color: '#95a5a6',\n label: '低'\n },\n medium: {\n color: '#3498db',\n label: '中'\n },\n high: {\n color: '#e67e22',\n label: '高'\n },\n urgent: {\n color: '#e74c3c',\n label: '急'\n }\n};\nfunction TodoItem({\n todo,\n onToggle,\n isHistory = false\n}) {\n const priority = priorityConfig[todo.priority] || priorityConfig.medium;\n const handleClick = () => {\n if (!isHistory) {\n onToggle(todo.id, !todo.completed);\n }\n };\n return /*#__PURE__*/_jsxDEV(ItemContainer, {\n completed: todo.completed,\n onClick: handleClick,\n isHistory: isHistory,\n children: [/*#__PURE__*/_jsxDEV(PriorityIndicator, {\n color: priority.color\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 103,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(TodoContent, {\n children: [/*#__PURE__*/_jsxDEV(TodoTitle, {\n completed: todo.completed,\n children: todo.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 106,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(PriorityLabel, {\n color: priority.color,\n children: [priority.label, \"\\u4F18\\u5148\\u7EA7\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 109,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 105,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(CheckButton, {\n completed: todo.completed,\n isHistory: isHistory\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 114,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 5\n }, this);\n}\n_c7 = TodoItem;\nexport default TodoItem;\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7;\n$RefreshReg$(_c, \"ItemContainer\");\n$RefreshReg$(_c2, \"PriorityIndicator\");\n$RefreshReg$(_c3, \"TodoContent\");\n$RefreshReg$(_c4, \"TodoTitle\");\n$RefreshReg$(_c5, \"PriorityLabel\");\n$RefreshReg$(_c6, \"CheckButton\");\n$RefreshReg$(_c7, \"TodoItem\");","map":{"version":3,"names":["React","styled","jsxDEV","_jsxDEV","ItemContainer","div","props","completed","isHistory","_c","PriorityIndicator","color","_c2","TodoContent","_c3","TodoTitle","span","_c4","PriorityLabel","_c5","CheckButton","button","_c6","priorityConfig","low","label","medium","high","urgent","TodoItem","todo","onToggle","priority","handleClick","id","onClick","children","fileName","_jsxFileName","lineNumber","columnNumber","title","_c7","$RefreshReg$"],"sources":["D:/aiproject/goAgent/todo/client/src/components/TodoItem.js"],"sourcesContent":["import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst ItemContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 20px;\r\n background: ${props => props.completed ? '#f8f9fa' : 'white'};\r\n border: 2px solid ${props => props.completed ? '#e9ecef' : '#f0f0f0'};\r\n border-radius: 16px;\r\n transition: all 0.3s ease;\r\n cursor: ${props => props.isHistory ? 'default' : 'pointer'};\r\n opacity: ${props => props.completed ? 0.7 : 1};\r\n\r\n &:hover {\r\n border-color: ${props => props.completed ? '#e9ecef' : (props.isHistory ? '#f0f0f0' : '#667eea')};\r\n box-shadow: ${props => (props.completed || props.isHistory) ? 'none' : '0 6px 16px rgba(102, 126, 234, 0.15)'};\r\n transform: ${props => (props.completed || props.isHistory) ? 'none' : 'translateY(-2px)'};\r\n }\r\n`;\r\n\r\nconst PriorityIndicator = styled.div`\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 50%;\r\n background-color: ${props => props.color};\r\n margin-right: 20px;\r\n flex-shrink: 0;\r\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\r\n`;\r\n\r\nconst TodoContent = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n`;\r\n\r\nconst TodoTitle = styled.span`\r\n font-size: 17px;\r\n color: ${props => props.completed ? '#6c757d' : '#333'};\r\n text-decoration: ${props => props.completed ? 'line-through' : 'none'};\r\n font-weight: 500;\r\n line-height: 1.4;\r\n`;\r\n\r\nconst PriorityLabel = styled.span`\r\n font-size: 13px;\r\n color: ${props => props.color};\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n`;\r\n\r\nconst CheckButton = styled.button`\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 50%;\r\n border: 2px solid ${props => props.completed ? '#28a745' : '#dee2e6'};\r\n background: ${props => props.completed ? '#28a745' : 'white'};\r\n cursor: ${props => props.isHistory ? 'default' : 'pointer'};\r\n transition: all 0.3s ease;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n opacity: ${props => props.isHistory ? 0.6 : 1};\r\n\r\n &:hover {\r\n border-color: ${props => props.isHistory ? (props.completed ? '#28a745' : '#dee2e6') : '#28a745'};\r\n background: ${props => props.completed ? '#28a745' : (props.isHistory ? 'white' : 'rgba(40, 167, 69, 0.1)')};\r\n transform: ${props => props.isHistory ? 'none' : 'scale(1.1)'};\r\n }\r\n\r\n &::after {\r\n content: '✓';\r\n color: white;\r\n font-size: 16px;\r\n font-weight: bold;\r\n opacity: ${props => props.completed ? 1 : 0};\r\n transition: opacity 0.3s ease;\r\n }\r\n`;\r\n\r\nconst priorityConfig = {\r\n low: { color: '#95a5a6', label: '低' },\r\n medium: { color: '#3498db', label: '中' },\r\n high: { color: '#e67e22', label: '高' },\r\n urgent: { color: '#e74c3c', label: '急' }\r\n};\r\n\r\nfunction TodoItem({ todo, onToggle, isHistory = false }) {\r\n const priority = priorityConfig[todo.priority] || priorityConfig.medium;\r\n\r\n const handleClick = () => {\r\n if (!isHistory) {\r\n onToggle(todo.id, !todo.completed);\r\n }\r\n };\r\n\r\n return (\r\n <ItemContainer completed={todo.completed} onClick={handleClick} isHistory={isHistory}>\r\n <PriorityIndicator color={priority.color} />\r\n \r\n <TodoContent>\r\n <TodoTitle completed={todo.completed}>\r\n {todo.title}\r\n </TodoTitle>\r\n <PriorityLabel color={priority.color}>\r\n {priority.label}优先级\r\n </PriorityLabel>\r\n </TodoContent>\r\n \r\n <CheckButton completed={todo.completed} isHistory={isHistory} />\r\n </ItemContainer>\r\n );\r\n}\r\n\r\nexport default TodoItem; "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |