seeder-st2110-components 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1215 -8055
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1220 -8056
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/i18n/debug.js","../src/i18n/index.js","../src/componnets/UsageItem.jsx","../src/hooks/useHardwareWebSocket.js","../src/hooks/useHardwareUsage.js","../src/componnets/StyledModal.jsx","../src/componnets/AuthorizationModal.jsx","../src/hooks/useAuth.js","../src/hooks/useUpgrade.js","../src/hooks/useSystemOperations.js","../src/hooks/usePageReload.js","../src/hooks/advanced/useWebSocketWithFeatures.js","../src/locales/zh-CN.js","../src/locales/en-US.js","../src/componnets/NetworkSettingsModal.jsx","../src/componnets/PtpModal.jsx","../src/componnets/PresetModal.component.jsx","../src/componnets/PresetModal.jsx","../src/componnets/UpgradeManager.jsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/componnets/SystemOperations.jsx","../src/hooks/useSpaLogo.js","../src/componnets/CommonHeader.jsx","../src/componnets/LSMLabelField.jsx","../src/componnets/NmosModal.jsx","../src/hooks/useDeviceHealthCheck.js","../src/componnets/MaintenancePage.jsx","../src/componnets/draggable-number-input.js","../src/componnets/BoundedInput.jsx"],"sourcesContent":["/**\n * 国际化调试工具\n * 在浏览器控制台运行 window.debugI18n() 查看当前国际化状态\n */\n\nexport const debugI18n = () => {\n if (typeof window === 'undefined') {\n console.log('[i18n debug] Not in browser environment');\n return;\n }\n\n console.group('🌍 I18n Debug Information');\n \n // 1. 当前语言环境\n console.log('📍 Current Locale Sources:');\n console.log(' - window.g_initialProps?.locale:', window.g_initialProps?.locale);\n console.log(' - window.g_initialProps?.___g_initialPropsFromServer?.locale:', window.g_initialProps?.___g_initialPropsFromServer?.locale);\n \n try {\n console.log(' - localStorage.umi-locale:', localStorage.getItem('umi-locale'));\n } catch (e) {\n console.log(' - localStorage: not available');\n }\n \n console.log(' - window.__COMPONENT_LOCALE__:', window.__COMPONENT_LOCALE__);\n\n // 2. 语言包\n console.log('\\n📦 Available Message Sources:');\n console.log(' - window.__COMPONENT_I18N_MESSAGES__:', window.__COMPONENT_I18N_MESSAGES__);\n console.log(' - window.__PROJECT_I18N_MESSAGES__:', window.__PROJECT_I18N_MESSAGES__);\n console.log(' - window.g_initialProps?.messages:', window.g_initialProps?.messages);\n\n // 3. 合并后的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n const umiMessages = window.g_initialProps?.messages || {};\n \n const allLocales = new Set([\n ...Object.keys(componentMessages),\n ...Object.keys(projectMessages),\n ...Object.keys(umiMessages)\n ]);\n\n console.log('\\n🔧 Merged Locales:', Array.from(allLocales));\n \n allLocales.forEach(locale => {\n const merged = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n console.log(`\\n 📄 ${locale} (${Object.keys(merged).length} keys):`, merged);\n });\n\n // 4. 测试几个关键的 key\n console.log('\\n🧪 Test Translation:');\n const testKeys = [\n 'networkSettings.title',\n 'button.ok',\n 'button.cancel',\n 'button.apply',\n 'button.close'\n ];\n \n const currentLocale = window.g_initialProps?.locale || \n window.g_initialProps?.___g_initialPropsFromServer?.locale ||\n localStorage.getItem('umi-locale') ||\n 'zh-CN';\n \n const allMessages = {};\n allLocales.forEach(locale => {\n allMessages[locale] = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n });\n \n testKeys.forEach(key => {\n const translation = allMessages[currentLocale]?.[key] || \n allMessages['en-US']?.[key] || \n '❌ NOT FOUND';\n console.log(` - ${key}: ${translation}`);\n });\n\n console.groupEnd();\n};\n\n// 自动在开发环境注册到 window\nif (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n window.debugI18n = debugI18n;\n console.log('💡 I18n debug tool available. Run window.debugI18n() in console to check i18n status.');\n}\n\nexport default debugI18n;\n","/**\n * seeder-st2110-components 组件库国际化 Hook\n * \n * 设计目标:\n * 1. 不依赖特定的国际化库(react-intl, i18next 等)\n * 2. 可以与主项目(Umi)的国际化集成\n * 3. 支持简单的变量替换\n * 4. 降级处理:如果没有翻译,显示 key 本身\n */\n\n/**\n * 获取当前语言环境\n * 优先从 Umi 全局变量读取,其次使用默认值\n */\nconst getLocale = () => {\n // 尝试从 Umi 获取语言设置\n if (typeof window !== 'undefined') {\n // 方式 1:Umi 的运行时语言(通过 umi 的 locale 服务)\n // Umi 会在 window.g_lang 或 window.LOCALE 中存储当前语言\n if (window.g_lang) {\n return window.g_lang;\n }\n if (window.LOCALE) {\n return window.LOCALE;\n }\n \n // 方式 2:Umi 的 g_initialProps\n if (window.g_initialProps?.locale) {\n return window.g_initialProps.locale;\n }\n \n // 方式 3:Umi 的全局语言标记\n if (window.g_initialProps?.___g_initialPropsFromServer?.locale) {\n return window.g_initialProps.___g_initialPropsFromServer.locale;\n }\n \n // 方式 4:Umi 的 globalInitialProps\n if (window.g_initialPropsFromServer?.locale) {\n return window.g_initialPropsFromServer.locale;\n }\n \n // 方式 5:从 localStorage 读取(Umi 默认行为)\n try {\n const storedLocale = localStorage.getItem('umi-locale');\n if (storedLocale) {\n return storedLocale;\n }\n } catch (e) {\n // localStorage 不可用时忽略\n }\n \n // 方式 6:组件库自定义语言标记\n if (window.__COMPONENT_LOCALE__) {\n return window.__COMPONENT_LOCALE__;\n }\n }\n // 默认语言:英文(与 Umi 配置一致)\n return 'en-US';\n};\n\n/**\n * 获取语言包\n * 优先从主项目读取,其次使用组件库自带的语言包\n */\nconst getMessages = () => {\n if (typeof window !== 'undefined') {\n // 尝试从多个来源读取语言包\n const messages = {};\n \n // 1. 组件库注册的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n \n // 2. 主项目的语言包\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n \n // 3. Umi 的语言包\n const umiMessages = window.g_initialProps?.messages || {};\n \n // 合并语言包(组件库的优先级最高,其次是主项目,最后是 Umi)\n const allLocales = new Set([\n ...Object.keys(componentMessages),\n ...Object.keys(projectMessages),\n ...Object.keys(umiMessages)\n ]);\n \n allLocales.forEach(locale => {\n messages[locale] = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n });\n \n return messages;\n }\n return {};\n};\n\n/**\n * 格式化消息\n * @param {string} id - 国际化 key\n * @param {object} values - 变量替换值\n * @param {string} locale - 语言环境\n * @param {object} messages - 语言包\n */\nconst formatMessage = ({ id }, values = {}, locale, messages) => {\n const message = messages[locale]?.[id] || messages['en-US']?.[id] || id;\n \n // 支持变量替换 {min}, {max}, {value} 等\n return message.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return values[key] !== undefined ? values[key] : match;\n });\n};\n\n/**\n * 国际化 Hook\n * \n * @returns {{\n * locale: string,\n * formatMessage: function,\n * messages: object\n * }}\n * \n * @example\n * const intl = useIntl();\n * const title = intl.formatMessage({ id: 'networkSettings.title' });\n * const message = intl.formatMessage({ id: 'validation.minLength' }, { min: 3 });\n */\nexport const useIntl = () => {\n const locale = getLocale();\n const messages = getMessages();\n \n const formatMessageFn = ({ id }, values = {}) => {\n return formatMessage({ id }, values, locale, messages);\n };\n \n return {\n locale,\n formatMessage: formatMessageFn,\n messages\n };\n};\n\n/**\n * 注册语言包(可选)\n * 如果需要在运行时注册语言包,可以调用此函数\n * \n * @param {string} locale - 语言代码\n * @param {object} messages - 语言包对象\n */\nexport const addMessages = (locale, messages) => {\n if (typeof window !== 'undefined') {\n if (!window.__COMPONENT_I18N_MESSAGES__) {\n window.__COMPONENT_I18N_MESSAGES__ = {};\n }\n window.__COMPONENT_I18N_MESSAGES__[locale] = messages;\n }\n};\n\nexport default {\n useIntl,\n addMessages,\n getLocale,\n getMessages,\n formatMessage\n};\n\nexport { debugI18n } from './debug';\n","import { memo } from \"react\";\r\nimport { Tooltip } from \"antd\";\r\nimport { useIntl } from '../i18n';\r\n\r\n// 格式化字节大小为更易读的形式\r\nconst formatBytes = (bytes, decimals = 1) => {\r\n if (bytes === 0 || !bytes || bytes < 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\nconst UsageItem = memo(({ title, iconClass, children, memTotal }) => {\r\n const intl = useIntl();\r\n \r\n return (\r\n <Tooltip \r\n title={\r\n <>\r\n <div>{title}</div>\r\n {title === intl.formatMessage({ id: 'usage.memory' }) && memTotal !== undefined && (\r\n <div>{intl.formatMessage({ id: 'usage.totalMemory' })}: {formatBytes(memTotal)}</div>\r\n )}\r\n </>\r\n } \r\n destroyOnHidden={false}\r\n >\r\n <div className=\"usage-item\">\r\n <i className={`seeder-iconfont ${iconClass} text-xl`} />\r\n <span className=\"usage-value\">{children}</span>\r\n </div>\r\n </Tooltip>\r\n );\r\n});\r\n\r\nexport default UsageItem;","import { useEffect, useState, useCallback } from 'react';\r\nimport { useWebSocket } from 'ahooks';\r\n\r\nconst useHardwareWebSocket = (socketUrl) => {\r\n const [systemStatus, setSystemStatus] = useState();\r\n\r\n const handleMessage = useCallback((message) => {\r\n try {\r\n if (message) {\r\n setSystemStatus(prev => ({\r\n ...prev,\r\n ...message,\r\n // lastUpdated: Date.now() // 添加更新时间戳\r\n }));\r\n }\r\n } catch (error) {\r\n console.error('Message processing error:', error);\r\n }\r\n }, []);\r\n\r\n // ## 获取系统资源使用情况\r\n const { latestMessage } = useWebSocket(socketUrl, {\r\n onMessage: (event) => {\r\n // 处理实时消息\r\n try {\r\n const parsedMessage = JSON.parse(event.data);\r\n handleMessage(parsedMessage);\r\n } catch (error) {\r\n console.error('Message parsing error:', error);\r\n console.debug('Raw message:', event.data);\r\n }\r\n }\r\n });\r\n\r\n // // 监听消息 latestMessage 只用于非实时需求\r\n // useEffect(() => {\r\n // if (!latestMessage?.data) return;\r\n\r\n // try {\r\n // const parsedMessage = JSON.parse(latestMessage.data);\r\n // handleMessage(parsedMessage);\r\n // } catch (error) {\r\n // console.error('Message parsing error:', error);\r\n // console.debug('Raw message:', latestMessage.data);\r\n // }\r\n // }, [latestMessage?.data, handleMessage]);\r\n\r\n return { ps_status: systemStatus }\r\n}\r\n\r\nexport default useHardwareWebSocket ;","import { useMemo } from \"react\";\r\nimport UsageItem from \"../componnets/UsageItem.jsx\";\r\nimport useHardwareWebSocket from './useHardwareWebSocket.js';\r\nimport { useIntl } from '../i18n';\r\n\r\n// 获取网卡最高温度(支持动态字段检查)\r\nconst getMaxNicTemp = (sensors, priorityFields = [\"i350bb\", \"r8169_0_8300:00\"]) => {\r\n const temps = priorityFields\r\n .flatMap(field => sensors?.[field]?.map(item => item.current) || [])\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\n// 获取数组类型传感器最高温度(如内存、硬盘)\r\nconst getMaxSensorTemp = (sensorData) => {\r\n const temps = (sensorData || [])\r\n .map(item => item.current)\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\nconst getDetail = (status = {}) => {\r\n const { cpu_percent, mem, sensors_temperatures, gpu_stats } = status;\r\n\r\n return {\r\n cpu_usage: cpu_percent ?? null,\r\n cpu_temp: sensors_temperatures?.coretemp?.[0]?.current ?? null,\r\n mem_total: mem?.total ?? null,\r\n mem_usage: mem?.percent ?? null,\r\n mem_temp: getMaxSensorTemp(sensors_temperatures?.spd5118),\r\n nic_temp: getMaxNicTemp(sensors_temperatures) ?? null,\r\n hd_temp: getMaxSensorTemp(sensors_temperatures?.nvme),\r\n gpu_usage: gpu_stats?.[0]?.[\"utilization.gpu\"] ?? null,\r\n gpu_temp: gpu_stats?.[0]?.[\"temperature.gpu\"] ?? null,\r\n };\r\n};\r\n\r\n// 提取公共逻辑\r\nconst createMetricItem = (\r\n title,\r\n iconClass,\r\n value,\r\n unit\r\n) => {\r\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\r\n\r\n return {\r\n title,\r\n iconClass,\r\n valueString: `${numValue}${unit}`,\r\n value: numValue,\r\n };\r\n};\r\n\r\nconst getItems = (details, intl) => {\r\n const items = [];\r\n\r\n if (details.cpu_usage !== null && details.cpu_usage !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.cpu' }), 'seeder-icon-CPU', details.cpu_usage, '%'));\r\n }\r\n\r\n if (details.cpu_temp !== null && details.cpu_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.cpuTemp' }), 'seeder-icon-CPUwendu', details.cpu_temp, '℃'));\r\n }\r\n\r\n if (details.mem_usage !== null && details.mem_usage !== undefined) {\r\n items.push({\r\n ...createMetricItem(intl.formatMessage({ id: 'usage.memory' }), 'seeder-icon-shiyongshuai', details.mem_usage, '%'),\r\n memTotal: details.mem_total,\r\n });\r\n }\r\n\r\n if (details.mem_temp !== null && details.mem_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.memTemp' }), 'seeder-icon-wendu', details.mem_temp, '℃'));\r\n }\r\n\r\n if (details.nic_temp !== null && details.nic_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.nicTemp' }), 'seeder-icon-wuliwangka', details.nic_temp, '℃'));\r\n }\r\n\r\n if (details.hd_temp !== null && details.hd_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.diskTemp' }), 'seeder-icon-yingpan', details.hd_temp, '℃'));\r\n }\r\n\r\n if (details.gpu_usage !== null && details.gpu_usage !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.gpu' }), 'seeder-icon-gpufuwu', details.gpu_usage, '%'));\r\n }\r\n\r\n if (details.gpu_temp !== null && details.gpu_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.gpuTemp' }), 'seeder-icon-CPUwendu', details.gpu_temp, '℃'));\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst useHardwareUsage = (socketUrl) => {\r\n const intl = useIntl();\r\n const { ps_status } = useHardwareWebSocket(socketUrl);\r\n\r\n return useMemo(() => {\r\n if (!ps_status || typeof ps_status !== 'object') return null;\r\n\r\n const statusItems = getItems(getDetail(ps_status), intl);\r\n\r\n return (\r\n <div className=\"usage-container\">\r\n {statusItems.map((item, index) => (\r\n <div key={item.title} className=\"usage-item-wrapper\">\r\n <UsageItem \r\n title={item.title}\r\n iconClass={item.iconClass} \r\n memTotal={item.memTotal}\r\n >\r\n {item.valueString}\r\n </UsageItem>\r\n {/* {index < statusItems.length - 1 && <Divider type=\"vertical\" />} */}\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n }, [ps_status]);\r\n}\r\n\r\nexport default useHardwareUsage;","import { Modal } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst StyledModal = (props) => {\r\n const intl = useIntl();\r\n const {\r\n width = \"520px\",\r\n okText = \"button.apply\",\r\n cancelText = \"button.close\",\r\n styles: propStyles = {},\r\n ...restProps\r\n } = props;\r\n\r\n // 处理国际化文本\r\n const okButtonText = typeof okText === 'string' && okText.includes('.') \r\n ? intl.formatMessage({ id: okText }) \r\n : okText;\r\n \r\n const cancelButtonText = typeof cancelText === 'string' && cancelText.includes('.') \r\n ? intl.formatMessage({ id: cancelText }) \r\n : cancelText;\r\n\r\n // 基础样式配置\r\n const baseStyles = {\r\n content: {\r\n padding: 0,\r\n // background: \"#282828\"\r\n },\r\n header: {\r\n marginBottom: 0,\r\n padding: 0,\r\n paddingBlock: 16,\r\n paddingInlineStart: 24,\r\n background: \"#000000\"\r\n },\r\n body: {\r\n paddingBlock: 20,\r\n paddingInline: 24\r\n },\r\n footer: {\r\n marginTop: 0,\r\n padding: 0,\r\n paddingBlockEnd: 20,\r\n paddingInline: 24\r\n }\r\n };\r\n\r\n // 合并样式\r\n const styles = {\r\n ...baseStyles,\r\n ...propStyles\r\n };\r\n\r\n return (\r\n <Modal\r\n width={width}\r\n okText={okButtonText}\r\n cancelText={cancelButtonText}\r\n styles={styles}\r\n {...restProps}\r\n />\r\n );\r\n};\r\n\r\nexport default StyledModal;","import { useState } from 'react';\r\nimport { Form, Input, Alert, App } from 'antd';\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst AuthorizationModal = ({\r\n onCancel,\r\n onOk,\r\n authData,\r\n title = 'license.title',\r\n okText,\r\n cancelText = 'license.button.ignore',\r\n width = 600\r\n}) => {\r\n const intl = useIntl();\r\n const { message } = App.useApp();\r\n const [code, setCode] = useState('');\r\n\r\n const {\r\n accredit_status: isActivated,\r\n message: statusMessage,\r\n bios_id: uuid,\r\n expires_time: expiresTime\r\n } = authData || {};\r\n\r\n // 服务端返回的状态文本映射到国际化 key\r\n const getStatusMessageKey = (msg) => {\r\n if (!msg) return 'license.status.unactivated';\r\n \r\n // 根据服务端返回的英文文本映射\r\n const statusMap = {\r\n 'Already activated': 'license.status.activated',\r\n 'Unactivated': 'license.status.unactivated',\r\n 'Expired': 'license.status.expired',\r\n 'Invalid': 'license.status.invalid'\r\n };\r\n \r\n return statusMap[msg] || 'license.status.unactivated';\r\n };\r\n\r\n const statusMessageKey = getStatusMessageKey(statusMessage);\r\n\r\n const handleOk = () => {\r\n const trimmedCode = code.trim();\r\n if (!trimmedCode) {\r\n message.error(intl.formatMessage({ id: 'license.validation.keyRequired' }));\r\n return;\r\n }\r\n onOk(trimmedCode);\r\n }\r\n \r\n const statusAlert = isActivated ? (\r\n <Alert\r\n message={`${intl.formatMessage({ id: statusMessageKey })}, ${intl.formatMessage({ id: 'license.status.expiresOn' })} ${expiresTime}`}\r\n type=\"success\"\r\n showIcon\r\n />\r\n ) : (\r\n <Alert message={intl.formatMessage({ id: statusMessageKey })} type=\"warning\" showIcon />\r\n );\r\n\r\n const defaultOkText = isActivated ? intl.formatMessage({ id: 'license.button.reactivate' }) : intl.formatMessage({ id: 'license.button.activate' });\r\n\r\n return (\r\n <StyledModal\r\n title={intl.formatMessage({ id: title })}\r\n width={width}\r\n open={true}\r\n onCancel={onCancel}\r\n onOk={handleOk}\r\n okText={okText || defaultOkText}\r\n cancelText={intl.formatMessage({ id: cancelText })}\r\n cancelButtonProps={{ disabled: !isActivated }}\r\n maskClosable={false}\r\n closable={false}\r\n >\r\n <Form\r\n name=\"auth_form\"\r\n labelCol={{ span: 6 }}\r\n wrapperCol={{ span: 18 }}\r\n autoComplete=\"off\"\r\n >\r\n <div style={{ marginBottom: 16 }}>{statusAlert}</div>\r\n <Form.Item label={intl.formatMessage({ id: 'license.machineCode' })} required>\r\n <Input value={uuid} readOnly />\r\n </Form.Item>\r\n <Form.Item label={intl.formatMessage({ id: 'license.key' })} required>\r\n <Input.TextArea\r\n value={code}\r\n onChange={(e) => setCode(e.target.value)}\r\n autoSize={{ minRows: 6, maxRows: 6 }}\r\n placeholder={intl.formatMessage({ id: 'license.placeholder.enterKey' })}\r\n />\r\n </Form.Item>\r\n </Form>\r\n </StyledModal>\r\n );\r\n}\r\n\r\nexport default AuthorizationModal;","import { useState, useEffect, useCallback } from 'react';\r\nimport { message } from 'antd';\r\nimport AuthorizationModal from '../componnets/AuthorizationModal.jsx';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst DEFAULT_AUTH = {\r\n accredit_status: false, // 授权状态\r\n bios_id: '', // 主机 id\r\n message: 'license.status.unactivated', // 激活信息\r\n expires_time: '' // 授权到期时间\r\n}\r\n\r\nexport const useAuth = (options) => {\r\n const intl = useIntl();\r\n const {\r\n fetchAuthInfo,\r\n authorize,\r\n defaultAuthData = DEFAULT_AUTH,\r\n autoShowModal = true\r\n } = options || {};\r\n\r\n const [messageApi, contextHolder] = message.useMessage();\r\n const [showModal, setShowModal] = useState(false); // 默认隐藏\r\n const [authData, setAuthData] = useState(defaultAuthData);\r\n const [isRegistered, setIsRegistered] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const openModal = useCallback(() => setShowModal(true), []);\r\n const closeModal = useCallback(() => setShowModal(false), []);\r\n\r\n useEffect(() => {\r\n async function loadAuthInfo() {\r\n try {\r\n setLoading(true);\r\n const result = await fetchAuthInfo();\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n setAuthData(commands);\r\n setIsRegistered(commands.accredit_status);\r\n if (autoShowModal) {\r\n commands.accredit_status ? closeModal() : openModal();\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch auth info:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n loadAuthInfo();\r\n }, [fetchAuthInfo, autoShowModal, openModal, closeModal]);\r\n\r\n const auth = async (code) => {\r\n try {\r\n setLoading(true);\r\n const result = await authorize({\r\n type: \"accredit_command\",\r\n commands: {\r\n id: \"LICENSE\",\r\n license_data: code\r\n }\r\n });\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n // type accredit_message\r\n if (commands?.accredit_status) {\r\n setIsRegistered(true);\r\n setAuthData(commands);\r\n closeModal();\r\n } else {\r\n // 处理错误消息的国际化\r\n const errorMsg = commands.ciphertext_status || 'license.error.authorizationFailed';\r\n const errorMessage = typeof errorMsg === 'string' && errorMsg.includes('.') \r\n ? intl.formatMessage({ id: errorMsg }) \r\n : errorMsg;\r\n messageApi.error(errorMessage);\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Authorization error:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const modal = showModal && (\r\n <>\r\n <AuthorizationModal\r\n onOk={auth}\r\n onCancel={closeModal}\r\n authData={authData}\r\n />\r\n {contextHolder}\r\n </>\r\n );\r\n\r\n return {\r\n AuthModal: modal,\r\n openAuthModal: openModal,\r\n closeAuthModal: closeModal,\r\n isRegistered,\r\n authData,\r\n loading\r\n };\r\n};","import { useRef, useState, useEffect, useMemo } from \"react\";\r\nimport { Spin, message, Dropdown } from \"antd\";\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\nimport { useInterval } from \"ahooks\";\r\nimport axios from 'axios';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst useUpgrade = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute, // 上传接口:(formData, config) => Promise<response>\r\n upgradeStatus, // 状态轮询接口:(config) => Promise<response>\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000\r\n}) => {\r\n const intl = useIntl();\r\n const [isSpinning, setIsSpinning] = useState(false);\r\n const [pollingInterval, setPollingInterval] = useState(undefined); // 间隔时间,当设置值为 undefined 时会停止计时器\r\n const [currentStatus, setCurrentStatus] = useState(intl.formatMessage({ id: 'upgrade.status.idle' })); // 'idle' | 'uploading' | 'Upload complete, starting upgrade...' | 'upgrading'\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n\r\n const inputRef = useRef(null);\r\n // 控制并发上传\r\n const isUploadingRef = useRef(false);\r\n // 标记组件是否已卸载\r\n const isMountedRef = useRef(true);\r\n\r\n // 分别创建独立的取消令牌\r\n const uploadCancelToken = useRef(axios.CancelToken.source());\r\n const statusCancelToken = useRef(axios.CancelToken.source());\r\n\r\n const showLoader = () => setIsSpinning(true);\r\n const hideLoader = () => setIsSpinning(false);\r\n\r\n // 构建菜单项 - 确保至少包含download和upload\r\n // 构建菜单项 - 最终完美版本\r\n const finalMenuItems = useMemo(() => {\r\n const hasDownload = menuItems.some(item => item.key === 'download');\r\n const hasUpload = menuItems.some(item => item.key === 'upload');\r\n \r\n if (hasDownload && hasUpload) {\r\n return menuItems;\r\n }\r\n \r\n const licenseIndex = menuItems.findIndex(item => item.key === 'license');\r\n \r\n // 如果没有 license,在末尾添加\r\n if (licenseIndex === -1) {\r\n const itemsToAdd = [];\r\n if (menuItems.length > 0) itemsToAdd.push({ type: 'divider' });\r\n // if (!hasDownload) itemsToAdd.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\r\n if (!hasUpload) itemsToAdd.push({ key: \"upload\", label: intl.formatMessage({ id: 'upgrade.menu.softwareUpdate' }) });\r\n return [...menuItems, ...itemsToAdd];\r\n }\r\n \r\n // 有 license,在 license 前面插入\r\n const beforeLicense = menuItems.slice(0, licenseIndex);\r\n const licenseItem = menuItems[licenseIndex];\r\n const afterLicense = menuItems.slice(licenseIndex + 1);\r\n \r\n const itemsToInsert = [];\r\n \r\n // 1. 前面的分隔符(如果 beforeLicense 不为空且最后一项不是分隔符)\r\n if (beforeLicense.length > 0 && beforeLicense[beforeLicense.length - 1].type !== 'divider') {\r\n itemsToInsert.push({ type: 'divider' });\r\n }\r\n \r\n // 2. 添加缺少的项\r\n // if (!hasDownload) itemsToInsert.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\r\n if (!hasUpload) itemsToInsert.push({ key: \"upload\", label: intl.formatMessage({ id: 'upgrade.menu.softwareUpdate' }) });\r\n \r\n // 3. 后面的分隔符(与 license 之间)\r\n itemsToInsert.push({ type: 'divider' });\r\n \r\n return [...beforeLicense, ...itemsToInsert, licenseItem, ...afterLicense];\r\n }, [menuItems, intl]);\r\n\r\n const handleMenuClick = ({ key }) => {\r\n switch (key) {\r\n case 'download':\r\n onDownload();\r\n return;\r\n case 'upload':\r\n onUpload();\r\n return;\r\n default:\r\n // 其他菜单项交给外部回调处理\r\n if (onMenuClick) {\r\n onMenuClick(key);\r\n } else {\r\n console.warn(`Unknown menu key: ${key} and no onMenuClick provided`);\r\n }\r\n }\r\n };\r\n\r\n const onDownload = async () => {\r\n if (!downloadFiles) {\r\n console.error('downloadFiles function is required for download operation');\r\n message.error(intl.formatMessage({ id: 'upgrade.error.downloadNotConfigured' }));\r\n return;\r\n }\r\n\r\n try {\r\n const res = await downloadFiles();\r\n\r\n if (res.status !== 200) {\r\n throw new Error(`Unexpected status code: ${res.status}`);\r\n }\r\n\r\n // 默认值,兼容接口响应头没有定义文件名\r\n let fileName = 'config.tar.gz';\r\n const contentDisposition = res.headers['content-disposition'] || '';\r\n\r\n // 获取接口响应的content-disposition字段值,以便获取到文件名\r\n if (contentDisposition) {\r\n const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/i);\r\n if (filenameMatch?.[1]) {\r\n fileName = decodeURIComponent(filenameMatch[1]); // 处理编码后的文件名(如 %20 转空格)\r\n }\r\n }\r\n\r\n // 创建并下载文件\r\n const blob = new Blob([res.data], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n\r\n // 下面就是创建一个 a 标签并触发 click 事件,来下载该文件\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n link.href = url;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // 最后移除 a 标签并删除创建的 ObjectURL 对象,防止内存泄漏\r\n link.parentNode.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n } catch (error) {\r\n console.error('Download failed:', error);\r\n message.error(intl.formatMessage({ id: 'upgrade.error.downloadFailed' }));\r\n }\r\n }\r\n\r\n const onUpload = () => {\r\n if (inputRef?.current && !isUploadingRef.current) {\r\n inputRef.current.click();\r\n }\r\n }\r\n\r\n const updatePackage = async (event) => {\r\n if (isUploadingRef.current) return; // 防止重复上传\r\n\r\n const file = event.target.files?.[0];\r\n if (!file || !upgradeExecute) {\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n return;\r\n }\r\n\r\n isUploadingRef.current = true;\r\n showLoader();\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.uploading' }));\r\n setUploadProgress(0);\r\n\r\n // 重置取消令牌\r\n uploadCancelToken.current.cancel();\r\n uploadCancelToken.current = axios.CancelToken.source();\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n // 清除文件选择\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n\r\n // 上传后立即检查业务状态码\r\n // upgradeExecute 使用 umi request 返回的数据是过滤过的\r\n const response = await upgradeExecute(formData, {\r\n onUploadProgress: (progressEvent) => {\r\n if (!isMountedRef.current) return;\r\n const percentCompleted = Math.round(\r\n (progressEvent.loaded * 100) / progressEvent.total\r\n );\r\n setUploadProgress(percentCompleted); // 更新进度状态\r\n },\r\n cancelToken: uploadCancelToken.current.token\r\n });\r\n \r\n // 检查业务 code\r\n if (response?.code !== 200) {\r\n // 即使上传成功,但如果服务器返回非 200,说明有问题\r\n if (isMountedRef.current) {\r\n const errorMsg = response?.message || intl.formatMessage({ id: 'upgrade.error.invalidFileFormat' });\r\n message.error(errorMsg);\r\n cancelRequest();\r\n }\r\n return;\r\n }\r\n\r\n // 上传成功,进入等待升级阶段\r\n if (!isMountedRef.current) return;\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.uploadComplete' }));\r\n\r\n // 延迟后启动轮询\r\n setTimeout(() => {\r\n if (!isMountedRef.current) return;\r\n setPollingInterval(statusPollingInterval);\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.upgrading' }));\r\n }, uploadCompleteDelay);\r\n } catch (error) {\r\n if (!isMountedRef.current) return;\r\n\r\n if (!axios.isCancel(error)) {\r\n console.error(\"Upload error:\", error);\r\n message.error(intl.formatMessage({ id: 'upgrade.error.uploadFailed' }));\r\n }\r\n cancelRequest();\r\n } finally {\r\n if (isMountedRef.current) {\r\n isUploadingRef.current = false;\r\n }\r\n }\r\n }\r\n\r\n const fetchUpgradeStatus = async () => {\r\n if (!upgradeStatus || !isMountedRef.current) return;\r\n\r\n try {\r\n // upgradeStatus 使用 axios request 返回的数据没有过滤\r\n const response = await upgradeStatus({\r\n cancelToken: statusCancelToken.current.token\r\n });\r\n\r\n if (response?.status === 200) {\r\n const { code, message: statusMessage } = response.data;\r\n\r\n // 状态处理\r\n switch (code) {\r\n case 200: // 升级成功\r\n message.success(statusMessage, 2.5, () => {\r\n if (isMountedRef.current) {\r\n cancelRequest();\r\n }\r\n window.location.reload();\r\n });\r\n break;\r\n \r\n case 201: // 升级中 — 继续轮询\r\n break;\r\n case 202: // 升级失败\r\n case 203: // 升级异常\r\n if (isMountedRef.current) {\r\n message.error(statusMessage);\r\n cancelRequest();\r\n }\r\n break;\r\n \r\n default:\r\n // 其他 code 如 500、400 等\r\n if (isMountedRef.current) {\r\n message.error(statusMessage || intl.formatMessage({ id: 'upgrade.error.upgradeFailed' }));\r\n cancelRequest();\r\n }\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (!isMountedRef.current) return;\r\n\r\n if (!axios.isCancel(error)) {\r\n console.error('Status check failed:', error);\r\n }\r\n }\r\n }\r\n\r\n const cancelRequest = () => {\r\n // 取消状态轮询\r\n uploadCancelToken.current.cancel('Operation canceled');\r\n statusCancelToken.current.cancel('Operation canceled');\r\n \r\n uploadCancelToken.current = axios.CancelToken.source();\r\n statusCancelToken.current = axios.CancelToken.source();\r\n \r\n // 重置所有状态\r\n setPollingInterval(undefined);\r\n setCurrentStatus('idle');\r\n setUploadProgress(0);\r\n isUploadingRef.current = false;\r\n hideLoader();\r\n };\r\n\r\n // 轮询状态\r\n useInterval(fetchUpgradeStatus, pollingInterval);\r\n\r\n // 组件卸载时清理\r\n useEffect(() => {\r\n return () => {\r\n isMountedRef.current = false;\r\n uploadCancelToken.current.cancel();\r\n statusCancelToken.current.cancel();\r\n };\r\n }, []);\r\n\r\n const upgradeElement = (\r\n <div>\r\n <Dropdown \r\n menu={{ \r\n items: finalMenuItems, \r\n onClick: handleMenuClick\r\n }} \r\n trigger={[\"hover\"]}\r\n >\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className=\"seeder-iconfont seeder-icon-liebiao2 text-xl text-neutral-400\"></i>\r\n </a>\r\n </Dropdown>\r\n <input \r\n ref={inputRef} \r\n type=\"file\" \r\n onChange={updatePackage} \r\n className=\"hidden\"\r\n accept={acceptFileTypes}\r\n />\r\n <Spin \r\n spinning={isSpinning} \r\n indicator={<LoadingOutlined style={{ fontSize: 60 }} spin />}\r\n tip={\r\n currentStatus === intl.formatMessage({ id: 'upgrade.status.uploading' })\r\n ? `${currentStatus} ${uploadProgress}%` \r\n : currentStatus\r\n }\r\n size=\"large\"\r\n fullscreen\r\n />\r\n </div>\r\n )\r\n\r\n return [upgradeElement];\r\n}\r\n\r\nexport default useUpgrade;","import { useCallback } from 'react';\r\nimport { App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { useIntl } from '../i18n';\r\n\r\nconst useSystemOperations = ({\r\n onPowerOff,\r\n onRestart,\r\n confirmTitle = \"system.confirm.title\",\r\n cancelText = \"system.button.cancel\",\r\n okText = \"system.button.confirm\",\r\n run\r\n} = {}) => {\r\n const intl = useIntl();\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n // 处理国际化文本\r\n const confirmTitleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') \r\n ? intl.formatMessage({ id: confirmTitle }) \r\n : confirmTitle;\r\n const cancelTextValue = typeof cancelText === 'string' && cancelText.includes('.') \r\n ? intl.formatMessage({ id: cancelText }) \r\n : cancelText;\r\n const okTextValue = typeof okText === 'string' && okText.includes('.') \r\n ? intl.formatMessage({ id: okText }) \r\n : okText;\r\n\r\n const doAction = useCallback((action) => {\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: `${confirmTitleText} ${action === 'poweroff' ? intl.formatMessage({ id: 'system.action.powerOff' }) : intl.formatMessage({ id: 'system.action.restart' })}?`,\r\n cancelText: cancelTextValue,\r\n okText: okTextValue,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }, [AntdModal, confirmTitleText, cancelTextValue, okTextValue, onPowerOff, onRestart, intl]);\r\n\r\n const getMenuItems = useCallback(() => [\r\n {\r\n key: \"poweroff\",\r\n label: intl.formatMessage({ id: 'system.poweroff' }),\r\n },\r\n {\r\n key: \"restart\",\r\n label: intl.formatMessage({ id: 'system.restart' }),\r\n }\r\n ], [intl]);\r\n\r\n const handleMenuClick = useCallback(({ key }) => {\r\n doAction(key);\r\n }, [doAction]);\r\n\r\n return {\r\n menuItems: getMenuItems(),\r\n handleMenuClick\r\n };\r\n};\r\n\r\nexport default useSystemOperations;","import { useState, useCallback } from 'react';\r\nimport { Spin } from 'antd';\r\n\r\nconst usePageReload = () => {\r\n const [reloading, setReloading] = useState(false);\r\n \r\n const startReload = useCallback((delay = 800) => {\r\n if (reloading) return; // 防止重复触发\r\n\r\n // 显示遮罩\r\n setReloading(true);\r\n \r\n // 设置背景色\r\n document.body.style.backgroundColor = '#282828';\r\n document.body.style.transition = 'background-color 0.1s';\r\n document.body.offsetHeight;\r\n \r\n // 延迟刷新\r\n const timer = setTimeout(() => {\r\n window.location.reload();\r\n }, delay);\r\n\r\n // 清理函数(防止内存泄漏)\r\n return () => clearTimeout(timer);\r\n }, [reloading]);\r\n \r\n const ReloadOverlay = () => {\r\n if (!reloading) return null;\r\n \r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: '#282828',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 999999,\r\n color: 'white'\r\n }}>\r\n <Spin size=\"large\" />\r\n <div style={{ marginTop: 20, fontSize: 16 }}>\r\n Loading preset configuration...\r\n </div>\r\n <div style={{ marginTop: 10, fontSize: 12, color: '#aaa' }}>\r\n Page will refresh shortly\r\n </div>\r\n </div>\r\n );\r\n };\r\n \r\n return { startReload, ReloadOverlay };\r\n};\r\n\r\nexport default usePageReload;","import { useWebSocket } from 'ahooks';\r\nimport { useEffect, useCallback, useRef, useMemo, useState } from 'react';\r\n\r\nconst getReadyStateText = (state) => {\r\n const states = { \r\n 0: 'CONNECTING', \r\n 1: 'OPEN', \r\n 2: 'CLOSING', \r\n 3: 'CLOSED' \r\n };\r\n return states[state] || `UNKNOWN(${state})`;\r\n};\r\n\r\n// 创建空日志器\r\nconst createDummyLogger = () => {\r\n const dummyFn = () => {};\r\n return {\r\n log: dummyFn,\r\n exportLogs: dummyFn,\r\n getLogStats: () => ({\r\n total: 0,\r\n errors: 0,\r\n warnings: 0,\r\n info: 0,\r\n lastTimestamp: null\r\n }),\r\n clearLogs: dummyFn,\r\n logs: []\r\n };\r\n};\r\n\r\n// 创建通用的日志器\r\nconst createGlobalLogger = (webSocketUrl = '') => {\r\n const logs = [];\r\n const maxLogs = 1000;\r\n\r\n // 判断是否为开发环境\r\n const isDevelopment = process.env.NODE_ENV === 'development';\r\n\r\n const log = (level, message, data = {}) => {\r\n const timestamp = new Date().toISOString();\r\n const logEntry = {\r\n timestamp,\r\n level,\r\n message,\r\n data,\r\n timestampDisplay: new Date().toLocaleString('zh-CN', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false\r\n })\r\n };\r\n\r\n logs.push(logEntry);\r\n if (logs.length > maxLogs) logs.shift();\r\n\r\n // 只在开发环境下输出到控制台\r\n if (isDevelopment) {\r\n const consoleMessage = `[${logEntry.timestampDisplay}] [WebSocket] [${level}] ${message}`;\r\n const consoleArgs = [consoleMessage];\r\n if (Object.keys(data).length > 0) consoleArgs.push(data);\r\n\r\n switch (level) {\r\n case 'ERROR': console.error(...consoleArgs); break;\r\n case 'WARN': console.warn(...consoleArgs); break;\r\n case 'INFO': console.info(...consoleArgs); break;\r\n default: console.log(...consoleArgs);\r\n }\r\n }\r\n\r\n return logEntry;\r\n };\r\n\r\n const exportLogs = (filenamePrefix = 'websocket') => {\r\n if (logs.length === 0) {\r\n log('WARN', '没有日志可导出', { filenamePrefix });\r\n return;\r\n }\r\n\r\n const logText = logs.map(entry => \r\n `[${entry.timestampDisplay}] [${entry.level}] ${entry.message}\\n数据: ${JSON.stringify(entry.data, null, 2)}`\r\n ).join('\\n' + '='.repeat(50) + '\\n');\r\n\r\n const blob = new Blob([logText], { type: 'text/plain;charset=utf-8' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n let hostname = 'unknown';\r\n let pathname = 'unknown';\r\n \r\n try {\r\n if (webSocketUrl) {\r\n const urlObj = new URL(webSocketUrl.replace(/^ws/, 'http'));\r\n hostname = urlObj.hostname.replace(/\\./g, '-');\r\n pathname = urlObj.pathname\r\n .replace(/\\//g, '-')\r\n .replace(/^-|-$/g, '') \r\n || 'root';\r\n }\r\n } catch (error) {\r\n console.warn('无法解析WebSocket URL:', error);\r\n }\r\n\r\n const readableTime = new Date().toLocaleString('zh-CN', {\r\n year: 'numeric', month: '2-digit', day: '2-digit',\r\n hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false\r\n }).replace(/[\\/:\\s]/g, '-');\r\n\r\n const filename = `${filenamePrefix}-${hostname}-${pathname}-${readableTime}.log`;\r\n\r\n const a = document.createElement('a');\r\n a.href = blobUrl;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n log('INFO', '日志文件已导出', { count: logs.length, filename });\r\n };\r\n\r\n const getLogStats = () => ({\r\n total: logs.length,\r\n errors: logs.filter(l => l.level === 'ERROR').length,\r\n warnings: logs.filter(l => l.level === 'WARN').length,\r\n info: logs.filter(l => l.level === 'INFO').length,\r\n lastTimestamp: logs[logs.length - 1]?.timestampDisplay\r\n });\r\n\r\n const clearLogs = () => {\r\n logs.length = 0;\r\n log('INFO', '日志已清空');\r\n };\r\n\r\n return { log, exportLogs, getLogStats, clearLogs, logs };\r\n};\r\n\r\n// 心跳管理器\r\nconst useHeartbeat = (sendMessage, readyState, config, logger, enabled = true) => {\r\n const heartbeatTimerRef = useRef(null);\r\n const lastHeartbeatTimeRef = useRef(Date.now());\r\n const isMountedRef = useRef(true);\r\n\r\n const configRef = useRef({\r\n interval: config?.interval || 20000,\r\n message: config?.message || { type: 'ping' }\r\n });\r\n\r\n const stateRef = useRef({\r\n sendMessage,\r\n readyState,\r\n enabled\r\n });\r\n\r\n useEffect(() => {\r\n configRef.current = {\r\n interval: config?.interval || 20000,\r\n message: config?.message || { type: 'ping' }\r\n };\r\n }, [config?.interval, config?.message]);\r\n\r\n useEffect(() => {\r\n stateRef.current = {\r\n sendMessage,\r\n readyState,\r\n enabled\r\n };\r\n }, [sendMessage, readyState, enabled]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n isMountedRef.current = false;\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const stopHeartbeat = useCallback(() => {\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n heartbeatTimerRef.current = null;\r\n if (stateRef.current.enabled) {\r\n logger.log('INFO', '停止心跳机制');\r\n }\r\n }\r\n }, [logger]);\r\n\r\n const startHeartbeat = useCallback(() => {\r\n stopHeartbeat();\r\n\r\n const currentState = stateRef.current;\r\n const currentConfig = configRef.current;\r\n \r\n if (!currentState.enabled) return;\r\n\r\n logger.log('INFO', '启动心跳机制', { interval: currentConfig.interval });\r\n\r\n heartbeatTimerRef.current = setInterval(() => {\r\n // 检查组件是否挂载\r\n if (!isMountedRef.current || !heartbeatTimerRef.current) {\r\n return;\r\n }\r\n \r\n // 目的: 总是获取最新的值\r\n const latestState = stateRef.current;\r\n const latestConfig = configRef.current;\r\n \r\n if (latestState.sendMessage && latestState.readyState === 1) {\r\n try {\r\n latestState.sendMessage(JSON.stringify(latestConfig.message));\r\n lastHeartbeatTimeRef.current = Date.now();\r\n logger.log('DEBUG', '发送心跳包', {\r\n timeSinceLastHeartbeat: Date.now() - lastHeartbeatTimeRef.current,\r\n readyState: getReadyStateText(latestState.readyState)\r\n });\r\n } catch (error) {\r\n logger.log('ERROR', '发送心跳失败', {\r\n error: error.message,\r\n readyState: getReadyStateText(latestState.readyState)\r\n });\r\n }\r\n }\r\n }, currentConfig.interval);\r\n }, [stopHeartbeat, logger]);\r\n\r\n // 自动管理心跳\r\n useEffect(() => {\r\n const currentState = stateRef.current;\r\n \r\n if (currentState.enabled) {\r\n if (currentState.readyState === 1) {\r\n startHeartbeat();\r\n } else {\r\n stopHeartbeat();\r\n }\r\n } else {\r\n stopHeartbeat();\r\n }\r\n\r\n return () => {\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n heartbeatTimerRef.current = null;\r\n }\r\n };\r\n }, [readyState, enabled, startHeartbeat, stopHeartbeat]);\r\n\r\n const heartbeatImpl = useMemo(() => {\r\n if (!enabled) {\r\n return {\r\n startHeartbeat: () => {},\r\n stopHeartbeat: () => {},\r\n getLastHeartbeatTime: () => null,\r\n isEnabled: false\r\n };\r\n }\r\n\r\n return {\r\n startHeartbeat,\r\n stopHeartbeat,\r\n getLastHeartbeatTime: () => lastHeartbeatTimeRef.current,\r\n isEnabled: true\r\n };\r\n }, [enabled, startHeartbeat, stopHeartbeat]);\r\n\r\n return heartbeatImpl;\r\n};\r\n\r\nconst useWebSocketWithFeatures = (config) => {\r\n const { url, options = {}, heartbeat: heartbeatConfig = false, enableLog = true } = config;\r\n const [isConnected, setIsConnected] = useState(false);\r\n\r\n // 创建 logger 实例\r\n const logger = useMemo(() => {\r\n if (enableLog) {\r\n return createGlobalLogger(url);\r\n }\r\n return createDummyLogger();\r\n }, [url, enableLog]);\r\n\r\n const websocketOptions = useMemo(() => ({\r\n ...options,\r\n onOpen: (event) => {\r\n logger.log('INFO', 'WebSocket 连接成功', {\r\n url,\r\n readyState: getReadyStateText(1), // 连接成功时 readyState 为 1\r\n eventCode: event?.code\r\n });\r\n setIsConnected(true);\r\n options.onOpen?.(event);\r\n },\r\n onError: (error) => {\r\n logger.log('ERROR', 'WebSocket 连接错误', {\r\n url,\r\n error: error.message,\r\n errorType: error.type,\r\n readyState: getReadyStateText(3) // 错误时 readyState 为 3\r\n });\r\n setIsConnected(false);\r\n options.onError?.(error);\r\n },\r\n onClose: (event) => {\r\n logger.log('WARN', 'WebSocket 连接断开', {\r\n url,\r\n code: event.code,\r\n reason: event.reason,\r\n wasClean: event.wasClean,\r\n readyState: getReadyStateText(3) // 关闭时 readyState 为 3\r\n });\r\n setIsConnected(false);\r\n options.onClose?.(event);\r\n },\r\n onReconnect: (count) => {\r\n logger.log('INFO', '尝试重新连接', { \r\n url,\r\n attempt: count,\r\n maxAttempts: options.reconnectLimit || 10\r\n });\r\n options.onReconnect?.(count);\r\n }\r\n }), [url, options, logger]);\r\n\r\n const {\r\n latestMessage,\r\n readyState, \r\n sendMessage,\r\n connect,\r\n disconnect\r\n } = useWebSocket(url, websocketOptions);\r\n\r\n const heartbeatOptions = useMemo(() => \r\n heartbeatConfig === true ? {} : heartbeatConfig,\r\n [heartbeatConfig]\r\n );\r\n\r\n const heartbeatEnabled = useMemo(() => \r\n heartbeatConfig !== false,\r\n [heartbeatConfig]\r\n );\r\n\r\n const heartbeat = useHeartbeat(\r\n sendMessage, \r\n readyState, \r\n heartbeatOptions,\r\n logger,\r\n heartbeatEnabled\r\n );\r\n\r\n // 在全局暴露日志方法\r\n useEffect(() => {\r\n if (typeof window !== 'undefined' && enableLog) {\r\n // 生成唯一的键名:基于URL进行base64编码\r\n const key = `exportWebSocketLogs_${btoa(url)}`;\r\n // 在window对象上添加方法\r\n window[key] = () => logger.exportLogs();\r\n }\r\n\r\n return () => {\r\n if (typeof window !== 'undefined' && enableLog) {\r\n const key = `exportWebSocketLogs_${btoa(url)}`;\r\n delete window[key];\r\n }\r\n };\r\n }, [url, enableLog, logger]);\r\n\r\n const loggerMethods = useMemo(() => ({\r\n log: (level, message, data) => logger.log(level, message, data),\r\n exportLogs: () => logger.exportLogs(),\r\n getLogStats: () => logger.getLogStats(),\r\n clearLogs: () => logger.clearLogs()\r\n }), [logger]);\r\n\r\n return {\r\n latestMessage,\r\n readyState,\r\n sendMessage,\r\n connect,\r\n disconnect,\r\n isConnected,\r\n readyStateText: getReadyStateText(readyState),\r\n \r\n // 心跳功能\r\n heartbeat,\r\n // 日志功能\r\n logger: enableLog ? loggerMethods : null\r\n };\r\n}\r\n\r\nexport default useWebSocketWithFeatures;\r\n\r\n// 在控制台中直接查看所有可用的导出方法 Object.keys(window).filter(key => key.startsWith('exportWebSocketLogs_'))\r\n// 导出特定连接的日志 window['exportWebSocketLogs_d3M6Ly8xOTIuMTY4LjEyMy4yMDQvd3MvZHZyL3ZpZGVvX3N0YXR1c19jaGFuZ2U=']();","// seeder-st2110-components 组件库中文语言包\r\nexport default {\r\n // 通用按钮\r\n 'button.close': '关闭',\r\n 'button.apply': '应用',\r\n 'button.cancel': '取消',\r\n 'button.delete': '删除',\r\n \r\n // 输入框占位符\r\n 'input.placeholder.enterInteger': '请输入整数',\r\n 'input.placeholder.enterPort': '请输入端口 (0-65535)',\r\n 'input.placeholder.enterPayload': '请输入负载 (96-127)',\r\n \r\n // 使用率显示\r\n 'usage.memory': '内存使用率',\r\n 'usage.totalMemory': '内存总量',\r\n 'usage.cpu': 'CPU 使用率',\r\n 'usage.disk': '磁盘使用率',\r\n 'usage.cpuTemp': 'CPU 温度',\r\n 'usage.memTemp': '内存温度',\r\n 'usage.nicTemp': '网卡温度',\r\n 'usage.diskTemp': '硬盘温度',\r\n 'usage.gpu': 'GPU 使用率',\r\n 'usage.gpuTemp': 'GPU 温度',\r\n \r\n // 菜单\r\n 'menu.networkSettings': '网络设置',\r\n 'menu.ptp': 'PTP',\r\n 'menu.nmos': 'NMOS',\r\n 'menu.preset': '预设',\r\n 'menu.license': '许可证',\r\n 'menu.maintenance': '维护',\r\n 'menu.system': '系统',\r\n \r\n // Network Settings Modal\r\n 'networkSettings.title': '网络设置',\r\n 'networkSettings.name': '名称',\r\n 'networkSettings.ipAddress': 'IP 地址',\r\n 'networkSettings.subnetMask': '子网掩码',\r\n 'networkSettings.restartRequired': '需要重启才能应用更改。是否立即重启?',\r\n 'networkSettings.restartNow': '立即重启',\r\n 'networkSettings.restartLater': '稍后重启',\r\n 'networkSettings.saveSuccess': '保存成功',\r\n \r\n // PTP Modal\r\n 'ptp.title': 'PTP',\r\n 'ptp.domainNumber': '域编号',\r\n 'ptp.priority1': '优先级 1',\r\n 'ptp.priority2': '优先级 2',\r\n 'ptp.grandmasterIdentity': '主时钟 ID',\r\n 'ptp.portIdentity': '端口标识',\r\n 'ptp.clockClass': '时钟等级',\r\n 'ptp.clockClass.atomic': '原子钟 ({value})',\r\n 'ptp.clockClass.gps': 'GPS ({value})',\r\n 'ptp.clockClass.slaveOnly': '仅从时钟 ({value})',\r\n 'ptp.clockAccuracy': '时钟精度',\r\n 'ptp.offsetScaledLogVariance': '时钟偏移方差',\r\n 'ptp.utcOffset': 'UTC 偏移',\r\n 'ptp.connectedStatus': '连接状态',\r\n 'ptp.lockedStatus': '锁定状态',\r\n 'ptp.connected': '已连接',\r\n 'ptp.disconnected': '未连接',\r\n 'ptp.locked': '已锁定',\r\n 'ptp.unlocked': '未锁定',\r\n 'ptp.saveSuccess': '保存成功',\r\n 'ptp.unknown': '未知',\r\n \r\n // NMOS Modal\r\n 'nmos.title': 'NMOS',\r\n 'nmos.hostAddress': '主机地址',\r\n 'nmos.domain': '域名',\r\n 'nmos.registryAddress': '注册中心地址',\r\n 'nmos.registrationPort': '注册中心端口',\r\n 'nmos.registryVersion': '注册中心版本',\r\n 'nmos.loggingLevel': '日志级别',\r\n 'nmos.placeholder.selectHostAddress': '选择主机地址',\r\n 'nmos.placeholder.selectVersion': '选择版本',\r\n 'nmos.saveSuccess': '保存成功',\r\n \r\n // Preset Modal\r\n 'preset.title': '预设管理',\r\n 'preset.name': '名称',\r\n 'preset.categories': '分类',\r\n 'preset.description': '描述',\r\n 'preset.placeholder.enterName': '请输入名称',\r\n 'preset.placeholder.enterDescription': '请输入描述',\r\n 'preset.header.name': '名称',\r\n 'preset.header.createTime': '创建时间',\r\n 'preset.header.description': '描述',\r\n 'preset.button.new': '新建预设',\r\n 'preset.button.delete': '删除',\r\n 'preset.button.load': '加载',\r\n 'preset.button.save': '保存',\r\n 'preset.button.edit': '编辑',\r\n 'preset.button.cancel': '取消',\r\n 'preset.button.import': '导入',\r\n 'preset.button.export': '导出',\r\n 'preset.empty.noData': '从列表中选择一个预设查看详情',\r\n 'preset.unsaved.detected': '检测到未保存的预设',\r\n 'preset.empty.create': '创建新预设',\r\n 'preset.untitled': '未命名',\r\n 'preset.delete.title': '删除预设',\r\n 'preset.delete.confirmMessage': '确定要删除预设',\r\n 'preset.load.title': '加载预设',\r\n 'preset.load.confirmMessage': '确定要加载预设',\r\n 'preset.load.loading': '加载中...',\r\n 'preset.success': '成功',\r\n 'preset.validation.nameRequired': '名称是必填项',\r\n 'preset.validation.categoryRequired': '请选择分类',\r\n 'preset.error.noSelectionOrIdMissing': '未选择预设或预设 ID 缺失',\r\n 'preset.import.invalidFile': '请选择 .preset 格式的文件',\r\n \r\n // License/Auth Modal\r\n 'license.title': '注册许可证',\r\n 'license.machineCode': '机器码',\r\n 'license.key': '许可证密钥',\r\n 'license.placeholder.enterKey': '请输入许可证密钥',\r\n 'license.button.activate': '立即激活',\r\n 'license.button.reactivate': '重新激活',\r\n 'license.button.ignore': '忽略',\r\n 'license.status.unactivated': '未激活',\r\n 'license.status.activated': '已激活',\r\n 'license.status.expired': '已过期',\r\n 'license.status.invalid': '无效',\r\n 'license.status.expiresOn': '到期时间',\r\n 'license.validation.keyRequired': '许可证密钥不能为空',\r\n 'license.error.authorizationFailed': '授权失败',\r\n \r\n // 升级相关\r\n 'upgrade.menu.download': '导出配置',\r\n 'upgrade.menu.softwareUpdate': '软件升级',\r\n 'upgrade.status.idle': '空闲',\r\n 'upgrade.status.uploading': '上传中',\r\n 'upgrade.status.uploadComplete': '上传完成,开始升级...',\r\n 'upgrade.status.upgrading': '升级中...',\r\n 'upgrade.error.downloadNotConfigured': '下载功能未配置',\r\n 'upgrade.error.downloadFailed': '下载失败',\r\n 'upgrade.error.uploadFailed': '上传失败',\r\n 'upgrade.error.invalidFileFormat': '上传失败:文件格式无效',\r\n 'upgrade.error.upgradeFailed': '升级失败',\r\n \r\n // 系统操作\r\n 'system.poweroff': '关机',\r\n 'system.restart': '重启',\r\n 'system.action.powerOff': '关闭',\r\n 'system.action.restart': '重启',\r\n 'system.confirm.title': '确认操作',\r\n 'system.confirm.message': '确定要{action}系统吗?此操作无法撤销。',\r\n 'system.button.cancel': '取消',\r\n 'system.button.confirm': '确认',\r\n \r\n // Maintenance page\r\n 'maintenance.restarting': '系统正在重启...',\r\n 'maintenance.poweredOff': '系统已关闭',\r\n 'maintenance.waiting': '请等待系统启动...',\r\n 'maintenance.redirecting.countdown': '将在 {countdown} 秒后自动跳转',\r\n 'maintenance.waiting.long': '系统仍在启动中,这可能需要一些时间...',\r\n 'maintenance.retry': '重试连接',\r\n 'maintenance.offline.description': '系统当前处于离线状态,请联系管理员开启设备。',\r\n \r\n // LSM Label\r\n 'lsm.label': '标签',\r\n 'lsm.placeholder.select': '请选择标签',\r\n};\r\n","// seeder-st2110-components component library English language pack\nexport default {\n // General buttons\n 'button.close': 'Close',\n 'button.apply': 'Apply',\n 'button.cancel': 'Cancel',\n 'button.delete': 'Delete',\n \n // Input placeholders\n 'input.placeholder.enterInteger': 'Enter an integer',\n 'input.placeholder.enterPort': ' Enter port (0-65535)',\n 'input.placeholder.enterPayload': 'Enter payload (96-127)',\n \n // Usage display\n 'usage.memory': 'Memory Usage',\n 'usage.totalMemory': 'Total Memory',\n 'usage.cpu': 'CPU Usage',\n 'usage.disk': 'Disk Usage',\n 'usage.cpuTemp': 'CPU Temperature',\n 'usage.memTemp': 'Memory Temperature',\n 'usage.nicTemp': 'NIC Temperature',\n 'usage.diskTemp': 'Disk Temperature',\n 'usage.gpu': 'GPU Usage',\n 'usage.gpuTemp': 'GPU Temperature',\n \n // Menu\n 'menu.networkSettings': 'Network Settings',\n 'menu.ptp': 'PTP',\n 'menu.nmos': 'NMOS',\n 'menu.preset': 'Preset',\n 'menu.license': 'License',\n 'menu.maintenance': 'Maintenance',\n 'menu.system': 'System',\n \n // Network Settings Modal\n 'networkSettings.title': 'Network Settings',\n 'networkSettings.name': 'Name',\n 'networkSettings.ipAddress': 'IP Address',\n 'networkSettings.subnetMask': 'Netmask',\n 'networkSettings.restartRequired': 'Restart is required to apply the changes. Do you want to restart now?',\n 'networkSettings.restartNow': 'Restart Now',\n 'networkSettings.restartLater': 'Restart Later',\n 'networkSettings.saveSuccess': 'Success',\n \n // PTP Modal\n 'ptp.title': 'PTP',\n 'ptp.domainNumber': 'Domain',\n 'ptp.priority1': 'Priority 1',\n 'ptp.priority2': 'Priority 2',\n 'ptp.grandmasterIdentity': 'Grandmaster Identity',\n 'ptp.portIdentity': 'Port Identity',\n 'ptp.clockClass': 'Clock Class',\n 'ptp.clockClass.atomic': 'Atomic Clock ({value})',\n 'ptp.clockClass.gps': 'GPS ({value})',\n 'ptp.clockClass.slaveOnly': 'Slave-Only ({value})',\n 'ptp.clockAccuracy': 'Clock Accuracy',\n 'ptp.offsetScaledLogVariance': 'Offset Scaled Log Variance',\n 'ptp.utcOffset': 'UTC Offset',\n 'ptp.connectedStatus': 'Connected Status',\n 'ptp.lockedStatus': 'Locked Status',\n 'ptp.connected': 'Connected',\n 'ptp.disconnected': 'Disconnected',\n 'ptp.locked': 'Locked',\n 'ptp.unlocked': 'Unlocked',\n 'ptp.saveSuccess': 'Success',\n 'ptp.unknown': 'Unknown',\n \n // NMOS Modal\n 'nmos.title': 'NMOS',\n 'nmos.hostAddress': 'Host Addresses',\n 'nmos.domain': 'Domain',\n 'nmos.registryAddress': 'Registry Address',\n 'nmos.registrationPort': 'Registry Port',\n 'nmos.registryVersion': 'Registry Version',\n 'nmos.loggingLevel': 'Logging Level',\n 'nmos.placeholder.selectHostAddress': 'Select IP address',\n 'nmos.placeholder.selectVersion': 'Select version',\n 'nmos.saveSuccess': 'Success',\n \n // Preset Modal\n 'preset.title': 'Preset Management',\n 'preset.name': 'Name',\n 'preset.categories': 'Categories',\n 'preset.description': 'Description',\n 'preset.placeholder.enterName': 'Enter name',\n 'preset.placeholder.enterDescription': 'Enter description',\n 'preset.header.name': 'Name',\n 'preset.header.createTime': 'Create Time',\n 'preset.header.description': 'Description',\n 'preset.button.new': 'New Preset',\n 'preset.button.delete': 'Delete',\n 'preset.button.load': 'Load',\n 'preset.button.save': 'Save',\n 'preset.button.edit': 'Edit',\n 'preset.button.cancel': 'Cancel',\n 'preset.button.import': 'Import',\n 'preset.button.export': 'Export',\n 'preset.empty.noData': 'Select a preset from the list to view details',\n 'preset.unsaved.detected': 'Existing unsaved preset detected',\n 'preset.empty.create': 'Create New Preset',\n 'preset.untitled': 'Untitled',\n 'preset.delete.title': 'Delete Preset',\n 'preset.delete.confirmMessage': 'Are you sure you want to delete preset',\n 'preset.load.title': 'Load Preset',\n 'preset.load.confirmMessage': 'Are you sure you want to load preset',\n 'preset.load.loading': 'Loading...',\n 'preset.success': 'Success',\n 'preset.validation.nameRequired': 'Name is required',\n 'preset.validation.categoryRequired': 'No category selected',\n 'preset.error.noSelectionOrIdMissing': 'No preset selected or preset ID is missing',\n 'preset.import.invalidFile': 'Please select a file with the .preset extension.',\n \n // License/Auth Modal\n 'license.title': 'Register License',\n 'license.machineCode': 'Machine Code',\n 'license.key': 'License Key',\n 'license.placeholder.enterKey': 'Enter your license key',\n 'license.button.activate': 'Activate Now',\n 'license.button.reactivate': 'Reactivate',\n 'license.button.ignore': 'Ignore',\n 'license.status.unactivated': 'Unactivated',\n 'license.status.activated': 'Already activated',\n 'license.status.expired': 'Expired',\n 'license.status.invalid': 'Invalid',\n 'license.status.expiresOn': 'will expire on',\n 'license.validation.keyRequired': 'License key cannot be empty',\n 'license.error.authorizationFailed': 'Authorization failed',\n \n // Upgrade related\n 'upgrade.menu.download': 'Download Config File',\n 'upgrade.menu.softwareUpdate': 'Software Update',\n 'upgrade.status.idle': 'Idle',\n 'upgrade.status.uploading': 'Uploading...',\n 'upgrade.status.uploadComplete': 'Upload complete, starting upgrade...',\n 'upgrade.status.upgrading': 'Upgrading...',\n 'upgrade.error.downloadNotConfigured': 'Download functionality not configured',\n 'upgrade.error.downloadFailed': 'Download failed',\n 'upgrade.error.uploadFailed': 'Upload failed',\n 'upgrade.error.invalidFileFormat': 'Upload failed: Invalid file format',\n 'upgrade.error.upgradeFailed': 'Upgrade failed',\n \n // System operations\n 'system.poweroff': 'Power Off',\n 'system.restart': 'Restart',\n 'system.action.powerOff': 'power off',\n 'system.action.restart': 'restart',\n 'system.confirm.title': 'Confirmation Required',\n 'system.confirm.message': 'Are you sure you want to {action} the system? This action cannot be undone.',\n 'system.button.cancel': 'Cancel',\n 'system.button.confirm': 'Confirm',\n \n // Maintenance page\n 'maintenance.restarting': 'System is restarting...',\n 'maintenance.poweredOff': 'System is powered off',\n 'maintenance.waiting': 'Please wait while the system is starting up...',\n 'maintenance.redirecting.countdown': 'Redirecting automatically in {countdown} second{countdown, plural, one {} other {s}}',\n 'maintenance.waiting.long': 'Still starting up... This may take a moment.',\n 'maintenance.retry': 'Retry connection',\n 'maintenance.offline.description': 'The system is currently offline. Please contact your administrator to power it on.',\n \n // LSM Label\n 'lsm.label': 'Label',\n 'lsm.placeholder.select': 'Select label',\n};\n","import { memo, useEffect, useMemo, useState, useCallback, useRef } from 'react';\r\nimport { Form, App, Typography, Divider, Input } from 'antd';\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst NetworkFieldGroup = ({ prefix, interfaces, fieldConfig = {} }) => {\r\n const intl = useIntl();\r\n \r\n // 默认字段配置\r\n const defaultFieldConfig = {\r\n name: { label: intl.formatMessage({ id: 'networkSettings.name' }), enabled: true },\r\n ip: { label: intl.formatMessage({ id: 'networkSettings.ipAddress' }), enabled: true },\r\n netmask: { label: intl.formatMessage({ id: 'networkSettings.subnetMask' }), enabled: true }\r\n };\r\n \r\n const mergedFieldConfig = {\r\n ...defaultFieldConfig,\r\n ...fieldConfig,\r\n netmask: {\r\n label: defaultFieldConfig.netmask.label,\r\n enabled: fieldConfig.netmask?.enabled ?? defaultFieldConfig.netmask.enabled,\r\n }\r\n };\r\n \r\n return (\r\n <>\r\n <Typography.Title\r\n level={5}\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n marginBottom: 16\r\n }}\r\n >\r\n {prefix}\r\n </Typography.Title>\r\n {interfaces.map((iface, index) => (\r\n <div key={iface.id || index}>\r\n {mergedFieldConfig.name.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.name.label}\r\n name={[prefix, index, \"display_name\"]}\r\n >\r\n <Input disabled />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.ip.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.ip.label}\r\n name={[prefix, index, \"ip_address\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.netmask.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.netmask.label}\r\n name={[prefix, index, \"netmask\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {index < interfaces.length - 1 && <Divider style={{ marginBlock: 16 }} />}\r\n </div>\r\n ))}\r\n </>\r\n )\r\n};\r\n\r\nconst NetworkSettingsModal = ({\r\n open, \r\n onClose, \r\n getLanConfig, // 可选 - 单独获取 LAN 配置的函数\r\n getSysConfig, // 可选 - 单独获取 QSFP 配置的函数\r\n getConfig, // 可选 - 统一获取配置的函数 ipgweb 专用\r\n updateLanConfig, \r\n updateSysConfig, \r\n restart,\r\n onRestartSuccess, // 重启成功后的回调(可选)\r\n modalProps = {},\r\n formProps = {},\r\n fieldConfig = {},\r\n sections = ['LAN', 'QSFP'],\r\n showNetmask = { LAN: true, QSFP: false },\r\n restartRemark\r\n}) => {\r\n const intl = useIntl();\r\n const { message, modal } = App.useApp();\r\n const [form] = Form.useForm();\r\n\r\n const [st2110Interfaces, setSt2110Interfaces] = useState([]);\r\n const [lanConfigs, setLanConfigs] = useState([]);\r\n const [submitLoading, setSubmitLoading] = useState(false);\r\n const [isInitialized, setIsInitialized] = useState(false);\r\n\r\n // 用于保存原始 QSFP 数据,供无 getSysConfig 时做对比\r\n const originalSt2110InterfacesRef = useRef([]);\r\n\r\n const initializationStatus = useRef({\r\n hasFetched: false,\r\n hasInitialized: false\r\n });\r\n\r\n const preparedFieldConfig = useMemo(() => {\r\n const config = { ...fieldConfig };\r\n \r\n // 确保LAN和QSFP的配置存在\r\n config.LAN = config.LAN || {};\r\n config.QSFP = config.QSFP || {};\r\n\r\n if (sections.includes('LAN')) {\r\n config.LAN.netmask = {\r\n ...(config.LAN.netmask || {}),\r\n enabled: showNetmask.LAN\r\n };\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n config.QSFP.netmask = {\r\n ...(config.QSFP.netmask || {}),\r\n enabled: showNetmask.QSFP\r\n };\r\n }\r\n\r\n return config;\r\n }, [fieldConfig, showNetmask, sections]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n \r\n const fetchData = async () => {\r\n if (initializationStatus.current.hasFetched) return;\r\n \r\n try {\r\n initializationStatus.current.hasFetched = true;\r\n\r\n if (getConfig) {\r\n // 使用统一接口获取数据\r\n const config = await getConfig();\r\n if (sections.includes('LAN') && config.lan_interfaces) {\r\n setLanConfigs(config.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && config.interfaces) {\r\n const interfaces = config.interfaces;\r\n setSt2110Interfaces(interfaces);\r\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\r\n }\r\n } else {\r\n const promises = [];\r\n if (sections.includes('LAN')) {\r\n promises.push(getLanConfig());\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n promises.push(getSysConfig());\r\n }\r\n\r\n const results = await Promise.allSettled(promises);\r\n\r\n if (sections.includes('LAN') && getLanConfig) {\r\n const lanResult = results[0];\r\n if (lanResult.status === 'fulfilled') {\r\n setLanConfigs(lanResult.value || []);\r\n }\r\n }\r\n \r\n if (sections.includes('QSFP') && getSysConfig) {\r\n const sysResult = sections.includes('LAN') ? results[1] : results[0];\r\n if (sysResult.status === 'fulfilled' && sysResult.value) {\r\n const interfaces = sysResult.value.st2110_interfaces || [];\r\n setSt2110Interfaces(interfaces);\r\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\r\n }\r\n }\r\n }\r\n \r\n setIsInitialized(true);\r\n } catch (error) {\r\n console.error('Failed to fetch data:', error);\r\n initializationStatus.current.hasFetched = false; // 出错时重置\r\n }\r\n };\r\n\r\n fetchData();\r\n }, [open, getLanConfig, getSysConfig, getConfig, sections]); \r\n\r\n // 当模态框关闭时重置状态\r\n useEffect(() => {\r\n if (!open) {\r\n setIsInitialized(false);\r\n setLanConfigs([]);\r\n setSt2110Interfaces([]);\r\n form.resetFields();\r\n initializationStatus.current = { hasFetched: false, hasInitialized: false };\r\n originalSt2110InterfacesRef.current = [];\r\n }\r\n }, [open, form]);\r\n\r\n // 动态初始值配置\r\n const initialValues = useMemo(() => {\r\n const values = {};\r\n \r\n if (sections.includes('LAN') && lanConfigs.length > 0) {\r\n values.LAN = lanConfigs.map(config => ({\r\n connection_id: config.connection_id,\r\n display_name: config.display_name,\r\n ip_address: config.ip_address,\r\n ...(showNetmask.LAN ? { netmask: config.netmask } : {})\r\n }));\r\n }\r\n \r\n if (sections.includes('QSFP') && st2110Interfaces.length > 0) {\r\n values.QSFP = st2110Interfaces.map(iface => ({\r\n // 只有当iface中存在id字段时才包含id\r\n ...(iface.id !== undefined && { id: iface.id }),\r\n display_name: iface.display_name,\r\n ip_address: iface.ip_address || iface.ip, // 优先取ip_address,没有则取ip\r\n ...(showNetmask.QSFP ? { netmask: iface.netmask } : {})\r\n }));\r\n }\r\n \r\n return values;\r\n }, [lanConfigs, st2110Interfaces, sections, showNetmask]);\r\n\r\n // 当初始值准备好后设置表单值\r\n useEffect(() => {\r\n if (isInitialized && !initializationStatus.current.hasInitialized) {\r\n form.setFieldsValue(initialValues);\r\n initializationStatus.current.hasInitialized = true;\r\n }\r\n }, [isInitialized, form, initialValues]);\r\n\r\n // 成功处理\r\n const handleSuccess = useCallback(async ({\r\n messageText,\r\n isPopup = false,\r\n refresh = !restart\r\n } = {}) => {\r\n const defaultMessage = intl.formatMessage({ id: 'networkSettings.saveSuccess' });\r\n message.success(messageText || defaultMessage);\r\n\r\n if (refresh && getConfig) {\r\n try {\r\n const newConfig = await getConfig();\r\n if (sections.includes('LAN') && newConfig.lan_interfaces) {\r\n setLanConfigs(newConfig.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && newConfig.interfaces) {\r\n setSt2110Interfaces(newConfig.interfaces);\r\n }\r\n } catch (error) {\r\n console.error('Failed to refresh config:', error);\r\n }\r\n }\r\n\r\n // 如果需要弹出重启确认框\r\n if (isPopup && restart) {\r\n if (getSysConfig) {\r\n // 有接口:再查一次确认是否需要重启\r\n try {\r\n const updatedConfig = await getSysConfig();\r\n if (updatedConfig?.is_restart_required) {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: intl.formatMessage({ id: 'networkSettings.restartRequired' }),\r\n cancelText: intl.formatMessage({ id: 'networkSettings.restartLater' }),\r\n okText: intl.formatMessage({ id: 'networkSettings.restartNow' }),\r\n onOk: async () => {\r\n await restart();\r\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n },\r\n });\r\n }\r\n } catch (error) {\r\n console.error('Failed to check restart status:', error);\r\n }\r\n } else {\r\n // 无接口:直接弹出重启确认框\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: intl.formatMessage({ id: 'networkSettings.restartRequired' }),\r\n cancelText: intl.formatMessage({ id: 'networkSettings.restartLater' }),\r\n okText: intl.formatMessage({ id: 'networkSettings.restartNow' }),\r\n onOk: async () => {\r\n await restart();\r\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n },\r\n });\r\n }\r\n }\r\n\r\n onClose();\r\n }, [intl, message, modal, getSysConfig, restart, getConfig, sections, onClose]);\r\n\r\n const handleSubmit = useCallback(async () => {\r\n setSubmitLoading(true);\r\n\r\n try {\r\n const values = await form.validateFields();\r\n\r\n // ===== 判断 QSFP 是否有修改(仅当无 getSysConfig 时使用)=====\r\n let hasQsfpChanged = false;\r\n if (!getSysConfig && sections.includes('QSFP') && values.QSFP) {\r\n const original = originalSt2110InterfacesRef.current;\r\n const current = values.QSFP;\r\n hasQsfpChanged = current.some((item, index) => {\r\n const orig = original[index];\r\n if (!orig) return false;\r\n\r\n const ipChanged = item.ip_address !== (orig.ip_address || orig.ip);\r\n return ipChanged;\r\n });\r\n }\r\n\r\n const updatePromises = [];\r\n\r\n // 更新LAN配置\r\n if (sections.includes('LAN') && values.LAN) {\r\n const lanData = values.LAN.map((item, index) => ({\r\n connection_id: lanConfigs[index]?.connection_id,\r\n ip_address: item.ip_address,\r\n ...(showNetmask.LAN ? { netmask: item.netmask } : {})\r\n }));\r\n updatePromises.push(updateLanConfig(lanData));\r\n }\r\n\r\n // 更新QSFP配置\r\n if (sections.includes('QSFP') && values.QSFP) {\r\n const interfacesData = values.QSFP.map((item, index) => ({\r\n // 只有当原始数据中存在id时才包含id\r\n ...(st2110Interfaces?.[index]?.id !== undefined && {\r\n id: st2110Interfaces?.[index]?.id \r\n }),\r\n ...(st2110Interfaces?.[index]?.ip !== undefined \r\n ? { ip: item.ip_address } \r\n : { ip_address: item.ip_address }\r\n ),\r\n ...(showNetmask.QSFP ? { netmask: item.netmask } : {})\r\n }));\r\n\r\n const st2110Data = st2110Interfaces.some(iface => 'id' in iface)\r\n ? { st2110_interfaces: interfacesData }\r\n : { interfaces: interfacesData };\r\n\r\n updatePromises.push(updateSysConfig(st2110Data));\r\n }\r\n\r\n const results = await Promise.allSettled(updatePromises);\r\n\r\n // 检查所有更新是否成功\r\n const allSucceeded = results.every(result => result.status === 'fulfilled');\r\n\r\n if (allSucceeded) {\r\n let isPopup = false;\r\n if (getSysConfig) {\r\n // 有接口:后续在 handleSuccess 中查 is_restart_required\r\n isPopup = true;\r\n } else {\r\n // 无接口:根据是否有 QSFP 变化决定\r\n isPopup = hasQsfpChanged;\r\n }\r\n\r\n handleSuccess({ isPopup });\r\n }\r\n } catch (error) {\r\n console.error('Failed to update configurations: ', error);\r\n } finally {\r\n setSubmitLoading(false);\r\n }\r\n }, [\r\n form, \r\n sections, \r\n lanConfigs, \r\n st2110Interfaces, \r\n updateLanConfig, \r\n updateSysConfig, \r\n handleSuccess\r\n ]);\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: intl.formatMessage({ id: 'networkSettings.title' }),\r\n width: 650,\r\n open,\r\n confirmLoading: submitLoading,\r\n onOk: handleSubmit,\r\n onCancel: onClose,\r\n okText: intl.formatMessage({ id: 'button.apply' }),\r\n cancelText: intl.formatMessage({ id: 'button.close' }),\r\n centered: true,\r\n destroyOnHidden: true,\r\n forceRender: true,\r\n // styles: {\r\n // body: { padding: \"16px 24px 8px 24px\" },\r\n // ...(restartRemark !== null && { footer: { paddingBottom: 28 } })\r\n // },\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 18 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <StyledModal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {sections.includes('LAN') && lanConfigs.length > 0 && (\r\n <>\r\n <NetworkFieldGroup\r\n prefix=\"LAN\"\r\n interfaces={lanConfigs}\r\n fieldConfig={preparedFieldConfig.LAN}\r\n />\r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && <Divider />}\r\n </>\r\n )}\r\n \r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && (\r\n <NetworkFieldGroup\r\n prefix=\"QSFP\"\r\n interfaces={st2110Interfaces}\r\n fieldConfig={preparedFieldConfig.QSFP}\r\n />\r\n )}\r\n </Form>\r\n {restartRemark}\r\n </StyledModal>\r\n );\r\n}\r\n\r\nexport { NetworkFieldGroup };\r\nexport default memo(NetworkSettingsModal);","import { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { Select, Switch, Input, Badge, Form, ConfigProvider, InputNumber, App } from \"antd\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\n// 默认字段配置\r\nconst defaultFieldConfigs = {\r\n clock_class: {\r\n label: 'ptp.clockClass',\r\n formType: 'select',\r\n options: [\r\n { value: 6, label: 'ptp.clockClass.atomic' },\r\n { value: 7, label: 'ptp.clockClass.gps' },\r\n { value: 248, label: 'ptp.clockClass.slaveOnly' }\r\n ],\r\n readOnly: true\r\n },\r\n clock_accuracy: {\r\n label: 'ptp.clockAccuracy',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n offset_scaled_log_variance: {\r\n label: 'ptp.offsetScaledLogVariance',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority1: {\r\n label: 'ptp.priority1',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority2: {\r\n label: 'ptp.priority2',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_identity: {\r\n label: 'ptp.grandmasterIdentity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n master_port_id: {\r\n label: 'ptp.portIdentity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n t1_domain_number: {\r\n label: 'ptp.domainNumber',\r\n formType: 'number',\r\n min: 0,\r\n max: 127,\r\n readOnly: false\r\n },\r\n master_utc_offset: {\r\n label: 'ptp.utcOffset',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n is_connected: {\r\n label: 'ptp.connectedStatus',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'ptp.disconnected', color: 'red' },\r\n 1: { text: 'ptp.connected', color: 'green' }\r\n }\r\n },\r\n is_locked: {\r\n label: 'ptp.lockedStatus',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'ptp.unlocked', color: 'red' },\r\n 1: { text: 'ptp.locked', color: 'green' }\r\n }\r\n }\r\n};\r\n\r\n// 默认字段顺序\r\nconst defaultFieldOrder = [\r\n 't1_domain_number',\r\n 'grandmaster_priority1',\r\n 'grandmaster_priority2',\r\n 'grandmaster_identity',\r\n 'master_port_id',\r\n 'clock_class',\r\n 'clock_accuracy',\r\n 'offset_scaled_log_variance',\r\n 'master_utc_offset',\r\n 'is_connected',\r\n 'is_locked'\r\n];\r\n\r\n/**\r\n * 转换PTP状态为表单字段数组\r\n * @param {Object} ptpStatus PTP状态对象\r\n * @param {Object} fieldConfigs 字段配置\r\n * @param {Array} fieldOrder 字段顺序\r\n * @returns {Array} 表单字段数组\r\n */\r\nfunction convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder) {\r\n return fieldOrder\r\n .filter(key => key in ptpStatus)\r\n .map(key => {\r\n const config = fieldConfigs[key] || { label: key, formType: 'text' };\r\n const value = ptpStatus[key];\r\n \r\n return {\r\n key,\r\n value,\r\n ...config,\r\n rawData: ptpStatus,\r\n };\r\n });\r\n}\r\n\r\nconst PtpModal = ({\r\n open, \r\n onClose, \r\n getPtpInfo, \r\n updatePtpInfo, \r\n fieldConfigs = defaultFieldConfigs,\r\n fieldOrder = defaultFieldOrder,\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const intl = useIntl();\r\n const [ptpStatus, setPtpStatus] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setLoading(true);\r\n getPtpInfo().then(data => {\r\n if (data?.[0]) {\r\n setPtpStatus(data[0]);\r\n // 数据加载后设置表单值\r\n form.setFieldsValue(data[0]);\r\n }\r\n }).catch(err => {\r\n console.error(\"Failed to fetch ptp\", err);\r\n }).finally(() => {\r\n setLoading(false);\r\n });\r\n } else {\r\n // 关闭时重置表单\r\n form.resetFields();\r\n setPtpStatus(null);\r\n }\r\n }, [open, form, getPtpInfo])\r\n\r\n const ptpStatusArray = useMemo(() => {\r\n if (!ptpStatus) return[];\r\n return convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder);\r\n }, [ptpStatus, fieldConfigs, fieldOrder]);\r\n\r\n // 渲染 Form.Item 的 label\r\n const renderLabel = (item) => {\r\n // 如果 label 是国际化 key(包含点号),则使用 formatMessage\r\n if (item.label && typeof item.label === 'string' && item.label.includes('.')) {\r\n return intl.formatMessage({ id: item.label });\r\n }\r\n return item.label;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const values = await form.getFieldsValue();\r\n\r\n setLoading(true);\r\n\r\n try {\r\n const response = await updatePtpInfo(values);\r\n \r\n if (response) {\r\n message.success(intl.formatMessage({ id: 'ptp.saveSuccess' }));\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const renderFormItem = (item) => {\r\n switch (item.formType) {\r\n case 'select':\r\n const selectOptions = item.options?.map(opt => ({\r\n ...opt,\r\n label: intl.formatMessage({ id: opt.label }, { value: opt.value })\r\n }));\r\n return <Select options={selectOptions} disabled={item.readOnly} />;\r\n case 'switch':\r\n return <Switch />;\r\n case 'badge':\r\n const normalizedValue = typeof item.value === 'boolean' \r\n ? (item.value ? 1 : 0)\r\n : item.value;\r\n const status = item.statusMap?.[normalizedValue] || { text: intl.formatMessage({ id: ptp.unknown }), color: 'gray' };\r\n return (\r\n <ConfigProvider theme={{ components: { Badge: { statusSize: 10 } } }}>\r\n <Badge \r\n color={status.color} \r\n text={intl.formatMessage({ id: status.text })} \r\n />\r\n </ConfigProvider>\r\n );\r\n case 'number':\r\n return (\r\n <InputNumber\r\n disabled={item.readOnly} \r\n controls={false} \r\n keyboard={false} \r\n min={item.min ?? Number.MIN_SAFE_INTEGER} \r\n max={item.max ?? Number.MAX_SAFE_INTEGER}\r\n />\r\n )\r\n default:\r\n return <Input disabled={item.readOnly} />;\r\n }\r\n };\r\n \r\n if (!open || !ptpStatus) return null;\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: intl.formatMessage({ id: 'ptp.title' }),\r\n width: 650,\r\n open,\r\n okText: intl.formatMessage({ id: 'button.apply' }),\r\n cancelText: intl.formatMessage({ id: 'button.close' }),\r\n onCancel: onClose,\r\n onOk: handleSubmit,\r\n confirmLoading: loading,\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n name: \"ptpForm\",\r\n labelCol: { span: 8 },\r\n wrapperCol: { span: 16 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <StyledModal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {ptpStatusArray.map(item => (\r\n <Form.Item \r\n label={renderLabel(item)} \r\n name={item.key} \r\n key={item.key}\r\n initialValue={item.value}\r\n >\r\n {renderFormItem(item)}\r\n </Form.Item>\r\n ))}\r\n </Form>\r\n </StyledModal>\r\n )\r\n}\r\n\r\nexport default memo(PtpModal);","import { List, Empty, Button, Space, Form, Input, Flex, Checkbox, Typography } from \"antd\";\r\nimport { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { PlusOutlined } from \"@ant-design/icons\";\r\nimport { useIntl } from '../i18n';\r\n\r\nexport const LeftList = memo(({\r\n dataSource,\r\n selectedPresetId,\r\n onSelectPreset,\r\n onAddNew,\r\n onRemove,\r\n onImport,\r\n onExport,\r\n hasPresets = dataSource.length > 0,\r\n enableImportAndExport,\r\n texts = {\r\n newButton: \"preset.button.new\",\r\n removeButton: \"preset.button.delete\",\r\n importButton: \"preset.button.import\",\r\n exportButton: \"preset.button.export\",\r\n }\r\n}) => {\r\n const intl = useIntl();\r\n \r\n // 格式化文本的辅助函数\r\n const fmt = (key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n };\r\n return (\r\n <div className=\"h-full left-list-wrapper\">\r\n <div className=\"list-container\">\r\n <List\r\n header={\r\n <div className=\"grid grid-cols-3 gap-2 w-full list-header\">\r\n <div className=\"min-w-0\">{fmt('preset.header.name')}</div>\r\n <div className=\"min-w-0\">{fmt('preset.header.createTime')}</div>\r\n <div className=\"min-w-0\">{fmt('preset.header.description')}</div>\r\n </div>\r\n }\r\n dataSource={dataSource}\r\n rowKey=\"id\"\r\n renderItem={(item) => (\r\n <List.Item \r\n className={`list-item ${\r\n selectedPresetId === item.id ? 'selected' : ''\r\n }`}\r\n style={{ padding: \"9px 24px\" }}\r\n onClick={() => onSelectPreset(item)}\r\n >\r\n <div className=\"grid grid-cols-3 gap-2 w-full text-text-normal\">\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.name}>\r\n {item.name || fmt('preset.untitled')}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis>\r\n {item.create_time}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.description}>\r\n {item.description}\r\n </Typography.Text>\r\n </div>\r\n </div>\r\n </List.Item>\r\n )}\r\n locale={{\r\n emptyText: (\r\n <div className=\"p-8\">\r\n <Empty\r\n image={Empty.PRESENTED_IMAGE_SIMPLE}\r\n description={\r\n <span className=\"text-gray-400\">\r\n <Button \r\n type=\"link\" \r\n onClick={onAddNew}\r\n className=\"p-0 h-auto\"\r\n icon={<PlusOutlined />}\r\n >\r\n {fmt('preset.empty.create')}\r\n </Button>\r\n </span>\r\n }\r\n />\r\n </div>\r\n )\r\n }}\r\n />\r\n </div>\r\n\r\n {/* 底部按钮区域 */}\r\n {hasPresets && (\r\n <div style={{ paddingInline: 24, paddingBlock: 20 }}>\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n icon={<PlusOutlined />}\r\n className=\"btn-gray\"\r\n onClick={onAddNew}\r\n >\r\n {texts.newButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onRemove}\r\n >\r\n {texts.removeButton}\r\n </Button>\r\n {enableImportAndExport && (\r\n <>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onImport}\r\n >\r\n {texts.importButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onExport}\r\n disabled={!selectedPresetId} \r\n >\r\n {texts.exportButton}\r\n </Button>\r\n </>\r\n )}\r\n </Space>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n});\r\n\r\nconst SubmitButton = ({ loading, action, children, disabled = false, editButtonEle = null }) => (\r\n <div className=\"submit-btn-wrapper\">\r\n <Space size=\"middle\">\r\n {editButtonEle}\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n loading={loading} \r\n onClick={action} \r\n disabled={disabled}\r\n >\r\n {children}\r\n </Button>\r\n </Space>\r\n </div>\r\n);\r\n\r\nexport const RightDetailForm = memo(({\r\n form, \r\n onSave, \r\n onLoad,\r\n onEdit,\r\n onCancelEdit,\r\n onUpdate,\r\n isLoading,\r\n isSavedPreset,\r\n originalPresetData,\r\n fields = {\r\n name: {\r\n label: \"preset.name\",\r\n placeholder: \"preset.placeholder.enterName\",\r\n required: true\r\n },\r\n category_list: {\r\n label: \"preset.categories\"\r\n },\r\n description: {\r\n label: \"preset.description\",\r\n placeholder: \"preset.placeholder.enterDescription\"\r\n }\r\n },\r\n texts = {\r\n loadButton: \"preset.button.load\",\r\n saveButton: \"preset.button.save\",\r\n editButton: \"preset.button.edit\",\r\n cancelButton: \"preset.button.cancel\"\r\n },\r\n presetChanged, // 作用:在切换选中预设时强制触发 Checkbox 的重新初始化\r\n enableEdit = true\r\n}) => {\r\n const intl = useIntl();\r\n const [initialSelected, setInitialSelected] = useState([]);\r\n const [isEditMode, setIsEditMode] = useState(false); // 是否进入编辑模式\r\n const currentSelected = Form.useWatch('category_list', form) || [];\r\n\r\n // 格式化文本的辅助函数\r\n const fmt = (key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n };\r\n\r\n // 检查是否包含 category_list 字段\r\n const hasCategoryList = fields.category_list !== null && fields.category_list !== undefined;\r\n\r\n // 初始化 category_list 的选择状态\r\n useEffect(() => {\r\n if (hasCategoryList) {\r\n const currentValue = form.getFieldValue('category_list') || [];\r\n setInitialSelected(currentValue);\r\n }\r\n }, [presetChanged, form, hasCategoryList]); // 当presetChanged变化时更新\r\n\r\n // 当 isSavedPreset 或 presetChanged 变化时,重置编辑模式\r\n useEffect(() => {\r\n setIsEditMode(false);\r\n }, [isSavedPreset, presetChanged]);\r\n\r\n // 动态生成 checkbox 选项\r\n const checkboxOptions = useMemo(() => {\r\n if (!hasCategoryList) return [];\r\n \r\n return fields.category_list.options.map(category => {\r\n const isInitiallySelected = initialSelected.includes(category.name);\r\n const shouldDisable = isSavedPreset ? !isInitiallySelected : false;\r\n \r\n return {\r\n ...category,\r\n disabled: shouldDisable,\r\n initiallySelected: isInitiallySelected\r\n };\r\n });\r\n }, [initialSelected, isSavedPreset, hasCategoryList, fields.category_list]);\r\n\r\n const handleCheckboxChange = (checkedValues) => {\r\n form.setFieldsValue({ category_list: checkedValues });\r\n };\r\n\r\n const handleEditClick = () => {\r\n setIsEditMode(true);\r\n if (onEdit) {\r\n onEdit(); // 如果有外部回调\r\n }\r\n };\r\n\r\n const handleCancelEdit = () => {\r\n if (originalPresetData) {\r\n form.setFieldsValue(originalPresetData);\r\n }\r\n \r\n setIsEditMode(false);\r\n\r\n if (onCancelEdit) {\r\n onCancelEdit();\r\n }\r\n };\r\n\r\n const handleSaveEdit = async () => {\r\n try {\r\n if (onUpdate) {\r\n await onUpdate();\r\n }\r\n\r\n setIsEditMode(false);\r\n } catch (error) {\r\n console.error('update fail:', error)\r\n }\r\n };\r\n\r\n const handleLoad = async () => {\r\n try {\r\n const formValues = await form.validateFields();\r\n\r\n const loadData = {\r\n id: form.getFieldValue('id'),\r\n // 优先使用表单中的 category_list,如果没有则使用原始数据\r\n name: originalPresetData.name,\r\n category_list: hasCategoryList \r\n ? (formValues.category_list || [])\r\n : (originalPresetData?.category_list || [])\r\n };\r\n await onLoad(loadData);\r\n } catch (error) {\r\n console.error('表单验证失败:', error);\r\n }\r\n };\r\n\r\n // 在编辑模式下,name 和 description 可以编辑,但 categories 不可编辑\r\n const shouldDisableNameAndDesc = isSavedPreset && !isEditMode;\r\n const shouldDisableCategories = isEditMode; // categories 在编辑模式下总是不可编辑\r\n\r\n return (\r\n <Flex vertical style={{ height: \"100%\", padding: \"20px 24px\" }}>\r\n <Form \r\n form={form} \r\n layout=\"vertical\" \r\n autoComplete=\"off\" \r\n style={{ flex: 1, overflowY: 'auto' }}\r\n >\r\n {/* Name 字段 */}\r\n <Form.Item \r\n name=\"name\" \r\n label={fmt(fields.name.label)}\r\n required\r\n >\r\n <Input \r\n placeholder={fmt(fields.name.placeholder)} \r\n disabled={shouldDisableNameAndDesc} \r\n />\r\n </Form.Item>\r\n\r\n {/* Category List 字段 */}\r\n {hasCategoryList && (\r\n <Form.Item \r\n name=\"category_list\" \r\n label={fmt(fields.category_list.label)}\r\n required\r\n >\r\n <Checkbox.Group \r\n className=\"grid grid-cols-2 gap-2\"\r\n onChange={handleCheckboxChange}\r\n disabled={shouldDisableCategories}\r\n >\r\n {checkboxOptions.map(category => (\r\n <Checkbox \r\n key={category.name} \r\n value={category.name}\r\n disabled={category.disabled || shouldDisableCategories}\r\n >\r\n {category.label}\r\n </Checkbox>\r\n ))}\r\n </Checkbox.Group>\r\n </Form.Item>\r\n )}\r\n\r\n {/* Description 字段 */}\r\n {fields.description && (\r\n <Form.Item \r\n name=\"description\" \r\n label={fmt(fields.description.label)}\r\n >\r\n <Input.TextArea \r\n rows={4}\r\n placeholder={fmt(fields.description.placeholder)}\r\n disabled={shouldDisableNameAndDesc}\r\n style={{\r\n resize: 'none'\r\n }}\r\n />\r\n </Form.Item>\r\n )}\r\n </Form>\r\n {isSavedPreset ? (\r\n isEditMode ? (\r\n // 编辑模式下的按钮\r\n <div className=\"submit-btn-wrapper\">\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n onClick={handleCancelEdit}\r\n >\r\n {texts.cancelButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n onClick={handleSaveEdit}\r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </Button>\r\n </Space>\r\n </div>\r\n ) : (\r\n // 非编辑模式下的按钮\r\n <SubmitButton\r\n action={handleLoad}\r\n {...(hasCategoryList && { disabled: !currentSelected.length })}\r\n editButtonEle={enableEdit ? (\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={handleEditClick}\r\n >\r\n {texts.editButton}\r\n </Button>\r\n ) : null}\r\n >\r\n {texts.loadButton}\r\n </SubmitButton>\r\n )\r\n ) : (\r\n <SubmitButton \r\n action={onSave} \r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </SubmitButton>\r\n )}\r\n </Flex>\r\n );\r\n});","import { Form, Row, Col, Empty, App, Spin, Flex } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { memo, useState, useCallback, useEffect } from \"react\";\r\nimport { LeftList, RightDetailForm } from \"./PresetModal.component\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst Preset = ({\r\n open,\r\n onClose,\r\n // API 方法通过 props 传入\r\n getPresetList,\r\n savePreset,\r\n removePreset,\r\n loadPreset,\r\n updatePreset,\r\n uploadPreset,\r\n downloadPreset,\r\n onLoadSuccess, // 加载成功后的回调\r\n onLoadError, // 加载失败后的回调\r\n\r\n // 字段配置\r\n fields = {\r\n name: {\r\n label: \"preset.name\",\r\n placeholder: \"preset.placeholder.enterName\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n title: \"preset.title\",\r\n emptyText: \"preset.empty.noData\",\r\n deleteConfirm: \"preset.delete.confirmMessage\",\r\n loadConfirm: \"preset.load.confirmMessage\",\r\n loadText: \"preset.load.loading\",\r\n successText: \"preset.success\",\r\n newButton: \"preset.button.new\",\r\n removeButton: \"preset.button.delete\",\r\n loadButton: \"preset.button.load\",\r\n saveButton: \"preset.button.save\",\r\n editButton: \"preset.button.edit\",\r\n cancelButton: \"preset.button.cancel\",\r\n importButton: \"preset.button.import\",\r\n exportButton: \"preset.button.export\",\r\n },\r\n // 样式定制\r\n width = 1000,\r\n height = 680,\r\n className = \"\",\r\n // 功能配置\r\n enableEdit = true,\r\n enableImportAndExport = false,\r\n}) => {\r\n const intl = useIntl();\r\n const { message, modal } = App.useApp();\r\n const [presetList, setPresetList] = useState([]);\r\n const [selectedPreset, setSelectedPreset] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [uploading, setUploading] = useState(false);\r\n const [presetChanged, setPresetChanged] = useState(0);\r\n const [form] = Form.useForm();\r\n\r\n // 格式化文本的辅助函数\r\n const fmt = useCallback((key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n }, [intl]);\r\n\r\n const fetchPresetList = useCallback(async () => {\r\n try {\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 自动选中第一个预设\r\n if (presets.length > 0) {\r\n const firstPreset = presets[0];\r\n setSelectedPreset(firstPreset);\r\n form.setFieldsValue(firstPreset);\r\n setPresetChanged(prev => prev + 1);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch preset list:', error);\r\n }\r\n }, [getPresetList]);\r\n\r\n const handleSelectPreset = useCallback((preset) => {\r\n setSelectedPreset(preset);\r\n form.setFieldsValue(preset);\r\n setPresetChanged(prev => prev + 1);\r\n }, [form]);\r\n\r\n const handleAddNew = useCallback(() => {\r\n const unsavedPreset = presetList.find(item => !item.id);\r\n\r\n if (unsavedPreset) {\r\n message.warning(intl.formatMessage({ id: 'preset.unsaved.detected' }));\r\n return;\r\n }\r\n\r\n // 创建新的数据,包含所有配置的字段\r\n const newPreset = Object.keys(fields).reduce((acc, fieldName) => {\r\n acc[fieldName] = '';\r\n return acc;\r\n }, {});\r\n\r\n // 特殊处理 category_list\r\n if (fields.category_list?.options) {\r\n newPreset.category_list = fields.category_list.options.map(item => item.name);\r\n }\r\n \r\n setPresetList([...presetList, newPreset]);\r\n setSelectedPreset(newPreset);\r\n form.setFieldsValue(newPreset);\r\n }, [form, presetList, message]);\r\n\r\n const handleRemove = useCallback(async () => {\r\n if (!selectedPreset) return;\r\n\r\n // 检查是否为新建的未保存数据(无 id)\r\n const isUnsavedPreset = !selectedPreset.id;\r\n const presetName = selectedPreset.name || fmt('preset.untitled');\r\n\r\n try {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: fmt('preset.delete.title'),\r\n content: `${fmt('preset.delete.confirmMessage')} \"${presetName}\"?`,\r\n cancelText: fmt('button.cancel'),\r\n okText: fmt('button.delete'),\r\n onOk: async () => {\r\n // 在删除前记录当前选中项的位置\r\n const currentIndex = presetList.findIndex(item => \r\n isUnsavedPreset ? !item.id : item.id === selectedPreset.id\r\n );\r\n\r\n if (!isUnsavedPreset) {\r\n await removePreset({ id: selectedPreset.id });\r\n message.success(fmt('preset.success'));\r\n } else {\r\n // 移除未保存的预设\r\n setPresetList(prev => prev.filter(item => !!item.id));\r\n }\r\n\r\n // 获取删除后的列表\r\n const updatedList = isUnsavedPreset \r\n ? presetList.filter(item => !!item.id)\r\n : await getPresetList().then(data => data?.preset_list || data || []);\r\n\r\n // 更新列表\r\n setPresetList(updatedList);\r\n\r\n if (updatedList.length > 0) {\r\n // 计算下一个索引\r\n let nextIndex = 0;\r\n\r\n if (currentIndex > 0) {\r\n // 如果删除的不是最后一项\r\n if (currentIndex < updatedList.length) {\r\n nextIndex = currentIndex; // 保持相同位置\r\n } else {\r\n nextIndex = updatedList.length - 1; // 选最后一个\r\n }\r\n }\r\n\r\n const nextPreset = updatedList[nextIndex];\r\n if (nextPreset) {\r\n setSelectedPreset(nextPreset);\r\n form.setFieldsValue(nextPreset);\r\n setPresetChanged(prev => prev + 1);\r\n return;\r\n }\r\n }\r\n\r\n // 列表为空\r\n setSelectedPreset(null);\r\n form.resetFields();\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Failed to delete preset:', error);\r\n }\r\n }, [selectedPreset, form, modal, message, removePreset, getPresetList, fmt]);\r\n\r\n const handleImport = useCallback(async () => {\r\n // 创建一个临时的 input 元素\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = '.preset'; // 限制只能选择 .preset 文件\r\n\r\n input.onchange = async (e) => {\r\n const file = e.target.files?.[0];\r\n if (!file) {\r\n return; // 用户取消选择\r\n }\r\n\r\n // 确保文件扩展名是 .preset(防止 accept 被绕过)\r\n if (!file.name.toLowerCase().endsWith('.preset')) {\r\n message.error(intl.formatMessage({ id: 'preset.import.invalidFile' }));\r\n return;\r\n }\r\n\r\n try {\r\n setUploading(true);\r\n await uploadPreset(file);\r\n message.success(intl.formatMessage({ id: 'preset.success' }));\r\n\r\n // 上传成功后刷新列表\r\n fetchPresetList();\r\n } catch (error) {\r\n console.error('Failed to import preset file:', error);\r\n } finally {\r\n setUploading(false);\r\n }\r\n\r\n // 清理:移除 input\r\n input.remove();\r\n };\r\n\r\n // 触发文件选择框\r\n input.click();\r\n }, [uploadPreset, message, intl, fetchPresetList]);\r\n\r\n const handleExport = useCallback(() => {\r\n if (!selectedPreset?.id) {\r\n message.warning(intl.formatMessage({ id: 'preset.error.noSelectionOrIdMissing' }));\r\n return;\r\n }\r\n\r\n // 构造下载 URL\r\n const downloadUrl = `${downloadPreset}/${selectedPreset.id}`;\r\n\r\n // 创建临时 a 标签\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = `${selectedPreset.name || 'preset'}.preset`; // 指定文件名\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }, [selectedPreset, message, intl]);\r\n\r\n const handleLoadPreset = useCallback(async (loadData) => {\r\n if (!loadData) return;\r\n\r\n let modalInstance = null;\r\n let resolveOk = null; // 用于控制 confirm 关闭时机\r\n\r\n modalInstance = modal.confirm({\r\n title: fmt('preset.load.title'),\r\n content: `${fmt('preset.load.confirmMessage')} \"${loadData.name}\"?`,\r\n cancelText: fmt('button.cancel'),\r\n okText: fmt('preset.button.load'),\r\n // onOk 返回一个 pending Promise\r\n onOk: () => {\r\n return new Promise((resolve, reject) => {\r\n resolveOk = resolve;\r\n\r\n // 立即切换为 loading 状态\r\n modalInstance.update({\r\n title: fmt('preset.load.loading'),\r\n content: <Spin size=\"large\" className=\"block mx-auto\" />,\r\n okButtonProps: { style: { display: 'none' } },\r\n cancelButtonProps: { style: { display: 'none' } },\r\n maskClosable: false,\r\n closable: false,\r\n });\r\n\r\n (async () => {\r\n try {\r\n await loadPreset({\r\n id: loadData.id,\r\n ...(loadData.category_list && { category_list: loadData.category_list })\r\n });\r\n\r\n // 成功:1 秒后自动关闭\r\n setTimeout(() => {\r\n resolveOk?.();\r\n message.success(fmt('preset.success'));\r\n // 加载成功的外部回调\r\n if (onLoadSuccess) {\r\n onLoadSuccess(loadData);\r\n }\r\n }, 1000);\r\n } catch (error) {\r\n console.error('Failed to load preset:', error);\r\n // 失败:直接关闭 modal\r\n modalInstance.destroy();\r\n // 加载失败的外部回调\r\n if (onLoadError) {\r\n onLoadError(error, loadData);\r\n }\r\n }\r\n })();\r\n });\r\n },\r\n onCancel: () => {\r\n // 用户取消\r\n }\r\n });\r\n }, [loadPreset, message, modal, onLoadSuccess, onLoadError, fmt]);\r\n\r\n const handleSave = useCallback(async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n message.error(fmt('preset.validation.nameRequired'))\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n // 验证分类列表\r\n if (fields.category_list?.required) {\r\n if (!values.category_list || values.category_list.length === 0) {\r\n message.error(fmt('preset.validation.categoryRequired'))\r\n return;\r\n }\r\n }\r\n \r\n await savePreset(values);\r\n message.success(fmt('preset.success'));\r\n\r\n const savedPresetName = values.name;\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 在刷新后的列表中查找同名的预设\r\n const newlySavedPreset = presets.find(item => item.name === savedPresetName);\r\n\r\n if (newlySavedPreset) {\r\n setSelectedPreset(newlySavedPreset);\r\n form.setFieldsValue(newlySavedPreset);\r\n setPresetChanged(prev => prev + 1);\r\n } else {\r\n setSelectedPreset(values);\r\n }\r\n } catch (error) {\r\n console.error('Failed to save preset:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, message, fields, savePreset, getPresetList, fmt]);\r\n\r\n const handleUpdate = useCallback(async () => {\r\n if (!selectedPreset || !selectedPreset.id) {\r\n message.error(fmt('preset.error.noSelectionOrIdMissing'));\r\n return;\r\n }\r\n \r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n message.error(fmt('preset.validation.nameRequired'))\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n await updatePreset({\r\n id: selectedPreset.id,\r\n name: values.name,\r\n description: values.description\r\n });\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 更新当前选中的预设\r\n const updatedPreset = presets.find(item => item.id === selectedPreset.id);\r\n if (updatedPreset) {\r\n setSelectedPreset(updatedPreset);\r\n }\r\n\r\n message.success(fmt('preset.success'));\r\n } catch (error) {\r\n console.error('Failed to update preset:', error);\r\n throw error;\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, message, fields, updatePreset, selectedPreset, fmt]);\r\n\r\n // 初始化数据\r\n useEffect(() => {\r\n fetchPresetList();\r\n }, [fetchPresetList]);\r\n\r\n return (\r\n <StyledModal\r\n title={fmt(texts.title)}\r\n width={width}\r\n open={open}\r\n wrapClassName={`preset-management ${className}`}\r\n footer={null}\r\n onCancel={onClose}\r\n centered\r\n styles={{\r\n body: {\r\n padding: 0,\r\n height: `${height}px`\r\n }\r\n }}\r\n >\r\n <Row gutter={0} className=\"h-full w-full\">\r\n <Col span={14} className=\"h-full\">\r\n <LeftList\r\n dataSource={presetList}\r\n selectedPresetId={selectedPreset?.id}\r\n onSelectPreset={handleSelectPreset}\r\n onAddNew={handleAddNew}\r\n onRemove={handleRemove}\r\n onImport={handleImport}\r\n onExport={handleExport}\r\n enableImportAndExport={enableImportAndExport}\r\n texts={{\r\n newButton: fmt(texts.newButton),\r\n removeButton: fmt(texts.removeButton),\r\n importButton: fmt(texts.importButton),\r\n exportButton: fmt(texts.exportButton)\r\n }}\r\n />\r\n </Col>\r\n <Col span={10} className=\"h-full\">\r\n {selectedPreset ? (\r\n <RightDetailForm\r\n form={form}\r\n onSave={handleSave}\r\n onLoad={handleLoadPreset}\r\n onUpdate={handleUpdate}\r\n isLoading={loading}\r\n isSavedPreset={!!selectedPreset?.id}\r\n originalPresetData={selectedPreset} // 传递原始数据\r\n fields={fields}\r\n texts={{\r\n loadButton: fmt(texts.loadButton),\r\n saveButton: fmt(texts.saveButton),\r\n editButton: fmt(texts.editButton),\r\n cancelButton: fmt(texts.cancelButton)\r\n }}\r\n presetChanged={presetChanged}\r\n enableEdit={enableEdit}\r\n />\r\n ) : (\r\n <Flex vertical justify=\"center\" align=\"center\" className=\"h-full text-gray-400\">\r\n <Empty \r\n image={Empty.PRESENTED_IMAGE_SIMPLE} \r\n description={fmt(texts.emptyText)}\r\n />\r\n </Flex>\r\n )}\r\n </Col>\r\n </Row>\r\n </StyledModal>\r\n );\r\n};\r\n\r\nexport default memo(Preset);","import { Dropdown } from \"antd\";\r\nimport useUpgrade from '../hooks/useUpgrade';\r\n\r\nconst UpgradeManager = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000,\r\n children,\r\n ...dropdownProps\r\n }) => {\r\n const [upgradeElement] = useUpgrade({\r\n menuItems,\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes,\r\n uploadCompleteDelay,\r\n statusPollingInterval\r\n });\r\n\r\n if (children) {\r\n // 提取Dropdown组件和其menu属性\r\n const dropdownElement = upgradeElement.props.children[0];\r\n const otherElements = upgradeElement.props.children.slice(1);\r\n \r\n return (\r\n <>\r\n <Dropdown \r\n {...dropdownProps} \r\n {...dropdownElement.props} // 传递所有Dropdown的props\r\n >\r\n {children}\r\n </Dropdown>\r\n {otherElements}\r\n </>\r\n );\r\n }\r\n\r\n // 如果没有children,直接返回完整的升级元素\r\n return upgradeElement;\r\n }\r\n\r\n UpgradeManager.defaultProps = {\r\n trigger: [\"hover\"],\r\n placement: \"bottomRight\"\r\n};\r\n\r\nexport default UpgradeManager;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { Dropdown, App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst SystemOperations = ({ \r\n onPowerOff, \r\n onRestart,\r\n onPowerOffSuccess,\r\n onRestartSuccess,\r\n beforeAction, // 在执行关机/重启前调用\r\n powerOffLabel = \"system.poweroff\",\r\n restartLabel = \"system.restart\",\r\n iconClassName = \"seeder-iconfont seeder-icon-guanji1 text-xl text-neutral-400\",\r\n confirmMessage = \"system.confirm.message\",\r\n confirmTitle = \"system.confirm.title\",\r\n cancelText = \"system.button.cancel\",\r\n okText = \"system.button.confirm\"\r\n}) => {\r\n const intl = useIntl();\r\n const { modal } = App.useApp();\r\n\r\n const menuItems = [\r\n {\r\n key: \"poweroff\",\r\n label: typeof powerOffLabel === 'string' && powerOffLabel.includes('.') ? intl.formatMessage({ id: powerOffLabel }) : powerOffLabel,\r\n },\r\n {\r\n key: \"restart\",\r\n label: typeof restartLabel === 'string' && restartLabel.includes('.') ? intl.formatMessage({ id: restartLabel }) : restartLabel,\r\n }\r\n ];\r\n\r\n const doAction = (action) => {\r\n try {\r\n // 根据 action 决定显示的确认信息\r\n const actionLabels = {\r\n poweroff: intl.formatMessage({ id: 'system.action.powerOff' }),\r\n restart: intl.formatMessage({ id: 'system.action.restart' })\r\n };\r\n\r\n const actionText = actionLabels[action] || action;\r\n\r\n // 处理标题和消息的国际化\r\n const titleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') \r\n ? intl.formatMessage({ id: confirmTitle }) \r\n : confirmTitle;\r\n \r\n // 如果是国际化 key,使用 intl.formatMessage 处理参数\r\n // 如果是普通文本,使用 replace 替换占位符\r\n const messageText = typeof confirmMessage === 'string' && confirmMessage.includes('.') \r\n ? intl.formatMessage({ id: confirmMessage }, { action: actionText })\r\n : typeof confirmMessage === 'string' \r\n ? confirmMessage.replace('{action}', actionText)\r\n : confirmMessage;\r\n\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: titleText,\r\n content: messageText,\r\n cancelText: typeof cancelText === 'string' && cancelText.includes('.') ? intl.formatMessage({ id: cancelText }) : cancelText,\r\n okText: typeof okText === 'string' && okText.includes('.') ? intl.formatMessage({ id: okText }) : okText,\r\n onOk: async () => {\r\n // 先执行 beforeAction(用于 enterMaintenanceMode)\r\n if (typeof beforeAction === 'function') {\r\n beforeAction(action); // 可传 action 类型\r\n }\r\n\r\n if (action === 'poweroff' && onPowerOff) {\r\n await onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n await onRestart();\r\n }\r\n\r\n // 成功后再触发 success 回调\r\n if (action === 'poweroff' && typeof onPowerOffSuccess === 'function') {\r\n onPowerOffSuccess();\r\n } else if (action === 'restart' && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }\r\n\r\n const handleMenuClick = ({ key }) => {\r\n doAction(key);\r\n }\r\n\r\n return (\r\n <Dropdown menu={{ items: menuItems, onClick: handleMenuClick }} trigger={[\"hover\"]}>\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className={iconClassName}></i>\r\n </a>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nSystemOperations.propTypes = {\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n powerOffLabel: PropTypes.string,\r\n restartLabel: PropTypes.string,\r\n iconClassName: PropTypes.string,\r\n confirmTitle: PropTypes.string,\r\n cancelText: PropTypes.string,\r\n okText: PropTypes.string,\r\n run: PropTypes.func\r\n};\r\n\r\nexport default SystemOperations;","import { Button } from 'antd';\r\nimport PropTypes from 'prop-types';\r\n\r\n// 将 logo.png 转为 base64\r\nconst logoBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAGaCAYAAAAfLro4AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAGj2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDg4LCAyMDIwLzA3LzEwLTIyOjA2OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YmIxNjQ4OC1hYzczLWI3NGYtODczMC1hZGZiY2Y1NTk3OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MjdjZjIwMy0zM2IyLWU3NDItYWRhNC0wNGY2YzA5ZTYxOWIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyN2NmMjAzLTMzYjItZTc0Mi1hZGE0LTA0ZjZjMDllNjE5YiIgc3RFdnQ6d2hlbj0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHN0RXZ0OndoZW49IjIwMjUtMDktMDlUMTA6NTY6NTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZkN2NjZDg5LTViMTQtMDI0MC04YjNhLTQzODU2ODk1YTFlZjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlgJupcAADw7SURBVHic7d15vKdz/f/xx5mNGWMsw1hKkaVQkmm1VFQSKr6VLIXIEtK++ZZIRQtJiG+K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NAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLR/h+CVP12K0zZoAAAAABJRU5ErkJggg==';\r\n\r\nconst defaultResetRoute = () => {\r\n window.location.href = window.location.origin;\r\n};\r\n\r\nconst useSpaLogo = (props = {}) => {\r\n const {\r\n logoUrl = logoBase64, // 使用者传入 logo URL\r\n logoWidth = 100,\r\n logoAlt = 'logo',\r\n onClick = defaultResetRoute,\r\n buttonStyle = {\r\n padding: 0,\r\n lineHeight: 1,\r\n height: 'auto',\r\n borderStyle: 'none',\r\n display: 'inline-block'\r\n }\r\n } = props;\r\n\r\n // 如果没有提供 logoUrl,返回空\r\n if (!logoUrl) {\r\n return [null];\r\n }\r\n\r\n return [\r\n <Button key=\"logo\" type=\"link\" style={buttonStyle} onClick={onClick}>\r\n <img alt={logoAlt} src={logoUrl} style={{ width: logoWidth }} />\r\n </Button>\r\n ];\r\n}\r\n\r\nuseSpaLogo.propTypes = {\r\n logoUrl: PropTypes.string,\r\n logoWidth: PropTypes.number,\r\n logoAlt: PropTypes.string,\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default useSpaLogo;","import { Space, Typography, Flex } from \"antd\";\r\nimport useSpaLogo from '../hooks/useSpaLogo';\r\nimport useHardwareUsage from '../hooks/useHardwareUsage';\r\nimport SystemOperations from './SystemOperations';\r\n\r\n// 默认的获取 WebSocket URL 函数\r\nconst defaultGetSocketUrl = (url) => {\r\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\r\n return `ws://127.0.0.1:${window.location.port}${url}`;\r\n }\r\n return `ws://${window.location.host}${url}`;\r\n};\r\n\r\nconst CommonHeader = ({\r\n menuElement,\r\n productInfo = {},\r\n showLogo = true,\r\n showProductInfo = true,\r\n showHardwareUsage = true,\r\n showSystemOperations = true,\r\n onPowerOff, \r\n onRestart,\r\n onPowerOffSuccess,\r\n onRestartSuccess,\r\n beforeAction,\r\n hardwareMonitorUrl = '/ws/psmonitor/status_update',\r\n getSocketUrl = defaultGetSocketUrl,\r\n logoProps = {},\r\n className = '',\r\n style = {},\r\n // 新增插槽\r\n leftContent = null, // 左侧额外内容\r\n rightContent = null // 右侧额外内容\r\n}) => {\r\n const [logo] = useSpaLogo(logoProps);\r\n\r\n // 系统资源使用情况\r\n const usageElement = useHardwareUsage(getSocketUrl(hardwareMonitorUrl));\r\n\r\n return (\r\n <Flex justify=\"space-between\" align=\"center\" className={`common-header ${className}`} style={style}>\r\n {/* 左侧:Logo、产品信息和左侧插槽 */}\r\n <Space size={12}>\r\n {showLogo && logo}\r\n\r\n {showProductInfo && (\r\n <Flex align=\"center\" gap={12}>\r\n {productInfo.productName && (\r\n <Typography.Title level={4} style={{ marginBottom: 0 }}>\r\n {productInfo.productName}\r\n </Typography.Title>\r\n )}\r\n {productInfo.version && (\r\n <Typography.Text style={{ position: 'relative', top: 6, left: -6 }}>\r\n {productInfo.version}\r\n </Typography.Text>\r\n )}\r\n </Flex>\r\n )}\r\n\r\n {/* 左侧插槽 */}\r\n {leftContent}\r\n </Space>\r\n\r\n {/* 右侧:硬件监控和操作按钮 */}\r\n <Flex align=\"center\" gap={10}>\r\n {rightContent}\r\n\r\n {/* 系统资源使用情况 */}\r\n {showHardwareUsage && usageElement}\r\n\r\n <div className=\"header-controls\">\r\n {menuElement && (\r\n <div className=\"control-icon\">\r\n {menuElement}\r\n </div>\r\n )}\r\n\r\n {/* 关机、重启操作 */}\r\n {showSystemOperations && (\r\n <div className=\"control-icon\">\r\n <SystemOperations\r\n onPowerOff={onPowerOff}\r\n onRestart={onRestart}\r\n onPowerOffSuccess={onPowerOffSuccess}\r\n onRestartSuccess={onRestartSuccess}\r\n beforeAction={beforeAction}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </Flex>\r\n </Flex>\r\n )\r\n};\r\n\r\nexport default CommonHeader;","import { useState, useEffect, memo } from 'react';\r\nimport { Select, Form } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst LSMLabelField = (props) => {\r\n const intl = useIntl();\r\n const [lsmList, setLsmList] = useState([]);\r\n\r\n const {\r\n label = \"lsm.label\",\r\n onLsmSelect,\r\n fetchLsmData,\r\n formItemProps = {},\r\n selectProps = {},\r\n fieldNames = { label: 'label', value: 'label' }\r\n } = props;\r\n\r\n useEffect(() => {\r\n const loadLsmData = async () => {\r\n try {\r\n const res = await fetchLsmData();\r\n if (res?.length) {\r\n setLsmList(res);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch LSM data:', error);\r\n }\r\n };\r\n\r\n loadLsmData();\r\n }, [fetchLsmData]);\r\n\r\n return (\r\n <Form.Item\r\n label={typeof label === 'string' && label.includes('.') ? intl.formatMessage({ id: label }) : label}\r\n {...formItemProps}\r\n >\r\n <Select\r\n {...field}\r\n {...selectProps}\r\n options={lsmList}\r\n fieldNames={fieldNames}\r\n allowClear\r\n showSearch\r\n optionFilterProp=\"label\"\r\n onChange={(value, option) => {\r\n field.onChange(value);\r\n onLsmSelect?.(value === undefined ? undefined : option);\r\n }}\r\n placeholder={selectProps.placeholder || intl.formatMessage({ id: 'lsm.placeholder.select' })}\r\n />\r\n </Form.Item>\r\n );\r\n};\r\n\r\nexport default memo(LSMLabelField);","import { Select, Input, Form, InputNumber, App } from \"antd\";\r\nimport { memo, useEffect, useState } from \"react\";\r\nimport { StyledModal } from \"seeder-st2110-components\";\r\nimport { useIntl } from '../i18n';\r\n\r\nconst numberProps = {\r\n controls: false,\r\n keyboard: false,\r\n changeOnWheel: false,\r\n precision: 0\r\n}\r\n\r\nconst NmosModal = ({\r\n open, \r\n onClose, \r\n getNmosSettings,\r\n updateNmosSettings,\r\n hostAddressOptions = [],\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const intl = useIntl();\r\n const [nmosSettings, setNmosSettings] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n // 重置表单和状态当 Modal 打开时\r\n if (open) {\r\n setLoading(true);\r\n getNmosSettings().then(data => {\r\n if (data) {\r\n setNmosSettings(data);\r\n // 数据加载后设置表单值\r\n form.setFieldsValue({\r\n host_addresses: data.host_addresses || [],\r\n domain: data.domain,\r\n registry_address: data.registry_address,\r\n registration_port: data.registration_port,\r\n registry_version: data.registry_version,\r\n logging_level: data.logging_level,\r\n });\r\n }\r\n }).catch(err => {\r\n console.error(\"Failed to fetch settings\", err);\r\n }).finally(() => {\r\n setLoading(false);\r\n });\r\n } else {\r\n // 关闭时重置表单\r\n form.resetFields();\r\n setNmosSettings(null);\r\n }\r\n }, [open, form, getNmosSettings]); \r\n\r\n const handleSubmit = async () => {\r\n const values = await form.getFieldsValue();\r\n\r\n setLoading(true);\r\n\r\n try {\r\n const response = await updateNmosSettings({\r\n ...nmosSettings,\r\n ...values\r\n });\r\n\r\n if (response) {\r\n message.success(intl.formatMessage({ id: 'nmos.saveSuccess' }));\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title={intl.formatMessage({ id: 'nmos.title' })}\r\n width={650}\r\n open={open}\r\n okText={intl.formatMessage({ id: 'button.apply' })}\r\n cancelText={intl.formatMessage({ id: 'button.close' })}\r\n onOk={handleSubmit}\r\n onCancel={onClose}\r\n confirmLoading={loading}\r\n destroyOnHidden // 关闭时销毁组件,确保下次打开重新初始化\r\n {...modalProps}\r\n >\r\n <Form\r\n form={form}\r\n name=\"nmosForm\"\r\n labelCol={{ span: 5 }}\r\n wrapperCol={{ span: 19 }}\r\n autoComplete=\"off\"\r\n disabled={loading}\r\n {...formProps}\r\n >\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.hostAddress' })}\r\n name=\"host_addresses\"\r\n >\r\n <Select\r\n mode=\"multiple\"\r\n options={hostAddressOptions}\r\n fieldNames={{ label: \"display_name\", value: \"ip_address\" }}\r\n placeholder={intl.formatMessage({ id: 'nmos.placeholder.selectHostAddress' })}\r\n allowClear\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.domain' })} \r\n name=\"domain\"\r\n >\r\n <Input />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registryAddress' })}\r\n name=\"registry_address\"\r\n >\r\n <Input />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registrationPort' })}\r\n name=\"registration_port\"\r\n >\r\n <InputNumber\r\n {...numberProps}\r\n min={0}\r\n max={65535}\r\n style={{ width: '100%' }}\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registryVersion' })}\r\n name=\"registry_version\"\r\n >\r\n <Select\r\n options={[\r\n { label: \"v1.0\", value: \"v1.0\" },\r\n { label: \"v1.1\", value: \"v1.1\" },\r\n { label: \"v1.2\", value: \"v1.2\" },\r\n { label: \"v1.3\", value: \"v1.3\" }\r\n ]}\r\n placeholder={intl.formatMessage({ id: 'nmos.placeholder.selectVersion' })}\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.loggingLevel' })}\r\n name=\"logging_level\"\r\n >\r\n <InputNumber \r\n {...numberProps}\r\n min={-40} \r\n max={40}\r\n style={{ width: '100%' }}\r\n />\r\n </Form.Item>\r\n </Form>\r\n </StyledModal>\r\n )\r\n}\r\n\r\nexport default memo(NmosModal);","import { useState, useRef, useCallback } from 'react';\r\n\r\nexport const useDeviceHealthCheck = ({\r\n healthCheckUrl = '/api/get_fmt',\r\n maxRetries = 90,\r\n checkInterval = 2000,\r\n onRedirect,\r\n redirectPath = '/',\r\n} = {}) => {\r\n const [error, setError] = useState(null);\r\n const retryCountRef = useRef(0);\r\n const abortControllerRef = useRef(null); // 用于取消轮询\r\n\r\n // 默认跳转行为:原生页面跳转(兼容无路由场景)\r\n const handleRedirect = useCallback((path) => {\r\n if (onRedirect) {\r\n onRedirect(path);\r\n } else {\r\n // 降级到原生跳转,避免依赖 history\r\n window.location.assign(path);\r\n }\r\n }, [onRedirect]);\r\n\r\n // 健康检查函数\r\n const checkHealth = async () => {\r\n if (abortControllerRef.current?.signal.aborted) return false;\r\n\r\n try {\r\n setError(null);\r\n const res = await fetch(healthCheckUrl, {\r\n method: 'HEAD',\r\n signal: abortControllerRef.current?.signal,\r\n });\r\n\r\n if (res.ok) {\r\n handleRedirect(redirectPath);\r\n return true;\r\n }\r\n return false;\r\n } catch (err) {\r\n if (err.name === 'AbortError') return false;\r\n setError('Unable to connect to the device. Please check your network.');\r\n return false;\r\n }\r\n };\r\n\r\n const poll = async () => {\r\n if (retryCountRef.current >= maxRetries) {\r\n setError('Unable to connect to the device. Click below to retry.');\r\n return;\r\n }\r\n\r\n const success = await checkHealth();\r\n if (success) return;\r\n\r\n if (!abortControllerRef.current?.signal.aborted) {\r\n retryCountRef.current += 1;\r\n setTimeout(poll, checkInterval);\r\n }\r\n };\r\n\r\n // 轮询逻辑\r\n const startPolling = useCallback(() => {\r\n // 重置状态\r\n retryCountRef.current = 0;\r\n setError(null);\r\n // 初始化 AbortController\r\n abortControllerRef.current = new AbortController();\r\n poll();\r\n }, []);\r\n\r\n const manualRetry = useCallback(() => {\r\n retryCountRef.current = 0;\r\n setError(null);\r\n poll();\r\n }, []);\r\n\r\n const cleanup = useCallback(() => {\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n abortControllerRef.current = null;\r\n }\r\n }, []);\r\n\r\n return {\r\n error,\r\n startPolling,\r\n manualRetry,\r\n cleanup\r\n };\r\n};","import { Result, Space, Typography, Button, Alert } from 'antd';\r\nimport { useEffect, useState } from 'react';\r\nimport { useDeviceHealthCheck } from '../hooks/useDeviceHealthCheck';\r\nimport { useIntl } from '../i18n';\r\n\r\nexport const MaintenancePage = ({\r\n isRestart = false,\r\n healthCheckUrl = '/api/get_fmt',\r\n redirectPath = '/',\r\n onRedirect,\r\n maxRetries = 90, // 最多重试 90 次(约 180 秒)\r\n checkInterval = 2000, // 每 2 秒重试\r\n countdownSeconds = 30, // 倒计时初始值,单位秒\r\n}) => {\r\n const intl = useIntl();\r\n const [countdown, setCountdown] = useState(countdownSeconds);\r\n\r\n const { error, startPolling, manualRetry, cleanup } = useDeviceHealthCheck({\r\n healthCheckUrl,\r\n redirectPath,\r\n onRedirect,\r\n maxRetries,\r\n checkInterval\r\n });\r\n\r\n useEffect(() => {\r\n if (!isRestart) return;\r\n\r\n const countdownTimer = setInterval(() => {\r\n setCountdown(prev => Math.max(0, prev - 1));\r\n }, 1000);\r\n\r\n const firstCheck = async () => {\r\n try {\r\n const res = await fetch(healthCheckUrl, { method: 'HEAD' });\r\n if (!res.ok) {\r\n startPolling();\r\n } else {\r\n onRedirect?.(redirectPath);\r\n }\r\n } catch {\r\n startPolling();\r\n }\r\n };\r\n\r\n firstCheck();\r\n\r\n return () => {\r\n clearInterval(countdownTimer);\r\n cleanup();\r\n };\r\n }, [isRestart, healthCheckUrl, startPolling, cleanup]);\r\n\r\n const title = isRestart\r\n ? intl.formatMessage({ id: 'maintenance.restarting' })\r\n : intl.formatMessage({ id: 'maintenance.poweredOff' });\r\n\r\n const subTitle = isRestart ? (\r\n <Space direction=\"vertical\" size={8} style={{ alignItems: 'center' }}>\r\n <Typography.Text>\r\n {intl.formatMessage({ id: 'maintenance.waiting' })}\r\n </Typography.Text>\r\n\r\n {/* 倒计时阶段 */}\r\n {countdown > 0 && (\r\n <Typography.Text type=\"secondary\">\r\n {intl.formatMessage({ id: 'maintenance.redirecting.countdown' }, { countdown })}\r\n </Typography.Text>\r\n )}\r\n\r\n {/* 倒计时结束,仍在自动重试中(无错误) */}\r\n {countdown <= 0 && !error && (\r\n <Typography.Text type=\"secondary\">\r\n {intl.formatMessage({ id: 'maintenance.waiting.long' })}\r\n </Typography.Text>\r\n )}\r\n\r\n {/* 错误提示(含操作引导) */}\r\n {error && (\r\n <>\r\n <Alert\r\n type=\"error\"\r\n message={error}\r\n showIcon\r\n style={{ width: '100%' }}\r\n />\r\n <Button type=\"link\" onClick={manualRetry}>\r\n {intl.formatMessage({ id: 'maintenance.retry' })}\r\n </Button>\r\n </>\r\n )}\r\n </Space>\r\n ) : (\r\n <Typography.Text>\r\n {intl.formatMessage({ id: 'maintenance.offline.description' })}\r\n </Typography.Text>\r\n );\r\n\r\n return (\r\n <div className=\"maintenance-page\">\r\n <Result\r\n status={isRestart ? 'info' : 'warning'}\r\n title={title}\r\n subTitle={subTitle}\r\n />\r\n </div>\r\n );\r\n};","// src/react/DraggableNumberInput.tsx\r\nimport React from \"react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\n// 默认配置\r\nconst DEFAULT_DECIMAL_PLACES = 2;\r\n\r\n// src/react/defaults-and-utils.ts\r\n// eslint-disable-next-line no-var\r\nvar defaultModifiers = {\r\n default: { multiplier: 1, sensitivity: 1 },\r\n // ctrlKey: { multiplier: 1, sensitivity: 1 },\r\n // shiftKey: { multiplier: 10, sensitivity: 0.5 },\r\n // metaKey: { multiplier: 1, sensitivity: 1 },\r\n // altKey: { multiplier: 1, sensitivity: 1 }\r\n};\r\n\r\n// multiplier: 控制每次鼠标移动时数值变化的基本单位 multiplier: 1- 鼠标移动1像素,值变化1 multiplier: 10- 鼠标移动1像素,值变化10\r\n// sensitivity: 控制数值变化的灵敏度 sensitivity: 1- 正常灵敏度 sensitivity: 0.5- 减半灵敏度,需要移动2像素才能产生正常1像素的效果\r\n\r\n// 修改 formatNumber 函数,强制显示1位小数\r\nfunction formatNumber(value, decimalPlaces = DEFAULT_DECIMAL_PLACES) {\r\n return new Intl.NumberFormat(\"en-US\", {\r\n minimumFractionDigits: decimalPlaces,\r\n maximumFractionDigits: decimalPlaces,\r\n useGrouping: false\r\n }).format(value);\r\n}\r\n\r\nfunction handleArrow(e, multiplier, value) {\r\n if (e.key === \"ArrowUp\") {\r\n return value + multiplier;\r\n }\r\n if (e.key === \"ArrowDown\") {\r\n return value - multiplier;\r\n }\r\n return value;\r\n}\r\n\r\n// eslint-disable-next-line no-var\r\nvar DragCursor = ({ cursorPosition }) => /* @__PURE__ */ React.createElement(\r\n \"div\",\r\n {\r\n style: {\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"24\",\r\n height: \"24\",\r\n viewBox: \"0 0 24 24\",\r\n style: {\r\n position: \"absolute\",\r\n left: cursorPosition.x,\r\n top: cursorPosition.y,\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"path\",\r\n {\r\n fill: \"#000\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\",\r\n d: \"M6.5 9a.5.5 0 0 0-.8-.4l-4 3a.5.5 0 0 0 0 .8l4 3a.5.5 0 0 0 .8-.4v-1.5h11V15a.5.5 0 0 0 .8.4l4-3a.5.5 0 0 0 0-.8l-4-3a.5.5 0 0 0-.8.4v1.5h-11V9Z\",\r\n style: {\r\n filter: \"drop-shadow( 0px 2px 1px rgba(0, 0, 0, .35))\"\r\n }\r\n }\r\n )\r\n )\r\n);\r\n\r\n// eslint-disable-next-line no-var\r\nvar noop = () => {\r\n};\r\nfunction DraggableNumberInput({\r\n value,\r\n min,\r\n max,\r\n className = \"\",\r\n disablePointerLock = false,\r\n modifierKeys,\r\n decimalPlaces = DEFAULT_DECIMAL_PLACES,\r\n onChange = noop,\r\n onDragStart = noop,\r\n onDragEnd = noop,\r\n disabled = false, // 新增 disabled 属性\r\n style,\r\n ...restProps\r\n}) {\r\n const inputRef = useRef(null);\r\n const [isMouseDown, setIsMouseDown] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [localValue, setLocalValue] = useState(() => formatNumber(value, decimalPlaces));\r\n const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\r\n const totalMovement = useRef(0);\r\n const startValue = useRef(0);\r\n const startX = useRef(0);\r\n const currentMultiplier = useRef(1);\r\n\r\n // === 新增:编辑状态跟踪 ===\r\n const [isEditing, setIsEditing] = useState(false);\r\n const lastExternalValueRef = useRef(value);\r\n\r\n // 修改 formatNumber 调用,传入 decimalPlaces\r\n const formatValue = useCallback((val) => {\r\n return formatNumber(val, decimalPlaces);\r\n }, [decimalPlaces]);\r\n\r\n const constrainedOnChange = useCallback(\r\n (newValue) => {\r\n if (disabled) return; // 禁用状态下不触发 onChange\r\n \r\n let constrainedValue = newValue;\r\n if (typeof min === \"number\") {\r\n constrainedValue = Math.max(min, constrainedValue);\r\n }\r\n if (typeof max === \"number\") {\r\n constrainedValue = Math.min(max, constrainedValue);\r\n }\r\n onChange(constrainedValue);\r\n },\r\n [onChange, min, max, disabled]\r\n );\r\n\r\n useEffect(() => {\r\n // 只有当用户不在编辑状态,且外部值真正变化时才更新\r\n if (!isEditing && lastExternalValueRef.current !== value) {\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = value;\r\n }\r\n }, [value, formatValue, isEditing, disabled]);\r\n \r\n const handleInputChange = (e) => {\r\n if (disabled) return; // 禁用状态下不处理输入\r\n \r\n const val = e.target.value;\r\n\r\n // 标记为编辑状态\r\n setIsEditing(true);\r\n setLocalValue(val);\r\n\r\n // 允许输入中间状态,不立即触发onChange\r\n if (val === '' || val === '-' || val === '.' || val.endsWith('.')) {\r\n return; // 输入中,不触发onChange\r\n }\r\n\r\n const num = parseFloat(val);\r\n if (!isNaN(num)) {\r\n constrainedOnChange(num); \r\n }\r\n };\r\n\r\n const handleBlur = () => {\r\n if (disabled) return; // 禁用状态下不处理失焦\r\n \r\n // 退出编辑状态\r\n setIsEditing(false);\r\n\r\n const num = parseFloat(localValue);\r\n if (!isNaN(num)) {\r\n // 根据 decimalPlaces 进行四舍五入\r\n const precision = Math.pow(10, decimalPlaces);\r\n const processedValue = Math.round(num * precision) / precision;\r\n const formattedValue = formatValue(processedValue);\r\n\r\n // 更新显示值\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = processedValue;\r\n // 触发外部变化\r\n constrainedOnChange(processedValue);\r\n } else {\r\n // 如果输入无效,重置为当前外部值\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n }\r\n };\r\n\r\n const handleMouseDown = useCallback(\r\n (e) => {\r\n if (disabled) return; // 禁用状态下不处理鼠标按下\r\n if (!inputRef.current) return;\r\n \r\n let x = 0, y = 0;\r\n if (\"clientX\" in e && \"clientY\" in e) {\r\n [x, y] = [e.clientX, e.clientY];\r\n }\r\n if (\"touches\" in e) {\r\n [x, y] = [e.touches[0].clientX, e.touches[0].clientY];\r\n }\r\n setIsMouseDown(true);\r\n startX.current = x;\r\n startValue.current = value;\r\n totalMovement.current = 0;\r\n setCursorPosition({ x, y });\r\n },\r\n [value, disablePointerLock, disabled]\r\n );\r\n\r\n const updateDelta = useCallback(\r\n (e) => {\r\n if (disabled) return; // 禁用状态下不更新\r\n if (!isMouseDown) return;\r\n applyMovement(totalMovement.current, e);\r\n },\r\n [isMouseDown, disabled]\r\n );\r\n\r\n const getModifiers = useCallback(\r\n (e) => {\r\n const mods = { ...defaultModifiers, ...modifierKeys };\r\n for (const key in mods) {\r\n if (key !== \"default\" && e[key]) {\r\n currentMultiplier.current = mods[key].multiplier;\r\n return mods[key];\r\n }\r\n }\r\n currentMultiplier.current = mods.default.multiplier;\r\n return mods.default;\r\n },\r\n [modifierKeys]\r\n );\r\n\r\n const applyMovement = useCallback(\r\n (newMovement, e) => {\r\n if (disabled) return; // 禁用状态下不应用移动\r\n \r\n const { sensitivity, multiplier } = getModifiers(e);\r\n const delta = newMovement * sensitivity * multiplier;\r\n let newValue = startValue.current + delta;\r\n // 根据 decimalPlaces 进行精度控制\r\n const precision = Math.pow(10, decimalPlaces);\r\n newValue = Math.round(newValue * precision) / precision;\r\n newValue = Object.is(newValue, -0) ? 0 : newValue;\r\n constrainedOnChange(newValue);\r\n },\r\n [constrainedOnChange, getModifiers, decimalPlaces, disabled]\r\n );\r\n\r\n const handleArrowKeyDown = (e) => {\r\n if (disabled) return; // 禁用状态下不处理方向键\r\n \r\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n const { multiplier } = getModifiers(e);\r\n const newValue = handleArrow(e, multiplier, value);\r\n constrainedOnChange(newValue);\r\n }\r\n };\r\n\r\n const handleModifierKeyDuringDrag = useCallback(\r\n (e) => {\r\n if (disabled) return; // 禁用状态下不处理修饰键\r\n \r\n if (e.key === \"Shift\" || e.key === \"Control\" || e.key === \"Meta\" || e.key === \"Alt\") {\r\n updateDelta(e);\r\n }\r\n },\r\n [updateDelta, disabled]\r\n );\r\n\r\n const handleMouseMove = useCallback(\r\n (e) => {\r\n if (disabled) return; // 禁用状态下不处理鼠标移动\r\n if (!isMouseDown) return;\r\n \r\n if (\"touches\" in e) {\r\n e.preventDefault();\r\n }\r\n if (!disablePointerLock && document.pointerLockElement && !(\"touches\" in e)) {\r\n setCursorPosition((prev) => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n const x2 = (prev.x + e.movementX + width) % width;\r\n const y = (prev.y + e.movementY + height) % height;\r\n return { x: x2, y };\r\n });\r\n }\r\n const x = \"touches\" in e ? e.touches[0].clientX : e.clientX;\r\n const newMovement = disablePointerLock || \"touches\" in e ? x - startX.current : totalMovement.current + e.movementX;\r\n if (!isDragging && newMovement !== 0) {\r\n if (!disablePointerLock && !(\"touches\" in e)) {\r\n inputRef.current?.requestPointerLock?.();\r\n }\r\n setIsDragging(true);\r\n document.addEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.addEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragStart();\r\n }\r\n totalMovement.current = newMovement;\r\n applyMovement(newMovement, e);\r\n },\r\n [\r\n isMouseDown,\r\n disablePointerLock,\r\n startX,\r\n isDragging,\r\n onDragStart,\r\n applyMovement,\r\n handleModifierKeyDuringDrag,\r\n disabled\r\n ]\r\n );\r\n\r\n const handleMouseUp = useCallback(() => {\r\n if (disabled) return; // 禁用状态下不处理鼠标抬起\r\n \r\n setIsMouseDown(false);\r\n totalMovement.current = 0;\r\n if (isDragging) {\r\n setIsDragging(false);\r\n document.removeEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.removeEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragEnd();\r\n }\r\n if (document.pointerLockElement) {\r\n document.exitPointerLock();\r\n }\r\n }, [isDragging, onDragEnd, disablePointerLock, disabled]);\r\n\r\n useEffect(() => {\r\n if (isMouseDown && !disabled) {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove, {\r\n passive: false\r\n });\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n };\r\n }\r\n }, [isMouseDown, handleMouseMove, handleMouseUp, disabled]);\r\n\r\n // 禁用状态下的样式\r\n const disabledStyle = disabled ? {\r\n cursor: 'not-allowed',\r\n borderColor: '#424242',\r\n background: 'rgba(255, 255, 255, 0.08)',\r\n color: 'rgba(255, 255, 255, 0.25)'\r\n } : {};\r\n\r\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\r\n \"input\",\r\n {\r\n ref: inputRef,\r\n type: \"text\",\r\n inputMode: \"numeric\",\r\n pattern: \"-?[0-9]*\\\\.?[0-9]*\",\r\n value: localValue,\r\n onChange: handleInputChange,\r\n onBlur: handleBlur,\r\n onMouseDown: handleMouseDown,\r\n onTouchStart: handleMouseDown,\r\n onKeyDown: handleArrowKeyDown,\r\n disabled: disabled, // 添加 disabled 属性\r\n className: `draggable-number-input ${className} ${isDragging ? \"dragging\" : \"\"} ${disabled ? \"disabled\" : \"\"}`,\r\n style: {\r\n ...{\r\n cursor: disabled ? 'not-allowed' : 'ew-resize',\r\n userSelect: disabled ? 'none' : 'auto',\r\n caretColor: isDragging ? \"transparent\" : \"initial\"\r\n },\r\n ...disabledStyle,\r\n ...style\r\n },\r\n ...restProps\r\n }\r\n ), isDragging && !disablePointerLock && !disabled && /* @__PURE__ */ React.createElement(DragCursor, { cursorPosition }));\r\n}\r\n\r\nexport {\r\n DraggableNumberInput\r\n};","import React from 'react';\r\nimport { InputNumber } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\n/**\r\n * 通用有界输入框\r\n * 用于处理需要范围限制的输入,支持自动修正或自由输入\r\n */\r\nexport const BoundedInput = ({\r\n value, \r\n onChange, \r\n min = 0,\r\n max = 100,\r\n autoCorrect = false, \r\n placeholder = 'input.placeholder.enterInteger',\r\n disabled = false,\r\n ...props\r\n}) => {\r\n const intl = useIntl();\r\n \r\n // 处理国际化文本\r\n const placeholderText = typeof placeholder === 'string' && placeholder.includes('.') \r\n ? intl.formatMessage({ id: placeholder }) \r\n : placeholder;\r\n \r\n // 1. 处理输入变更:只管记录,不修正,不打断\r\n const handleChange = (val) => {\r\n if (val === null || val === undefined) {\r\n onChange?.(null);\r\n return;\r\n }\r\n // 确保是整数\r\n if (typeof val === 'number') {\r\n onChange?.(Math.floor(val));\r\n }\r\n };\r\n\r\n // 2. 处理失焦:只有开启 autoCorrect 时才执行修正\r\n const handleBlur = (e) => {\r\n // 如果关闭了自动修正,直接返回,不做任何事\r\n if (!autoCorrect) return;\r\n\r\n const val = e.target.value;\r\n \r\n if (val === '' || val === null || val === undefined) return;\r\n\r\n const num = Number(val);\r\n if (isNaN(num)) return;\r\n\r\n // 核心修正逻辑\r\n let safeVal = num;\r\n if (num < min) safeVal = min;\r\n if (num > max) safeVal = max;\r\n\r\n // 只有当值需要改变时,才触发更新\r\n if (safeVal !== num) {\r\n onChange?.(safeVal);\r\n }\r\n };\r\n\r\n return (\r\n <InputNumber\r\n value={value}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n placeholder={placeholderText}\r\n // 只有开启自动修正时,才把 min/max 传给组件\r\n min={autoCorrect ? min : undefined}\r\n max={autoCorrect ? max : undefined}\r\n precision={0} // 必须是整数\r\n controls={false} // 隐藏上下箭头\r\n keyboard={false} // 禁用键盘上下键\r\n changeOnWheel={false} // 禁用滚轮\r\n style={{ width: '100%' }}\r\n disabled={disabled}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * 专用端口输入框\r\n */\r\nexport const PortInput = (props) => (\r\n <BoundedInput\r\n min={0}\r\n max={65535}\r\n placeholder=\"input.placeholder.enterPort\"\r\n {...props}\r\n />\r\n);\r\n\r\n/**\r\n * 专用 Payload 输入框\r\n */\r\nexport const PayloadInput = (props) => (\r\n <BoundedInput\r\n min={96}\r\n max={127}\r\n placeholder=\"input.placeholder.enterPayload\"\r\n {...props}\r\n />\r\n);"],"names":["debugI18n","_window$g_initialProp","_window$g_initialProp2","_window$g_initialProp3","_window$g_initialProp4","_window$g_initialProp5","_window$g_initialProp6","window","console","log","group","g_initialProps","locale","___g_initialPropsFromServer","localStorage","getItem","e","__COMPONENT_LOCALE__","__COMPONENT_I18N_MESSAGES__","__PROJECT_I18N_MESSAGES__","messages","componentMessages","projectMessages","umiMessages","allLocales","Set","Object","keys","Array","from","forEach","merged","_objectSpread","concat","length","testKeys","currentLocale","allMessages","key","_allMessages$currentL","_allMessages$enUS","translation","groupEnd","process","env","NODE_ENV","getLocale","g_lang","LOCALE","g_initialPropsFromServer","storedLocale","getMessages","formatMessage","_ref","_messages$locale","_messages$enUS","id","values","arguments","undefined","message","replace","match","useIntl","formatMessageFn","_ref2","addMessages","formatBytes","bytes","decimals","k","dm","sizes","i","Math","floor","parseFloat","pow","toFixed","UsageItem","memo","title","iconClass","children","memTotal","intl","_jsx","Tooltip","_jsxs","_Fragment","destroyOnHidden","className","useHardwareWebSocket","socketUrl","systemStatus","setSystemStatus","useState","handleMessage","useCallback","prev","error","useWebSocket","onMessage","event","parsedMessage","JSON","parse","data","debug","ps_status","getMaxNicTemp","sensors","priorityFields","temps","flatMap","field","_sensors$field","map","item","current","filter","temp","max","getMaxSensorTemp","sensorData","getDetail","_sensors_temperatures","_sensors_temperatures2","_mem$total","_mem$percent","_getMaxNicTemp","_gpu_stats$0$utilizat","_gpu_stats$","_gpu_stats$0$temperat","_gpu_stats$2","status","cpu_percent","mem","sensors_temperatures","gpu_stats","cpu_usage","cpu_temp","coretemp","mem_total","total","mem_usage","percent","mem_temp","spd5118","nic_temp","hd_temp","nvme","gpu_usage","gpu_temp","createMetricItem","value","unit","numValue","valueString","getItems","details","items","push","useHardwareUsage","useMemo","statusItems","index","StyledModal","props","width","okText","cancelText","styles","propStyles","restProps","_objectWithoutProperties","_excluded","okButtonText","includes","cancelButtonText","baseStyles","content","padding","header","marginBottom","paddingBlock","paddingInlineStart","background","body","paddingInline","footer","marginTop","paddingBlockEnd","Modal","AuthorizationModal","onCancel","onOk","authData","App","useApp","code","setCode","accredit_status","isActivated","statusMessage","bios_id","uuid","expires_time","expiresTime","getStatusMessageKey","msg","statusMap","statusMessageKey","handleOk","trimmedCode","trim","statusAlert","Alert","type","showIcon","defaultOkText","open","cancelButtonProps","disabled","maskClosable","closable","Form","name","labelCol","span","wrapperCol","autoComplete","style","Item","label","required","Input","readOnly","TextArea","onChange","target","autoSize","minRows","maxRows","placeholder","DEFAULT_AUTH","useAuth","options","fetchAuthInfo","authorize","defaultAuthData","autoShowModal","messageApi","contextHolder","useMessage","showModal","setShowModal","setAuthData","isRegistered","setIsRegistered","loading","setLoading","openModal","closeModal","useEffect","loadAuthInfo","result","commands","auth","license_data","errorMsg","ciphertext_status","errorMessage","modal","AuthModal","openAuthModal","closeAuthModal","useUpgrade","menuItems","onMenuClick","downloadFiles","upgradeExecute","upgradeStatus","acceptFileTypes","uploadCompleteDelay","statusPollingInterval","isSpinning","setIsSpinning","pollingInterval","setPollingInterval","currentStatus","setCurrentStatus","uploadProgress","setUploadProgress","inputRef","useRef","isUploadingRef","isMountedRef","uploadCancelToken","axios","CancelToken","source","statusCancelToken","showLoader","hideLoader","finalMenuItems","hasDownload","some","hasUpload","licenseIndex","findIndex","itemsToAdd","beforeLicense","slice","licenseItem","afterLicense","itemsToInsert","handleMenuClick","onDownload","onUpload","warn","res","Error","fileName","contentDisposition","headers","filenameMatch","decodeURIComponent","blob","Blob","url","URL","createObjectURL","link","document","createElement","display","href","download","appendChild","click","parentNode","removeChild","revokeObjectURL","updatePackage","_event$target$files","file","files","cancel","formData","FormData","append","response","onUploadProgress","progressEvent","percentCompleted","round","loaded","cancelToken","token","cancelRequest","setTimeout","isCancel","fetchUpgradeStatus","success","location","reload","useInterval","upgradeElement","Dropdown","menu","onClick","trigger","preventDefault","ref","accept","Spin","spinning","indicator","LoadingOutlined","fontSize","spin","tip","size","fullscreen","useSystemOperations","onPowerOff","onRestart","confirmTitle","run","AntdModal","confirmTitleText","cancelTextValue","okTextValue","doAction","action","confirm","icon","ExclamationCircleFilled","toUpperCase","getMenuItems","usePageReload","reloading","setReloading","startReload","delay","backgroundColor","transition","offsetHeight","timer","clearTimeout","ReloadOverlay","position","top","left","right","bottom","flexDirection","alignItems","justifyContent","zIndex","color","getReadyStateText","state","states","createDummyLogger","dummyFn","exportLogs","getLogStats","errors","warnings","info","lastTimestamp","clearLogs","logs","createGlobalLogger","webSocketUrl","maxLogs","isDevelopment","level","timestamp","Date","toISOString","logEntry","timestampDisplay","toLocaleString","year","month","day","hour","minute","second","hour12","shift","consoleMessage","consoleArgs","filenamePrefix","logText","entry","stringify","join","repeat","blobUrl","hostname","pathname","urlObj","readableTime","filename","a","count","_logs","l","useHeartbeat","sendMessage","readyState","config","logger","enabled","heartbeatTimerRef","lastHeartbeatTimeRef","now","configRef","interval","stateRef","clearInterval","stopHeartbeat","startHeartbeat","currentState","currentConfig","setInterval","latestState","latestConfig","timeSinceLastHeartbeat","heartbeatImpl","getLastHeartbeatTime","isEnabled","useWebSocketWithFeatures","heartbeat","heartbeatConfig","enableLog","isConnected","setIsConnected","websocketOptions","onOpen","_options$onOpen","eventCode","call","onError","_options$onError","errorType","onClose","_options$onClose","reason","wasClean","onReconnect","_options$onReconnect","attempt","maxAttempts","reconnectLimit","latestMessage","connect","disconnect","heartbeatOptions","heartbeatEnabled","btoa","loggerMethods","readyStateText","NetworkFieldGroup","_fieldConfig$netmask$","_fieldConfig$netmask","prefix","interfaces","fieldConfig","defaultFieldConfig","ip","netmask","mergedFieldConfig","Typography","Title","iface","Divider","marginBlock","NetworkSettingsModal","getLanConfig","getSysConfig","getConfig","updateLanConfig","updateSysConfig","restart","onRestartSuccess","modalProps","formProps","sections","showNetmask","LAN","QSFP","restartRemark","form","useForm","st2110Interfaces","setSt2110Interfaces","lanConfigs","setLanConfigs","submitLoading","setSubmitLoading","isInitialized","setIsInitialized","originalSt2110InterfacesRef","initializationStatus","hasFetched","hasInitialized","preparedFieldConfig","fetchData","lan_interfaces","promises","results","Promise","allSettled","lanResult","sysResult","st2110_interfaces","resetFields","initialValues","connection_id","display_name","ip_address","setFieldsValue","handleSuccess","messageText","isPopup","refresh","defaultMessage","newConfig","updatedConfig","is_restart_required","handleSubmit","validateFields","hasQsfpChanged","original","orig","ipChanged","updatePromises","lanData","_lanConfigs$index","interfacesData","_st2110Interfaces$ind","_st2110Interfaces$ind2","_st2110Interfaces$ind3","st2110Data","allSucceeded","every","mergedModalProps","confirmLoading","centered","forceRender","mergedFormProps","defaultFieldConfigs","clock_class","formType","clock_accuracy","offset_scaled_log_variance","grandmaster_priority1","grandmaster_priority2","grandmaster_identity","master_port_id","t1_domain_number","min","master_utc_offset","is_connected","text","is_locked","defaultFieldOrder","convertPtpStatusToArray","ptpStatus","fieldConfigs","fieldOrder","rawData","PtpModal","getPtpInfo","updatePtpInfo","setPtpStatus","then","catch","err","finally","ptpStatusArray","renderLabel","getFieldsValue","renderFormItem","_item$options","_item$statusMap","_item$min","_item$max","selectOptions","opt","Select","Switch","normalizedValue","ptp","unknown","ConfigProvider","theme","components","Badge","statusSize","InputNumber","controls","keyboard","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","initialValue","LeftList","dataSource","selectedPresetId","onSelectPreset","onAddNew","onRemove","onImport","onExport","hasPresets","enableImportAndExport","texts","newButton","removeButton","importButton","exportButton","fmt","List","rowKey","renderItem","Text","ellipsis","create_time","description","emptyText","Empty","image","PRESENTED_IMAGE_SIMPLE","Button","PlusOutlined","Space","SubmitButton","editButtonEle","RightDetailForm","_ref3","onSave","onLoad","onEdit","onCancelEdit","onUpdate","isLoading","isSavedPreset","originalPresetData","fields","category_list","loadButton","saveButton","editButton","cancelButton","presetChanged","enableEdit","initialSelected","setInitialSelected","isEditMode","setIsEditMode","currentSelected","useWatch","hasCategoryList","currentValue","getFieldValue","checkboxOptions","category","isInitiallySelected","shouldDisable","initiallySelected","handleCheckboxChange","checkedValues","handleEditClick","handleCancelEdit","handleSaveEdit","handleLoad","formValues","loadData","shouldDisableNameAndDesc","shouldDisableCategories","Flex","vertical","height","layout","flex","overflowY","Checkbox","Group","rows","resize","Preset","getPresetList","savePreset","removePreset","loadPreset","updatePreset","uploadPreset","downloadPreset","onLoadSuccess","onLoadError","deleteConfirm","loadConfirm","loadText","successText","presetList","setPresetList","selectedPreset","setSelectedPreset","uploading","setUploading","setPresetChanged","fetchPresetList","presets","preset_list","firstPreset","handleSelectPreset","preset","handleAddNew","_fields$category_list","unsavedPreset","find","warning","newPreset","reduce","acc","fieldName","handleRemove","isUnsavedPreset","presetName","currentIndex","updatedList","nextIndex","nextPreset","handleImport","input","onchange","_e$target$files","toLowerCase","endsWith","remove","handleExport","downloadUrl","handleLoadPreset","modalInstance","resolveOk","resolve","reject","update","okButtonProps","_resolveOk","destroy","handleSave","_fields$name","_fields$category_list2","savedPresetName","newlySavedPreset","handleUpdate","_fields$name2","updatedPreset","wrapClassName","Row","gutter","Col","justify","align","UpgradeManager","dropdownProps","dropdownElement","otherElements","defaultProps","placement","reactIs_production_min","reactIs_development","reactIsModule","require$$0","require$$1","objectAssign","ReactPropTypesSecret_1","has","checkPropTypes_1","require$$2","require$$3","require$$4","factoryWithTypeCheckers","factoryWithThrowingShims","propTypesModule","SystemOperations","onPowerOffSuccess","beforeAction","powerOffLabel","restartLabel","iconClassName","confirmMessage","actionLabels","poweroff","actionText","titleText","propTypes","PropTypes","func","string","logoBase64","defaultResetRoute","origin","useSpaLogo","logoUrl","logoWidth","logoAlt","buttonStyle","lineHeight","borderStyle","alt","src","number","defaultGetSocketUrl","port","host","CommonHeader","menuElement","productInfo","showLogo","showProductInfo","showHardwareUsage","showSystemOperations","hardwareMonitorUrl","getSocketUrl","logoProps","leftContent","rightContent","logo","usageElement","gap","productName","version","LSMLabelField","lsmList","setLsmList","onLsmSelect","fetchLsmData","formItemProps","selectProps","fieldNames","loadLsmData","allowClear","showSearch","optionFilterProp","option","numberProps","changeOnWheel","precision","NmosModal","getNmosSettings","updateNmosSettings","hostAddressOptions","nmosSettings","setNmosSettings","host_addresses","domain","registry_address","registration_port","registry_version","logging_level","mode","useDeviceHealthCheck","healthCheckUrl","maxRetries","checkInterval","onRedirect","redirectPath","setError","retryCountRef","abortControllerRef","handleRedirect","path","assign","checkHealth","_abortControllerRef$c","signal","aborted","_abortControllerRef$c2","fetch","method","ok","poll","_abortControllerRef$c3","startPolling","AbortController","manualRetry","cleanup","abort","MaintenancePage","isRestart","countdownSeconds","countdown","setCountdown","countdownTimer","firstCheck","_unused","subTitle","direction","Result","DEFAULT_DECIMAL_PLACES","defaultModifiers","default","multiplier","sensitivity","formatNumber","decimalPlaces","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","useGrouping","format","handleArrow","DragCursor","cursorPosition","React","pointerEvents","xmlns","viewBox","x","y","transform","fill","stroke","strokeLinejoin","d","noop","DraggableNumberInput","disablePointerLock","modifierKeys","onDragStart","onDragEnd","isMouseDown","setIsMouseDown","isDragging","setIsDragging","localValue","setLocalValue","setCursorPosition","totalMovement","startValue","startX","currentMultiplier","isEditing","setIsEditing","lastExternalValueRef","formatValue","val","constrainedOnChange","newValue","constrainedValue","formattedValue","handleInputChange","num","isNaN","handleBlur","processedValue","handleMouseDown","clientX","clientY","touches","updateDelta","applyMovement","getModifiers","mods","newMovement","delta","is","handleArrowKeyDown","handleModifierKeyDuringDrag","handleMouseMove","pointerLockElement","innerWidth","innerHeight","x2","movementX","movementY","_inputRef$current","_inputRef$current$req","requestPointerLock","addEventListener","handleMouseUp","removeEventListener","exitPointerLock","passive","disabledStyle","cursor","borderColor","Fragment","inputMode","pattern","onBlur","onMouseDown","onTouchStart","onKeyDown","userSelect","caretColor","BoundedInput","autoCorrect","placeholderText","handleChange","safeVal","PortInput","PayloadInput"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[19,20,21,22,23,24,25,26,27,28]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/i18n/debug.js","../src/i18n/index.js","../src/componnets/UsageItem.jsx","../src/hooks/useHardwareWebSocket.js","../src/hooks/useHardwareUsage.js","../src/componnets/StyledModal.jsx","../src/componnets/AuthorizationModal.jsx","../src/hooks/useAuth.js","../src/hooks/useUpgrade.js","../src/hooks/useSystemOperations.js","../src/hooks/usePageReload.js","../src/hooks/advanced/useWebSocketWithFeatures.js","../src/locales/zh-CN.js","../src/locales/en-US.js","../src/componnets/NetworkSettingsModal.jsx","../src/componnets/PtpModal.jsx","../src/componnets/PresetModal.component.jsx","../src/componnets/PresetModal.jsx","../src/componnets/UpgradeManager.jsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/componnets/SystemOperations.jsx","../src/hooks/useSpaLogo.js","../src/componnets/CommonHeader.jsx","../src/componnets/LSMLabelField.jsx","../../../node_modules/seeder-st2110-components/dist/index.esm.js","../src/componnets/NmosModal.jsx","../src/hooks/useDeviceHealthCheck.js","../src/componnets/MaintenancePage.jsx","../src/componnets/DraggableNumberInput.jsx","../src/componnets/BoundedInput.jsx","../src/util.js"],"sourcesContent":["/**\n * 国际化调试工具\n * 在浏览器控制台运行 window.debugI18n() 查看当前国际化状态\n */\n\nexport const debugI18n = () => {\n if (typeof window === 'undefined') {\n console.log('[i18n debug] Not in browser environment');\n return;\n }\n\n console.group('🌍 I18n Debug Information');\n \n // 1. 当前语言环境\n console.log('📍 Current Locale Sources:');\n console.log(' - window.g_initialProps?.locale:', window.g_initialProps?.locale);\n console.log(' - window.g_initialProps?.___g_initialPropsFromServer?.locale:', window.g_initialProps?.___g_initialPropsFromServer?.locale);\n \n try {\n console.log(' - localStorage.umi-locale:', localStorage.getItem('umi-locale'));\n } catch (e) {\n console.log(' - localStorage: not available');\n }\n \n console.log(' - window.__COMPONENT_LOCALE__:', window.__COMPONENT_LOCALE__);\n\n // 2. 语言包\n console.log('\\n📦 Available Message Sources:');\n console.log(' - window.__COMPONENT_I18N_MESSAGES__:', window.__COMPONENT_I18N_MESSAGES__);\n console.log(' - window.__PROJECT_I18N_MESSAGES__:', window.__PROJECT_I18N_MESSAGES__);\n console.log(' - window.g_initialProps?.messages:', window.g_initialProps?.messages);\n\n // 3. 合并后的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n const umiMessages = window.g_initialProps?.messages || {};\n \n const allLocales = new Set([\n ...Object.keys(componentMessages),\n ...Object.keys(projectMessages),\n ...Object.keys(umiMessages)\n ]);\n\n console.log('\\n🔧 Merged Locales:', Array.from(allLocales));\n \n allLocales.forEach(locale => {\n const merged = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n console.log(`\\n 📄 ${locale} (${Object.keys(merged).length} keys):`, merged);\n });\n\n // 4. 测试几个关键的 key\n console.log('\\n🧪 Test Translation:');\n const testKeys = [\n 'networkSettings.title',\n 'button.ok',\n 'button.cancel',\n 'button.apply',\n 'button.close'\n ];\n \n const currentLocale = window.g_initialProps?.locale || \n window.g_initialProps?.___g_initialPropsFromServer?.locale ||\n localStorage.getItem('umi-locale') ||\n 'zh-CN';\n \n const allMessages = {};\n allLocales.forEach(locale => {\n allMessages[locale] = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n });\n \n testKeys.forEach(key => {\n const translation = allMessages[currentLocale]?.[key] || \n allMessages['en-US']?.[key] || \n '❌ NOT FOUND';\n console.log(` - ${key}: ${translation}`);\n });\n\n console.groupEnd();\n};\n\n// 自动在开发环境注册到 window\nif (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n window.debugI18n = debugI18n;\n console.log('💡 I18n debug tool available. Run window.debugI18n() in console to check i18n status.');\n}\n\nexport default debugI18n;\n","/**\n * seeder-st2110-components 组件库国际化 Hook\n * \n * 设计目标:\n * 1. 不依赖特定的国际化库(react-intl, i18next 等)\n * 2. 可以与主项目(Umi)的国际化集成\n * 3. 支持简单的变量替换\n * 4. 降级处理:如果没有翻译,显示 key 本身\n */\n\n/**\n * 获取当前语言环境\n * 优先从 Umi 全局变量读取,其次使用默认值\n */\nconst getLocale = () => {\n // 尝试从 Umi 获取语言设置\n if (typeof window !== 'undefined') {\n // 方式 1:Umi 的运行时语言(通过 umi 的 locale 服务)\n // Umi 会在 window.g_lang 或 window.LOCALE 中存储当前语言\n if (window.g_lang) {\n return window.g_lang;\n }\n if (window.LOCALE) {\n return window.LOCALE;\n }\n \n // 方式 2:Umi 的 g_initialProps\n if (window.g_initialProps?.locale) {\n return window.g_initialProps.locale;\n }\n \n // 方式 3:Umi 的全局语言标记\n if (window.g_initialProps?.___g_initialPropsFromServer?.locale) {\n return window.g_initialProps.___g_initialPropsFromServer.locale;\n }\n \n // 方式 4:Umi 的 globalInitialProps\n if (window.g_initialPropsFromServer?.locale) {\n return window.g_initialPropsFromServer.locale;\n }\n \n // 方式 5:从 localStorage 读取(Umi 默认行为)\n try {\n const storedLocale = localStorage.getItem('umi-locale');\n if (storedLocale) {\n return storedLocale;\n }\n } catch (e) {\n // localStorage 不可用时忽略\n }\n \n // 方式 6:组件库自定义语言标记\n if (window.__COMPONENT_LOCALE__) {\n return window.__COMPONENT_LOCALE__;\n }\n }\n // 默认语言:英文(与 Umi 配置一致)\n return 'en-US';\n};\n\n/**\n * 获取语言包\n * 优先从主项目读取,其次使用组件库自带的语言包\n */\nconst getMessages = () => {\n if (typeof window !== 'undefined') {\n // 尝试从多个来源读取语言包\n const messages = {};\n \n // 1. 组件库注册的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n \n // 2. 主项目的语言包\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n \n // 3. Umi 的语言包\n const umiMessages = window.g_initialProps?.messages || {};\n \n // 合并语言包(组件库的优先级最高,其次是主项目,最后是 Umi)\n const allLocales = new Set([\n ...Object.keys(componentMessages),\n ...Object.keys(projectMessages),\n ...Object.keys(umiMessages)\n ]);\n \n allLocales.forEach(locale => {\n messages[locale] = {\n ...(umiMessages[locale] || {}),\n ...(projectMessages[locale] || {}),\n ...(componentMessages[locale] || {})\n };\n });\n \n return messages;\n }\n return {};\n};\n\n/**\n * 格式化消息\n * @param {string} id - 国际化 key\n * @param {object} values - 变量替换值\n * @param {string} locale - 语言环境\n * @param {object} messages - 语言包\n */\nconst formatMessage = ({ id }, values = {}, locale, messages) => {\n const message = messages[locale]?.[id] || messages['en-US']?.[id] || id;\n \n // 支持变量替换 {min}, {max}, {value} 等\n return message.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return values[key] !== undefined ? values[key] : match;\n });\n};\n\n/**\n * 国际化 Hook\n * \n * @returns {{\n * locale: string,\n * formatMessage: function,\n * messages: object\n * }}\n * \n * @example\n * const intl = useIntl();\n * const title = intl.formatMessage({ id: 'networkSettings.title' });\n * const message = intl.formatMessage({ id: 'validation.minLength' }, { min: 3 });\n */\nexport const useIntl = () => {\n const locale = getLocale();\n const messages = getMessages();\n \n const formatMessageFn = ({ id }, values = {}) => {\n return formatMessage({ id }, values, locale, messages);\n };\n \n return {\n locale,\n formatMessage: formatMessageFn,\n messages\n };\n};\n\n/**\n * 注册语言包(可选)\n * 如果需要在运行时注册语言包,可以调用此函数\n * \n * @param {string} locale - 语言代码\n * @param {object} messages - 语言包对象\n */\nexport const addMessages = (locale, messages) => {\n if (typeof window !== 'undefined') {\n if (!window.__COMPONENT_I18N_MESSAGES__) {\n window.__COMPONENT_I18N_MESSAGES__ = {};\n }\n window.__COMPONENT_I18N_MESSAGES__[locale] = messages;\n }\n};\n\nexport default {\n useIntl,\n addMessages,\n getLocale,\n getMessages,\n formatMessage\n};\n\nexport { debugI18n } from './debug';\n","import { memo } from \"react\";\r\nimport { Tooltip } from \"antd\";\r\nimport { useIntl } from '../i18n';\r\n\r\n// 格式化字节大小为更易读的形式\r\nconst formatBytes = (bytes, decimals = 1) => {\r\n if (bytes === 0 || !bytes || bytes < 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\nconst UsageItem = memo(({ title, iconClass, children, memTotal }) => {\r\n const intl = useIntl();\r\n \r\n return (\r\n <Tooltip \r\n title={\r\n <>\r\n <div>{title}</div>\r\n {title === intl.formatMessage({ id: 'usage.memory' }) && memTotal !== undefined && (\r\n <div>{intl.formatMessage({ id: 'usage.totalMemory' })}: {formatBytes(memTotal)}</div>\r\n )}\r\n </>\r\n } \r\n destroyOnHidden={false}\r\n >\r\n <div className=\"usage-item\">\r\n <i className={`seeder-iconfont ${iconClass} text-xl`} />\r\n <span className=\"usage-value\">{children}</span>\r\n </div>\r\n </Tooltip>\r\n );\r\n});\r\n\r\nexport default UsageItem;","import { useEffect, useState, useCallback } from 'react';\r\nimport { useWebSocket } from 'ahooks';\r\n\r\nconst useHardwareWebSocket = (socketUrl) => {\r\n const [systemStatus, setSystemStatus] = useState();\r\n\r\n const handleMessage = useCallback((message) => {\r\n try {\r\n if (message) {\r\n setSystemStatus(prev => ({\r\n ...prev,\r\n ...message,\r\n // lastUpdated: Date.now() // 添加更新时间戳\r\n }));\r\n }\r\n } catch (error) {\r\n console.error('Message processing error:', error);\r\n }\r\n }, []);\r\n\r\n // ## 获取系统资源使用情况\r\n const { latestMessage } = useWebSocket(socketUrl, {\r\n onMessage: (event) => {\r\n // 处理实时消息\r\n try {\r\n const parsedMessage = JSON.parse(event.data);\r\n handleMessage(parsedMessage);\r\n } catch (error) {\r\n console.error('Message parsing error:', error);\r\n console.debug('Raw message:', event.data);\r\n }\r\n }\r\n });\r\n\r\n // // 监听消息 latestMessage 只用于非实时需求\r\n // useEffect(() => {\r\n // if (!latestMessage?.data) return;\r\n\r\n // try {\r\n // const parsedMessage = JSON.parse(latestMessage.data);\r\n // handleMessage(parsedMessage);\r\n // } catch (error) {\r\n // console.error('Message parsing error:', error);\r\n // console.debug('Raw message:', latestMessage.data);\r\n // }\r\n // }, [latestMessage?.data, handleMessage]);\r\n\r\n return { ps_status: systemStatus }\r\n}\r\n\r\nexport default useHardwareWebSocket ;","import { useMemo } from \"react\";\r\nimport UsageItem from \"../componnets/UsageItem.jsx\";\r\nimport useHardwareWebSocket from './useHardwareWebSocket.js';\r\nimport { useIntl } from '../i18n';\r\n\r\n// 获取网卡最高温度(支持动态字段检查)\r\nconst getMaxNicTemp = (sensors, priorityFields = [\"i350bb\", \"r8169_0_8300:00\"]) => {\r\n const temps = priorityFields\r\n .flatMap(field => sensors?.[field]?.map(item => item.current) || [])\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\n// 获取数组类型传感器最高温度(如内存、硬盘)\r\nconst getMaxSensorTemp = (sensorData) => {\r\n const temps = (sensorData || [])\r\n .map(item => item.current)\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\nconst getDetail = (status = {}) => {\r\n const { cpu_percent, mem, sensors_temperatures, gpu_stats } = status;\r\n\r\n return {\r\n cpu_usage: cpu_percent ?? null,\r\n cpu_temp: sensors_temperatures?.coretemp?.[0]?.current ?? null,\r\n mem_total: mem?.total ?? null,\r\n mem_usage: mem?.percent ?? null,\r\n mem_temp: getMaxSensorTemp(sensors_temperatures?.spd5118),\r\n nic_temp: getMaxNicTemp(sensors_temperatures) ?? null,\r\n hd_temp: getMaxSensorTemp(sensors_temperatures?.nvme),\r\n gpu_usage: gpu_stats?.[0]?.[\"utilization.gpu\"] ?? null,\r\n gpu_temp: gpu_stats?.[0]?.[\"temperature.gpu\"] ?? null,\r\n };\r\n};\r\n\r\n// 提取公共逻辑\r\nconst createMetricItem = (\r\n title,\r\n iconClass,\r\n value,\r\n unit\r\n) => {\r\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\r\n\r\n return {\r\n title,\r\n iconClass,\r\n valueString: `${numValue}${unit}`,\r\n value: numValue,\r\n };\r\n};\r\n\r\nconst getItems = (details, intl) => {\r\n const items = [];\r\n\r\n if (details.cpu_usage !== null && details.cpu_usage !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.cpu' }), 'seeder-icon-CPU', details.cpu_usage, '%'));\r\n }\r\n\r\n if (details.cpu_temp !== null && details.cpu_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.cpuTemp' }), 'seeder-icon-CPUwendu', details.cpu_temp, '℃'));\r\n }\r\n\r\n if (details.mem_usage !== null && details.mem_usage !== undefined) {\r\n items.push({\r\n ...createMetricItem(intl.formatMessage({ id: 'usage.memory' }), 'seeder-icon-shiyongshuai', details.mem_usage, '%'),\r\n memTotal: details.mem_total,\r\n });\r\n }\r\n\r\n if (details.mem_temp !== null && details.mem_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.memTemp' }), 'seeder-icon-wendu', details.mem_temp, '℃'));\r\n }\r\n\r\n if (details.nic_temp !== null && details.nic_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.nicTemp' }), 'seeder-icon-wuliwangka', details.nic_temp, '℃'));\r\n }\r\n\r\n if (details.hd_temp !== null && details.hd_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.diskTemp' }), 'seeder-icon-yingpan', details.hd_temp, '℃'));\r\n }\r\n\r\n if (details.gpu_usage !== null && details.gpu_usage !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.gpu' }), 'seeder-icon-gpufuwu', details.gpu_usage, '%'));\r\n }\r\n\r\n if (details.gpu_temp !== null && details.gpu_temp !== undefined) {\r\n items.push(createMetricItem(intl.formatMessage({ id: 'usage.gpuTemp' }), 'seeder-icon-CPUwendu', details.gpu_temp, '℃'));\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst useHardwareUsage = (socketUrl) => {\r\n const intl = useIntl();\r\n const { ps_status } = useHardwareWebSocket(socketUrl);\r\n\r\n return useMemo(() => {\r\n if (!ps_status || typeof ps_status !== 'object') return null;\r\n\r\n const statusItems = getItems(getDetail(ps_status), intl);\r\n\r\n return (\r\n <div className=\"usage-container\">\r\n {statusItems.map((item, index) => (\r\n <div key={item.title} className=\"usage-item-wrapper\">\r\n <UsageItem \r\n title={item.title}\r\n iconClass={item.iconClass} \r\n memTotal={item.memTotal}\r\n >\r\n {item.valueString}\r\n </UsageItem>\r\n {/* {index < statusItems.length - 1 && <Divider type=\"vertical\" />} */}\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n }, [ps_status]);\r\n}\r\n\r\nexport default useHardwareUsage;","import { Modal } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst StyledModal = (props) => {\r\n const intl = useIntl();\r\n const {\r\n width = \"520px\",\r\n okText = \"button.apply\",\r\n cancelText = \"button.close\",\r\n styles: propStyles = {},\r\n ...restProps\r\n } = props;\r\n\r\n // 处理国际化文本\r\n const okButtonText = typeof okText === 'string' && okText.includes('.') \r\n ? intl.formatMessage({ id: okText }) \r\n : okText;\r\n \r\n const cancelButtonText = typeof cancelText === 'string' && cancelText.includes('.') \r\n ? intl.formatMessage({ id: cancelText }) \r\n : cancelText;\r\n\r\n // 基础样式配置\r\n const baseStyles = {\r\n content: {\r\n padding: 0,\r\n // background: \"#282828\"\r\n },\r\n header: {\r\n marginBottom: 0,\r\n padding: 0,\r\n paddingBlock: 16,\r\n paddingInlineStart: 24,\r\n background: \"#000000\"\r\n },\r\n body: {\r\n paddingBlock: 20,\r\n paddingInline: 24\r\n },\r\n footer: {\r\n marginTop: 0,\r\n padding: 0,\r\n paddingBlockEnd: 20,\r\n paddingInline: 24\r\n }\r\n };\r\n\r\n // 合并样式\r\n const styles = {\r\n ...baseStyles,\r\n ...propStyles\r\n };\r\n\r\n return (\r\n <Modal\r\n width={width}\r\n okText={okButtonText}\r\n cancelText={cancelButtonText}\r\n styles={styles}\r\n {...restProps}\r\n />\r\n );\r\n};\r\n\r\nexport default StyledModal;","import { useState } from 'react';\r\nimport { Form, Input, Alert, App } from 'antd';\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst AuthorizationModal = ({\r\n onCancel,\r\n onOk,\r\n authData,\r\n title = 'license.title',\r\n okText,\r\n cancelText = 'license.button.ignore',\r\n width = 600\r\n}) => {\r\n const intl = useIntl();\r\n const { message } = App.useApp();\r\n const [code, setCode] = useState('');\r\n\r\n const {\r\n accredit_status: isActivated,\r\n message: statusMessage,\r\n bios_id: uuid,\r\n expires_time: expiresTime\r\n } = authData || {};\r\n\r\n // 服务端返回的状态文本映射到国际化 key\r\n const getStatusMessageKey = (msg) => {\r\n if (!msg) return 'license.status.unactivated';\r\n \r\n // 根据服务端返回的英文文本映射\r\n const statusMap = {\r\n 'Already activated': 'license.status.activated',\r\n 'Unactivated': 'license.status.unactivated',\r\n 'Expired': 'license.status.expired',\r\n 'Invalid': 'license.status.invalid'\r\n };\r\n \r\n return statusMap[msg] || 'license.status.unactivated';\r\n };\r\n\r\n const statusMessageKey = getStatusMessageKey(statusMessage);\r\n\r\n const handleOk = () => {\r\n const trimmedCode = code.trim();\r\n if (!trimmedCode) {\r\n message.error(intl.formatMessage({ id: 'license.validation.keyRequired' }));\r\n return;\r\n }\r\n onOk(trimmedCode);\r\n }\r\n \r\n const statusAlert = isActivated ? (\r\n <Alert\r\n message={`${intl.formatMessage({ id: statusMessageKey })}, ${intl.formatMessage({ id: 'license.status.expiresOn' })} ${expiresTime}`}\r\n type=\"success\"\r\n showIcon\r\n />\r\n ) : (\r\n <Alert message={intl.formatMessage({ id: statusMessageKey })} type=\"warning\" showIcon />\r\n );\r\n\r\n const defaultOkText = isActivated ? intl.formatMessage({ id: 'license.button.reactivate' }) : intl.formatMessage({ id: 'license.button.activate' });\r\n\r\n return (\r\n <StyledModal\r\n title={intl.formatMessage({ id: title })}\r\n width={width}\r\n open={true}\r\n onCancel={onCancel}\r\n onOk={handleOk}\r\n okText={okText || defaultOkText}\r\n cancelText={intl.formatMessage({ id: cancelText })}\r\n cancelButtonProps={{ disabled: !isActivated }}\r\n maskClosable={false}\r\n closable={false}\r\n >\r\n <Form\r\n name=\"auth_form\"\r\n labelCol={{ span: 6 }}\r\n wrapperCol={{ span: 18 }}\r\n autoComplete=\"off\"\r\n >\r\n <div style={{ marginBottom: 16 }}>{statusAlert}</div>\r\n <Form.Item label={intl.formatMessage({ id: 'license.machineCode' })} required>\r\n <Input value={uuid} readOnly />\r\n </Form.Item>\r\n <Form.Item label={intl.formatMessage({ id: 'license.key' })} required>\r\n <Input.TextArea\r\n value={code}\r\n onChange={(e) => setCode(e.target.value)}\r\n autoSize={{ minRows: 6, maxRows: 6 }}\r\n placeholder={intl.formatMessage({ id: 'license.placeholder.enterKey' })}\r\n />\r\n </Form.Item>\r\n </Form>\r\n </StyledModal>\r\n );\r\n}\r\n\r\nexport default AuthorizationModal;","import { useState, useEffect, useCallback } from 'react';\r\nimport { message } from 'antd';\r\nimport AuthorizationModal from '../componnets/AuthorizationModal.jsx';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst DEFAULT_AUTH = {\r\n accredit_status: false, // 授权状态\r\n bios_id: '', // 主机 id\r\n message: 'license.status.unactivated', // 激活信息\r\n expires_time: '' // 授权到期时间\r\n}\r\n\r\nexport const useAuth = (options) => {\r\n const intl = useIntl();\r\n const {\r\n fetchAuthInfo,\r\n authorize,\r\n defaultAuthData = DEFAULT_AUTH,\r\n autoShowModal = true\r\n } = options || {};\r\n\r\n const [messageApi, contextHolder] = message.useMessage();\r\n const [showModal, setShowModal] = useState(false); // 默认隐藏\r\n const [authData, setAuthData] = useState(defaultAuthData);\r\n const [isRegistered, setIsRegistered] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const openModal = useCallback(() => setShowModal(true), []);\r\n const closeModal = useCallback(() => setShowModal(false), []);\r\n\r\n useEffect(() => {\r\n async function loadAuthInfo() {\r\n try {\r\n setLoading(true);\r\n const result = await fetchAuthInfo();\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n setAuthData(commands);\r\n setIsRegistered(commands.accredit_status);\r\n if (autoShowModal) {\r\n commands.accredit_status ? closeModal() : openModal();\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch auth info:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n loadAuthInfo();\r\n }, [fetchAuthInfo, autoShowModal, openModal, closeModal]);\r\n\r\n const auth = async (code) => {\r\n try {\r\n setLoading(true);\r\n const result = await authorize({\r\n type: \"accredit_command\",\r\n commands: {\r\n id: \"LICENSE\",\r\n license_data: code\r\n }\r\n });\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n // type accredit_message\r\n if (commands?.accredit_status) {\r\n setIsRegistered(true);\r\n setAuthData(commands);\r\n closeModal();\r\n } else {\r\n // 处理错误消息的国际化\r\n const errorMsg = commands.ciphertext_status || 'license.error.authorizationFailed';\r\n const errorMessage = typeof errorMsg === 'string' && errorMsg.includes('.') \r\n ? intl.formatMessage({ id: errorMsg }) \r\n : errorMsg;\r\n messageApi.error(errorMessage);\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Authorization error:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const modal = showModal && (\r\n <>\r\n <AuthorizationModal\r\n onOk={auth}\r\n onCancel={closeModal}\r\n authData={authData}\r\n />\r\n {contextHolder}\r\n </>\r\n );\r\n\r\n return {\r\n AuthModal: modal,\r\n openAuthModal: openModal,\r\n closeAuthModal: closeModal,\r\n isRegistered,\r\n authData,\r\n loading\r\n };\r\n};","import { useRef, useState, useEffect, useMemo } from \"react\";\r\nimport { Spin, message, Dropdown } from \"antd\";\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\nimport { useInterval } from \"ahooks\";\r\nimport axios from 'axios';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst useUpgrade = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute, // 上传接口:(formData, config) => Promise<response>\r\n upgradeStatus, // 状态轮询接口:(config) => Promise<response>\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000\r\n}) => {\r\n const intl = useIntl();\r\n const [isSpinning, setIsSpinning] = useState(false);\r\n const [pollingInterval, setPollingInterval] = useState(undefined); // 间隔时间,当设置值为 undefined 时会停止计时器\r\n const [currentStatus, setCurrentStatus] = useState(intl.formatMessage({ id: 'upgrade.status.idle' })); // 'idle' | 'uploading' | 'Upload complete, starting upgrade...' | 'upgrading'\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n\r\n const inputRef = useRef(null);\r\n // 控制并发上传\r\n const isUploadingRef = useRef(false);\r\n // 标记组件是否已卸载\r\n const isMountedRef = useRef(true);\r\n\r\n // 分别创建独立的取消令牌\r\n const uploadCancelToken = useRef(axios.CancelToken.source());\r\n const statusCancelToken = useRef(axios.CancelToken.source());\r\n\r\n const showLoader = () => setIsSpinning(true);\r\n const hideLoader = () => setIsSpinning(false);\r\n\r\n // 构建菜单项 - 确保至少包含download和upload\r\n // 构建菜单项 - 最终完美版本\r\n const finalMenuItems = useMemo(() => {\r\n const hasDownload = menuItems.some(item => item.key === 'download');\r\n const hasUpload = menuItems.some(item => item.key === 'upload');\r\n \r\n if (hasDownload && hasUpload) {\r\n return menuItems;\r\n }\r\n \r\n const licenseIndex = menuItems.findIndex(item => item.key === 'license');\r\n \r\n // 如果没有 license,在末尾添加\r\n if (licenseIndex === -1) {\r\n const itemsToAdd = [];\r\n if (menuItems.length > 0) itemsToAdd.push({ type: 'divider' });\r\n // if (!hasDownload) itemsToAdd.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\r\n if (!hasUpload) itemsToAdd.push({ key: \"upload\", label: intl.formatMessage({ id: 'upgrade.menu.softwareUpdate' }) });\r\n return [...menuItems, ...itemsToAdd];\r\n }\r\n \r\n // 有 license,在 license 前面插入\r\n const beforeLicense = menuItems.slice(0, licenseIndex);\r\n const licenseItem = menuItems[licenseIndex];\r\n const afterLicense = menuItems.slice(licenseIndex + 1);\r\n \r\n const itemsToInsert = [];\r\n \r\n // 1. 前面的分隔符(如果 beforeLicense 不为空且最后一项不是分隔符)\r\n if (beforeLicense.length > 0 && beforeLicense[beforeLicense.length - 1].type !== 'divider') {\r\n itemsToInsert.push({ type: 'divider' });\r\n }\r\n \r\n // 2. 添加缺少的项\r\n // if (!hasDownload) itemsToInsert.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\r\n if (!hasUpload) itemsToInsert.push({ key: \"upload\", label: intl.formatMessage({ id: 'upgrade.menu.softwareUpdate' }) });\r\n \r\n // 3. 后面的分隔符(与 license 之间)\r\n itemsToInsert.push({ type: 'divider' });\r\n \r\n return [...beforeLicense, ...itemsToInsert, licenseItem, ...afterLicense];\r\n }, [menuItems, intl]);\r\n\r\n const handleMenuClick = ({ key }) => {\r\n switch (key) {\r\n case 'download':\r\n onDownload();\r\n return;\r\n case 'upload':\r\n onUpload();\r\n return;\r\n default:\r\n // 其他菜单项交给外部回调处理\r\n if (onMenuClick) {\r\n onMenuClick(key);\r\n } else {\r\n console.warn(`Unknown menu key: ${key} and no onMenuClick provided`);\r\n }\r\n }\r\n };\r\n\r\n const onDownload = async () => {\r\n if (!downloadFiles) {\r\n console.error('downloadFiles function is required for download operation');\r\n message.error(intl.formatMessage({ id: 'upgrade.error.downloadNotConfigured' }));\r\n return;\r\n }\r\n\r\n try {\r\n const res = await downloadFiles();\r\n\r\n if (res.status !== 200) {\r\n throw new Error(`Unexpected status code: ${res.status}`);\r\n }\r\n\r\n // 默认值,兼容接口响应头没有定义文件名\r\n let fileName = 'config.tar.gz';\r\n const contentDisposition = res.headers['content-disposition'] || '';\r\n\r\n // 获取接口响应的content-disposition字段值,以便获取到文件名\r\n if (contentDisposition) {\r\n const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/i);\r\n if (filenameMatch?.[1]) {\r\n fileName = decodeURIComponent(filenameMatch[1]); // 处理编码后的文件名(如 %20 转空格)\r\n }\r\n }\r\n\r\n // 创建并下载文件\r\n const blob = new Blob([res.data], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n\r\n // 下面就是创建一个 a 标签并触发 click 事件,来下载该文件\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n link.href = url;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // 最后移除 a 标签并删除创建的 ObjectURL 对象,防止内存泄漏\r\n link.parentNode.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n } catch (error) {\r\n console.error('Download failed:', error);\r\n message.error(intl.formatMessage({ id: 'upgrade.error.downloadFailed' }));\r\n }\r\n }\r\n\r\n const onUpload = () => {\r\n if (inputRef?.current && !isUploadingRef.current) {\r\n inputRef.current.click();\r\n }\r\n }\r\n\r\n const updatePackage = async (event) => {\r\n if (isUploadingRef.current) return; // 防止重复上传\r\n\r\n const file = event.target.files?.[0];\r\n if (!file || !upgradeExecute) {\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n return;\r\n }\r\n\r\n isUploadingRef.current = true;\r\n showLoader();\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.uploading' }));\r\n setUploadProgress(0);\r\n\r\n // 重置取消令牌\r\n uploadCancelToken.current.cancel();\r\n uploadCancelToken.current = axios.CancelToken.source();\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n // 清除文件选择\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n\r\n // 上传后立即检查业务状态码\r\n // upgradeExecute 使用 umi request 返回的数据是过滤过的\r\n const response = await upgradeExecute(formData, {\r\n onUploadProgress: (progressEvent) => {\r\n if (!isMountedRef.current) return;\r\n const percentCompleted = Math.round(\r\n (progressEvent.loaded * 100) / progressEvent.total\r\n );\r\n setUploadProgress(percentCompleted); // 更新进度状态\r\n },\r\n cancelToken: uploadCancelToken.current.token\r\n });\r\n \r\n // 检查业务 code\r\n if (response?.code !== 200) {\r\n // 即使上传成功,但如果服务器返回非 200,说明有问题\r\n if (isMountedRef.current) {\r\n const errorMsg = response?.message || intl.formatMessage({ id: 'upgrade.error.invalidFileFormat' });\r\n message.error(errorMsg);\r\n cancelRequest();\r\n }\r\n return;\r\n }\r\n\r\n // 上传成功,进入等待升级阶段\r\n if (!isMountedRef.current) return;\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.uploadComplete' }));\r\n\r\n // 延迟后启动轮询\r\n setTimeout(() => {\r\n if (!isMountedRef.current) return;\r\n setPollingInterval(statusPollingInterval);\r\n setCurrentStatus(intl.formatMessage({ id: 'upgrade.status.upgrading' }));\r\n }, uploadCompleteDelay);\r\n } catch (error) {\r\n if (!isMountedRef.current) return;\r\n\r\n if (!axios.isCancel(error)) {\r\n console.error(\"Upload error:\", error);\r\n message.error(intl.formatMessage({ id: 'upgrade.error.uploadFailed' }));\r\n }\r\n cancelRequest();\r\n } finally {\r\n if (isMountedRef.current) {\r\n isUploadingRef.current = false;\r\n }\r\n }\r\n }\r\n\r\n const fetchUpgradeStatus = async () => {\r\n if (!upgradeStatus || !isMountedRef.current) return;\r\n\r\n try {\r\n // upgradeStatus 使用 axios request 返回的数据没有过滤\r\n const response = await upgradeStatus({\r\n cancelToken: statusCancelToken.current.token\r\n });\r\n\r\n if (response?.status === 200) {\r\n const { code, message: statusMessage } = response.data;\r\n\r\n // 状态处理\r\n switch (code) {\r\n case 200: // 升级成功\r\n message.success(statusMessage, 2.5, () => {\r\n if (isMountedRef.current) {\r\n cancelRequest();\r\n }\r\n window.location.reload();\r\n });\r\n break;\r\n \r\n case 201: // 升级中 — 继续轮询\r\n break;\r\n case 202: // 升级失败\r\n case 203: // 升级异常\r\n if (isMountedRef.current) {\r\n message.error(statusMessage);\r\n cancelRequest();\r\n }\r\n break;\r\n \r\n default:\r\n // 其他 code 如 500、400 等\r\n if (isMountedRef.current) {\r\n message.error(statusMessage || intl.formatMessage({ id: 'upgrade.error.upgradeFailed' }));\r\n cancelRequest();\r\n }\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (!isMountedRef.current) return;\r\n\r\n if (!axios.isCancel(error)) {\r\n console.error('Status check failed:', error);\r\n }\r\n }\r\n }\r\n\r\n const cancelRequest = () => {\r\n // 取消状态轮询\r\n uploadCancelToken.current.cancel('Operation canceled');\r\n statusCancelToken.current.cancel('Operation canceled');\r\n \r\n uploadCancelToken.current = axios.CancelToken.source();\r\n statusCancelToken.current = axios.CancelToken.source();\r\n \r\n // 重置所有状态\r\n setPollingInterval(undefined);\r\n setCurrentStatus('idle');\r\n setUploadProgress(0);\r\n isUploadingRef.current = false;\r\n hideLoader();\r\n };\r\n\r\n // 轮询状态\r\n useInterval(fetchUpgradeStatus, pollingInterval);\r\n\r\n // 组件卸载时清理\r\n useEffect(() => {\r\n return () => {\r\n isMountedRef.current = false;\r\n uploadCancelToken.current.cancel();\r\n statusCancelToken.current.cancel();\r\n };\r\n }, []);\r\n\r\n const upgradeElement = (\r\n <div>\r\n <Dropdown \r\n menu={{ \r\n items: finalMenuItems, \r\n onClick: handleMenuClick\r\n }} \r\n trigger={[\"hover\"]}\r\n >\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className=\"seeder-iconfont seeder-icon-liebiao2 text-xl text-neutral-400\"></i>\r\n </a>\r\n </Dropdown>\r\n <input \r\n ref={inputRef} \r\n type=\"file\" \r\n onChange={updatePackage} \r\n className=\"hidden\"\r\n accept={acceptFileTypes}\r\n />\r\n <Spin \r\n spinning={isSpinning} \r\n indicator={<LoadingOutlined style={{ fontSize: 60 }} spin />}\r\n tip={\r\n currentStatus === intl.formatMessage({ id: 'upgrade.status.uploading' })\r\n ? `${currentStatus} ${uploadProgress}%` \r\n : currentStatus\r\n }\r\n size=\"large\"\r\n fullscreen\r\n />\r\n </div>\r\n )\r\n\r\n return [upgradeElement];\r\n}\r\n\r\nexport default useUpgrade;","import { useCallback } from 'react';\r\nimport { App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { useIntl } from '../i18n';\r\n\r\nconst useSystemOperations = ({\r\n onPowerOff,\r\n onRestart,\r\n confirmTitle = \"system.confirm.title\",\r\n cancelText = \"system.button.cancel\",\r\n okText = \"system.button.confirm\",\r\n run\r\n} = {}) => {\r\n const intl = useIntl();\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n // 处理国际化文本\r\n const confirmTitleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') \r\n ? intl.formatMessage({ id: confirmTitle }) \r\n : confirmTitle;\r\n const cancelTextValue = typeof cancelText === 'string' && cancelText.includes('.') \r\n ? intl.formatMessage({ id: cancelText }) \r\n : cancelText;\r\n const okTextValue = typeof okText === 'string' && okText.includes('.') \r\n ? intl.formatMessage({ id: okText }) \r\n : okText;\r\n\r\n const doAction = useCallback((action) => {\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: `${confirmTitleText} ${action === 'poweroff' ? intl.formatMessage({ id: 'system.action.powerOff' }) : intl.formatMessage({ id: 'system.action.restart' })}?`,\r\n cancelText: cancelTextValue,\r\n okText: okTextValue,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }, [AntdModal, confirmTitleText, cancelTextValue, okTextValue, onPowerOff, onRestart, intl]);\r\n\r\n const getMenuItems = useCallback(() => [\r\n {\r\n key: \"poweroff\",\r\n label: intl.formatMessage({ id: 'system.poweroff' }),\r\n },\r\n {\r\n key: \"restart\",\r\n label: intl.formatMessage({ id: 'system.restart' }),\r\n }\r\n ], [intl]);\r\n\r\n const handleMenuClick = useCallback(({ key }) => {\r\n doAction(key);\r\n }, [doAction]);\r\n\r\n return {\r\n menuItems: getMenuItems(),\r\n handleMenuClick\r\n };\r\n};\r\n\r\nexport default useSystemOperations;","import { useState, useCallback } from 'react';\r\nimport { Spin } from 'antd';\r\n\r\nconst usePageReload = () => {\r\n const [reloading, setReloading] = useState(false);\r\n \r\n const startReload = useCallback((delay = 800) => {\r\n if (reloading) return; // 防止重复触发\r\n\r\n // 显示遮罩\r\n setReloading(true);\r\n \r\n // 设置背景色\r\n document.body.style.backgroundColor = '#282828';\r\n document.body.style.transition = 'background-color 0.1s';\r\n document.body.offsetHeight;\r\n \r\n // 延迟刷新\r\n const timer = setTimeout(() => {\r\n window.location.reload();\r\n }, delay);\r\n\r\n // 清理函数(防止内存泄漏)\r\n return () => clearTimeout(timer);\r\n }, [reloading]);\r\n \r\n const ReloadOverlay = () => {\r\n if (!reloading) return null;\r\n \r\n return (\r\n <div style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: '#282828',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 999999,\r\n color: 'white'\r\n }}>\r\n <Spin size=\"large\" />\r\n <div style={{ marginTop: 20, fontSize: 16 }}>\r\n Loading preset configuration...\r\n </div>\r\n <div style={{ marginTop: 10, fontSize: 12, color: '#aaa' }}>\r\n Page will refresh shortly\r\n </div>\r\n </div>\r\n );\r\n };\r\n \r\n return { startReload, ReloadOverlay };\r\n};\r\n\r\nexport default usePageReload;","import { useWebSocket } from 'ahooks';\r\nimport { useEffect, useCallback, useRef, useMemo, useState } from 'react';\r\n\r\nconst getReadyStateText = (state) => {\r\n const states = { \r\n 0: 'CONNECTING', \r\n 1: 'OPEN', \r\n 2: 'CLOSING', \r\n 3: 'CLOSED' \r\n };\r\n return states[state] || `UNKNOWN(${state})`;\r\n};\r\n\r\n// 创建空日志器\r\nconst createDummyLogger = () => {\r\n const dummyFn = () => {};\r\n return {\r\n log: dummyFn,\r\n exportLogs: dummyFn,\r\n getLogStats: () => ({\r\n total: 0,\r\n errors: 0,\r\n warnings: 0,\r\n info: 0,\r\n lastTimestamp: null\r\n }),\r\n clearLogs: dummyFn,\r\n logs: []\r\n };\r\n};\r\n\r\n// 创建通用的日志器\r\nconst createGlobalLogger = (webSocketUrl = '') => {\r\n const logs = [];\r\n const maxLogs = 1000;\r\n\r\n // 判断是否为开发环境\r\n const isDevelopment = process.env.NODE_ENV === 'development';\r\n\r\n const log = (level, message, data = {}) => {\r\n const timestamp = new Date().toISOString();\r\n const logEntry = {\r\n timestamp,\r\n level,\r\n message,\r\n data,\r\n timestampDisplay: new Date().toLocaleString('zh-CN', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false\r\n })\r\n };\r\n\r\n logs.push(logEntry);\r\n if (logs.length > maxLogs) logs.shift();\r\n\r\n // 只在开发环境下输出到控制台\r\n if (isDevelopment) {\r\n const consoleMessage = `[${logEntry.timestampDisplay}] [WebSocket] [${level}] ${message}`;\r\n const consoleArgs = [consoleMessage];\r\n if (Object.keys(data).length > 0) consoleArgs.push(data);\r\n\r\n switch (level) {\r\n case 'ERROR': console.error(...consoleArgs); break;\r\n case 'WARN': console.warn(...consoleArgs); break;\r\n case 'INFO': console.info(...consoleArgs); break;\r\n default: console.log(...consoleArgs);\r\n }\r\n }\r\n\r\n return logEntry;\r\n };\r\n\r\n const exportLogs = (filenamePrefix = 'websocket') => {\r\n if (logs.length === 0) {\r\n log('WARN', '没有日志可导出', { filenamePrefix });\r\n return;\r\n }\r\n\r\n const logText = logs.map(entry => \r\n `[${entry.timestampDisplay}] [${entry.level}] ${entry.message}\\n数据: ${JSON.stringify(entry.data, null, 2)}`\r\n ).join('\\n' + '='.repeat(50) + '\\n');\r\n\r\n const blob = new Blob([logText], { type: 'text/plain;charset=utf-8' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n let hostname = 'unknown';\r\n let pathname = 'unknown';\r\n \r\n try {\r\n if (webSocketUrl) {\r\n const urlObj = new URL(webSocketUrl.replace(/^ws/, 'http'));\r\n hostname = urlObj.hostname.replace(/\\./g, '-');\r\n pathname = urlObj.pathname\r\n .replace(/\\//g, '-')\r\n .replace(/^-|-$/g, '') \r\n || 'root';\r\n }\r\n } catch (error) {\r\n console.warn('无法解析WebSocket URL:', error);\r\n }\r\n\r\n const readableTime = new Date().toLocaleString('zh-CN', {\r\n year: 'numeric', month: '2-digit', day: '2-digit',\r\n hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false\r\n }).replace(/[\\/:\\s]/g, '-');\r\n\r\n const filename = `${filenamePrefix}-${hostname}-${pathname}-${readableTime}.log`;\r\n\r\n const a = document.createElement('a');\r\n a.href = blobUrl;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n log('INFO', '日志文件已导出', { count: logs.length, filename });\r\n };\r\n\r\n const getLogStats = () => ({\r\n total: logs.length,\r\n errors: logs.filter(l => l.level === 'ERROR').length,\r\n warnings: logs.filter(l => l.level === 'WARN').length,\r\n info: logs.filter(l => l.level === 'INFO').length,\r\n lastTimestamp: logs[logs.length - 1]?.timestampDisplay\r\n });\r\n\r\n const clearLogs = () => {\r\n logs.length = 0;\r\n log('INFO', '日志已清空');\r\n };\r\n\r\n return { log, exportLogs, getLogStats, clearLogs, logs };\r\n};\r\n\r\n// 心跳管理器\r\nconst useHeartbeat = (sendMessage, readyState, config, logger, enabled = true) => {\r\n const heartbeatTimerRef = useRef(null);\r\n const lastHeartbeatTimeRef = useRef(Date.now());\r\n const isMountedRef = useRef(true);\r\n\r\n const configRef = useRef({\r\n interval: config?.interval || 20000,\r\n message: config?.message || { type: 'ping' }\r\n });\r\n\r\n const stateRef = useRef({\r\n sendMessage,\r\n readyState,\r\n enabled\r\n });\r\n\r\n useEffect(() => {\r\n configRef.current = {\r\n interval: config?.interval || 20000,\r\n message: config?.message || { type: 'ping' }\r\n };\r\n }, [config?.interval, config?.message]);\r\n\r\n useEffect(() => {\r\n stateRef.current = {\r\n sendMessage,\r\n readyState,\r\n enabled\r\n };\r\n }, [sendMessage, readyState, enabled]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n isMountedRef.current = false;\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const stopHeartbeat = useCallback(() => {\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n heartbeatTimerRef.current = null;\r\n if (stateRef.current.enabled) {\r\n logger.log('INFO', '停止心跳机制');\r\n }\r\n }\r\n }, [logger]);\r\n\r\n const startHeartbeat = useCallback(() => {\r\n stopHeartbeat();\r\n\r\n const currentState = stateRef.current;\r\n const currentConfig = configRef.current;\r\n \r\n if (!currentState.enabled) return;\r\n\r\n logger.log('INFO', '启动心跳机制', { interval: currentConfig.interval });\r\n\r\n heartbeatTimerRef.current = setInterval(() => {\r\n // 检查组件是否挂载\r\n if (!isMountedRef.current || !heartbeatTimerRef.current) {\r\n return;\r\n }\r\n \r\n // 目的: 总是获取最新的值\r\n const latestState = stateRef.current;\r\n const latestConfig = configRef.current;\r\n \r\n if (latestState.sendMessage && latestState.readyState === 1) {\r\n try {\r\n latestState.sendMessage(JSON.stringify(latestConfig.message));\r\n lastHeartbeatTimeRef.current = Date.now();\r\n logger.log('DEBUG', '发送心跳包', {\r\n timeSinceLastHeartbeat: Date.now() - lastHeartbeatTimeRef.current,\r\n readyState: getReadyStateText(latestState.readyState)\r\n });\r\n } catch (error) {\r\n logger.log('ERROR', '发送心跳失败', {\r\n error: error.message,\r\n readyState: getReadyStateText(latestState.readyState)\r\n });\r\n }\r\n }\r\n }, currentConfig.interval);\r\n }, [stopHeartbeat, logger]);\r\n\r\n // 自动管理心跳\r\n useEffect(() => {\r\n const currentState = stateRef.current;\r\n \r\n if (currentState.enabled) {\r\n if (currentState.readyState === 1) {\r\n startHeartbeat();\r\n } else {\r\n stopHeartbeat();\r\n }\r\n } else {\r\n stopHeartbeat();\r\n }\r\n\r\n return () => {\r\n if (heartbeatTimerRef.current) {\r\n clearInterval(heartbeatTimerRef.current);\r\n heartbeatTimerRef.current = null;\r\n }\r\n };\r\n }, [readyState, enabled, startHeartbeat, stopHeartbeat]);\r\n\r\n const heartbeatImpl = useMemo(() => {\r\n if (!enabled) {\r\n return {\r\n startHeartbeat: () => {},\r\n stopHeartbeat: () => {},\r\n getLastHeartbeatTime: () => null,\r\n isEnabled: false\r\n };\r\n }\r\n\r\n return {\r\n startHeartbeat,\r\n stopHeartbeat,\r\n getLastHeartbeatTime: () => lastHeartbeatTimeRef.current,\r\n isEnabled: true\r\n };\r\n }, [enabled, startHeartbeat, stopHeartbeat]);\r\n\r\n return heartbeatImpl;\r\n};\r\n\r\nconst useWebSocketWithFeatures = (config) => {\r\n const { url, options = {}, heartbeat: heartbeatConfig = false, enableLog = true } = config;\r\n const [isConnected, setIsConnected] = useState(false);\r\n\r\n // 创建 logger 实例\r\n const logger = useMemo(() => {\r\n if (enableLog) {\r\n return createGlobalLogger(url);\r\n }\r\n return createDummyLogger();\r\n }, [url, enableLog]);\r\n\r\n const websocketOptions = useMemo(() => ({\r\n ...options,\r\n onOpen: (event) => {\r\n logger.log('INFO', 'WebSocket 连接成功', {\r\n url,\r\n readyState: getReadyStateText(1), // 连接成功时 readyState 为 1\r\n eventCode: event?.code\r\n });\r\n setIsConnected(true);\r\n options.onOpen?.(event);\r\n },\r\n onError: (error) => {\r\n logger.log('ERROR', 'WebSocket 连接错误', {\r\n url,\r\n error: error.message,\r\n errorType: error.type,\r\n readyState: getReadyStateText(3) // 错误时 readyState 为 3\r\n });\r\n setIsConnected(false);\r\n options.onError?.(error);\r\n },\r\n onClose: (event) => {\r\n logger.log('WARN', 'WebSocket 连接断开', {\r\n url,\r\n code: event.code,\r\n reason: event.reason,\r\n wasClean: event.wasClean,\r\n readyState: getReadyStateText(3) // 关闭时 readyState 为 3\r\n });\r\n setIsConnected(false);\r\n options.onClose?.(event);\r\n },\r\n onReconnect: (count) => {\r\n logger.log('INFO', '尝试重新连接', { \r\n url,\r\n attempt: count,\r\n maxAttempts: options.reconnectLimit || 10\r\n });\r\n options.onReconnect?.(count);\r\n }\r\n }), [url, options, logger]);\r\n\r\n const {\r\n latestMessage,\r\n readyState, \r\n sendMessage,\r\n connect,\r\n disconnect\r\n } = useWebSocket(url, websocketOptions);\r\n\r\n const heartbeatOptions = useMemo(() => \r\n heartbeatConfig === true ? {} : heartbeatConfig,\r\n [heartbeatConfig]\r\n );\r\n\r\n const heartbeatEnabled = useMemo(() => \r\n heartbeatConfig !== false,\r\n [heartbeatConfig]\r\n );\r\n\r\n const heartbeat = useHeartbeat(\r\n sendMessage, \r\n readyState, \r\n heartbeatOptions,\r\n logger,\r\n heartbeatEnabled\r\n );\r\n\r\n // 在全局暴露日志方法\r\n useEffect(() => {\r\n if (typeof window !== 'undefined' && enableLog) {\r\n // 生成唯一的键名:基于URL进行base64编码\r\n const key = `exportWebSocketLogs_${btoa(url)}`;\r\n // 在window对象上添加方法\r\n window[key] = () => logger.exportLogs();\r\n }\r\n\r\n return () => {\r\n if (typeof window !== 'undefined' && enableLog) {\r\n const key = `exportWebSocketLogs_${btoa(url)}`;\r\n delete window[key];\r\n }\r\n };\r\n }, [url, enableLog, logger]);\r\n\r\n const loggerMethods = useMemo(() => ({\r\n log: (level, message, data) => logger.log(level, message, data),\r\n exportLogs: () => logger.exportLogs(),\r\n getLogStats: () => logger.getLogStats(),\r\n clearLogs: () => logger.clearLogs()\r\n }), [logger]);\r\n\r\n return {\r\n latestMessage,\r\n readyState,\r\n sendMessage,\r\n connect,\r\n disconnect,\r\n isConnected,\r\n readyStateText: getReadyStateText(readyState),\r\n \r\n // 心跳功能\r\n heartbeat,\r\n // 日志功能\r\n logger: enableLog ? loggerMethods : null\r\n };\r\n}\r\n\r\nexport default useWebSocketWithFeatures;\r\n\r\n// 在控制台中直接查看所有可用的导出方法 Object.keys(window).filter(key => key.startsWith('exportWebSocketLogs_'))\r\n// 导出特定连接的日志 window['exportWebSocketLogs_d3M6Ly8xOTIuMTY4LjEyMy4yMDQvd3MvZHZyL3ZpZGVvX3N0YXR1c19jaGFuZ2U=']();","// seeder-st2110-components 组件库中文语言包\r\nexport default {\r\n // 通用按钮\r\n 'button.close': '关闭',\r\n 'button.apply': '应用',\r\n 'button.cancel': '取消',\r\n 'button.delete': '删除',\r\n \r\n // 输入框占位符\r\n 'input.placeholder.enterInteger': '请输入整数',\r\n 'input.placeholder.enterPort': '请输入端口 (0-65535)',\r\n 'input.placeholder.enterPayload': '请输入负载 (96-127)',\r\n \r\n // 使用率显示\r\n 'usage.memory': '内存使用率',\r\n 'usage.totalMemory': '内存总量',\r\n 'usage.cpu': 'CPU 使用率',\r\n 'usage.disk': '磁盘使用率',\r\n 'usage.cpuTemp': 'CPU 温度',\r\n 'usage.memTemp': '内存温度',\r\n 'usage.nicTemp': '网卡温度',\r\n 'usage.diskTemp': '硬盘温度',\r\n 'usage.gpu': 'GPU 使用率',\r\n 'usage.gpuTemp': 'GPU 温度',\r\n \r\n // 菜单\r\n 'menu.networkSettings': '网络设置',\r\n 'menu.ptp': 'PTP',\r\n 'menu.nmos': 'NMOS',\r\n 'menu.preset': '预设',\r\n 'menu.license': '许可证',\r\n 'menu.maintenance': '维护',\r\n 'menu.system': '系统',\r\n \r\n // Network Settings Modal\r\n 'networkSettings.title': '网络设置',\r\n 'networkSettings.name': '名称',\r\n 'networkSettings.ipAddress': 'IP 地址',\r\n 'networkSettings.subnetMask': '子网掩码',\r\n 'networkSettings.restartRequired': '需要重启才能应用更改。是否立即重启?',\r\n 'networkSettings.restartNow': '立即重启',\r\n 'networkSettings.restartLater': '稍后重启',\r\n 'networkSettings.saveSuccess': '保存成功',\r\n \r\n // PTP Modal\r\n 'ptp.title': 'PTP',\r\n 'ptp.domainNumber': '域编号',\r\n 'ptp.priority1': '优先级 1',\r\n 'ptp.priority2': '优先级 2',\r\n 'ptp.grandmasterIdentity': '主时钟 ID',\r\n 'ptp.portIdentity': '端口标识',\r\n 'ptp.clockClass': '时钟等级',\r\n 'ptp.clockClass.atomic': '原子钟 ({value})',\r\n 'ptp.clockClass.gps': 'GPS ({value})',\r\n 'ptp.clockClass.slaveOnly': '仅从时钟 ({value})',\r\n 'ptp.clockAccuracy': '时钟精度',\r\n 'ptp.offsetScaledLogVariance': '时钟偏移方差',\r\n 'ptp.utcOffset': 'UTC 偏移',\r\n 'ptp.connectedStatus': '连接状态',\r\n 'ptp.lockedStatus': '锁定状态',\r\n 'ptp.connected': '已连接',\r\n 'ptp.disconnected': '未连接',\r\n 'ptp.locked': '已锁定',\r\n 'ptp.unlocked': '未锁定',\r\n 'ptp.saveSuccess': '保存成功',\r\n 'ptp.unknown': '未知',\r\n \r\n // NMOS Modal\r\n 'nmos.title': 'NMOS',\r\n 'nmos.hostAddress': '主机地址',\r\n 'nmos.domain': '域名',\r\n 'nmos.registryAddress': '注册中心地址',\r\n 'nmos.registrationPort': '注册中心端口',\r\n 'nmos.registryVersion': '注册中心版本',\r\n 'nmos.loggingLevel': '日志级别',\r\n 'nmos.placeholder.selectHostAddress': '选择主机地址',\r\n 'nmos.placeholder.selectVersion': '选择版本',\r\n 'nmos.saveSuccess': '保存成功',\r\n \r\n // Preset Modal\r\n 'preset.title': '预设管理',\r\n 'preset.name': '名称',\r\n 'preset.categories': '分类',\r\n 'preset.description': '描述',\r\n 'preset.placeholder.enterName': '请输入名称',\r\n 'preset.placeholder.enterDescription': '请输入描述',\r\n 'preset.header.name': '名称',\r\n 'preset.header.createTime': '创建时间',\r\n 'preset.header.description': '描述',\r\n 'preset.button.new': '新建预设',\r\n 'preset.button.delete': '删除',\r\n 'preset.button.load': '加载',\r\n 'preset.button.save': '保存',\r\n 'preset.button.edit': '编辑',\r\n 'preset.button.cancel': '取消',\r\n 'preset.button.import': '导入',\r\n 'preset.button.export': '导出',\r\n 'preset.empty.noData': '从列表中选择一个预设查看详情',\r\n 'preset.unsaved.detected': '检测到未保存的预设',\r\n 'preset.empty.create': '创建新预设',\r\n 'preset.untitled': '未命名',\r\n 'preset.delete.title': '删除预设',\r\n 'preset.delete.confirmMessage': '确定要删除预设',\r\n 'preset.load.title': '加载预设',\r\n 'preset.load.confirmMessage': '确定要加载预设',\r\n 'preset.load.loading': '加载中...',\r\n 'preset.success': '成功',\r\n 'preset.validation.nameRequired': '名称是必填项',\r\n 'preset.validation.categoryRequired': '请选择分类',\r\n 'preset.error.noSelectionOrIdMissing': '未选择预设或预设 ID 缺失',\r\n 'preset.import.invalidFile': '请选择 .preset 格式的文件',\r\n \r\n // License/Auth Modal\r\n 'license.title': '注册许可证',\r\n 'license.machineCode': '机器码',\r\n 'license.key': '许可证密钥',\r\n 'license.placeholder.enterKey': '请输入许可证密钥',\r\n 'license.button.activate': '立即激活',\r\n 'license.button.reactivate': '重新激活',\r\n 'license.button.ignore': '忽略',\r\n 'license.status.unactivated': '未激活',\r\n 'license.status.activated': '已激活',\r\n 'license.status.expired': '已过期',\r\n 'license.status.invalid': '无效',\r\n 'license.status.expiresOn': '到期时间',\r\n 'license.validation.keyRequired': '许可证密钥不能为空',\r\n 'license.error.authorizationFailed': '授权失败',\r\n \r\n // 升级相关\r\n 'upgrade.menu.download': '导出配置',\r\n 'upgrade.menu.softwareUpdate': '软件升级',\r\n 'upgrade.status.idle': '空闲',\r\n 'upgrade.status.uploading': '上传中',\r\n 'upgrade.status.uploadComplete': '上传完成,开始升级...',\r\n 'upgrade.status.upgrading': '升级中...',\r\n 'upgrade.error.downloadNotConfigured': '下载功能未配置',\r\n 'upgrade.error.downloadFailed': '下载失败',\r\n 'upgrade.error.uploadFailed': '上传失败',\r\n 'upgrade.error.invalidFileFormat': '上传失败:文件格式无效',\r\n 'upgrade.error.upgradeFailed': '升级失败',\r\n \r\n // 系统操作\r\n 'system.poweroff': '关机',\r\n 'system.restart': '重启',\r\n 'system.action.powerOff': '关闭',\r\n 'system.action.restart': '重启',\r\n 'system.confirm.title': '确认操作',\r\n 'system.confirm.message': '确定要{action}系统吗?此操作无法撤销。',\r\n 'system.button.cancel': '取消',\r\n 'system.button.confirm': '确认',\r\n \r\n // Maintenance page\r\n 'maintenance.restarting': '系统正在重启...',\r\n 'maintenance.poweredOff': '系统已关闭',\r\n 'maintenance.waiting': '请等待系统启动...',\r\n 'maintenance.redirecting.countdown': '将在 {countdown} 秒后自动跳转',\r\n 'maintenance.waiting.long': '系统仍在启动中,这可能需要一些时间...',\r\n 'maintenance.retry': '重试连接',\r\n 'maintenance.offline.description': '系统当前处于离线状态,请联系管理员开启设备。',\r\n \r\n // LSM Label\r\n 'lsm.label': '标签',\r\n 'lsm.placeholder.select': '请选择标签',\r\n};\r\n","// seeder-st2110-components component library English language pack\nexport default {\n // General buttons\n 'button.close': 'Close',\n 'button.apply': 'Apply',\n 'button.cancel': 'Cancel',\n 'button.delete': 'Delete',\n \n // Input placeholders\n 'input.placeholder.enterInteger': 'Enter an integer',\n 'input.placeholder.enterPort': ' Enter port (0-65535)',\n 'input.placeholder.enterPayload': 'Enter payload (96-127)',\n \n // Usage display\n 'usage.memory': 'Memory Usage',\n 'usage.totalMemory': 'Total Memory',\n 'usage.cpu': 'CPU Usage',\n 'usage.disk': 'Disk Usage',\n 'usage.cpuTemp': 'CPU Temperature',\n 'usage.memTemp': 'Memory Temperature',\n 'usage.nicTemp': 'NIC Temperature',\n 'usage.diskTemp': 'Disk Temperature',\n 'usage.gpu': 'GPU Usage',\n 'usage.gpuTemp': 'GPU Temperature',\n \n // Menu\n 'menu.networkSettings': 'Network Settings',\n 'menu.ptp': 'PTP',\n 'menu.nmos': 'NMOS',\n 'menu.preset': 'Preset',\n 'menu.license': 'License',\n 'menu.maintenance': 'Maintenance',\n 'menu.system': 'System',\n \n // Network Settings Modal\n 'networkSettings.title': 'Network Settings',\n 'networkSettings.name': 'Name',\n 'networkSettings.ipAddress': 'IP Address',\n 'networkSettings.subnetMask': 'Netmask',\n 'networkSettings.restartRequired': 'Restart is required to apply the changes. Do you want to restart now?',\n 'networkSettings.restartNow': 'Restart Now',\n 'networkSettings.restartLater': 'Restart Later',\n 'networkSettings.saveSuccess': 'Success',\n \n // PTP Modal\n 'ptp.title': 'PTP',\n 'ptp.domainNumber': 'Domain',\n 'ptp.priority1': 'Priority 1',\n 'ptp.priority2': 'Priority 2',\n 'ptp.grandmasterIdentity': 'Grandmaster Identity',\n 'ptp.portIdentity': 'Port Identity',\n 'ptp.clockClass': 'Clock Class',\n 'ptp.clockClass.atomic': 'Atomic Clock ({value})',\n 'ptp.clockClass.gps': 'GPS ({value})',\n 'ptp.clockClass.slaveOnly': 'Slave-Only ({value})',\n 'ptp.clockAccuracy': 'Clock Accuracy',\n 'ptp.offsetScaledLogVariance': 'Offset Scaled Log Variance',\n 'ptp.utcOffset': 'UTC Offset',\n 'ptp.connectedStatus': 'Connected Status',\n 'ptp.lockedStatus': 'Locked Status',\n 'ptp.connected': 'Connected',\n 'ptp.disconnected': 'Disconnected',\n 'ptp.locked': 'Locked',\n 'ptp.unlocked': 'Unlocked',\n 'ptp.saveSuccess': 'Success',\n 'ptp.unknown': 'Unknown',\n \n // NMOS Modal\n 'nmos.title': 'NMOS',\n 'nmos.hostAddress': 'Host Addresses',\n 'nmos.domain': 'Domain',\n 'nmos.registryAddress': 'Registry Address',\n 'nmos.registrationPort': 'Registry Port',\n 'nmos.registryVersion': 'Registry Version',\n 'nmos.loggingLevel': 'Logging Level',\n 'nmos.placeholder.selectHostAddress': 'Select IP address',\n 'nmos.placeholder.selectVersion': 'Select version',\n 'nmos.saveSuccess': 'Success',\n \n // Preset Modal\n 'preset.title': 'Preset Management',\n 'preset.name': 'Name',\n 'preset.categories': 'Categories',\n 'preset.description': 'Description',\n 'preset.placeholder.enterName': 'Enter name',\n 'preset.placeholder.enterDescription': 'Enter description',\n 'preset.header.name': 'Name',\n 'preset.header.createTime': 'Create Time',\n 'preset.header.description': 'Description',\n 'preset.button.new': 'New Preset',\n 'preset.button.delete': 'Delete',\n 'preset.button.load': 'Load',\n 'preset.button.save': 'Save',\n 'preset.button.edit': 'Edit',\n 'preset.button.cancel': 'Cancel',\n 'preset.button.import': 'Import',\n 'preset.button.export': 'Export',\n 'preset.empty.noData': 'Select a preset from the list to view details',\n 'preset.unsaved.detected': 'Existing unsaved preset detected',\n 'preset.empty.create': 'Create New Preset',\n 'preset.untitled': 'Untitled',\n 'preset.delete.title': 'Delete Preset',\n 'preset.delete.confirmMessage': 'Are you sure you want to delete preset',\n 'preset.load.title': 'Load Preset',\n 'preset.load.confirmMessage': 'Are you sure you want to load preset',\n 'preset.load.loading': 'Loading...',\n 'preset.success': 'Success',\n 'preset.validation.nameRequired': 'Name is required',\n 'preset.validation.categoryRequired': 'No category selected',\n 'preset.error.noSelectionOrIdMissing': 'No preset selected or preset ID is missing',\n 'preset.import.invalidFile': 'Please select a file with the .preset extension.',\n \n // License/Auth Modal\n 'license.title': 'Register License',\n 'license.machineCode': 'Machine Code',\n 'license.key': 'License Key',\n 'license.placeholder.enterKey': 'Enter your license key',\n 'license.button.activate': 'Activate Now',\n 'license.button.reactivate': 'Reactivate',\n 'license.button.ignore': 'Ignore',\n 'license.status.unactivated': 'Unactivated',\n 'license.status.activated': 'Already activated',\n 'license.status.expired': 'Expired',\n 'license.status.invalid': 'Invalid',\n 'license.status.expiresOn': 'will expire on',\n 'license.validation.keyRequired': 'License key cannot be empty',\n 'license.error.authorizationFailed': 'Authorization failed',\n \n // Upgrade related\n 'upgrade.menu.download': 'Download Config File',\n 'upgrade.menu.softwareUpdate': 'Software Update',\n 'upgrade.status.idle': 'Idle',\n 'upgrade.status.uploading': 'Uploading...',\n 'upgrade.status.uploadComplete': 'Upload complete, starting upgrade...',\n 'upgrade.status.upgrading': 'Upgrading...',\n 'upgrade.error.downloadNotConfigured': 'Download functionality not configured',\n 'upgrade.error.downloadFailed': 'Download failed',\n 'upgrade.error.uploadFailed': 'Upload failed',\n 'upgrade.error.invalidFileFormat': 'Upload failed: Invalid file format',\n 'upgrade.error.upgradeFailed': 'Upgrade failed',\n \n // System operations\n 'system.poweroff': 'Power Off',\n 'system.restart': 'Restart',\n 'system.action.powerOff': 'power off',\n 'system.action.restart': 'restart',\n 'system.confirm.title': 'Confirmation Required',\n 'system.confirm.message': 'Are you sure you want to {action} the system? This action cannot be undone.',\n 'system.button.cancel': 'Cancel',\n 'system.button.confirm': 'Confirm',\n \n // Maintenance page\n 'maintenance.restarting': 'System is restarting...',\n 'maintenance.poweredOff': 'System is powered off',\n 'maintenance.waiting': 'Please wait while the system is starting up...',\n 'maintenance.redirecting.countdown': 'Redirecting automatically in {countdown} second{countdown, plural, one {} other {s}}',\n 'maintenance.waiting.long': 'Still starting up... This may take a moment.',\n 'maintenance.retry': 'Retry connection',\n 'maintenance.offline.description': 'The system is currently offline. Please contact your administrator to power it on.',\n \n // LSM Label\n 'lsm.label': 'Label',\n 'lsm.placeholder.select': 'Select label',\n};\n","import { memo, useEffect, useMemo, useState, useCallback, useRef } from 'react';\r\nimport { Form, App, Typography, Divider, Input } from 'antd';\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst NetworkFieldGroup = ({ prefix, interfaces, fieldConfig = {} }) => {\r\n const intl = useIntl();\r\n \r\n // 默认字段配置\r\n const defaultFieldConfig = {\r\n name: { label: intl.formatMessage({ id: 'networkSettings.name' }), enabled: true },\r\n ip: { label: intl.formatMessage({ id: 'networkSettings.ipAddress' }), enabled: true },\r\n netmask: { label: intl.formatMessage({ id: 'networkSettings.subnetMask' }), enabled: true }\r\n };\r\n \r\n const mergedFieldConfig = {\r\n ...defaultFieldConfig,\r\n ...fieldConfig,\r\n netmask: {\r\n label: defaultFieldConfig.netmask.label,\r\n enabled: fieldConfig.netmask?.enabled ?? defaultFieldConfig.netmask.enabled,\r\n }\r\n };\r\n \r\n return (\r\n <>\r\n <Typography.Title\r\n level={5}\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n marginBottom: 16\r\n }}\r\n >\r\n {prefix}\r\n </Typography.Title>\r\n {interfaces.map((iface, index) => (\r\n <div key={iface.id || index}>\r\n {mergedFieldConfig.name.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.name.label}\r\n name={[prefix, index, \"display_name\"]}\r\n >\r\n <Input disabled />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.ip.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.ip.label}\r\n name={[prefix, index, \"ip_address\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.netmask.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.netmask.label}\r\n name={[prefix, index, \"netmask\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {index < interfaces.length - 1 && <Divider style={{ marginBlock: 16 }} />}\r\n </div>\r\n ))}\r\n </>\r\n )\r\n};\r\n\r\nconst NetworkSettingsModal = ({\r\n open, \r\n onClose, \r\n getLanConfig, // 可选 - 单独获取 LAN 配置的函数\r\n getSysConfig, // 可选 - 单独获取 QSFP 配置的函数\r\n getConfig, // 可选 - 统一获取配置的函数 ipgweb 专用\r\n updateLanConfig, \r\n updateSysConfig, \r\n restart,\r\n onRestartSuccess, // 重启成功后的回调(可选)\r\n modalProps = {},\r\n formProps = {},\r\n fieldConfig = {},\r\n sections = ['LAN', 'QSFP'],\r\n showNetmask = { LAN: true, QSFP: false },\r\n restartRemark\r\n}) => {\r\n const intl = useIntl();\r\n const { message, modal } = App.useApp();\r\n const [form] = Form.useForm();\r\n\r\n const [st2110Interfaces, setSt2110Interfaces] = useState([]);\r\n const [lanConfigs, setLanConfigs] = useState([]);\r\n const [submitLoading, setSubmitLoading] = useState(false);\r\n const [isInitialized, setIsInitialized] = useState(false);\r\n\r\n // 用于保存原始 QSFP 数据,供无 getSysConfig 时做对比\r\n const originalSt2110InterfacesRef = useRef([]);\r\n\r\n const initializationStatus = useRef({\r\n hasFetched: false,\r\n hasInitialized: false\r\n });\r\n\r\n const preparedFieldConfig = useMemo(() => {\r\n const config = { ...fieldConfig };\r\n \r\n // 确保LAN和QSFP的配置存在\r\n config.LAN = config.LAN || {};\r\n config.QSFP = config.QSFP || {};\r\n\r\n if (sections.includes('LAN')) {\r\n config.LAN.netmask = {\r\n ...(config.LAN.netmask || {}),\r\n enabled: showNetmask.LAN\r\n };\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n config.QSFP.netmask = {\r\n ...(config.QSFP.netmask || {}),\r\n enabled: showNetmask.QSFP\r\n };\r\n }\r\n\r\n return config;\r\n }, [fieldConfig, showNetmask, sections]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n \r\n const fetchData = async () => {\r\n if (initializationStatus.current.hasFetched) return;\r\n \r\n try {\r\n initializationStatus.current.hasFetched = true;\r\n\r\n if (getConfig) {\r\n // 使用统一接口获取数据\r\n const config = await getConfig();\r\n if (sections.includes('LAN') && config.lan_interfaces) {\r\n setLanConfigs(config.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && config.interfaces) {\r\n const interfaces = config.interfaces;\r\n setSt2110Interfaces(interfaces);\r\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\r\n }\r\n } else {\r\n const promises = [];\r\n if (sections.includes('LAN')) {\r\n promises.push(getLanConfig());\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n promises.push(getSysConfig());\r\n }\r\n\r\n const results = await Promise.allSettled(promises);\r\n\r\n if (sections.includes('LAN') && getLanConfig) {\r\n const lanResult = results[0];\r\n if (lanResult.status === 'fulfilled') {\r\n setLanConfigs(lanResult.value || []);\r\n }\r\n }\r\n \r\n if (sections.includes('QSFP') && getSysConfig) {\r\n const sysResult = sections.includes('LAN') ? results[1] : results[0];\r\n if (sysResult.status === 'fulfilled' && sysResult.value) {\r\n const interfaces = sysResult.value.st2110_interfaces || [];\r\n setSt2110Interfaces(interfaces);\r\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\r\n }\r\n }\r\n }\r\n \r\n setIsInitialized(true);\r\n } catch (error) {\r\n console.error('Failed to fetch data:', error);\r\n initializationStatus.current.hasFetched = false; // 出错时重置\r\n }\r\n };\r\n\r\n fetchData();\r\n }, [open, getLanConfig, getSysConfig, getConfig, sections]); \r\n\r\n // 当模态框关闭时重置状态\r\n useEffect(() => {\r\n if (!open) {\r\n setIsInitialized(false);\r\n setLanConfigs([]);\r\n setSt2110Interfaces([]);\r\n form.resetFields();\r\n initializationStatus.current = { hasFetched: false, hasInitialized: false };\r\n originalSt2110InterfacesRef.current = [];\r\n }\r\n }, [open, form]);\r\n\r\n // 动态初始值配置\r\n const initialValues = useMemo(() => {\r\n const values = {};\r\n \r\n if (sections.includes('LAN') && lanConfigs.length > 0) {\r\n values.LAN = lanConfigs.map(config => ({\r\n connection_id: config.connection_id,\r\n display_name: config.display_name,\r\n ip_address: config.ip_address,\r\n ...(showNetmask.LAN ? { netmask: config.netmask } : {})\r\n }));\r\n }\r\n \r\n if (sections.includes('QSFP') && st2110Interfaces.length > 0) {\r\n values.QSFP = st2110Interfaces.map(iface => ({\r\n // 只有当iface中存在id字段时才包含id\r\n ...(iface.id !== undefined && { id: iface.id }),\r\n display_name: iface.display_name,\r\n ip_address: iface.ip_address || iface.ip, // 优先取ip_address,没有则取ip\r\n ...(showNetmask.QSFP ? { netmask: iface.netmask } : {})\r\n }));\r\n }\r\n \r\n return values;\r\n }, [lanConfigs, st2110Interfaces, sections, showNetmask]);\r\n\r\n // 当初始值准备好后设置表单值\r\n useEffect(() => {\r\n if (isInitialized && !initializationStatus.current.hasInitialized) {\r\n form.setFieldsValue(initialValues);\r\n initializationStatus.current.hasInitialized = true;\r\n }\r\n }, [isInitialized, form, initialValues]);\r\n\r\n // 成功处理\r\n const handleSuccess = useCallback(async ({\r\n messageText,\r\n isPopup = false,\r\n refresh = !restart\r\n } = {}) => {\r\n const defaultMessage = intl.formatMessage({ id: 'networkSettings.saveSuccess' });\r\n message.success(messageText || defaultMessage);\r\n\r\n if (refresh && getConfig) {\r\n try {\r\n const newConfig = await getConfig();\r\n if (sections.includes('LAN') && newConfig.lan_interfaces) {\r\n setLanConfigs(newConfig.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && newConfig.interfaces) {\r\n setSt2110Interfaces(newConfig.interfaces);\r\n }\r\n } catch (error) {\r\n console.error('Failed to refresh config:', error);\r\n }\r\n }\r\n\r\n // 如果需要弹出重启确认框\r\n if (isPopup && restart) {\r\n if (getSysConfig) {\r\n // 有接口:再查一次确认是否需要重启\r\n try {\r\n const updatedConfig = await getSysConfig();\r\n if (updatedConfig?.is_restart_required) {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: intl.formatMessage({ id: 'networkSettings.restartRequired' }),\r\n cancelText: intl.formatMessage({ id: 'networkSettings.restartLater' }),\r\n okText: intl.formatMessage({ id: 'networkSettings.restartNow' }),\r\n onOk: async () => {\r\n await restart();\r\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n },\r\n });\r\n }\r\n } catch (error) {\r\n console.error('Failed to check restart status:', error);\r\n }\r\n } else {\r\n // 无接口:直接弹出重启确认框\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: intl.formatMessage({ id: 'networkSettings.restartRequired' }),\r\n cancelText: intl.formatMessage({ id: 'networkSettings.restartLater' }),\r\n okText: intl.formatMessage({ id: 'networkSettings.restartNow' }),\r\n onOk: async () => {\r\n await restart();\r\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n },\r\n });\r\n }\r\n }\r\n\r\n onClose();\r\n }, [intl, message, modal, getSysConfig, restart, getConfig, sections, onClose]);\r\n\r\n const handleSubmit = useCallback(async () => {\r\n setSubmitLoading(true);\r\n\r\n try {\r\n const values = await form.validateFields();\r\n\r\n // ===== 判断 QSFP 是否有修改(仅当无 getSysConfig 时使用)=====\r\n let hasQsfpChanged = false;\r\n if (!getSysConfig && sections.includes('QSFP') && values.QSFP) {\r\n const original = originalSt2110InterfacesRef.current;\r\n const current = values.QSFP;\r\n hasQsfpChanged = current.some((item, index) => {\r\n const orig = original[index];\r\n if (!orig) return false;\r\n\r\n const ipChanged = item.ip_address !== (orig.ip_address || orig.ip);\r\n return ipChanged;\r\n });\r\n }\r\n\r\n const updatePromises = [];\r\n\r\n // 更新LAN配置\r\n if (sections.includes('LAN') && values.LAN) {\r\n const lanData = values.LAN.map((item, index) => ({\r\n connection_id: lanConfigs[index]?.connection_id,\r\n ip_address: item.ip_address,\r\n ...(showNetmask.LAN ? { netmask: item.netmask } : {})\r\n }));\r\n updatePromises.push(updateLanConfig(lanData));\r\n }\r\n\r\n // 更新QSFP配置\r\n if (sections.includes('QSFP') && values.QSFP) {\r\n const interfacesData = values.QSFP.map((item, index) => ({\r\n // 只有当原始数据中存在id时才包含id\r\n ...(st2110Interfaces?.[index]?.id !== undefined && {\r\n id: st2110Interfaces?.[index]?.id \r\n }),\r\n ...(st2110Interfaces?.[index]?.ip !== undefined \r\n ? { ip: item.ip_address } \r\n : { ip_address: item.ip_address }\r\n ),\r\n ...(showNetmask.QSFP ? { netmask: item.netmask } : {})\r\n }));\r\n\r\n const st2110Data = st2110Interfaces.some(iface => 'id' in iface)\r\n ? { st2110_interfaces: interfacesData }\r\n : { interfaces: interfacesData };\r\n\r\n updatePromises.push(updateSysConfig(st2110Data));\r\n }\r\n\r\n const results = await Promise.allSettled(updatePromises);\r\n\r\n // 检查所有更新是否成功\r\n const allSucceeded = results.every(result => result.status === 'fulfilled');\r\n\r\n if (allSucceeded) {\r\n let isPopup = false;\r\n if (getSysConfig) {\r\n // 有接口:后续在 handleSuccess 中查 is_restart_required\r\n isPopup = true;\r\n } else {\r\n // 无接口:根据是否有 QSFP 变化决定\r\n isPopup = hasQsfpChanged;\r\n }\r\n\r\n handleSuccess({ isPopup });\r\n }\r\n } catch (error) {\r\n console.error('Failed to update configurations: ', error);\r\n } finally {\r\n setSubmitLoading(false);\r\n }\r\n }, [\r\n form, \r\n sections, \r\n lanConfigs, \r\n st2110Interfaces, \r\n updateLanConfig, \r\n updateSysConfig, \r\n handleSuccess\r\n ]);\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: intl.formatMessage({ id: 'networkSettings.title' }),\r\n width: 650,\r\n open,\r\n confirmLoading: submitLoading,\r\n onOk: handleSubmit,\r\n onCancel: onClose,\r\n okText: intl.formatMessage({ id: 'button.apply' }),\r\n cancelText: intl.formatMessage({ id: 'button.close' }),\r\n centered: true,\r\n destroyOnHidden: true,\r\n forceRender: true,\r\n // styles: {\r\n // body: { padding: \"16px 24px 8px 24px\" },\r\n // ...(restartRemark !== null && { footer: { paddingBottom: 28 } })\r\n // },\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 18 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <StyledModal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {sections.includes('LAN') && lanConfigs.length > 0 && (\r\n <>\r\n <NetworkFieldGroup\r\n prefix=\"LAN\"\r\n interfaces={lanConfigs}\r\n fieldConfig={preparedFieldConfig.LAN}\r\n />\r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && <Divider />}\r\n </>\r\n )}\r\n \r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && (\r\n <NetworkFieldGroup\r\n prefix=\"QSFP\"\r\n interfaces={st2110Interfaces}\r\n fieldConfig={preparedFieldConfig.QSFP}\r\n />\r\n )}\r\n </Form>\r\n {restartRemark}\r\n </StyledModal>\r\n );\r\n}\r\n\r\nexport { NetworkFieldGroup };\r\nexport default memo(NetworkSettingsModal);","import { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { Select, Switch, Input, Badge, Form, ConfigProvider, InputNumber, App } from \"antd\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\n// 默认字段配置\r\nconst defaultFieldConfigs = {\r\n clock_class: {\r\n label: 'ptp.clockClass',\r\n formType: 'select',\r\n options: [\r\n { value: 6, label: 'ptp.clockClass.atomic' },\r\n { value: 7, label: 'ptp.clockClass.gps' },\r\n { value: 248, label: 'ptp.clockClass.slaveOnly' }\r\n ],\r\n readOnly: true\r\n },\r\n clock_accuracy: {\r\n label: 'ptp.clockAccuracy',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n offset_scaled_log_variance: {\r\n label: 'ptp.offsetScaledLogVariance',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority1: {\r\n label: 'ptp.priority1',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority2: {\r\n label: 'ptp.priority2',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_identity: {\r\n label: 'ptp.grandmasterIdentity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n master_port_id: {\r\n label: 'ptp.portIdentity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n t1_domain_number: {\r\n label: 'ptp.domainNumber',\r\n formType: 'number',\r\n min: 0,\r\n max: 127,\r\n readOnly: false\r\n },\r\n master_utc_offset: {\r\n label: 'ptp.utcOffset',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n is_connected: {\r\n label: 'ptp.connectedStatus',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'ptp.disconnected', color: 'red' },\r\n 1: { text: 'ptp.connected', color: 'green' }\r\n }\r\n },\r\n is_locked: {\r\n label: 'ptp.lockedStatus',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'ptp.unlocked', color: 'red' },\r\n 1: { text: 'ptp.locked', color: 'green' }\r\n }\r\n }\r\n};\r\n\r\n// 默认字段顺序\r\nconst defaultFieldOrder = [\r\n 't1_domain_number',\r\n 'grandmaster_priority1',\r\n 'grandmaster_priority2',\r\n 'grandmaster_identity',\r\n 'master_port_id',\r\n 'clock_class',\r\n 'clock_accuracy',\r\n 'offset_scaled_log_variance',\r\n 'master_utc_offset',\r\n 'is_connected',\r\n 'is_locked'\r\n];\r\n\r\n/**\r\n * 转换PTP状态为表单字段数组\r\n * @param {Object} ptpStatus PTP状态对象\r\n * @param {Object} fieldConfigs 字段配置\r\n * @param {Array} fieldOrder 字段顺序\r\n * @returns {Array} 表单字段数组\r\n */\r\nfunction convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder) {\r\n return fieldOrder\r\n .filter(key => key in ptpStatus)\r\n .map(key => {\r\n const config = fieldConfigs[key] || { label: key, formType: 'text' };\r\n const value = ptpStatus[key];\r\n \r\n return {\r\n key,\r\n value,\r\n ...config,\r\n rawData: ptpStatus,\r\n };\r\n });\r\n}\r\n\r\nconst PtpModal = ({\r\n open, \r\n onClose, \r\n getPtpInfo, \r\n updatePtpInfo, \r\n fieldConfigs = defaultFieldConfigs,\r\n fieldOrder = defaultFieldOrder,\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const intl = useIntl();\r\n const [ptpStatus, setPtpStatus] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setLoading(true);\r\n getPtpInfo().then(data => {\r\n if (data?.[0]) {\r\n setPtpStatus(data[0]);\r\n // 数据加载后设置表单值\r\n form.setFieldsValue(data[0]);\r\n }\r\n }).catch(err => {\r\n console.error(\"Failed to fetch ptp\", err);\r\n }).finally(() => {\r\n setLoading(false);\r\n });\r\n } else {\r\n // 关闭时重置表单\r\n form.resetFields();\r\n setPtpStatus(null);\r\n }\r\n }, [open, form, getPtpInfo])\r\n\r\n const ptpStatusArray = useMemo(() => {\r\n if (!ptpStatus) return[];\r\n return convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder);\r\n }, [ptpStatus, fieldConfigs, fieldOrder]);\r\n\r\n // 渲染 Form.Item 的 label\r\n const renderLabel = (item) => {\r\n // 如果 label 是国际化 key(包含点号),则使用 formatMessage\r\n if (item.label && typeof item.label === 'string' && item.label.includes('.')) {\r\n return intl.formatMessage({ id: item.label });\r\n }\r\n return item.label;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const values = await form.getFieldsValue();\r\n\r\n setLoading(true);\r\n\r\n try {\r\n const response = await updatePtpInfo(values);\r\n \r\n if (response) {\r\n message.success(intl.formatMessage({ id: 'ptp.saveSuccess' }));\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const renderFormItem = (item) => {\r\n switch (item.formType) {\r\n case 'select':\r\n const selectOptions = item.options?.map(opt => ({\r\n ...opt,\r\n label: intl.formatMessage({ id: opt.label }, { value: opt.value })\r\n }));\r\n return <Select options={selectOptions} disabled={item.readOnly} />;\r\n case 'switch':\r\n return <Switch />;\r\n case 'badge':\r\n const normalizedValue = typeof item.value === 'boolean' \r\n ? (item.value ? 1 : 0)\r\n : item.value;\r\n const status = item.statusMap?.[normalizedValue] || { text: intl.formatMessage({ id: ptp.unknown }), color: 'gray' };\r\n return (\r\n <ConfigProvider theme={{ components: { Badge: { statusSize: 10 } } }}>\r\n <Badge \r\n color={status.color} \r\n text={intl.formatMessage({ id: status.text })} \r\n />\r\n </ConfigProvider>\r\n );\r\n case 'number':\r\n return (\r\n <InputNumber\r\n disabled={item.readOnly} \r\n controls={false} \r\n keyboard={false} \r\n min={item.min ?? Number.MIN_SAFE_INTEGER} \r\n max={item.max ?? Number.MAX_SAFE_INTEGER}\r\n />\r\n )\r\n default:\r\n return <Input disabled={item.readOnly} />;\r\n }\r\n };\r\n \r\n if (!open || !ptpStatus) return null;\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: intl.formatMessage({ id: 'ptp.title' }),\r\n width: 650,\r\n open,\r\n okText: intl.formatMessage({ id: 'button.apply' }),\r\n cancelText: intl.formatMessage({ id: 'button.close' }),\r\n onCancel: onClose,\r\n onOk: handleSubmit,\r\n confirmLoading: loading,\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n name: \"ptpForm\",\r\n labelCol: { span: 8 },\r\n wrapperCol: { span: 16 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <StyledModal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {ptpStatusArray.map(item => (\r\n <Form.Item \r\n label={renderLabel(item)} \r\n name={item.key} \r\n key={item.key}\r\n initialValue={item.value}\r\n >\r\n {renderFormItem(item)}\r\n </Form.Item>\r\n ))}\r\n </Form>\r\n </StyledModal>\r\n )\r\n}\r\n\r\nexport default memo(PtpModal);","import { List, Empty, Button, Space, Form, Input, Flex, Checkbox, Typography } from \"antd\";\r\nimport { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { PlusOutlined } from \"@ant-design/icons\";\r\nimport { useIntl } from '../i18n';\r\n\r\nexport const LeftList = memo(({\r\n dataSource,\r\n selectedPresetId,\r\n onSelectPreset,\r\n onAddNew,\r\n onRemove,\r\n onImport,\r\n onExport,\r\n hasPresets = dataSource.length > 0,\r\n enableImportAndExport,\r\n texts = {\r\n newButton: \"preset.button.new\",\r\n removeButton: \"preset.button.delete\",\r\n importButton: \"preset.button.import\",\r\n exportButton: \"preset.button.export\",\r\n }\r\n}) => {\r\n const intl = useIntl();\r\n \r\n // 格式化文本的辅助函数\r\n const fmt = (key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n };\r\n return (\r\n <div className=\"h-full left-list-wrapper\">\r\n <div className=\"list-container\">\r\n <List\r\n header={\r\n <div className=\"grid grid-cols-3 gap-2 w-full list-header\">\r\n <div className=\"min-w-0\">{fmt('preset.header.name')}</div>\r\n <div className=\"min-w-0\">{fmt('preset.header.createTime')}</div>\r\n <div className=\"min-w-0\">{fmt('preset.header.description')}</div>\r\n </div>\r\n }\r\n dataSource={dataSource}\r\n rowKey=\"id\"\r\n renderItem={(item) => (\r\n <List.Item \r\n className={`list-item ${\r\n selectedPresetId === item.id ? 'selected' : ''\r\n }`}\r\n style={{ padding: \"9px 24px\" }}\r\n onClick={() => onSelectPreset(item)}\r\n >\r\n <div className=\"grid grid-cols-3 gap-2 w-full text-text-normal\">\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.name}>\r\n {item.name || fmt('preset.untitled')}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis>\r\n {item.create_time}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.description}>\r\n {item.description}\r\n </Typography.Text>\r\n </div>\r\n </div>\r\n </List.Item>\r\n )}\r\n locale={{\r\n emptyText: (\r\n <div className=\"p-8\">\r\n <Empty\r\n image={Empty.PRESENTED_IMAGE_SIMPLE}\r\n description={\r\n <span className=\"text-gray-400\">\r\n <Button \r\n type=\"link\" \r\n onClick={onAddNew}\r\n className=\"p-0 h-auto\"\r\n icon={<PlusOutlined />}\r\n >\r\n {fmt('preset.empty.create')}\r\n </Button>\r\n </span>\r\n }\r\n />\r\n </div>\r\n )\r\n }}\r\n />\r\n </div>\r\n\r\n {/* 底部按钮区域 */}\r\n {hasPresets && (\r\n <div style={{ paddingInline: 24, paddingBlock: 20 }}>\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n icon={<PlusOutlined />}\r\n className=\"btn-gray\"\r\n onClick={onAddNew}\r\n >\r\n {texts.newButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onRemove}\r\n >\r\n {texts.removeButton}\r\n </Button>\r\n {enableImportAndExport && (\r\n <>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onImport}\r\n >\r\n {texts.importButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={onExport}\r\n disabled={!selectedPresetId} \r\n >\r\n {texts.exportButton}\r\n </Button>\r\n </>\r\n )}\r\n </Space>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n});\r\n\r\nconst SubmitButton = ({ loading, action, children, disabled = false, editButtonEle = null }) => (\r\n <div className=\"submit-btn-wrapper\">\r\n <Space size=\"middle\">\r\n {editButtonEle}\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n loading={loading} \r\n onClick={action} \r\n disabled={disabled}\r\n >\r\n {children}\r\n </Button>\r\n </Space>\r\n </div>\r\n);\r\n\r\nexport const RightDetailForm = memo(({\r\n form, \r\n onSave, \r\n onLoad,\r\n onEdit,\r\n onCancelEdit,\r\n onUpdate,\r\n isLoading,\r\n isSavedPreset,\r\n originalPresetData,\r\n fields = {\r\n name: {\r\n label: \"preset.name\",\r\n placeholder: \"preset.placeholder.enterName\",\r\n required: true\r\n },\r\n category_list: {\r\n label: \"preset.categories\"\r\n },\r\n description: {\r\n label: \"preset.description\",\r\n placeholder: \"preset.placeholder.enterDescription\"\r\n }\r\n },\r\n texts = {\r\n loadButton: \"preset.button.load\",\r\n saveButton: \"preset.button.save\",\r\n editButton: \"preset.button.edit\",\r\n cancelButton: \"preset.button.cancel\"\r\n },\r\n presetChanged, // 作用:在切换选中预设时强制触发 Checkbox 的重新初始化\r\n enableEdit = true\r\n}) => {\r\n const intl = useIntl();\r\n const [initialSelected, setInitialSelected] = useState([]);\r\n const [isEditMode, setIsEditMode] = useState(false); // 是否进入编辑模式\r\n const currentSelected = Form.useWatch('category_list', form) || [];\r\n\r\n // 格式化文本的辅助函数\r\n const fmt = (key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n };\r\n\r\n // 检查是否包含 category_list 字段\r\n const hasCategoryList = fields.category_list !== null && fields.category_list !== undefined;\r\n\r\n // 初始化 category_list 的选择状态\r\n useEffect(() => {\r\n if (hasCategoryList) {\r\n const currentValue = form.getFieldValue('category_list') || [];\r\n setInitialSelected(currentValue);\r\n }\r\n }, [presetChanged, form, hasCategoryList]); // 当presetChanged变化时更新\r\n\r\n // 当 isSavedPreset 或 presetChanged 变化时,重置编辑模式\r\n useEffect(() => {\r\n setIsEditMode(false);\r\n }, [isSavedPreset, presetChanged]);\r\n\r\n // 动态生成 checkbox 选项\r\n const checkboxOptions = useMemo(() => {\r\n if (!hasCategoryList) return [];\r\n \r\n return fields.category_list.options.map(category => {\r\n const isInitiallySelected = initialSelected.includes(category.name);\r\n const shouldDisable = isSavedPreset ? !isInitiallySelected : false;\r\n \r\n return {\r\n ...category,\r\n disabled: shouldDisable,\r\n initiallySelected: isInitiallySelected\r\n };\r\n });\r\n }, [initialSelected, isSavedPreset, hasCategoryList, fields.category_list]);\r\n\r\n const handleCheckboxChange = (checkedValues) => {\r\n form.setFieldsValue({ category_list: checkedValues });\r\n };\r\n\r\n const handleEditClick = () => {\r\n setIsEditMode(true);\r\n if (onEdit) {\r\n onEdit(); // 如果有外部回调\r\n }\r\n };\r\n\r\n const handleCancelEdit = () => {\r\n if (originalPresetData) {\r\n form.setFieldsValue(originalPresetData);\r\n }\r\n \r\n setIsEditMode(false);\r\n\r\n if (onCancelEdit) {\r\n onCancelEdit();\r\n }\r\n };\r\n\r\n const handleSaveEdit = async () => {\r\n try {\r\n if (onUpdate) {\r\n await onUpdate();\r\n }\r\n\r\n setIsEditMode(false);\r\n } catch (error) {\r\n console.error('update fail:', error)\r\n }\r\n };\r\n\r\n const handleLoad = async () => {\r\n try {\r\n const formValues = await form.validateFields();\r\n\r\n const loadData = {\r\n id: form.getFieldValue('id'),\r\n // 优先使用表单中的 category_list,如果没有则使用原始数据\r\n name: originalPresetData.name,\r\n category_list: hasCategoryList \r\n ? (formValues.category_list || [])\r\n : (originalPresetData?.category_list || [])\r\n };\r\n await onLoad(loadData);\r\n } catch (error) {\r\n console.error('表单验证失败:', error);\r\n }\r\n };\r\n\r\n // 在编辑模式下,name 和 description 可以编辑,但 categories 不可编辑\r\n const shouldDisableNameAndDesc = isSavedPreset && !isEditMode;\r\n const shouldDisableCategories = isEditMode; // categories 在编辑模式下总是不可编辑\r\n\r\n return (\r\n <Flex vertical style={{ height: \"100%\", padding: \"20px 24px\" }}>\r\n <Form \r\n form={form} \r\n layout=\"vertical\" \r\n autoComplete=\"off\" \r\n style={{ flex: 1, overflowY: 'auto' }}\r\n >\r\n {/* Name 字段 */}\r\n <Form.Item \r\n name=\"name\" \r\n label={fmt(fields.name.label)}\r\n required\r\n >\r\n <Input \r\n placeholder={fmt(fields.name.placeholder)} \r\n disabled={shouldDisableNameAndDesc} \r\n />\r\n </Form.Item>\r\n\r\n {/* Category List 字段 */}\r\n {hasCategoryList && (\r\n <Form.Item \r\n name=\"category_list\" \r\n label={fmt(fields.category_list.label)}\r\n required\r\n >\r\n <Checkbox.Group \r\n className=\"grid grid-cols-2 gap-2\"\r\n onChange={handleCheckboxChange}\r\n disabled={shouldDisableCategories}\r\n >\r\n {checkboxOptions.map(category => (\r\n <Checkbox \r\n key={category.name} \r\n value={category.name}\r\n disabled={category.disabled || shouldDisableCategories}\r\n >\r\n {category.label}\r\n </Checkbox>\r\n ))}\r\n </Checkbox.Group>\r\n </Form.Item>\r\n )}\r\n\r\n {/* Description 字段 */}\r\n {fields.description && (\r\n <Form.Item \r\n name=\"description\" \r\n label={fmt(fields.description.label)}\r\n >\r\n <Input.TextArea \r\n rows={4}\r\n placeholder={fmt(fields.description.placeholder)}\r\n disabled={shouldDisableNameAndDesc}\r\n style={{\r\n resize: 'none'\r\n }}\r\n />\r\n </Form.Item>\r\n )}\r\n </Form>\r\n {isSavedPreset ? (\r\n isEditMode ? (\r\n // 编辑模式下的按钮\r\n <div className=\"submit-btn-wrapper\">\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n onClick={handleCancelEdit}\r\n >\r\n {texts.cancelButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\" \r\n onClick={handleSaveEdit}\r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </Button>\r\n </Space>\r\n </div>\r\n ) : (\r\n // 非编辑模式下的按钮\r\n <SubmitButton\r\n action={handleLoad}\r\n {...(hasCategoryList && { disabled: !currentSelected.length })}\r\n editButtonEle={enableEdit ? (\r\n <Button\r\n type=\"default\"\r\n className=\"btn-gray\"\r\n onClick={handleEditClick}\r\n >\r\n {texts.editButton}\r\n </Button>\r\n ) : null}\r\n >\r\n {texts.loadButton}\r\n </SubmitButton>\r\n )\r\n ) : (\r\n <SubmitButton \r\n action={onSave} \r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </SubmitButton>\r\n )}\r\n </Flex>\r\n );\r\n});","import { Form, Row, Col, Empty, App, Spin, Flex } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { memo, useState, useCallback, useEffect } from \"react\";\r\nimport { LeftList, RightDetailForm } from \"./PresetModal.component\";\r\nimport StyledModal from './StyledModal';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst Preset = ({\r\n open,\r\n onClose,\r\n // API 方法通过 props 传入\r\n getPresetList,\r\n savePreset,\r\n removePreset,\r\n loadPreset,\r\n updatePreset,\r\n uploadPreset,\r\n downloadPreset,\r\n onLoadSuccess, // 加载成功后的回调\r\n onLoadError, // 加载失败后的回调\r\n\r\n // 字段配置\r\n fields = {\r\n name: {\r\n label: \"preset.name\",\r\n placeholder: \"preset.placeholder.enterName\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n title: \"preset.title\",\r\n emptyText: \"preset.empty.noData\",\r\n deleteConfirm: \"preset.delete.confirmMessage\",\r\n loadConfirm: \"preset.load.confirmMessage\",\r\n loadText: \"preset.load.loading\",\r\n successText: \"preset.success\",\r\n newButton: \"preset.button.new\",\r\n removeButton: \"preset.button.delete\",\r\n loadButton: \"preset.button.load\",\r\n saveButton: \"preset.button.save\",\r\n editButton: \"preset.button.edit\",\r\n cancelButton: \"preset.button.cancel\",\r\n importButton: \"preset.button.import\",\r\n exportButton: \"preset.button.export\",\r\n },\r\n // 样式定制\r\n width = 1000,\r\n height = 680,\r\n className = \"\",\r\n // 功能配置\r\n enableEdit = true,\r\n enableImportAndExport = false,\r\n}) => {\r\n const intl = useIntl();\r\n const { message, modal } = App.useApp();\r\n const [presetList, setPresetList] = useState([]);\r\n const [selectedPreset, setSelectedPreset] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [uploading, setUploading] = useState(false);\r\n const [presetChanged, setPresetChanged] = useState(0);\r\n const [form] = Form.useForm();\r\n\r\n // 格式化文本的辅助函数\r\n const fmt = useCallback((key) => {\r\n if (typeof key === 'string' && key.includes('.')) {\r\n return intl.formatMessage({ id: key });\r\n }\r\n return key;\r\n }, [intl]);\r\n\r\n const fetchPresetList = useCallback(async () => {\r\n try {\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 自动选中第一个预设\r\n if (presets.length > 0) {\r\n const firstPreset = presets[0];\r\n setSelectedPreset(firstPreset);\r\n form.setFieldsValue(firstPreset);\r\n setPresetChanged(prev => prev + 1);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch preset list:', error);\r\n }\r\n }, [getPresetList]);\r\n\r\n const handleSelectPreset = useCallback((preset) => {\r\n setSelectedPreset(preset);\r\n form.setFieldsValue(preset);\r\n setPresetChanged(prev => prev + 1);\r\n }, [form]);\r\n\r\n const handleAddNew = useCallback(() => {\r\n const unsavedPreset = presetList.find(item => !item.id);\r\n\r\n if (unsavedPreset) {\r\n message.warning(intl.formatMessage({ id: 'preset.unsaved.detected' }));\r\n return;\r\n }\r\n\r\n // 创建新的数据,包含所有配置的字段\r\n const newPreset = Object.keys(fields).reduce((acc, fieldName) => {\r\n acc[fieldName] = '';\r\n return acc;\r\n }, {});\r\n\r\n // 特殊处理 category_list\r\n if (fields.category_list?.options) {\r\n newPreset.category_list = fields.category_list.options.map(item => item.name);\r\n }\r\n \r\n setPresetList([...presetList, newPreset]);\r\n setSelectedPreset(newPreset);\r\n form.setFieldsValue(newPreset);\r\n }, [form, presetList, message]);\r\n\r\n const handleRemove = useCallback(async () => {\r\n if (!selectedPreset) return;\r\n\r\n // 检查是否为新建的未保存数据(无 id)\r\n const isUnsavedPreset = !selectedPreset.id;\r\n const presetName = selectedPreset.name || fmt('preset.untitled');\r\n\r\n try {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: fmt('preset.delete.title'),\r\n content: `${fmt('preset.delete.confirmMessage')} \"${presetName}\"?`,\r\n cancelText: fmt('button.cancel'),\r\n okText: fmt('button.delete'),\r\n onOk: async () => {\r\n // 在删除前记录当前选中项的位置\r\n const currentIndex = presetList.findIndex(item => \r\n isUnsavedPreset ? !item.id : item.id === selectedPreset.id\r\n );\r\n\r\n if (!isUnsavedPreset) {\r\n await removePreset({ id: selectedPreset.id });\r\n message.success(fmt('preset.success'));\r\n } else {\r\n // 移除未保存的预设\r\n setPresetList(prev => prev.filter(item => !!item.id));\r\n }\r\n\r\n // 获取删除后的列表\r\n const updatedList = isUnsavedPreset \r\n ? presetList.filter(item => !!item.id)\r\n : await getPresetList().then(data => data?.preset_list || data || []);\r\n\r\n // 更新列表\r\n setPresetList(updatedList);\r\n\r\n if (updatedList.length > 0) {\r\n // 计算下一个索引\r\n let nextIndex = 0;\r\n\r\n if (currentIndex > 0) {\r\n // 如果删除的不是最后一项\r\n if (currentIndex < updatedList.length) {\r\n nextIndex = currentIndex; // 保持相同位置\r\n } else {\r\n nextIndex = updatedList.length - 1; // 选最后一个\r\n }\r\n }\r\n\r\n const nextPreset = updatedList[nextIndex];\r\n if (nextPreset) {\r\n setSelectedPreset(nextPreset);\r\n form.setFieldsValue(nextPreset);\r\n setPresetChanged(prev => prev + 1);\r\n return;\r\n }\r\n }\r\n\r\n // 列表为空\r\n setSelectedPreset(null);\r\n form.resetFields();\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Failed to delete preset:', error);\r\n }\r\n }, [selectedPreset, form, modal, message, removePreset, getPresetList, fmt]);\r\n\r\n const handleImport = useCallback(async () => {\r\n // 创建一个临时的 input 元素\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = '.preset'; // 限制只能选择 .preset 文件\r\n\r\n input.onchange = async (e) => {\r\n const file = e.target.files?.[0];\r\n if (!file) {\r\n return; // 用户取消选择\r\n }\r\n\r\n // 确保文件扩展名是 .preset(防止 accept 被绕过)\r\n if (!file.name.toLowerCase().endsWith('.preset')) {\r\n message.error(intl.formatMessage({ id: 'preset.import.invalidFile' }));\r\n return;\r\n }\r\n\r\n try {\r\n setUploading(true);\r\n await uploadPreset(file);\r\n message.success(intl.formatMessage({ id: 'preset.success' }));\r\n\r\n // 上传成功后刷新列表\r\n fetchPresetList();\r\n } catch (error) {\r\n console.error('Failed to import preset file:', error);\r\n } finally {\r\n setUploading(false);\r\n }\r\n\r\n // 清理:移除 input\r\n input.remove();\r\n };\r\n\r\n // 触发文件选择框\r\n input.click();\r\n }, [uploadPreset, message, intl, fetchPresetList]);\r\n\r\n const handleExport = useCallback(() => {\r\n if (!selectedPreset?.id) {\r\n message.warning(intl.formatMessage({ id: 'preset.error.noSelectionOrIdMissing' }));\r\n return;\r\n }\r\n\r\n // 构造下载 URL\r\n const downloadUrl = `${downloadPreset}/${selectedPreset.id}`;\r\n\r\n // 创建临时 a 标签\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.download = `${selectedPreset.name || 'preset'}.preset`; // 指定文件名\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }, [selectedPreset, message, intl]);\r\n\r\n const handleLoadPreset = useCallback(async (loadData) => {\r\n if (!loadData) return;\r\n\r\n let modalInstance = null;\r\n let resolveOk = null; // 用于控制 confirm 关闭时机\r\n\r\n modalInstance = modal.confirm({\r\n title: fmt('preset.load.title'),\r\n content: `${fmt('preset.load.confirmMessage')} \"${loadData.name}\"?`,\r\n cancelText: fmt('button.cancel'),\r\n okText: fmt('preset.button.load'),\r\n // onOk 返回一个 pending Promise\r\n onOk: () => {\r\n return new Promise((resolve, reject) => {\r\n resolveOk = resolve;\r\n\r\n // 立即切换为 loading 状态\r\n modalInstance.update({\r\n title: fmt('preset.load.loading'),\r\n content: <Spin size=\"large\" className=\"block mx-auto\" />,\r\n okButtonProps: { style: { display: 'none' } },\r\n cancelButtonProps: { style: { display: 'none' } },\r\n maskClosable: false,\r\n closable: false,\r\n });\r\n\r\n (async () => {\r\n try {\r\n await loadPreset({\r\n id: loadData.id,\r\n ...(loadData.category_list && { category_list: loadData.category_list })\r\n });\r\n\r\n // 成功:1 秒后自动关闭\r\n setTimeout(() => {\r\n resolveOk?.();\r\n message.success(fmt('preset.success'));\r\n // 加载成功的外部回调\r\n if (onLoadSuccess) {\r\n onLoadSuccess(loadData);\r\n }\r\n }, 1000);\r\n } catch (error) {\r\n console.error('Failed to load preset:', error);\r\n // 失败:直接关闭 modal\r\n modalInstance.destroy();\r\n // 加载失败的外部回调\r\n if (onLoadError) {\r\n onLoadError(error, loadData);\r\n }\r\n }\r\n })();\r\n });\r\n },\r\n onCancel: () => {\r\n // 用户取消\r\n }\r\n });\r\n }, [loadPreset, message, modal, onLoadSuccess, onLoadError, fmt]);\r\n\r\n const handleSave = useCallback(async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n message.error(fmt('preset.validation.nameRequired'))\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n // 验证分类列表\r\n if (fields.category_list?.required) {\r\n if (!values.category_list || values.category_list.length === 0) {\r\n message.error(fmt('preset.validation.categoryRequired'))\r\n return;\r\n }\r\n }\r\n \r\n await savePreset(values);\r\n message.success(fmt('preset.success'));\r\n\r\n const savedPresetName = values.name;\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 在刷新后的列表中查找同名的预设\r\n const newlySavedPreset = presets.find(item => item.name === savedPresetName);\r\n\r\n if (newlySavedPreset) {\r\n setSelectedPreset(newlySavedPreset);\r\n form.setFieldsValue(newlySavedPreset);\r\n setPresetChanged(prev => prev + 1);\r\n } else {\r\n setSelectedPreset(values);\r\n }\r\n } catch (error) {\r\n console.error('Failed to save preset:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, message, fields, savePreset, getPresetList, fmt]);\r\n\r\n const handleUpdate = useCallback(async () => {\r\n if (!selectedPreset || !selectedPreset.id) {\r\n message.error(fmt('preset.error.noSelectionOrIdMissing'));\r\n return;\r\n }\r\n \r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n message.error(fmt('preset.validation.nameRequired'))\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n await updatePreset({\r\n id: selectedPreset.id,\r\n name: values.name,\r\n description: values.description\r\n });\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 更新当前选中的预设\r\n const updatedPreset = presets.find(item => item.id === selectedPreset.id);\r\n if (updatedPreset) {\r\n setSelectedPreset(updatedPreset);\r\n }\r\n\r\n message.success(fmt('preset.success'));\r\n } catch (error) {\r\n console.error('Failed to update preset:', error);\r\n throw error;\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, message, fields, updatePreset, selectedPreset, fmt]);\r\n\r\n // 初始化数据\r\n useEffect(() => {\r\n fetchPresetList();\r\n }, [fetchPresetList]);\r\n\r\n return (\r\n <StyledModal\r\n title={fmt(texts.title)}\r\n width={width}\r\n open={open}\r\n wrapClassName={`preset-management ${className}`}\r\n footer={null}\r\n onCancel={onClose}\r\n centered\r\n styles={{\r\n body: {\r\n padding: 0,\r\n height: `${height}px`\r\n }\r\n }}\r\n >\r\n <Row gutter={0} className=\"h-full w-full\">\r\n <Col span={14} className=\"h-full\">\r\n <LeftList\r\n dataSource={presetList}\r\n selectedPresetId={selectedPreset?.id}\r\n onSelectPreset={handleSelectPreset}\r\n onAddNew={handleAddNew}\r\n onRemove={handleRemove}\r\n onImport={handleImport}\r\n onExport={handleExport}\r\n enableImportAndExport={enableImportAndExport}\r\n texts={{\r\n newButton: fmt(texts.newButton),\r\n removeButton: fmt(texts.removeButton),\r\n importButton: fmt(texts.importButton),\r\n exportButton: fmt(texts.exportButton)\r\n }}\r\n />\r\n </Col>\r\n <Col span={10} className=\"h-full\">\r\n {selectedPreset ? (\r\n <RightDetailForm\r\n form={form}\r\n onSave={handleSave}\r\n onLoad={handleLoadPreset}\r\n onUpdate={handleUpdate}\r\n isLoading={loading}\r\n isSavedPreset={!!selectedPreset?.id}\r\n originalPresetData={selectedPreset} // 传递原始数据\r\n fields={fields}\r\n texts={{\r\n loadButton: fmt(texts.loadButton),\r\n saveButton: fmt(texts.saveButton),\r\n editButton: fmt(texts.editButton),\r\n cancelButton: fmt(texts.cancelButton)\r\n }}\r\n presetChanged={presetChanged}\r\n enableEdit={enableEdit}\r\n />\r\n ) : (\r\n <Flex vertical justify=\"center\" align=\"center\" className=\"h-full text-gray-400\">\r\n <Empty \r\n image={Empty.PRESENTED_IMAGE_SIMPLE} \r\n description={fmt(texts.emptyText)}\r\n />\r\n </Flex>\r\n )}\r\n </Col>\r\n </Row>\r\n </StyledModal>\r\n );\r\n};\r\n\r\nexport default memo(Preset);","import { Dropdown } from \"antd\";\r\nimport useUpgrade from '../hooks/useUpgrade';\r\n\r\nconst UpgradeManager = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000,\r\n children,\r\n ...dropdownProps\r\n }) => {\r\n const [upgradeElement] = useUpgrade({\r\n menuItems,\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes,\r\n uploadCompleteDelay,\r\n statusPollingInterval\r\n });\r\n\r\n if (children) {\r\n // 提取Dropdown组件和其menu属性\r\n const dropdownElement = upgradeElement.props.children[0];\r\n const otherElements = upgradeElement.props.children.slice(1);\r\n \r\n return (\r\n <>\r\n <Dropdown \r\n {...dropdownProps} \r\n {...dropdownElement.props} // 传递所有Dropdown的props\r\n >\r\n {children}\r\n </Dropdown>\r\n {otherElements}\r\n </>\r\n );\r\n }\r\n\r\n // 如果没有children,直接返回完整的升级元素\r\n return upgradeElement;\r\n }\r\n\r\n UpgradeManager.defaultProps = {\r\n trigger: [\"hover\"],\r\n placement: \"bottomRight\"\r\n};\r\n\r\nexport default UpgradeManager;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { Dropdown, App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst SystemOperations = ({ \r\n onPowerOff, \r\n onRestart,\r\n onPowerOffSuccess,\r\n onRestartSuccess,\r\n beforeAction, // 在执行关机/重启前调用\r\n powerOffLabel = \"system.poweroff\",\r\n restartLabel = \"system.restart\",\r\n iconClassName = \"seeder-iconfont seeder-icon-guanji1 text-xl text-neutral-400\",\r\n confirmMessage = \"system.confirm.message\",\r\n confirmTitle = \"system.confirm.title\",\r\n cancelText = \"system.button.cancel\",\r\n okText = \"system.button.confirm\"\r\n}) => {\r\n const intl = useIntl();\r\n const { modal } = App.useApp();\r\n\r\n const menuItems = [\r\n {\r\n key: \"poweroff\",\r\n label: typeof powerOffLabel === 'string' && powerOffLabel.includes('.') ? intl.formatMessage({ id: powerOffLabel }) : powerOffLabel,\r\n },\r\n {\r\n key: \"restart\",\r\n label: typeof restartLabel === 'string' && restartLabel.includes('.') ? intl.formatMessage({ id: restartLabel }) : restartLabel,\r\n }\r\n ];\r\n\r\n const doAction = (action) => {\r\n try {\r\n // 根据 action 决定显示的确认信息\r\n const actionLabels = {\r\n poweroff: intl.formatMessage({ id: 'system.action.powerOff' }),\r\n restart: intl.formatMessage({ id: 'system.action.restart' })\r\n };\r\n\r\n const actionText = actionLabels[action] || action;\r\n\r\n // 处理标题和消息的国际化\r\n const titleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') \r\n ? intl.formatMessage({ id: confirmTitle }) \r\n : confirmTitle;\r\n \r\n // 如果是国际化 key,使用 intl.formatMessage 处理参数\r\n // 如果是普通文本,使用 replace 替换占位符\r\n const messageText = typeof confirmMessage === 'string' && confirmMessage.includes('.') \r\n ? intl.formatMessage({ id: confirmMessage }, { action: actionText })\r\n : typeof confirmMessage === 'string' \r\n ? confirmMessage.replace('{action}', actionText)\r\n : confirmMessage;\r\n\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: titleText,\r\n content: messageText,\r\n cancelText: typeof cancelText === 'string' && cancelText.includes('.') ? intl.formatMessage({ id: cancelText }) : cancelText,\r\n okText: typeof okText === 'string' && okText.includes('.') ? intl.formatMessage({ id: okText }) : okText,\r\n onOk: async () => {\r\n // 先执行 beforeAction(用于 enterMaintenanceMode)\r\n if (typeof beforeAction === 'function') {\r\n beforeAction(action); // 可传 action 类型\r\n }\r\n\r\n if (action === 'poweroff' && onPowerOff) {\r\n await onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n await onRestart();\r\n }\r\n\r\n // 成功后再触发 success 回调\r\n if (action === 'poweroff' && typeof onPowerOffSuccess === 'function') {\r\n onPowerOffSuccess();\r\n } else if (action === 'restart' && typeof onRestartSuccess === 'function') {\r\n onRestartSuccess();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }\r\n\r\n const handleMenuClick = ({ key }) => {\r\n doAction(key);\r\n }\r\n\r\n return (\r\n <Dropdown menu={{ items: menuItems, onClick: handleMenuClick }} trigger={[\"hover\"]}>\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className={iconClassName}></i>\r\n </a>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nSystemOperations.propTypes = {\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n powerOffLabel: PropTypes.string,\r\n restartLabel: PropTypes.string,\r\n iconClassName: PropTypes.string,\r\n confirmTitle: PropTypes.string,\r\n cancelText: PropTypes.string,\r\n okText: PropTypes.string,\r\n run: PropTypes.func\r\n};\r\n\r\nexport default SystemOperations;","import { Button } from 'antd';\r\nimport PropTypes from 'prop-types';\r\n\r\n// 将 logo.png 转为 base64\r\nconst logoBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAGaCAYAAAAfLro4AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAGj2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDg4LCAyMDIwLzA3LzEwLTIyOjA2OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YmIxNjQ4OC1hYzczLWI3NGYtODczMC1hZGZiY2Y1NTk3OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MjdjZjIwMy0zM2IyLWU3NDItYWRhNC0wNGY2YzA5ZTYxOWIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyN2NmMjAzLTMzYjItZTc0Mi1hZGE0LTA0ZjZjMDllNjE5YiIgc3RFdnQ6d2hlbj0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHN0RXZ0OndoZW49IjIwMjUtMDktMDlUMTA6NTY6NTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZkN2NjZDg5LTViMTQtMDI0MC04YjNhLTQzODU2ODk1YTFlZjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlgJupcAADw7SURBVHic7d15vKdz/f/xx5mNGWMsw1hKkaVQkmm1VFQSKr6VLIXIEtK++ZZIRQtJiG+K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NAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLR/h+CVP12K0zZoAAAAABJRU5ErkJggg==';\r\n\r\nconst defaultResetRoute = () => {\r\n window.location.href = window.location.origin;\r\n};\r\n\r\nconst useSpaLogo = (props = {}) => {\r\n const {\r\n logoUrl = logoBase64, // 使用者传入 logo URL\r\n logoWidth = 100,\r\n logoAlt = 'logo',\r\n onClick = defaultResetRoute,\r\n buttonStyle = {\r\n padding: 0,\r\n lineHeight: 1,\r\n height: 'auto',\r\n borderStyle: 'none',\r\n display: 'inline-block'\r\n }\r\n } = props;\r\n\r\n // 如果没有提供 logoUrl,返回空\r\n if (!logoUrl) {\r\n return [null];\r\n }\r\n\r\n return [\r\n <Button key=\"logo\" type=\"link\" style={buttonStyle} onClick={onClick}>\r\n <img alt={logoAlt} src={logoUrl} style={{ width: logoWidth }} />\r\n </Button>\r\n ];\r\n}\r\n\r\nuseSpaLogo.propTypes = {\r\n logoUrl: PropTypes.string,\r\n logoWidth: PropTypes.number,\r\n logoAlt: PropTypes.string,\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default useSpaLogo;","import { Space, Typography, Flex } from \"antd\";\r\nimport useSpaLogo from '../hooks/useSpaLogo';\r\nimport useHardwareUsage from '../hooks/useHardwareUsage';\r\nimport SystemOperations from './SystemOperations';\r\n\r\n// 默认的获取 WebSocket URL 函数\r\nconst defaultGetSocketUrl = (url) => {\r\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\r\n return `ws://127.0.0.1:${window.location.port}${url}`;\r\n }\r\n return `ws://${window.location.host}${url}`;\r\n};\r\n\r\nconst CommonHeader = ({\r\n menuElement,\r\n productInfo = {},\r\n showLogo = true,\r\n showProductInfo = true,\r\n showHardwareUsage = true,\r\n showSystemOperations = true,\r\n onPowerOff, \r\n onRestart,\r\n onPowerOffSuccess,\r\n onRestartSuccess,\r\n beforeAction,\r\n hardwareMonitorUrl = '/ws/psmonitor/status_update',\r\n getSocketUrl = defaultGetSocketUrl,\r\n logoProps = {},\r\n className = '',\r\n style = {},\r\n // 新增插槽\r\n leftContent = null, // 左侧额外内容\r\n rightContent = null // 右侧额外内容\r\n}) => {\r\n const [logo] = useSpaLogo(logoProps);\r\n\r\n // 系统资源使用情况\r\n const usageElement = useHardwareUsage(getSocketUrl(hardwareMonitorUrl));\r\n\r\n return (\r\n <Flex justify=\"space-between\" align=\"center\" className={`common-header ${className}`} style={style}>\r\n {/* 左侧:Logo、产品信息和左侧插槽 */}\r\n <Space size={12}>\r\n {showLogo && logo}\r\n\r\n {showProductInfo && (\r\n <Flex align=\"center\" gap={12}>\r\n {productInfo.productName && (\r\n <Typography.Title level={4} style={{ marginBottom: 0 }}>\r\n {productInfo.productName}\r\n </Typography.Title>\r\n )}\r\n {productInfo.version && (\r\n <Typography.Text style={{ position: 'relative', top: 6, left: -6 }}>\r\n {productInfo.version}\r\n </Typography.Text>\r\n )}\r\n </Flex>\r\n )}\r\n\r\n {/* 左侧插槽 */}\r\n {leftContent}\r\n </Space>\r\n\r\n {/* 右侧:硬件监控和操作按钮 */}\r\n <Flex align=\"center\" gap={10}>\r\n {rightContent}\r\n\r\n {/* 系统资源使用情况 */}\r\n {showHardwareUsage && usageElement}\r\n\r\n <div className=\"header-controls\">\r\n {menuElement && (\r\n <div className=\"control-icon\">\r\n {menuElement}\r\n </div>\r\n )}\r\n\r\n {/* 关机、重启操作 */}\r\n {showSystemOperations && (\r\n <div className=\"control-icon\">\r\n <SystemOperations\r\n onPowerOff={onPowerOff}\r\n onRestart={onRestart}\r\n onPowerOffSuccess={onPowerOffSuccess}\r\n onRestartSuccess={onRestartSuccess}\r\n beforeAction={beforeAction}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </Flex>\r\n </Flex>\r\n )\r\n};\r\n\r\nexport default CommonHeader;","import { useState, useEffect, memo } from 'react';\r\nimport { Select, Form } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\nconst LSMLabelField = (props) => {\r\n const intl = useIntl();\r\n const [lsmList, setLsmList] = useState([]);\r\n\r\n const {\r\n label = \"lsm.label\",\r\n onLsmSelect,\r\n fetchLsmData,\r\n formItemProps = {},\r\n selectProps = {},\r\n fieldNames = { label: 'label', value: 'label' }\r\n } = props;\r\n\r\n useEffect(() => {\r\n const loadLsmData = async () => {\r\n try {\r\n const res = await fetchLsmData();\r\n if (res?.length) {\r\n setLsmList(res);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch LSM data:', error);\r\n }\r\n };\r\n\r\n loadLsmData();\r\n }, [fetchLsmData]);\r\n\r\n return (\r\n <Form.Item\r\n label={typeof label === 'string' && label.includes('.') ? intl.formatMessage({ id: label }) : label}\r\n {...formItemProps}\r\n >\r\n <Select\r\n {...field}\r\n {...selectProps}\r\n options={lsmList}\r\n fieldNames={fieldNames}\r\n allowClear\r\n showSearch\r\n optionFilterProp=\"label\"\r\n onChange={(value, option) => {\r\n field.onChange(value);\r\n onLsmSelect?.(value === undefined ? undefined : option);\r\n }}\r\n placeholder={selectProps.placeholder || intl.formatMessage({ id: 'lsm.placeholder.select' })}\r\n />\r\n </Form.Item>\r\n );\r\n};\r\n\r\nexport default memo(LSMLabelField);","import React, { memo, useState, useCallback, useMemo, useEffect, useRef } from 'react';\nimport { Tooltip, Modal, App, Alert, Form, Input, message, Dropdown, Spin, Divider, Typography, InputNumber, ConfigProvider, Badge, Switch, Select, List, Empty, Button, Space, Flex, Checkbox, Row, Col, Result } from 'antd';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { useWebSocket, useInterval } from 'ahooks';\nimport { LoadingOutlined, ExclamationCircleFilled, PlusOutlined } from '@ant-design/icons';\nimport axios from 'axios';\n\nfunction _defineProperty$1(e, r, t) {\n return (r = _toPropertyKey$1(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys$1(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2$1(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) {\n _defineProperty$1(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties$1(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose$1(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose$1(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _toPrimitive$1(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey$1(t) {\n var i = _toPrimitive$1(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\n/**\n * 国际化调试工具\n * 在浏览器控制台运行 window.debugI18n() 查看当前国际化状态\n */\n\nconst debugI18n = () => {\n var _window$g_initialProp, _window$g_initialProp2, _window$g_initialProp3, _window$g_initialProp4, _window$g_initialProp5, _window$g_initialProp6;\n if (typeof window === 'undefined') {\n console.log('[i18n debug] Not in browser environment');\n return;\n }\n console.group('🌍 I18n Debug Information');\n\n // 1. 当前语言环境\n console.log('📍 Current Locale Sources:');\n console.log(' - window.g_initialProps?.locale:', (_window$g_initialProp = window.g_initialProps) === null || _window$g_initialProp === void 0 ? void 0 : _window$g_initialProp.locale);\n console.log(' - window.g_initialProps?.___g_initialPropsFromServer?.locale:', (_window$g_initialProp2 = window.g_initialProps) === null || _window$g_initialProp2 === void 0 || (_window$g_initialProp2 = _window$g_initialProp2.___g_initialPropsFromServer) === null || _window$g_initialProp2 === void 0 ? void 0 : _window$g_initialProp2.locale);\n try {\n console.log(' - localStorage.umi-locale:', localStorage.getItem('umi-locale'));\n } catch (e) {\n console.log(' - localStorage: not available');\n }\n console.log(' - window.__COMPONENT_LOCALE__:', window.__COMPONENT_LOCALE__);\n\n // 2. 语言包\n console.log('\\n📦 Available Message Sources:');\n console.log(' - window.__COMPONENT_I18N_MESSAGES__:', window.__COMPONENT_I18N_MESSAGES__);\n console.log(' - window.__PROJECT_I18N_MESSAGES__:', window.__PROJECT_I18N_MESSAGES__);\n console.log(' - window.g_initialProps?.messages:', (_window$g_initialProp3 = window.g_initialProps) === null || _window$g_initialProp3 === void 0 ? void 0 : _window$g_initialProp3.messages);\n\n // 3. 合并后的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n const umiMessages = ((_window$g_initialProp4 = window.g_initialProps) === null || _window$g_initialProp4 === void 0 ? void 0 : _window$g_initialProp4.messages) || {};\n const allLocales = new Set([...Object.keys(componentMessages), ...Object.keys(projectMessages), ...Object.keys(umiMessages)]);\n console.log('\\n🔧 Merged Locales:', Array.from(allLocales));\n allLocales.forEach(locale => {\n const merged = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, umiMessages[locale] || {}), projectMessages[locale] || {}), componentMessages[locale] || {});\n console.log(\"\\n \\uD83D\\uDCC4 \".concat(locale, \" (\").concat(Object.keys(merged).length, \" keys):\"), merged);\n });\n\n // 4. 测试几个关键的 key\n console.log('\\n🧪 Test Translation:');\n const testKeys = ['networkSettings.title', 'button.ok', 'button.cancel', 'button.apply', 'button.close'];\n const currentLocale = ((_window$g_initialProp5 = window.g_initialProps) === null || _window$g_initialProp5 === void 0 ? void 0 : _window$g_initialProp5.locale) || ((_window$g_initialProp6 = window.g_initialProps) === null || _window$g_initialProp6 === void 0 || (_window$g_initialProp6 = _window$g_initialProp6.___g_initialPropsFromServer) === null || _window$g_initialProp6 === void 0 ? void 0 : _window$g_initialProp6.locale) || localStorage.getItem('umi-locale') || 'zh-CN';\n const allMessages = {};\n allLocales.forEach(locale => {\n allMessages[locale] = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, umiMessages[locale] || {}), projectMessages[locale] || {}), componentMessages[locale] || {});\n });\n testKeys.forEach(key => {\n var _allMessages$currentL, _allMessages$enUS;\n const translation = ((_allMessages$currentL = allMessages[currentLocale]) === null || _allMessages$currentL === void 0 ? void 0 : _allMessages$currentL[key]) || ((_allMessages$enUS = allMessages['en-US']) === null || _allMessages$enUS === void 0 ? void 0 : _allMessages$enUS[key]) || '❌ NOT FOUND';\n console.log(\" - \".concat(key, \": \").concat(translation));\n });\n console.groupEnd();\n};\n\n// 自动在开发环境注册到 window\nif (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') {\n window.debugI18n = debugI18n;\n console.log('💡 I18n debug tool available. Run window.debugI18n() in console to check i18n status.');\n}\n\n/**\n * seeder-st2110-components 组件库国际化 Hook\n * \n * 设计目标:\n * 1. 不依赖特定的国际化库(react-intl, i18next 等)\n * 2. 可以与主项目(Umi)的国际化集成\n * 3. 支持简单的变量替换\n * 4. 降级处理:如果没有翻译,显示 key 本身\n */\n\n/**\n * 获取当前语言环境\n * 优先从 Umi 全局变量读取,其次使用默认值\n */\nconst getLocale = () => {\n // 尝试从 Umi 获取语言设置\n if (typeof window !== 'undefined') {\n var _window$g_initialProp, _window$g_initialProp2, _window$g_initialProp3;\n // 方式 1:Umi 的运行时语言(通过 umi 的 locale 服务)\n // Umi 会在 window.g_lang 或 window.LOCALE 中存储当前语言\n if (window.g_lang) {\n return window.g_lang;\n }\n if (window.LOCALE) {\n return window.LOCALE;\n }\n\n // 方式 2:Umi 的 g_initialProps\n if ((_window$g_initialProp = window.g_initialProps) !== null && _window$g_initialProp !== void 0 && _window$g_initialProp.locale) {\n return window.g_initialProps.locale;\n }\n\n // 方式 3:Umi 的全局语言标记\n if ((_window$g_initialProp2 = window.g_initialProps) !== null && _window$g_initialProp2 !== void 0 && (_window$g_initialProp2 = _window$g_initialProp2.___g_initialPropsFromServer) !== null && _window$g_initialProp2 !== void 0 && _window$g_initialProp2.locale) {\n return window.g_initialProps.___g_initialPropsFromServer.locale;\n }\n\n // 方式 4:Umi 的 globalInitialProps\n if ((_window$g_initialProp3 = window.g_initialPropsFromServer) !== null && _window$g_initialProp3 !== void 0 && _window$g_initialProp3.locale) {\n return window.g_initialPropsFromServer.locale;\n }\n\n // 方式 5:从 localStorage 读取(Umi 默认行为)\n try {\n const storedLocale = localStorage.getItem('umi-locale');\n if (storedLocale) {\n return storedLocale;\n }\n } catch (e) {\n // localStorage 不可用时忽略\n }\n\n // 方式 6:组件库自定义语言标记\n if (window.__COMPONENT_LOCALE__) {\n return window.__COMPONENT_LOCALE__;\n }\n }\n // 默认语言:英文(与 Umi 配置一致)\n return 'en-US';\n};\n\n/**\n * 获取语言包\n * 优先从主项目读取,其次使用组件库自带的语言包\n */\nconst getMessages = () => {\n if (typeof window !== 'undefined') {\n var _window$g_initialProp4;\n // 尝试从多个来源读取语言包\n const messages = {};\n\n // 1. 组件库注册的语言包\n const componentMessages = window.__COMPONENT_I18N_MESSAGES__ || {};\n\n // 2. 主项目的语言包\n const projectMessages = window.__PROJECT_I18N_MESSAGES__ || {};\n\n // 3. Umi 的语言包\n const umiMessages = ((_window$g_initialProp4 = window.g_initialProps) === null || _window$g_initialProp4 === void 0 ? void 0 : _window$g_initialProp4.messages) || {};\n\n // 合并语言包(组件库的优先级最高,其次是主项目,最后是 Umi)\n const allLocales = new Set([...Object.keys(componentMessages), ...Object.keys(projectMessages), ...Object.keys(umiMessages)]);\n allLocales.forEach(locale => {\n messages[locale] = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, umiMessages[locale] || {}), projectMessages[locale] || {}), componentMessages[locale] || {});\n });\n return messages;\n }\n return {};\n};\n\n/**\n * 格式化消息\n * @param {string} id - 国际化 key\n * @param {object} values - 变量替换值\n * @param {string} locale - 语言环境\n * @param {object} messages - 语言包\n */\nconst formatMessage = function (_ref) {\n var _messages$locale, _messages$enUS;\n let {\n id\n } = _ref;\n let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let locale = arguments.length > 2 ? arguments[2] : undefined;\n let messages = arguments.length > 3 ? arguments[3] : undefined;\n const message = ((_messages$locale = messages[locale]) === null || _messages$locale === void 0 ? void 0 : _messages$locale[id]) || ((_messages$enUS = messages['en-US']) === null || _messages$enUS === void 0 ? void 0 : _messages$enUS[id]) || id;\n\n // 支持变量替换 {min}, {max}, {value} 等\n return message.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return values[key] !== undefined ? values[key] : match;\n });\n};\n\n/**\n * 国际化 Hook\n * \n * @returns {{\n * locale: string,\n * formatMessage: function,\n * messages: object\n * }}\n * \n * @example\n * const intl = useIntl();\n * const title = intl.formatMessage({ id: 'networkSettings.title' });\n * const message = intl.formatMessage({ id: 'validation.minLength' }, { min: 3 });\n */\nconst useIntl = () => {\n const locale = getLocale();\n const messages = getMessages();\n const formatMessageFn = function (_ref2) {\n let {\n id\n } = _ref2;\n let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return formatMessage({\n id\n }, values, locale, messages);\n };\n return {\n locale,\n formatMessage: formatMessageFn,\n messages\n };\n};\n\n/**\n * 注册语言包(可选)\n * 如果需要在运行时注册语言包,可以调用此函数\n * \n * @param {string} locale - 语言代码\n * @param {object} messages - 语言包对象\n */\nconst addMessages = (locale, messages) => {\n if (typeof window !== 'undefined') {\n if (!window.__COMPONENT_I18N_MESSAGES__) {\n window.__COMPONENT_I18N_MESSAGES__ = {};\n }\n window.__COMPONENT_I18N_MESSAGES__[locale] = messages;\n }\n};\n\nconst formatBytes = function (bytes) {\n let decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (bytes === 0 || !bytes || bytes < 0) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\nconst UsageItem = /*#__PURE__*/memo(_ref => {\n let {\n title,\n iconClass,\n children,\n memTotal\n } = _ref;\n const intl = useIntl();\n return /*#__PURE__*/jsx(Tooltip, {\n title: /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(\"div\", {\n children: title\n }), title === intl.formatMessage({\n id: 'usage.memory'\n }) && memTotal !== undefined && /*#__PURE__*/jsxs(\"div\", {\n children: [intl.formatMessage({\n id: 'usage.totalMemory'\n }), \": \", formatBytes(memTotal)]\n })]\n }),\n destroyOnHidden: false,\n children: /*#__PURE__*/jsxs(\"div\", {\n className: \"usage-item\",\n children: [/*#__PURE__*/jsx(\"i\", {\n className: \"seeder-iconfont \".concat(iconClass, \" text-xl\")\n }), /*#__PURE__*/jsx(\"span\", {\n className: \"usage-value\",\n children: children\n })]\n })\n });\n});\nvar UsageItem$1 = UsageItem;\n\nconst useHardwareWebSocket = socketUrl => {\n const [systemStatus, setSystemStatus] = useState();\n const handleMessage = useCallback(message => {\n try {\n if (message) {\n setSystemStatus(prev => _objectSpread2$1(_objectSpread2$1({}, prev), message));\n }\n } catch (error) {\n console.error('Message processing error:', error);\n }\n }, []);\n\n // ## 获取系统资源使用情况\n useWebSocket(socketUrl, {\n onMessage: event => {\n // 处理实时消息\n try {\n const parsedMessage = JSON.parse(event.data);\n handleMessage(parsedMessage);\n } catch (error) {\n console.error('Message parsing error:', error);\n console.debug('Raw message:', event.data);\n }\n }\n });\n\n // // 监听消息 latestMessage 只用于非实时需求\n // useEffect(() => {\n // if (!latestMessage?.data) return;\n\n // try {\n // const parsedMessage = JSON.parse(latestMessage.data);\n // handleMessage(parsedMessage);\n // } catch (error) {\n // console.error('Message parsing error:', error);\n // console.debug('Raw message:', latestMessage.data);\n // }\n // }, [latestMessage?.data, handleMessage]);\n\n return {\n ps_status: systemStatus\n };\n};\nvar useHardwareWebSocket$1 = useHardwareWebSocket;\n\nconst getMaxNicTemp = function (sensors) {\n let priorityFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\"i350bb\", \"r8169_0_8300:00\"];\n const temps = priorityFields.flatMap(field => {\n var _sensors$field;\n return (sensors === null || sensors === void 0 || (_sensors$field = sensors[field]) === null || _sensors$field === void 0 ? void 0 : _sensors$field.map(item => item.current)) || [];\n }).filter(temp => typeof temp === 'number');\n return temps.length ? Math.max(...temps) : null;\n};\n\n// 获取数组类型传感器最高温度(如内存、硬盘)\nconst getMaxSensorTemp = sensorData => {\n const temps = (sensorData || []).map(item => item.current).filter(temp => typeof temp === 'number');\n return temps.length ? Math.max(...temps) : null;\n};\nconst getDetail = function () {\n var _sensors_temperatures, _sensors_temperatures2, _mem$total, _mem$percent, _getMaxNicTemp, _gpu_stats$0$utilizat, _gpu_stats$, _gpu_stats$0$temperat, _gpu_stats$2;\n let status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n cpu_percent,\n mem,\n sensors_temperatures,\n gpu_stats\n } = status;\n return {\n cpu_usage: cpu_percent !== null && cpu_percent !== void 0 ? cpu_percent : null,\n cpu_temp: (_sensors_temperatures = sensors_temperatures === null || sensors_temperatures === void 0 || (_sensors_temperatures2 = sensors_temperatures.coretemp) === null || _sensors_temperatures2 === void 0 || (_sensors_temperatures2 = _sensors_temperatures2[0]) === null || _sensors_temperatures2 === void 0 ? void 0 : _sensors_temperatures2.current) !== null && _sensors_temperatures !== void 0 ? _sensors_temperatures : null,\n mem_total: (_mem$total = mem === null || mem === void 0 ? void 0 : mem.total) !== null && _mem$total !== void 0 ? _mem$total : null,\n mem_usage: (_mem$percent = mem === null || mem === void 0 ? void 0 : mem.percent) !== null && _mem$percent !== void 0 ? _mem$percent : null,\n mem_temp: getMaxSensorTemp(sensors_temperatures === null || sensors_temperatures === void 0 ? void 0 : sensors_temperatures.spd5118),\n nic_temp: (_getMaxNicTemp = getMaxNicTemp(sensors_temperatures)) !== null && _getMaxNicTemp !== void 0 ? _getMaxNicTemp : null,\n hd_temp: getMaxSensorTemp(sensors_temperatures === null || sensors_temperatures === void 0 ? void 0 : sensors_temperatures.nvme),\n gpu_usage: (_gpu_stats$0$utilizat = gpu_stats === null || gpu_stats === void 0 || (_gpu_stats$ = gpu_stats[0]) === null || _gpu_stats$ === void 0 ? void 0 : _gpu_stats$[\"utilization.gpu\"]) !== null && _gpu_stats$0$utilizat !== void 0 ? _gpu_stats$0$utilizat : null,\n gpu_temp: (_gpu_stats$0$temperat = gpu_stats === null || gpu_stats === void 0 || (_gpu_stats$2 = gpu_stats[0]) === null || _gpu_stats$2 === void 0 ? void 0 : _gpu_stats$2[\"temperature.gpu\"]) !== null && _gpu_stats$0$temperat !== void 0 ? _gpu_stats$0$temperat : null\n };\n};\n\n// 提取公共逻辑\nconst createMetricItem = (title, iconClass, value, unit) => {\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\n return {\n title,\n iconClass,\n valueString: \"\".concat(numValue).concat(unit),\n value: numValue\n };\n};\nconst getItems = (details, intl) => {\n const items = [];\n if (details.cpu_usage !== null && details.cpu_usage !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.cpu'\n }), 'seeder-icon-CPU', details.cpu_usage, '%'));\n }\n if (details.cpu_temp !== null && details.cpu_temp !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.cpuTemp'\n }), 'seeder-icon-CPUwendu', details.cpu_temp, '℃'));\n }\n if (details.mem_usage !== null && details.mem_usage !== undefined) {\n items.push(_objectSpread2$1(_objectSpread2$1({}, createMetricItem(intl.formatMessage({\n id: 'usage.memory'\n }), 'seeder-icon-shiyongshuai', details.mem_usage, '%')), {}, {\n memTotal: details.mem_total\n }));\n }\n if (details.mem_temp !== null && details.mem_temp !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.memTemp'\n }), 'seeder-icon-wendu', details.mem_temp, '℃'));\n }\n if (details.nic_temp !== null && details.nic_temp !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.nicTemp'\n }), 'seeder-icon-wuliwangka', details.nic_temp, '℃'));\n }\n if (details.hd_temp !== null && details.hd_temp !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.diskTemp'\n }), 'seeder-icon-yingpan', details.hd_temp, '℃'));\n }\n if (details.gpu_usage !== null && details.gpu_usage !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.gpu'\n }), 'seeder-icon-gpufuwu', details.gpu_usage, '%'));\n }\n if (details.gpu_temp !== null && details.gpu_temp !== undefined) {\n items.push(createMetricItem(intl.formatMessage({\n id: 'usage.gpuTemp'\n }), 'seeder-icon-CPUwendu', details.gpu_temp, '℃'));\n }\n return items;\n};\nconst useHardwareUsage = socketUrl => {\n const intl = useIntl();\n const {\n ps_status\n } = useHardwareWebSocket$1(socketUrl);\n return useMemo(() => {\n if (!ps_status || typeof ps_status !== 'object') return null;\n const statusItems = getItems(getDetail(ps_status), intl);\n return /*#__PURE__*/jsx(\"div\", {\n className: \"usage-container\",\n children: statusItems.map((item, index) => /*#__PURE__*/jsx(\"div\", {\n className: \"usage-item-wrapper\",\n children: /*#__PURE__*/jsx(UsageItem$1, {\n title: item.title,\n iconClass: item.iconClass,\n memTotal: item.memTotal,\n children: item.valueString\n })\n }, item.title))\n });\n }, [ps_status]);\n};\nvar useHardwareUsage$1 = useHardwareUsage;\n\nconst _excluded$4 = [\"width\", \"okText\", \"cancelText\", \"styles\"];\nconst StyledModal$2 = props => {\n const intl = useIntl();\n const {\n width = \"520px\",\n okText = \"button.apply\",\n cancelText = \"button.close\",\n styles: propStyles = {}\n } = props,\n restProps = _objectWithoutProperties$1(props, _excluded$4);\n\n // 处理国际化文本\n const okButtonText = typeof okText === 'string' && okText.includes('.') ? intl.formatMessage({\n id: okText\n }) : okText;\n const cancelButtonText = typeof cancelText === 'string' && cancelText.includes('.') ? intl.formatMessage({\n id: cancelText\n }) : cancelText;\n\n // 基础样式配置\n const baseStyles = {\n content: {\n padding: 0\n // background: \"#282828\"\n },\n header: {\n marginBottom: 0,\n padding: 0,\n paddingBlock: 16,\n paddingInlineStart: 24,\n background: \"#000000\"\n },\n body: {\n paddingBlock: 20,\n paddingInline: 24\n },\n footer: {\n marginTop: 0,\n padding: 0,\n paddingBlockEnd: 20,\n paddingInline: 24\n }\n };\n\n // 合并样式\n const styles = _objectSpread2$1(_objectSpread2$1({}, baseStyles), propStyles);\n return /*#__PURE__*/jsx(Modal, _objectSpread2$1({\n width: width,\n okText: okButtonText,\n cancelText: cancelButtonText,\n styles: styles\n }, restProps));\n};\nvar StyledModal$3 = StyledModal$2;\n\nconst AuthorizationModal = _ref => {\n let {\n onCancel,\n onOk,\n authData,\n title = 'license.title',\n okText,\n cancelText = 'license.button.ignore',\n width = 600\n } = _ref;\n const intl = useIntl();\n const {\n message\n } = App.useApp();\n const [code, setCode] = useState('');\n const {\n accredit_status: isActivated,\n message: statusMessage,\n bios_id: uuid,\n expires_time: expiresTime\n } = authData || {};\n\n // 服务端返回的状态文本映射到国际化 key\n const getStatusMessageKey = msg => {\n if (!msg) return 'license.status.unactivated';\n\n // 根据服务端返回的英文文本映射\n const statusMap = {\n 'Already activated': 'license.status.activated',\n 'Unactivated': 'license.status.unactivated',\n 'Expired': 'license.status.expired',\n 'Invalid': 'license.status.invalid'\n };\n return statusMap[msg] || 'license.status.unactivated';\n };\n const statusMessageKey = getStatusMessageKey(statusMessage);\n const handleOk = () => {\n const trimmedCode = code.trim();\n if (!trimmedCode) {\n message.error(intl.formatMessage({\n id: 'license.validation.keyRequired'\n }));\n return;\n }\n onOk(trimmedCode);\n };\n const statusAlert = isActivated ? /*#__PURE__*/jsx(Alert, {\n message: \"\".concat(intl.formatMessage({\n id: statusMessageKey\n }), \", \").concat(intl.formatMessage({\n id: 'license.status.expiresOn'\n }), \" \").concat(expiresTime),\n type: \"success\",\n showIcon: true\n }) : /*#__PURE__*/jsx(Alert, {\n message: intl.formatMessage({\n id: statusMessageKey\n }),\n type: \"warning\",\n showIcon: true\n });\n const defaultOkText = isActivated ? intl.formatMessage({\n id: 'license.button.reactivate'\n }) : intl.formatMessage({\n id: 'license.button.activate'\n });\n return /*#__PURE__*/jsx(StyledModal$3, {\n title: intl.formatMessage({\n id: title\n }),\n width: width,\n open: true,\n onCancel: onCancel,\n onOk: handleOk,\n okText: okText || defaultOkText,\n cancelText: intl.formatMessage({\n id: cancelText\n }),\n cancelButtonProps: {\n disabled: !isActivated\n },\n maskClosable: false,\n closable: false,\n children: /*#__PURE__*/jsxs(Form, {\n name: \"auth_form\",\n labelCol: {\n span: 6\n },\n wrapperCol: {\n span: 18\n },\n autoComplete: \"off\",\n children: [/*#__PURE__*/jsx(\"div\", {\n style: {\n marginBottom: 16\n },\n children: statusAlert\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'license.machineCode'\n }),\n required: true,\n children: /*#__PURE__*/jsx(Input, {\n value: uuid,\n readOnly: true\n })\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'license.key'\n }),\n required: true,\n children: /*#__PURE__*/jsx(Input.TextArea, {\n value: code,\n onChange: e => setCode(e.target.value),\n autoSize: {\n minRows: 6,\n maxRows: 6\n },\n placeholder: intl.formatMessage({\n id: 'license.placeholder.enterKey'\n })\n })\n })]\n })\n });\n};\nvar AuthorizationModal$1 = AuthorizationModal;\n\nconst DEFAULT_AUTH = {\n accredit_status: false,\n // 授权状态\n bios_id: '',\n // 主机 id\n message: 'license.status.unactivated',\n // 激活信息\n expires_time: '' // 授权到期时间\n};\nconst useAuth = options => {\n const intl = useIntl();\n const {\n fetchAuthInfo,\n authorize,\n defaultAuthData = DEFAULT_AUTH,\n autoShowModal = true\n } = options || {};\n const [messageApi, contextHolder] = message.useMessage();\n const [showModal, setShowModal] = useState(false); // 默认隐藏\n const [authData, setAuthData] = useState(defaultAuthData);\n const [isRegistered, setIsRegistered] = useState(false);\n const [loading, setLoading] = useState(false);\n const openModal = useCallback(() => setShowModal(true), []);\n const closeModal = useCallback(() => setShowModal(false), []);\n useEffect(() => {\n async function loadAuthInfo() {\n try {\n setLoading(true);\n const result = await fetchAuthInfo();\n if (result !== null && result !== void 0 && result.commands) {\n const commands = result.commands;\n setAuthData(commands);\n setIsRegistered(commands.accredit_status);\n if (autoShowModal) {\n commands.accredit_status ? closeModal() : openModal();\n }\n }\n } catch (error) {\n console.error('Failed to fetch auth info:', error);\n } finally {\n setLoading(false);\n }\n }\n loadAuthInfo();\n }, [fetchAuthInfo, autoShowModal, openModal, closeModal]);\n const auth = async code => {\n try {\n setLoading(true);\n const result = await authorize({\n type: \"accredit_command\",\n commands: {\n id: \"LICENSE\",\n license_data: code\n }\n });\n if (result !== null && result !== void 0 && result.commands) {\n const commands = result.commands;\n // type accredit_message\n if (commands !== null && commands !== void 0 && commands.accredit_status) {\n setIsRegistered(true);\n setAuthData(commands);\n closeModal();\n } else {\n // 处理错误消息的国际化\n const errorMsg = commands.ciphertext_status || 'license.error.authorizationFailed';\n const errorMessage = typeof errorMsg === 'string' && errorMsg.includes('.') ? intl.formatMessage({\n id: errorMsg\n }) : errorMsg;\n messageApi.error(errorMessage);\n }\n }\n } catch (error) {\n console.error('Authorization error:', error);\n } finally {\n setLoading(false);\n }\n };\n const modal = showModal && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(AuthorizationModal$1, {\n onOk: auth,\n onCancel: closeModal,\n authData: authData\n }), contextHolder]\n });\n return {\n AuthModal: modal,\n openAuthModal: openModal,\n closeAuthModal: closeModal,\n isRegistered,\n authData,\n loading\n };\n};\n\nconst useUpgrade = _ref => {\n let {\n menuItems = [],\n onMenuClick,\n downloadFiles,\n upgradeExecute,\n // 上传接口:(formData, config) => Promise<response>\n upgradeStatus,\n // 状态轮询接口:(config) => Promise<response>\n acceptFileTypes = \"application/octet-stream\",\n uploadCompleteDelay = 3000,\n statusPollingInterval = 1000\n } = _ref;\n const intl = useIntl();\n const [isSpinning, setIsSpinning] = useState(false);\n const [pollingInterval, setPollingInterval] = useState(undefined); // 间隔时间,当设置值为 undefined 时会停止计时器\n const [currentStatus, setCurrentStatus] = useState(intl.formatMessage({\n id: 'upgrade.status.idle'\n })); // 'idle' | 'uploading' | 'Upload complete, starting upgrade...' | 'upgrading'\n const [uploadProgress, setUploadProgress] = useState(0);\n const inputRef = useRef(null);\n // 控制并发上传\n const isUploadingRef = useRef(false);\n // 标记组件是否已卸载\n const isMountedRef = useRef(true);\n\n // 分别创建独立的取消令牌\n const uploadCancelToken = useRef(axios.CancelToken.source());\n const statusCancelToken = useRef(axios.CancelToken.source());\n const showLoader = () => setIsSpinning(true);\n const hideLoader = () => setIsSpinning(false);\n\n // 构建菜单项 - 确保至少包含download和upload\n // 构建菜单项 - 最终完美版本\n const finalMenuItems = useMemo(() => {\n const hasDownload = menuItems.some(item => item.key === 'download');\n const hasUpload = menuItems.some(item => item.key === 'upload');\n if (hasDownload && hasUpload) {\n return menuItems;\n }\n const licenseIndex = menuItems.findIndex(item => item.key === 'license');\n\n // 如果没有 license,在末尾添加\n if (licenseIndex === -1) {\n const itemsToAdd = [];\n if (menuItems.length > 0) itemsToAdd.push({\n type: 'divider'\n });\n // if (!hasDownload) itemsToAdd.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\n if (!hasUpload) itemsToAdd.push({\n key: \"upload\",\n label: intl.formatMessage({\n id: 'upgrade.menu.softwareUpdate'\n })\n });\n return [...menuItems, ...itemsToAdd];\n }\n\n // 有 license,在 license 前面插入\n const beforeLicense = menuItems.slice(0, licenseIndex);\n const licenseItem = menuItems[licenseIndex];\n const afterLicense = menuItems.slice(licenseIndex + 1);\n const itemsToInsert = [];\n\n // 1. 前面的分隔符(如果 beforeLicense 不为空且最后一项不是分隔符)\n if (beforeLicense.length > 0 && beforeLicense[beforeLicense.length - 1].type !== 'divider') {\n itemsToInsert.push({\n type: 'divider'\n });\n }\n\n // 2. 添加缺少的项\n // if (!hasDownload) itemsToInsert.push({ key: \"download\", label: intl.formatMessage({ id: 'upgrade.menu.download' }) });\n if (!hasUpload) itemsToInsert.push({\n key: \"upload\",\n label: intl.formatMessage({\n id: 'upgrade.menu.softwareUpdate'\n })\n });\n\n // 3. 后面的分隔符(与 license 之间)\n itemsToInsert.push({\n type: 'divider'\n });\n return [...beforeLicense, ...itemsToInsert, licenseItem, ...afterLicense];\n }, [menuItems, intl]);\n const handleMenuClick = _ref2 => {\n let {\n key\n } = _ref2;\n switch (key) {\n case 'download':\n onDownload();\n return;\n case 'upload':\n onUpload();\n return;\n default:\n // 其他菜单项交给外部回调处理\n if (onMenuClick) {\n onMenuClick(key);\n } else {\n console.warn(\"Unknown menu key: \".concat(key, \" and no onMenuClick provided\"));\n }\n }\n };\n const onDownload = async () => {\n if (!downloadFiles) {\n console.error('downloadFiles function is required for download operation');\n message.error(intl.formatMessage({\n id: 'upgrade.error.downloadNotConfigured'\n }));\n return;\n }\n try {\n const res = await downloadFiles();\n if (res.status !== 200) {\n throw new Error(\"Unexpected status code: \".concat(res.status));\n }\n\n // 默认值,兼容接口响应头没有定义文件名\n let fileName = 'config.tar.gz';\n const contentDisposition = res.headers['content-disposition'] || '';\n\n // 获取接口响应的content-disposition字段值,以便获取到文件名\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/i);\n if (filenameMatch !== null && filenameMatch !== void 0 && filenameMatch[1]) {\n fileName = decodeURIComponent(filenameMatch[1]); // 处理编码后的文件名(如 %20 转空格)\n }\n }\n\n // 创建并下载文件\n const blob = new Blob([res.data], {\n type: 'application/octet-stream'\n });\n const url = window.URL.createObjectURL(blob);\n\n // 下面就是创建一个 a 标签并触发 click 事件,来下载该文件\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = url;\n link.target = '_blank';\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n\n // 最后移除 a 标签并删除创建的 ObjectURL 对象,防止内存泄漏\n link.parentNode.removeChild(link);\n window.URL.revokeObjectURL(url);\n } catch (error) {\n console.error('Download failed:', error);\n message.error(intl.formatMessage({\n id: 'upgrade.error.downloadFailed'\n }));\n }\n };\n const onUpload = () => {\n if (inputRef !== null && inputRef !== void 0 && inputRef.current && !isUploadingRef.current) {\n inputRef.current.click();\n }\n };\n const updatePackage = async event => {\n var _event$target$files;\n if (isUploadingRef.current) return; // 防止重复上传\n\n const file = (_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0];\n if (!file || !upgradeExecute) {\n if (inputRef.current) inputRef.current.value = \"\";\n return;\n }\n isUploadingRef.current = true;\n showLoader();\n setCurrentStatus(intl.formatMessage({\n id: 'upgrade.status.uploading'\n }));\n setUploadProgress(0);\n\n // 重置取消令牌\n uploadCancelToken.current.cancel();\n uploadCancelToken.current = axios.CancelToken.source();\n try {\n const formData = new FormData();\n formData.append('file', file);\n\n // 清除文件选择\n if (inputRef.current) inputRef.current.value = \"\";\n\n // 上传后立即检查业务状态码\n // upgradeExecute 使用 umi request 返回的数据是过滤过的\n const response = await upgradeExecute(formData, {\n onUploadProgress: progressEvent => {\n if (!isMountedRef.current) return;\n const percentCompleted = Math.round(progressEvent.loaded * 100 / progressEvent.total);\n setUploadProgress(percentCompleted); // 更新进度状态\n },\n cancelToken: uploadCancelToken.current.token\n });\n\n // 检查业务 code\n if ((response === null || response === void 0 ? void 0 : response.code) !== 200) {\n // 即使上传成功,但如果服务器返回非 200,说明有问题\n if (isMountedRef.current) {\n const errorMsg = (response === null || response === void 0 ? void 0 : response.message) || intl.formatMessage({\n id: 'upgrade.error.invalidFileFormat'\n });\n message.error(errorMsg);\n cancelRequest();\n }\n return;\n }\n\n // 上传成功,进入等待升级阶段\n if (!isMountedRef.current) return;\n setCurrentStatus(intl.formatMessage({\n id: 'upgrade.status.uploadComplete'\n }));\n\n // 延迟后启动轮询\n setTimeout(() => {\n if (!isMountedRef.current) return;\n setPollingInterval(statusPollingInterval);\n setCurrentStatus(intl.formatMessage({\n id: 'upgrade.status.upgrading'\n }));\n }, uploadCompleteDelay);\n } catch (error) {\n if (!isMountedRef.current) return;\n if (!axios.isCancel(error)) {\n console.error(\"Upload error:\", error);\n message.error(intl.formatMessage({\n id: 'upgrade.error.uploadFailed'\n }));\n }\n cancelRequest();\n } finally {\n if (isMountedRef.current) {\n isUploadingRef.current = false;\n }\n }\n };\n const fetchUpgradeStatus = async () => {\n if (!upgradeStatus || !isMountedRef.current) return;\n try {\n // upgradeStatus 使用 axios request 返回的数据没有过滤\n const response = await upgradeStatus({\n cancelToken: statusCancelToken.current.token\n });\n if ((response === null || response === void 0 ? void 0 : response.status) === 200) {\n const {\n code,\n message: statusMessage\n } = response.data;\n\n // 状态处理\n switch (code) {\n case 200:\n // 升级成功\n message.success(statusMessage, 2.5, () => {\n if (isMountedRef.current) {\n cancelRequest();\n }\n window.location.reload();\n });\n break;\n case 201:\n // 升级中 — 继续轮询\n break;\n case 202: // 升级失败\n case 203:\n // 升级异常\n if (isMountedRef.current) {\n message.error(statusMessage);\n cancelRequest();\n }\n break;\n default:\n // 其他 code 如 500、400 等\n if (isMountedRef.current) {\n message.error(statusMessage || intl.formatMessage({\n id: 'upgrade.error.upgradeFailed'\n }));\n cancelRequest();\n }\n break;\n }\n }\n } catch (error) {\n if (!isMountedRef.current) return;\n if (!axios.isCancel(error)) {\n console.error('Status check failed:', error);\n }\n }\n };\n const cancelRequest = () => {\n // 取消状态轮询\n uploadCancelToken.current.cancel('Operation canceled');\n statusCancelToken.current.cancel('Operation canceled');\n uploadCancelToken.current = axios.CancelToken.source();\n statusCancelToken.current = axios.CancelToken.source();\n\n // 重置所有状态\n setPollingInterval(undefined);\n setCurrentStatus('idle');\n setUploadProgress(0);\n isUploadingRef.current = false;\n hideLoader();\n };\n\n // 轮询状态\n useInterval(fetchUpgradeStatus, pollingInterval);\n\n // 组件卸载时清理\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n uploadCancelToken.current.cancel();\n statusCancelToken.current.cancel();\n };\n }, []);\n const upgradeElement = /*#__PURE__*/jsxs(\"div\", {\n children: [/*#__PURE__*/jsx(Dropdown, {\n menu: {\n items: finalMenuItems,\n onClick: handleMenuClick\n },\n trigger: [\"hover\"],\n children: /*#__PURE__*/jsx(\"a\", {\n onClick: e => e.preventDefault(),\n children: /*#__PURE__*/jsx(\"i\", {\n className: \"seeder-iconfont seeder-icon-liebiao2 text-xl text-neutral-400\"\n })\n })\n }), /*#__PURE__*/jsx(\"input\", {\n ref: inputRef,\n type: \"file\",\n onChange: updatePackage,\n className: \"hidden\",\n accept: acceptFileTypes\n }), /*#__PURE__*/jsx(Spin, {\n spinning: isSpinning,\n indicator: /*#__PURE__*/jsx(LoadingOutlined, {\n style: {\n fontSize: 60\n },\n spin: true\n }),\n tip: currentStatus === intl.formatMessage({\n id: 'upgrade.status.uploading'\n }) ? \"\".concat(currentStatus, \" \").concat(uploadProgress, \"%\") : currentStatus,\n size: \"large\",\n fullscreen: true\n })]\n });\n return [upgradeElement];\n};\nvar useUpgrade$1 = useUpgrade;\n\nconst useSystemOperations = function () {\n let {\n onPowerOff,\n onRestart,\n confirmTitle = \"system.confirm.title\",\n cancelText = \"system.button.cancel\",\n okText = \"system.button.confirm\",\n run\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const intl = useIntl();\n const {\n modal: AntdModal\n } = App.useApp();\n\n // 处理国际化文本\n const confirmTitleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') ? intl.formatMessage({\n id: confirmTitle\n }) : confirmTitle;\n const cancelTextValue = typeof cancelText === 'string' && cancelText.includes('.') ? intl.formatMessage({\n id: cancelText\n }) : cancelText;\n const okTextValue = typeof okText === 'string' && okText.includes('.') ? intl.formatMessage({\n id: okText\n }) : okText;\n const doAction = useCallback(action => {\n try {\n AntdModal.confirm({\n icon: /*#__PURE__*/jsx(ExclamationCircleFilled, {}),\n title: \"\".concat(confirmTitleText, \" \").concat(action === 'poweroff' ? intl.formatMessage({\n id: 'system.action.powerOff'\n }) : intl.formatMessage({\n id: 'system.action.restart'\n }), \"?\"),\n cancelText: cancelTextValue,\n okText: okTextValue,\n onOk: () => {\n if (action === 'poweroff' && onPowerOff) {\n onPowerOff();\n } else if (action === 'restart' && onRestart) {\n onRestart();\n }\n\n // Call the run callback after successful operation\n if (typeof run === 'function') {\n run();\n }\n }\n });\n } catch (error) {\n console.error(\"\".concat(action.toUpperCase(), \" ERROR: \"), error);\n }\n }, [AntdModal, confirmTitleText, cancelTextValue, okTextValue, onPowerOff, onRestart, intl]);\n const getMenuItems = useCallback(() => [{\n key: \"poweroff\",\n label: intl.formatMessage({\n id: 'system.poweroff'\n })\n }, {\n key: \"restart\",\n label: intl.formatMessage({\n id: 'system.restart'\n })\n }], [intl]);\n const handleMenuClick = useCallback(_ref => {\n let {\n key\n } = _ref;\n doAction(key);\n }, [doAction]);\n return {\n menuItems: getMenuItems(),\n handleMenuClick\n };\n};\nvar useSystemOperations$1 = useSystemOperations;\n\nconst usePageReload = () => {\n const [reloading, setReloading] = useState(false);\n const startReload = useCallback(function () {\n let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 800;\n if (reloading) return; // 防止重复触发\n\n // 显示遮罩\n setReloading(true);\n\n // 设置背景色\n document.body.style.backgroundColor = '#282828';\n document.body.style.transition = 'background-color 0.1s';\n document.body.offsetHeight;\n\n // 延迟刷新\n const timer = setTimeout(() => {\n window.location.reload();\n }, delay);\n\n // 清理函数(防止内存泄漏)\n return () => clearTimeout(timer);\n }, [reloading]);\n const ReloadOverlay = () => {\n if (!reloading) return null;\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: '#282828',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 999999,\n color: 'white'\n },\n children: [/*#__PURE__*/jsx(Spin, {\n size: \"large\"\n }), /*#__PURE__*/jsx(\"div\", {\n style: {\n marginTop: 20,\n fontSize: 16\n },\n children: \"Loading preset configuration...\"\n }), /*#__PURE__*/jsx(\"div\", {\n style: {\n marginTop: 10,\n fontSize: 12,\n color: '#aaa'\n },\n children: \"Page will refresh shortly\"\n })]\n });\n };\n return {\n startReload,\n ReloadOverlay\n };\n};\nvar usePageReload$1 = usePageReload;\n\nconst getReadyStateText = state => {\n const states = {\n 0: 'CONNECTING',\n 1: 'OPEN',\n 2: 'CLOSING',\n 3: 'CLOSED'\n };\n return states[state] || \"UNKNOWN(\".concat(state, \")\");\n};\n\n// 创建空日志器\nconst createDummyLogger = () => {\n const dummyFn = () => {};\n return {\n log: dummyFn,\n exportLogs: dummyFn,\n getLogStats: () => ({\n total: 0,\n errors: 0,\n warnings: 0,\n info: 0,\n lastTimestamp: null\n }),\n clearLogs: dummyFn,\n logs: []\n };\n};\n\n// 创建通用的日志器\nconst createGlobalLogger = function () {\n let webSocketUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n const logs = [];\n const maxLogs = 1000;\n\n // 判断是否为开发环境\n const isDevelopment = process.env.NODE_ENV === 'development';\n const log = function (level, message) {\n let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const timestamp = new Date().toISOString();\n const logEntry = {\n timestamp,\n level,\n message,\n data,\n timestampDisplay: new Date().toLocaleString('zh-CN', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false\n })\n };\n logs.push(logEntry);\n if (logs.length > maxLogs) logs.shift();\n\n // 只在开发环境下输出到控制台\n if (isDevelopment) {\n const consoleMessage = \"[\".concat(logEntry.timestampDisplay, \"] [WebSocket] [\").concat(level, \"] \").concat(message);\n const consoleArgs = [consoleMessage];\n if (Object.keys(data).length > 0) consoleArgs.push(data);\n switch (level) {\n case 'ERROR':\n console.error(...consoleArgs);\n break;\n case 'WARN':\n console.warn(...consoleArgs);\n break;\n case 'INFO':\n console.info(...consoleArgs);\n break;\n default:\n console.log(...consoleArgs);\n }\n }\n return logEntry;\n };\n const exportLogs = function () {\n let filenamePrefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'websocket';\n if (logs.length === 0) {\n log('WARN', '没有日志可导出', {\n filenamePrefix\n });\n return;\n }\n const logText = logs.map(entry => \"[\".concat(entry.timestampDisplay, \"] [\").concat(entry.level, \"] \").concat(entry.message, \"\\n\\u6570\\u636E: \").concat(JSON.stringify(entry.data, null, 2))).join('\\n' + '='.repeat(50) + '\\n');\n const blob = new Blob([logText], {\n type: 'text/plain;charset=utf-8'\n });\n const blobUrl = URL.createObjectURL(blob);\n let hostname = 'unknown';\n let pathname = 'unknown';\n try {\n if (webSocketUrl) {\n const urlObj = new URL(webSocketUrl.replace(/^ws/, 'http'));\n hostname = urlObj.hostname.replace(/\\./g, '-');\n pathname = urlObj.pathname.replace(/\\//g, '-').replace(/^-|-$/g, '') || 'root';\n }\n } catch (error) {\n console.warn('无法解析WebSocket URL:', error);\n }\n const readableTime = new Date().toLocaleString('zh-CN', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false\n }).replace(/[\\/:\\s]/g, '-');\n const filename = \"\".concat(filenamePrefix, \"-\").concat(hostname, \"-\").concat(pathname, \"-\").concat(readableTime, \".log\");\n const a = document.createElement('a');\n a.href = blobUrl;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(blobUrl);\n log('INFO', '日志文件已导出', {\n count: logs.length,\n filename\n });\n };\n const getLogStats = () => {\n var _logs;\n return {\n total: logs.length,\n errors: logs.filter(l => l.level === 'ERROR').length,\n warnings: logs.filter(l => l.level === 'WARN').length,\n info: logs.filter(l => l.level === 'INFO').length,\n lastTimestamp: (_logs = logs[logs.length - 1]) === null || _logs === void 0 ? void 0 : _logs.timestampDisplay\n };\n };\n const clearLogs = () => {\n logs.length = 0;\n log('INFO', '日志已清空');\n };\n return {\n log,\n exportLogs,\n getLogStats,\n clearLogs,\n logs\n };\n};\n\n// 心跳管理器\nconst useHeartbeat = function (sendMessage, readyState, config, logger) {\n let enabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n const heartbeatTimerRef = useRef(null);\n const lastHeartbeatTimeRef = useRef(Date.now());\n const isMountedRef = useRef(true);\n const configRef = useRef({\n interval: (config === null || config === void 0 ? void 0 : config.interval) || 20000,\n message: (config === null || config === void 0 ? void 0 : config.message) || {\n type: 'ping'\n }\n });\n const stateRef = useRef({\n sendMessage,\n readyState,\n enabled\n });\n useEffect(() => {\n configRef.current = {\n interval: (config === null || config === void 0 ? void 0 : config.interval) || 20000,\n message: (config === null || config === void 0 ? void 0 : config.message) || {\n type: 'ping'\n }\n };\n }, [config === null || config === void 0 ? void 0 : config.interval, config === null || config === void 0 ? void 0 : config.message]);\n useEffect(() => {\n stateRef.current = {\n sendMessage,\n readyState,\n enabled\n };\n }, [sendMessage, readyState, enabled]);\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n if (heartbeatTimerRef.current) {\n clearInterval(heartbeatTimerRef.current);\n }\n };\n }, []);\n const stopHeartbeat = useCallback(() => {\n if (heartbeatTimerRef.current) {\n clearInterval(heartbeatTimerRef.current);\n heartbeatTimerRef.current = null;\n if (stateRef.current.enabled) {\n logger.log('INFO', '停止心跳机制');\n }\n }\n }, [logger]);\n const startHeartbeat = useCallback(() => {\n stopHeartbeat();\n const currentState = stateRef.current;\n const currentConfig = configRef.current;\n if (!currentState.enabled) return;\n logger.log('INFO', '启动心跳机制', {\n interval: currentConfig.interval\n });\n heartbeatTimerRef.current = setInterval(() => {\n // 检查组件是否挂载\n if (!isMountedRef.current || !heartbeatTimerRef.current) {\n return;\n }\n\n // 目的: 总是获取最新的值\n const latestState = stateRef.current;\n const latestConfig = configRef.current;\n if (latestState.sendMessage && latestState.readyState === 1) {\n try {\n latestState.sendMessage(JSON.stringify(latestConfig.message));\n lastHeartbeatTimeRef.current = Date.now();\n logger.log('DEBUG', '发送心跳包', {\n timeSinceLastHeartbeat: Date.now() - lastHeartbeatTimeRef.current,\n readyState: getReadyStateText(latestState.readyState)\n });\n } catch (error) {\n logger.log('ERROR', '发送心跳失败', {\n error: error.message,\n readyState: getReadyStateText(latestState.readyState)\n });\n }\n }\n }, currentConfig.interval);\n }, [stopHeartbeat, logger]);\n\n // 自动管理心跳\n useEffect(() => {\n const currentState = stateRef.current;\n if (currentState.enabled) {\n if (currentState.readyState === 1) {\n startHeartbeat();\n } else {\n stopHeartbeat();\n }\n } else {\n stopHeartbeat();\n }\n return () => {\n if (heartbeatTimerRef.current) {\n clearInterval(heartbeatTimerRef.current);\n heartbeatTimerRef.current = null;\n }\n };\n }, [readyState, enabled, startHeartbeat, stopHeartbeat]);\n const heartbeatImpl = useMemo(() => {\n if (!enabled) {\n return {\n startHeartbeat: () => {},\n stopHeartbeat: () => {},\n getLastHeartbeatTime: () => null,\n isEnabled: false\n };\n }\n return {\n startHeartbeat,\n stopHeartbeat,\n getLastHeartbeatTime: () => lastHeartbeatTimeRef.current,\n isEnabled: true\n };\n }, [enabled, startHeartbeat, stopHeartbeat]);\n return heartbeatImpl;\n};\nconst useWebSocketWithFeatures = config => {\n const {\n url,\n options = {},\n heartbeat: heartbeatConfig = false,\n enableLog = true\n } = config;\n const [isConnected, setIsConnected] = useState(false);\n\n // 创建 logger 实例\n const logger = useMemo(() => {\n if (enableLog) {\n return createGlobalLogger(url);\n }\n return createDummyLogger();\n }, [url, enableLog]);\n const websocketOptions = useMemo(() => _objectSpread2$1(_objectSpread2$1({}, options), {}, {\n onOpen: event => {\n var _options$onOpen;\n logger.log('INFO', 'WebSocket 连接成功', {\n url,\n readyState: getReadyStateText(1),\n // 连接成功时 readyState 为 1\n eventCode: event === null || event === void 0 ? void 0 : event.code\n });\n setIsConnected(true);\n (_options$onOpen = options.onOpen) === null || _options$onOpen === void 0 || _options$onOpen.call(options, event);\n },\n onError: error => {\n var _options$onError;\n logger.log('ERROR', 'WebSocket 连接错误', {\n url,\n error: error.message,\n errorType: error.type,\n readyState: getReadyStateText(3) // 错误时 readyState 为 3\n });\n setIsConnected(false);\n (_options$onError = options.onError) === null || _options$onError === void 0 || _options$onError.call(options, error);\n },\n onClose: event => {\n var _options$onClose;\n logger.log('WARN', 'WebSocket 连接断开', {\n url,\n code: event.code,\n reason: event.reason,\n wasClean: event.wasClean,\n readyState: getReadyStateText(3) // 关闭时 readyState 为 3\n });\n setIsConnected(false);\n (_options$onClose = options.onClose) === null || _options$onClose === void 0 || _options$onClose.call(options, event);\n },\n onReconnect: count => {\n var _options$onReconnect;\n logger.log('INFO', '尝试重新连接', {\n url,\n attempt: count,\n maxAttempts: options.reconnectLimit || 10\n });\n (_options$onReconnect = options.onReconnect) === null || _options$onReconnect === void 0 || _options$onReconnect.call(options, count);\n }\n }), [url, options, logger]);\n const {\n latestMessage,\n readyState,\n sendMessage,\n connect,\n disconnect\n } = useWebSocket(url, websocketOptions);\n const heartbeatOptions = useMemo(() => heartbeatConfig === true ? {} : heartbeatConfig, [heartbeatConfig]);\n const heartbeatEnabled = useMemo(() => heartbeatConfig !== false, [heartbeatConfig]);\n const heartbeat = useHeartbeat(sendMessage, readyState, heartbeatOptions, logger, heartbeatEnabled);\n\n // 在全局暴露日志方法\n useEffect(() => {\n if (typeof window !== 'undefined' && enableLog) {\n // 生成唯一的键名:基于URL进行base64编码\n const key = \"exportWebSocketLogs_\".concat(btoa(url));\n // 在window对象上添加方法\n window[key] = () => logger.exportLogs();\n }\n return () => {\n if (typeof window !== 'undefined' && enableLog) {\n const key = \"exportWebSocketLogs_\".concat(btoa(url));\n delete window[key];\n }\n };\n }, [url, enableLog, logger]);\n const loggerMethods = useMemo(() => ({\n log: (level, message, data) => logger.log(level, message, data),\n exportLogs: () => logger.exportLogs(),\n getLogStats: () => logger.getLogStats(),\n clearLogs: () => logger.clearLogs()\n }), [logger]);\n return {\n latestMessage,\n readyState,\n sendMessage,\n connect,\n disconnect,\n isConnected,\n readyStateText: getReadyStateText(readyState),\n // 心跳功能\n heartbeat,\n // 日志功能\n logger: enableLog ? loggerMethods : null\n };\n};\nvar useWebSocketWithFeatures$1 = useWebSocketWithFeatures;\n\n// 在控制台中直接查看所有可用的导出方法 Object.keys(window).filter(key => key.startsWith('exportWebSocketLogs_'))\n// 导出特定连接的日志 window['exportWebSocketLogs_d3M6Ly8xOTIuMTY4LjEyMy4yMDQvd3MvZHZyL3ZpZGVvX3N0YXR1c19jaGFuZ2U=']();\n\n// seeder-st2110-components 组件库中文语言包\nvar zhCN = {\n // 通用按钮\n 'button.close': '关闭',\n 'button.apply': '应用',\n 'button.cancel': '取消',\n 'button.delete': '删除',\n // 输入框占位符\n 'input.placeholder.enterInteger': '请输入整数',\n 'input.placeholder.enterPort': '请输入端口 (0-65535)',\n 'input.placeholder.enterPayload': '请输入负载 (96-127)',\n // 使用率显示\n 'usage.memory': '内存使用率',\n 'usage.totalMemory': '内存总量',\n 'usage.cpu': 'CPU 使用率',\n 'usage.disk': '磁盘使用率',\n 'usage.cpuTemp': 'CPU 温度',\n 'usage.memTemp': '内存温度',\n 'usage.nicTemp': '网卡温度',\n 'usage.diskTemp': '硬盘温度',\n 'usage.gpu': 'GPU 使用率',\n 'usage.gpuTemp': 'GPU 温度',\n // 菜单\n 'menu.networkSettings': '网络设置',\n 'menu.ptp': 'PTP',\n 'menu.nmos': 'NMOS',\n 'menu.preset': '预设',\n 'menu.license': '许可证',\n 'menu.maintenance': '维护',\n 'menu.system': '系统',\n // Network Settings Modal\n 'networkSettings.title': '网络设置',\n 'networkSettings.name': '名称',\n 'networkSettings.ipAddress': 'IP 地址',\n 'networkSettings.subnetMask': '子网掩码',\n 'networkSettings.restartRequired': '需要重启才能应用更改。是否立即重启?',\n 'networkSettings.restartNow': '立即重启',\n 'networkSettings.restartLater': '稍后重启',\n 'networkSettings.saveSuccess': '保存成功',\n // PTP Modal\n 'ptp.title': 'PTP',\n 'ptp.domainNumber': '域编号',\n 'ptp.priority1': '优先级 1',\n 'ptp.priority2': '优先级 2',\n 'ptp.grandmasterIdentity': '主时钟 ID',\n 'ptp.portIdentity': '端口标识',\n 'ptp.clockClass': '时钟等级',\n 'ptp.clockClass.atomic': '原子钟 ({value})',\n 'ptp.clockClass.gps': 'GPS ({value})',\n 'ptp.clockClass.slaveOnly': '仅从时钟 ({value})',\n 'ptp.clockAccuracy': '时钟精度',\n 'ptp.offsetScaledLogVariance': '时钟偏移方差',\n 'ptp.utcOffset': 'UTC 偏移',\n 'ptp.connectedStatus': '连接状态',\n 'ptp.lockedStatus': '锁定状态',\n 'ptp.connected': '已连接',\n 'ptp.disconnected': '未连接',\n 'ptp.locked': '已锁定',\n 'ptp.unlocked': '未锁定',\n 'ptp.saveSuccess': '保存成功',\n 'ptp.unknown': '未知',\n // NMOS Modal\n 'nmos.title': 'NMOS',\n 'nmos.hostAddress': '主机地址',\n 'nmos.domain': '域名',\n 'nmos.registryAddress': '注册中心地址',\n 'nmos.registrationPort': '注册中心端口',\n 'nmos.registryVersion': '注册中心版本',\n 'nmos.loggingLevel': '日志级别',\n 'nmos.placeholder.selectHostAddress': '选择主机地址',\n 'nmos.placeholder.selectVersion': '选择版本',\n 'nmos.saveSuccess': '保存成功',\n // Preset Modal\n 'preset.title': '预设管理',\n 'preset.name': '名称',\n 'preset.categories': '分类',\n 'preset.description': '描述',\n 'preset.placeholder.enterName': '请输入名称',\n 'preset.placeholder.enterDescription': '请输入描述',\n 'preset.header.name': '名称',\n 'preset.header.createTime': '创建时间',\n 'preset.header.description': '描述',\n 'preset.button.new': '新建预设',\n 'preset.button.delete': '删除',\n 'preset.button.load': '加载',\n 'preset.button.save': '保存',\n 'preset.button.edit': '编辑',\n 'preset.button.cancel': '取消',\n 'preset.button.import': '导入',\n 'preset.button.export': '导出',\n 'preset.empty.noData': '从列表中选择一个预设查看详情',\n 'preset.unsaved.detected': '检测到未保存的预设',\n 'preset.empty.create': '创建新预设',\n 'preset.untitled': '未命名',\n 'preset.delete.title': '删除预设',\n 'preset.delete.confirmMessage': '确定要删除预设',\n 'preset.load.title': '加载预设',\n 'preset.load.confirmMessage': '确定要加载预设',\n 'preset.load.loading': '加载中...',\n 'preset.success': '成功',\n 'preset.validation.nameRequired': '名称是必填项',\n 'preset.validation.categoryRequired': '请选择分类',\n 'preset.error.noSelectionOrIdMissing': '未选择预设或预设 ID 缺失',\n 'preset.import.invalidFile': '请选择 .preset 格式的文件',\n // License/Auth Modal\n 'license.title': '注册许可证',\n 'license.machineCode': '机器码',\n 'license.key': '许可证密钥',\n 'license.placeholder.enterKey': '请输入许可证密钥',\n 'license.button.activate': '立即激活',\n 'license.button.reactivate': '重新激活',\n 'license.button.ignore': '忽略',\n 'license.status.unactivated': '未激活',\n 'license.status.activated': '已激活',\n 'license.status.expired': '已过期',\n 'license.status.invalid': '无效',\n 'license.status.expiresOn': '到期时间',\n 'license.validation.keyRequired': '许可证密钥不能为空',\n 'license.error.authorizationFailed': '授权失败',\n // 升级相关\n 'upgrade.menu.download': '导出配置',\n 'upgrade.menu.softwareUpdate': '软件升级',\n 'upgrade.status.idle': '空闲',\n 'upgrade.status.uploading': '上传中',\n 'upgrade.status.uploadComplete': '上传完成,开始升级...',\n 'upgrade.status.upgrading': '升级中...',\n 'upgrade.error.downloadNotConfigured': '下载功能未配置',\n 'upgrade.error.downloadFailed': '下载失败',\n 'upgrade.error.uploadFailed': '上传失败',\n 'upgrade.error.invalidFileFormat': '上传失败:文件格式无效',\n 'upgrade.error.upgradeFailed': '升级失败',\n // 系统操作\n 'system.poweroff': '关机',\n 'system.restart': '重启',\n 'system.action.powerOff': '关闭',\n 'system.action.restart': '重启',\n 'system.confirm.title': '确认操作',\n 'system.confirm.message': '确定要{action}系统吗?此操作无法撤销。',\n 'system.button.cancel': '取消',\n 'system.button.confirm': '确认',\n // Maintenance page\n 'maintenance.restarting': '系统正在重启...',\n 'maintenance.poweredOff': '系统已关闭',\n 'maintenance.waiting': '请等待系统启动...',\n 'maintenance.redirecting.countdown': '将在 {countdown} 秒后自动跳转',\n 'maintenance.waiting.long': '系统仍在启动中,这可能需要一些时间...',\n 'maintenance.retry': '重试连接',\n 'maintenance.offline.description': '系统当前处于离线状态,请联系管理员开启设备。',\n // LSM Label\n 'lsm.label': '标签',\n 'lsm.placeholder.select': '请选择标签'\n};\n\n// seeder-st2110-components component library English language pack\nvar enUS = {\n // General buttons\n 'button.close': 'Close',\n 'button.apply': 'Apply',\n 'button.cancel': 'Cancel',\n 'button.delete': 'Delete',\n // Input placeholders\n 'input.placeholder.enterInteger': 'Enter an integer',\n 'input.placeholder.enterPort': ' Enter port (0-65535)',\n 'input.placeholder.enterPayload': 'Enter payload (96-127)',\n // Usage display\n 'usage.memory': 'Memory Usage',\n 'usage.totalMemory': 'Total Memory',\n 'usage.cpu': 'CPU Usage',\n 'usage.disk': 'Disk Usage',\n 'usage.cpuTemp': 'CPU Temperature',\n 'usage.memTemp': 'Memory Temperature',\n 'usage.nicTemp': 'NIC Temperature',\n 'usage.diskTemp': 'Disk Temperature',\n 'usage.gpu': 'GPU Usage',\n 'usage.gpuTemp': 'GPU Temperature',\n // Menu\n 'menu.networkSettings': 'Network Settings',\n 'menu.ptp': 'PTP',\n 'menu.nmos': 'NMOS',\n 'menu.preset': 'Preset',\n 'menu.license': 'License',\n 'menu.maintenance': 'Maintenance',\n 'menu.system': 'System',\n // Network Settings Modal\n 'networkSettings.title': 'Network Settings',\n 'networkSettings.name': 'Name',\n 'networkSettings.ipAddress': 'IP Address',\n 'networkSettings.subnetMask': 'Netmask',\n 'networkSettings.restartRequired': 'Restart is required to apply the changes. Do you want to restart now?',\n 'networkSettings.restartNow': 'Restart Now',\n 'networkSettings.restartLater': 'Restart Later',\n 'networkSettings.saveSuccess': 'Success',\n // PTP Modal\n 'ptp.title': 'PTP',\n 'ptp.domainNumber': 'Domain',\n 'ptp.priority1': 'Priority 1',\n 'ptp.priority2': 'Priority 2',\n 'ptp.grandmasterIdentity': 'Grandmaster Identity',\n 'ptp.portIdentity': 'Port Identity',\n 'ptp.clockClass': 'Clock Class',\n 'ptp.clockClass.atomic': 'Atomic Clock ({value})',\n 'ptp.clockClass.gps': 'GPS ({value})',\n 'ptp.clockClass.slaveOnly': 'Slave-Only ({value})',\n 'ptp.clockAccuracy': 'Clock Accuracy',\n 'ptp.offsetScaledLogVariance': 'Offset Scaled Log Variance',\n 'ptp.utcOffset': 'UTC Offset',\n 'ptp.connectedStatus': 'Connected Status',\n 'ptp.lockedStatus': 'Locked Status',\n 'ptp.connected': 'Connected',\n 'ptp.disconnected': 'Disconnected',\n 'ptp.locked': 'Locked',\n 'ptp.unlocked': 'Unlocked',\n 'ptp.saveSuccess': 'Success',\n 'ptp.unknown': 'Unknown',\n // NMOS Modal\n 'nmos.title': 'NMOS',\n 'nmos.hostAddress': 'Host Addresses',\n 'nmos.domain': 'Domain',\n 'nmos.registryAddress': 'Registry Address',\n 'nmos.registrationPort': 'Registry Port',\n 'nmos.registryVersion': 'Registry Version',\n 'nmos.loggingLevel': 'Logging Level',\n 'nmos.placeholder.selectHostAddress': 'Select IP address',\n 'nmos.placeholder.selectVersion': 'Select version',\n 'nmos.saveSuccess': 'Success',\n // Preset Modal\n 'preset.title': 'Preset Management',\n 'preset.name': 'Name',\n 'preset.categories': 'Categories',\n 'preset.description': 'Description',\n 'preset.placeholder.enterName': 'Enter name',\n 'preset.placeholder.enterDescription': 'Enter description',\n 'preset.header.name': 'Name',\n 'preset.header.createTime': 'Create Time',\n 'preset.header.description': 'Description',\n 'preset.button.new': 'New Preset',\n 'preset.button.delete': 'Delete',\n 'preset.button.load': 'Load',\n 'preset.button.save': 'Save',\n 'preset.button.edit': 'Edit',\n 'preset.button.cancel': 'Cancel',\n 'preset.button.import': 'Import',\n 'preset.button.export': 'Export',\n 'preset.empty.noData': 'Select a preset from the list to view details',\n 'preset.unsaved.detected': 'Existing unsaved preset detected',\n 'preset.empty.create': 'Create New Preset',\n 'preset.untitled': 'Untitled',\n 'preset.delete.title': 'Delete Preset',\n 'preset.delete.confirmMessage': 'Are you sure you want to delete preset',\n 'preset.load.title': 'Load Preset',\n 'preset.load.confirmMessage': 'Are you sure you want to load preset',\n 'preset.load.loading': 'Loading...',\n 'preset.success': 'Success',\n 'preset.validation.nameRequired': 'Name is required',\n 'preset.validation.categoryRequired': 'No category selected',\n 'preset.error.noSelectionOrIdMissing': 'No preset selected or preset ID is missing',\n 'preset.import.invalidFile': 'Please select a file with the .preset extension.',\n // License/Auth Modal\n 'license.title': 'Register License',\n 'license.machineCode': 'Machine Code',\n 'license.key': 'License Key',\n 'license.placeholder.enterKey': 'Enter your license key',\n 'license.button.activate': 'Activate Now',\n 'license.button.reactivate': 'Reactivate',\n 'license.button.ignore': 'Ignore',\n 'license.status.unactivated': 'Unactivated',\n 'license.status.activated': 'Already activated',\n 'license.status.expired': 'Expired',\n 'license.status.invalid': 'Invalid',\n 'license.status.expiresOn': 'will expire on',\n 'license.validation.keyRequired': 'License key cannot be empty',\n 'license.error.authorizationFailed': 'Authorization failed',\n // Upgrade related\n 'upgrade.menu.download': 'Download Config File',\n 'upgrade.menu.softwareUpdate': 'Software Update',\n 'upgrade.status.idle': 'Idle',\n 'upgrade.status.uploading': 'Uploading...',\n 'upgrade.status.uploadComplete': 'Upload complete, starting upgrade...',\n 'upgrade.status.upgrading': 'Upgrading...',\n 'upgrade.error.downloadNotConfigured': 'Download functionality not configured',\n 'upgrade.error.downloadFailed': 'Download failed',\n 'upgrade.error.uploadFailed': 'Upload failed',\n 'upgrade.error.invalidFileFormat': 'Upload failed: Invalid file format',\n 'upgrade.error.upgradeFailed': 'Upgrade failed',\n // System operations\n 'system.poweroff': 'Power Off',\n 'system.restart': 'Restart',\n 'system.action.powerOff': 'power off',\n 'system.action.restart': 'restart',\n 'system.confirm.title': 'Confirmation Required',\n 'system.confirm.message': 'Are you sure you want to {action} the system? This action cannot be undone.',\n 'system.button.cancel': 'Cancel',\n 'system.button.confirm': 'Confirm',\n // Maintenance page\n 'maintenance.restarting': 'System is restarting...',\n 'maintenance.poweredOff': 'System is powered off',\n 'maintenance.waiting': 'Please wait while the system is starting up...',\n 'maintenance.redirecting.countdown': 'Redirecting automatically in {countdown} second{countdown, plural, one {} other {s}}',\n 'maintenance.waiting.long': 'Still starting up... This may take a moment.',\n 'maintenance.retry': 'Retry connection',\n 'maintenance.offline.description': 'The system is currently offline. Please contact your administrator to power it on.',\n // LSM Label\n 'lsm.label': 'Label',\n 'lsm.placeholder.select': 'Select label'\n};\n\nconst NetworkFieldGroup = _ref => {\n var _fieldConfig$netmask$, _fieldConfig$netmask;\n let {\n prefix,\n interfaces,\n fieldConfig = {}\n } = _ref;\n const intl = useIntl();\n\n // 默认字段配置\n const defaultFieldConfig = {\n name: {\n label: intl.formatMessage({\n id: 'networkSettings.name'\n }),\n enabled: true\n },\n ip: {\n label: intl.formatMessage({\n id: 'networkSettings.ipAddress'\n }),\n enabled: true\n },\n netmask: {\n label: intl.formatMessage({\n id: 'networkSettings.subnetMask'\n }),\n enabled: true\n }\n };\n const mergedFieldConfig = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, defaultFieldConfig), fieldConfig), {}, {\n netmask: {\n label: defaultFieldConfig.netmask.label,\n enabled: (_fieldConfig$netmask$ = (_fieldConfig$netmask = fieldConfig.netmask) === null || _fieldConfig$netmask === void 0 ? void 0 : _fieldConfig$netmask.enabled) !== null && _fieldConfig$netmask$ !== void 0 ? _fieldConfig$netmask$ : defaultFieldConfig.netmask.enabled\n }\n });\n return /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Typography.Title, {\n level: 5,\n style: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 16\n },\n children: prefix\n }), interfaces.map((iface, index) => /*#__PURE__*/jsxs(\"div\", {\n children: [mergedFieldConfig.name.enabled && /*#__PURE__*/jsx(Form.Item, {\n label: mergedFieldConfig.name.label,\n name: [prefix, index, \"display_name\"],\n children: /*#__PURE__*/jsx(Input, {\n disabled: true\n })\n }), mergedFieldConfig.ip.enabled && /*#__PURE__*/jsx(Form.Item, {\n label: mergedFieldConfig.ip.label,\n name: [prefix, index, \"ip_address\"],\n children: /*#__PURE__*/jsx(Input, {})\n }), mergedFieldConfig.netmask.enabled && /*#__PURE__*/jsx(Form.Item, {\n label: mergedFieldConfig.netmask.label,\n name: [prefix, index, \"netmask\"],\n children: /*#__PURE__*/jsx(Input, {})\n }), index < interfaces.length - 1 && /*#__PURE__*/jsx(Divider, {\n style: {\n marginBlock: 16\n }\n })]\n }, iface.id || index))]\n });\n};\nconst NetworkSettingsModal = _ref2 => {\n let {\n open,\n onClose,\n getLanConfig,\n // 可选 - 单独获取 LAN 配置的函数\n getSysConfig,\n // 可选 - 单独获取 QSFP 配置的函数\n getConfig,\n // 可选 - 统一获取配置的函数 ipgweb 专用\n updateLanConfig,\n updateSysConfig,\n restart,\n onRestartSuccess,\n // 重启成功后的回调(可选)\n modalProps = {},\n formProps = {},\n fieldConfig = {},\n sections = ['LAN', 'QSFP'],\n showNetmask = {\n LAN: true,\n QSFP: false\n },\n restartRemark\n } = _ref2;\n const intl = useIntl();\n const {\n message,\n modal\n } = App.useApp();\n const [form] = Form.useForm();\n const [st2110Interfaces, setSt2110Interfaces] = useState([]);\n const [lanConfigs, setLanConfigs] = useState([]);\n const [submitLoading, setSubmitLoading] = useState(false);\n const [isInitialized, setIsInitialized] = useState(false);\n\n // 用于保存原始 QSFP 数据,供无 getSysConfig 时做对比\n const originalSt2110InterfacesRef = useRef([]);\n const initializationStatus = useRef({\n hasFetched: false,\n hasInitialized: false\n });\n const preparedFieldConfig = useMemo(() => {\n const config = _objectSpread2$1({}, fieldConfig);\n\n // 确保LAN和QSFP的配置存在\n config.LAN = config.LAN || {};\n config.QSFP = config.QSFP || {};\n if (sections.includes('LAN')) {\n config.LAN.netmask = _objectSpread2$1(_objectSpread2$1({}, config.LAN.netmask || {}), {}, {\n enabled: showNetmask.LAN\n });\n }\n if (sections.includes('QSFP')) {\n config.QSFP.netmask = _objectSpread2$1(_objectSpread2$1({}, config.QSFP.netmask || {}), {}, {\n enabled: showNetmask.QSFP\n });\n }\n return config;\n }, [fieldConfig, showNetmask, sections]);\n useEffect(() => {\n if (!open) return;\n const fetchData = async () => {\n if (initializationStatus.current.hasFetched) return;\n try {\n initializationStatus.current.hasFetched = true;\n if (getConfig) {\n // 使用统一接口获取数据\n const config = await getConfig();\n if (sections.includes('LAN') && config.lan_interfaces) {\n setLanConfigs(config.lan_interfaces);\n }\n if (sections.includes('QSFP') && config.interfaces) {\n const interfaces = config.interfaces;\n setSt2110Interfaces(interfaces);\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\n }\n } else {\n const promises = [];\n if (sections.includes('LAN')) {\n promises.push(getLanConfig());\n }\n if (sections.includes('QSFP')) {\n promises.push(getSysConfig());\n }\n const results = await Promise.allSettled(promises);\n if (sections.includes('LAN') && getLanConfig) {\n const lanResult = results[0];\n if (lanResult.status === 'fulfilled') {\n setLanConfigs(lanResult.value || []);\n }\n }\n if (sections.includes('QSFP') && getSysConfig) {\n const sysResult = sections.includes('LAN') ? results[1] : results[0];\n if (sysResult.status === 'fulfilled' && sysResult.value) {\n const interfaces = sysResult.value.st2110_interfaces || [];\n setSt2110Interfaces(interfaces);\n originalSt2110InterfacesRef.current = JSON.parse(JSON.stringify(interfaces));\n }\n }\n }\n setIsInitialized(true);\n } catch (error) {\n console.error('Failed to fetch data:', error);\n initializationStatus.current.hasFetched = false; // 出错时重置\n }\n };\n fetchData();\n }, [open, getLanConfig, getSysConfig, getConfig, sections]);\n\n // 当模态框关闭时重置状态\n useEffect(() => {\n if (!open) {\n setIsInitialized(false);\n setLanConfigs([]);\n setSt2110Interfaces([]);\n form.resetFields();\n initializationStatus.current = {\n hasFetched: false,\n hasInitialized: false\n };\n originalSt2110InterfacesRef.current = [];\n }\n }, [open, form]);\n\n // 动态初始值配置\n const initialValues = useMemo(() => {\n const values = {};\n if (sections.includes('LAN') && lanConfigs.length > 0) {\n values.LAN = lanConfigs.map(config => _objectSpread2$1({\n connection_id: config.connection_id,\n display_name: config.display_name,\n ip_address: config.ip_address\n }, showNetmask.LAN ? {\n netmask: config.netmask\n } : {}));\n }\n if (sections.includes('QSFP') && st2110Interfaces.length > 0) {\n values.QSFP = st2110Interfaces.map(iface => _objectSpread2$1(_objectSpread2$1({}, iface.id !== undefined && {\n id: iface.id\n }), {}, {\n display_name: iface.display_name,\n ip_address: iface.ip_address || iface.ip\n }, showNetmask.QSFP ? {\n netmask: iface.netmask\n } : {}));\n }\n return values;\n }, [lanConfigs, st2110Interfaces, sections, showNetmask]);\n\n // 当初始值准备好后设置表单值\n useEffect(() => {\n if (isInitialized && !initializationStatus.current.hasInitialized) {\n form.setFieldsValue(initialValues);\n initializationStatus.current.hasInitialized = true;\n }\n }, [isInitialized, form, initialValues]);\n\n // 成功处理\n const handleSuccess = useCallback(async function () {\n let {\n messageText,\n isPopup = false,\n refresh = !restart\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const defaultMessage = intl.formatMessage({\n id: 'networkSettings.saveSuccess'\n });\n message.success(messageText || defaultMessage);\n if (refresh && getConfig) {\n try {\n const newConfig = await getConfig();\n if (sections.includes('LAN') && newConfig.lan_interfaces) {\n setLanConfigs(newConfig.lan_interfaces);\n }\n if (sections.includes('QSFP') && newConfig.interfaces) {\n setSt2110Interfaces(newConfig.interfaces);\n }\n } catch (error) {\n console.error('Failed to refresh config:', error);\n }\n }\n\n // 如果需要弹出重启确认框\n if (isPopup && restart) {\n if (getSysConfig) {\n // 有接口:再查一次确认是否需要重启\n try {\n const updatedConfig = await getSysConfig();\n if (updatedConfig !== null && updatedConfig !== void 0 && updatedConfig.is_restart_required) {\n modal.confirm({\n icon: /*#__PURE__*/jsx(ExclamationCircleFilled, {}),\n title: intl.formatMessage({\n id: 'networkSettings.restartRequired'\n }),\n cancelText: intl.formatMessage({\n id: 'networkSettings.restartLater'\n }),\n okText: intl.formatMessage({\n id: 'networkSettings.restartNow'\n }),\n onOk: async () => {\n await restart();\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\n onRestartSuccess();\n }\n }\n });\n }\n } catch (error) {\n console.error('Failed to check restart status:', error);\n }\n } else {\n // 无接口:直接弹出重启确认框\n modal.confirm({\n icon: /*#__PURE__*/jsx(ExclamationCircleFilled, {}),\n title: intl.formatMessage({\n id: 'networkSettings.restartRequired'\n }),\n cancelText: intl.formatMessage({\n id: 'networkSettings.restartLater'\n }),\n okText: intl.formatMessage({\n id: 'networkSettings.restartNow'\n }),\n onOk: async () => {\n await restart();\n if (onRestartSuccess && typeof onRestartSuccess === 'function') {\n onRestartSuccess();\n }\n }\n });\n }\n }\n onClose();\n }, [intl, message, modal, getSysConfig, restart, getConfig, sections, onClose]);\n const handleSubmit = useCallback(async () => {\n setSubmitLoading(true);\n try {\n const values = await form.validateFields();\n\n // ===== 判断 QSFP 是否有修改(仅当无 getSysConfig 时使用)=====\n let hasQsfpChanged = false;\n if (!getSysConfig && sections.includes('QSFP') && values.QSFP) {\n const original = originalSt2110InterfacesRef.current;\n const current = values.QSFP;\n hasQsfpChanged = current.some((item, index) => {\n const orig = original[index];\n if (!orig) return false;\n const ipChanged = item.ip_address !== (orig.ip_address || orig.ip);\n return ipChanged;\n });\n }\n const updatePromises = [];\n\n // 更新LAN配置\n if (sections.includes('LAN') && values.LAN) {\n const lanData = values.LAN.map((item, index) => {\n var _lanConfigs$index;\n return _objectSpread2$1({\n connection_id: (_lanConfigs$index = lanConfigs[index]) === null || _lanConfigs$index === void 0 ? void 0 : _lanConfigs$index.connection_id,\n ip_address: item.ip_address\n }, showNetmask.LAN ? {\n netmask: item.netmask\n } : {});\n });\n updatePromises.push(updateLanConfig(lanData));\n }\n\n // 更新QSFP配置\n if (sections.includes('QSFP') && values.QSFP) {\n const interfacesData = values.QSFP.map((item, index) => {\n var _st2110Interfaces$ind, _st2110Interfaces$ind2, _st2110Interfaces$ind3;\n return _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, (st2110Interfaces === null || st2110Interfaces === void 0 || (_st2110Interfaces$ind = st2110Interfaces[index]) === null || _st2110Interfaces$ind === void 0 ? void 0 : _st2110Interfaces$ind.id) !== undefined && {\n id: st2110Interfaces === null || st2110Interfaces === void 0 || (_st2110Interfaces$ind2 = st2110Interfaces[index]) === null || _st2110Interfaces$ind2 === void 0 ? void 0 : _st2110Interfaces$ind2.id\n }), (st2110Interfaces === null || st2110Interfaces === void 0 || (_st2110Interfaces$ind3 = st2110Interfaces[index]) === null || _st2110Interfaces$ind3 === void 0 ? void 0 : _st2110Interfaces$ind3.ip) !== undefined ? {\n ip: item.ip_address\n } : {\n ip_address: item.ip_address\n }), showNetmask.QSFP ? {\n netmask: item.netmask\n } : {});\n });\n const st2110Data = st2110Interfaces.some(iface => 'id' in iface) ? {\n st2110_interfaces: interfacesData\n } : {\n interfaces: interfacesData\n };\n updatePromises.push(updateSysConfig(st2110Data));\n }\n const results = await Promise.allSettled(updatePromises);\n\n // 检查所有更新是否成功\n const allSucceeded = results.every(result => result.status === 'fulfilled');\n if (allSucceeded) {\n let isPopup = false;\n if (getSysConfig) {\n // 有接口:后续在 handleSuccess 中查 is_restart_required\n isPopup = true;\n } else {\n // 无接口:根据是否有 QSFP 变化决定\n isPopup = hasQsfpChanged;\n }\n handleSuccess({\n isPopup\n });\n }\n } catch (error) {\n console.error('Failed to update configurations: ', error);\n } finally {\n setSubmitLoading(false);\n }\n }, [form, sections, lanConfigs, st2110Interfaces, updateLanConfig, updateSysConfig, handleSuccess]);\n\n // 合并默认模态框属性和传入的属性\n const mergedModalProps = _objectSpread2$1({\n title: intl.formatMessage({\n id: 'networkSettings.title'\n }),\n width: 650,\n open,\n confirmLoading: submitLoading,\n onOk: handleSubmit,\n onCancel: onClose,\n okText: intl.formatMessage({\n id: 'button.apply'\n }),\n cancelText: intl.formatMessage({\n id: 'button.close'\n }),\n centered: true,\n destroyOnHidden: true,\n forceRender: true\n }, modalProps);\n\n // 合并默认表单属性和传入的属性\n const mergedFormProps = _objectSpread2$1({\n form: form,\n labelCol: {\n span: 6\n },\n wrapperCol: {\n span: 18\n },\n autoComplete: \"off\"\n }, formProps);\n return /*#__PURE__*/jsxs(StyledModal$3, _objectSpread2$1(_objectSpread2$1({}, mergedModalProps), {}, {\n children: [/*#__PURE__*/jsxs(Form, _objectSpread2$1(_objectSpread2$1({}, mergedFormProps), {}, {\n children: [sections.includes('LAN') && lanConfigs.length > 0 && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(NetworkFieldGroup, {\n prefix: \"LAN\",\n interfaces: lanConfigs,\n fieldConfig: preparedFieldConfig.LAN\n }), sections.includes('QSFP') && st2110Interfaces.length > 0 && /*#__PURE__*/jsx(Divider, {})]\n }), sections.includes('QSFP') && st2110Interfaces.length > 0 && /*#__PURE__*/jsx(NetworkFieldGroup, {\n prefix: \"QSFP\",\n interfaces: st2110Interfaces,\n fieldConfig: preparedFieldConfig.QSFP\n })]\n })), restartRemark]\n }));\n};\nvar NetworkSettingsModal$1 = /*#__PURE__*/memo(NetworkSettingsModal);\n\nconst defaultFieldConfigs = {\n clock_class: {\n label: 'ptp.clockClass',\n formType: 'select',\n options: [{\n value: 6,\n label: 'ptp.clockClass.atomic'\n }, {\n value: 7,\n label: 'ptp.clockClass.gps'\n }, {\n value: 248,\n label: 'ptp.clockClass.slaveOnly'\n }],\n readOnly: true\n },\n clock_accuracy: {\n label: 'ptp.clockAccuracy',\n formType: 'number',\n readOnly: true\n },\n offset_scaled_log_variance: {\n label: 'ptp.offsetScaledLogVariance',\n formType: 'number',\n readOnly: true\n },\n grandmaster_priority1: {\n label: 'ptp.priority1',\n formType: 'number',\n readOnly: true\n },\n grandmaster_priority2: {\n label: 'ptp.priority2',\n formType: 'number',\n readOnly: true\n },\n grandmaster_identity: {\n label: 'ptp.grandmasterIdentity',\n formType: 'text',\n readOnly: true\n },\n master_port_id: {\n label: 'ptp.portIdentity',\n formType: 'text',\n readOnly: true\n },\n t1_domain_number: {\n label: 'ptp.domainNumber',\n formType: 'number',\n min: 0,\n max: 127,\n readOnly: false\n },\n master_utc_offset: {\n label: 'ptp.utcOffset',\n formType: 'number',\n readOnly: true\n },\n is_connected: {\n label: 'ptp.connectedStatus',\n formType: 'badge',\n statusMap: {\n 0: {\n text: 'ptp.disconnected',\n color: 'red'\n },\n 1: {\n text: 'ptp.connected',\n color: 'green'\n }\n }\n },\n is_locked: {\n label: 'ptp.lockedStatus',\n formType: 'badge',\n statusMap: {\n 0: {\n text: 'ptp.unlocked',\n color: 'red'\n },\n 1: {\n text: 'ptp.locked',\n color: 'green'\n }\n }\n }\n};\n\n// 默认字段顺序\nconst defaultFieldOrder = ['t1_domain_number', 'grandmaster_priority1', 'grandmaster_priority2', 'grandmaster_identity', 'master_port_id', 'clock_class', 'clock_accuracy', 'offset_scaled_log_variance', 'master_utc_offset', 'is_connected', 'is_locked'];\n\n/**\r\n * 转换PTP状态为表单字段数组\r\n * @param {Object} ptpStatus PTP状态对象\r\n * @param {Object} fieldConfigs 字段配置\r\n * @param {Array} fieldOrder 字段顺序\r\n * @returns {Array} 表单字段数组\r\n */\nfunction convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder) {\n return fieldOrder.filter(key => key in ptpStatus).map(key => {\n const config = fieldConfigs[key] || {\n label: key,\n formType: 'text'\n };\n const value = ptpStatus[key];\n return _objectSpread2$1(_objectSpread2$1({\n key,\n value\n }, config), {}, {\n rawData: ptpStatus\n });\n });\n}\nconst PtpModal = _ref => {\n let {\n open,\n onClose,\n getPtpInfo,\n updatePtpInfo,\n fieldConfigs = defaultFieldConfigs,\n fieldOrder = defaultFieldOrder,\n modalProps = {},\n formProps = {}\n } = _ref;\n const intl = useIntl();\n const [ptpStatus, setPtpStatus] = useState(null);\n const [loading, setLoading] = useState(false);\n const [form] = Form.useForm();\n const {\n message\n } = App.useApp();\n useEffect(() => {\n if (open) {\n setLoading(true);\n getPtpInfo().then(data => {\n if (data !== null && data !== void 0 && data[0]) {\n setPtpStatus(data[0]);\n // 数据加载后设置表单值\n form.setFieldsValue(data[0]);\n }\n }).catch(err => {\n console.error(\"Failed to fetch ptp\", err);\n }).finally(() => {\n setLoading(false);\n });\n } else {\n // 关闭时重置表单\n form.resetFields();\n setPtpStatus(null);\n }\n }, [open, form, getPtpInfo]);\n const ptpStatusArray = useMemo(() => {\n if (!ptpStatus) return [];\n return convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder);\n }, [ptpStatus, fieldConfigs, fieldOrder]);\n\n // 渲染 Form.Item 的 label\n const renderLabel = item => {\n // 如果 label 是国际化 key(包含点号),则使用 formatMessage\n if (item.label && typeof item.label === 'string' && item.label.includes('.')) {\n return intl.formatMessage({\n id: item.label\n });\n }\n return item.label;\n };\n const handleSubmit = async () => {\n const values = await form.getFieldsValue();\n setLoading(true);\n try {\n const response = await updatePtpInfo(values);\n if (response) {\n message.success(intl.formatMessage({\n id: 'ptp.saveSuccess'\n }));\n setTimeout(() => {\n onClose();\n }, 1500);\n }\n } catch (error) {\n console.error('Update failed:', error);\n } finally {\n setLoading(false);\n }\n };\n const renderFormItem = item => {\n var _item$options, _item$statusMap, _item$min, _item$max;\n switch (item.formType) {\n case 'select':\n const selectOptions = (_item$options = item.options) === null || _item$options === void 0 ? void 0 : _item$options.map(opt => _objectSpread2$1(_objectSpread2$1({}, opt), {}, {\n label: intl.formatMessage({\n id: opt.label\n }, {\n value: opt.value\n })\n }));\n return /*#__PURE__*/jsx(Select, {\n options: selectOptions,\n disabled: item.readOnly\n });\n case 'switch':\n return /*#__PURE__*/jsx(Switch, {});\n case 'badge':\n const normalizedValue = typeof item.value === 'boolean' ? item.value ? 1 : 0 : item.value;\n const status = ((_item$statusMap = item.statusMap) === null || _item$statusMap === void 0 ? void 0 : _item$statusMap[normalizedValue]) || {\n text: intl.formatMessage({\n id: ptp.unknown\n }),\n color: 'gray'\n };\n return /*#__PURE__*/jsx(ConfigProvider, {\n theme: {\n components: {\n Badge: {\n statusSize: 10\n }\n }\n },\n children: /*#__PURE__*/jsx(Badge, {\n color: status.color,\n text: intl.formatMessage({\n id: status.text\n })\n })\n });\n case 'number':\n return /*#__PURE__*/jsx(InputNumber, {\n disabled: item.readOnly,\n controls: false,\n keyboard: false,\n min: (_item$min = item.min) !== null && _item$min !== void 0 ? _item$min : Number.MIN_SAFE_INTEGER,\n max: (_item$max = item.max) !== null && _item$max !== void 0 ? _item$max : Number.MAX_SAFE_INTEGER\n });\n default:\n return /*#__PURE__*/jsx(Input, {\n disabled: item.readOnly\n });\n }\n };\n if (!open || !ptpStatus) return null;\n\n // 合并默认模态框属性和传入的属性\n const mergedModalProps = _objectSpread2$1({\n title: intl.formatMessage({\n id: 'ptp.title'\n }),\n width: 650,\n open,\n okText: intl.formatMessage({\n id: 'button.apply'\n }),\n cancelText: intl.formatMessage({\n id: 'button.close'\n }),\n onCancel: onClose,\n onOk: handleSubmit,\n confirmLoading: loading\n }, modalProps);\n\n // 合并默认表单属性和传入的属性\n const mergedFormProps = _objectSpread2$1({\n form: form,\n name: \"ptpForm\",\n labelCol: {\n span: 8\n },\n wrapperCol: {\n span: 16\n },\n autoComplete: \"off\"\n }, formProps);\n return /*#__PURE__*/jsx(StyledModal$3, _objectSpread2$1(_objectSpread2$1({}, mergedModalProps), {}, {\n children: /*#__PURE__*/jsx(Form, _objectSpread2$1(_objectSpread2$1({}, mergedFormProps), {}, {\n children: ptpStatusArray.map(item => /*#__PURE__*/jsx(Form.Item, {\n label: renderLabel(item),\n name: item.key,\n initialValue: item.value,\n children: renderFormItem(item)\n }, item.key))\n }))\n }));\n};\nvar PtpModal$1 = /*#__PURE__*/memo(PtpModal);\n\nconst LeftList = /*#__PURE__*/memo(_ref => {\n let {\n dataSource,\n selectedPresetId,\n onSelectPreset,\n onAddNew,\n onRemove,\n onImport,\n onExport,\n hasPresets = dataSource.length > 0,\n enableImportAndExport,\n texts = {\n newButton: \"preset.button.new\",\n removeButton: \"preset.button.delete\",\n importButton: \"preset.button.import\",\n exportButton: \"preset.button.export\"\n }\n } = _ref;\n const intl = useIntl();\n\n // 格式化文本的辅助函数\n const fmt = key => {\n if (typeof key === 'string' && key.includes('.')) {\n return intl.formatMessage({\n id: key\n });\n }\n return key;\n };\n return /*#__PURE__*/jsxs(\"div\", {\n className: \"h-full left-list-wrapper\",\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"list-container\",\n children: /*#__PURE__*/jsx(List, {\n header: /*#__PURE__*/jsxs(\"div\", {\n className: \"grid grid-cols-3 gap-2 w-full list-header\",\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: fmt('preset.header.name')\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: fmt('preset.header.createTime')\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: fmt('preset.header.description')\n })]\n }),\n dataSource: dataSource,\n rowKey: \"id\",\n renderItem: item => /*#__PURE__*/jsx(List.Item, {\n className: \"list-item \".concat(selectedPresetId === item.id ? 'selected' : ''),\n style: {\n padding: \"9px 24px\"\n },\n onClick: () => onSelectPreset(item),\n children: /*#__PURE__*/jsxs(\"div\", {\n className: \"grid grid-cols-3 gap-2 w-full text-text-normal\",\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: /*#__PURE__*/jsx(Typography.Text, {\n ellipsis: true,\n title: item.name,\n children: item.name || fmt('preset.untitled')\n })\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: /*#__PURE__*/jsx(Typography.Text, {\n ellipsis: true,\n children: item.create_time\n })\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"min-w-0\",\n children: /*#__PURE__*/jsx(Typography.Text, {\n ellipsis: true,\n title: item.description,\n children: item.description\n })\n })]\n })\n }),\n locale: {\n emptyText: /*#__PURE__*/jsx(\"div\", {\n className: \"p-8\",\n children: /*#__PURE__*/jsx(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n description: /*#__PURE__*/jsx(\"span\", {\n className: \"text-gray-400\",\n children: /*#__PURE__*/jsx(Button, {\n type: \"link\",\n onClick: onAddNew,\n className: \"p-0 h-auto\",\n icon: /*#__PURE__*/jsx(PlusOutlined, {}),\n children: fmt('preset.empty.create')\n })\n })\n })\n })\n }\n })\n }), hasPresets && /*#__PURE__*/jsx(\"div\", {\n style: {\n paddingInline: 24,\n paddingBlock: 20\n },\n children: /*#__PURE__*/jsxs(Space, {\n size: \"middle\",\n children: [/*#__PURE__*/jsx(Button, {\n type: \"default\",\n icon: /*#__PURE__*/jsx(PlusOutlined, {}),\n className: \"btn-gray\",\n onClick: onAddNew,\n children: texts.newButton\n }), /*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: onRemove,\n children: texts.removeButton\n }), enableImportAndExport && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: onImport,\n children: texts.importButton\n }), /*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: onExport,\n disabled: !selectedPresetId,\n children: texts.exportButton\n })]\n })]\n })\n })]\n });\n});\nconst SubmitButton = _ref2 => {\n let {\n loading,\n action,\n children,\n disabled = false,\n editButtonEle = null\n } = _ref2;\n return /*#__PURE__*/jsx(\"div\", {\n className: \"submit-btn-wrapper\",\n children: /*#__PURE__*/jsxs(Space, {\n size: \"middle\",\n children: [editButtonEle, /*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n loading: loading,\n onClick: action,\n disabled: disabled,\n children: children\n })]\n })\n });\n};\nconst RightDetailForm = /*#__PURE__*/memo(_ref3 => {\n let {\n form,\n onSave,\n onLoad,\n onEdit,\n onCancelEdit,\n onUpdate,\n isLoading,\n isSavedPreset,\n originalPresetData,\n fields = {\n name: {\n label: \"preset.name\",\n placeholder: \"preset.placeholder.enterName\",\n required: true\n },\n category_list: {\n label: \"preset.categories\"\n },\n description: {\n label: \"preset.description\",\n placeholder: \"preset.placeholder.enterDescription\"\n }\n },\n texts = {\n loadButton: \"preset.button.load\",\n saveButton: \"preset.button.save\",\n editButton: \"preset.button.edit\",\n cancelButton: \"preset.button.cancel\"\n },\n presetChanged,\n // 作用:在切换选中预设时强制触发 Checkbox 的重新初始化\n enableEdit = true\n } = _ref3;\n const intl = useIntl();\n const [initialSelected, setInitialSelected] = useState([]);\n const [isEditMode, setIsEditMode] = useState(false); // 是否进入编辑模式\n const currentSelected = Form.useWatch('category_list', form) || [];\n\n // 格式化文本的辅助函数\n const fmt = key => {\n if (typeof key === 'string' && key.includes('.')) {\n return intl.formatMessage({\n id: key\n });\n }\n return key;\n };\n\n // 检查是否包含 category_list 字段\n const hasCategoryList = fields.category_list !== null && fields.category_list !== undefined;\n\n // 初始化 category_list 的选择状态\n useEffect(() => {\n if (hasCategoryList) {\n const currentValue = form.getFieldValue('category_list') || [];\n setInitialSelected(currentValue);\n }\n }, [presetChanged, form, hasCategoryList]); // 当presetChanged变化时更新\n\n // 当 isSavedPreset 或 presetChanged 变化时,重置编辑模式\n useEffect(() => {\n setIsEditMode(false);\n }, [isSavedPreset, presetChanged]);\n\n // 动态生成 checkbox 选项\n const checkboxOptions = useMemo(() => {\n if (!hasCategoryList) return [];\n return fields.category_list.options.map(category => {\n const isInitiallySelected = initialSelected.includes(category.name);\n const shouldDisable = isSavedPreset ? !isInitiallySelected : false;\n return _objectSpread2$1(_objectSpread2$1({}, category), {}, {\n disabled: shouldDisable,\n initiallySelected: isInitiallySelected\n });\n });\n }, [initialSelected, isSavedPreset, hasCategoryList, fields.category_list]);\n const handleCheckboxChange = checkedValues => {\n form.setFieldsValue({\n category_list: checkedValues\n });\n };\n const handleEditClick = () => {\n setIsEditMode(true);\n if (onEdit) {\n onEdit(); // 如果有外部回调\n }\n };\n const handleCancelEdit = () => {\n if (originalPresetData) {\n form.setFieldsValue(originalPresetData);\n }\n setIsEditMode(false);\n if (onCancelEdit) {\n onCancelEdit();\n }\n };\n const handleSaveEdit = async () => {\n try {\n if (onUpdate) {\n await onUpdate();\n }\n setIsEditMode(false);\n } catch (error) {\n console.error('update fail:', error);\n }\n };\n const handleLoad = async () => {\n try {\n const formValues = await form.validateFields();\n const loadData = {\n id: form.getFieldValue('id'),\n // 优先使用表单中的 category_list,如果没有则使用原始数据\n name: originalPresetData.name,\n category_list: hasCategoryList ? formValues.category_list || [] : (originalPresetData === null || originalPresetData === void 0 ? void 0 : originalPresetData.category_list) || []\n };\n await onLoad(loadData);\n } catch (error) {\n console.error('表单验证失败:', error);\n }\n };\n\n // 在编辑模式下,name 和 description 可以编辑,但 categories 不可编辑\n const shouldDisableNameAndDesc = isSavedPreset && !isEditMode;\n const shouldDisableCategories = isEditMode; // categories 在编辑模式下总是不可编辑\n\n return /*#__PURE__*/jsxs(Flex, {\n vertical: true,\n style: {\n height: \"100%\",\n padding: \"20px 24px\"\n },\n children: [/*#__PURE__*/jsxs(Form, {\n form: form,\n layout: \"vertical\",\n autoComplete: \"off\",\n style: {\n flex: 1,\n overflowY: 'auto'\n },\n children: [/*#__PURE__*/jsx(Form.Item, {\n name: \"name\",\n label: fmt(fields.name.label),\n required: true,\n children: /*#__PURE__*/jsx(Input, {\n placeholder: fmt(fields.name.placeholder),\n disabled: shouldDisableNameAndDesc\n })\n }), hasCategoryList && /*#__PURE__*/jsx(Form.Item, {\n name: \"category_list\",\n label: fmt(fields.category_list.label),\n required: true,\n children: /*#__PURE__*/jsx(Checkbox.Group, {\n className: \"grid grid-cols-2 gap-2\",\n onChange: handleCheckboxChange,\n disabled: shouldDisableCategories,\n children: checkboxOptions.map(category => /*#__PURE__*/jsx(Checkbox, {\n value: category.name,\n disabled: category.disabled || shouldDisableCategories,\n children: category.label\n }, category.name))\n })\n }), fields.description && /*#__PURE__*/jsx(Form.Item, {\n name: \"description\",\n label: fmt(fields.description.label),\n children: /*#__PURE__*/jsx(Input.TextArea, {\n rows: 4,\n placeholder: fmt(fields.description.placeholder),\n disabled: shouldDisableNameAndDesc,\n style: {\n resize: 'none'\n }\n })\n })]\n }), isSavedPreset ? isEditMode ?\n /*#__PURE__*/\n // 编辑模式下的按钮\n jsx(\"div\", {\n className: \"submit-btn-wrapper\",\n children: /*#__PURE__*/jsxs(Space, {\n size: \"middle\",\n children: [/*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: handleCancelEdit,\n children: texts.cancelButton\n }), /*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: handleSaveEdit,\n loading: isLoading,\n children: texts.saveButton\n })]\n })\n }) :\n /*#__PURE__*/\n // 非编辑模式下的按钮\n jsx(SubmitButton, _objectSpread2$1(_objectSpread2$1({\n action: handleLoad\n }, hasCategoryList && {\n disabled: !currentSelected.length\n }), {}, {\n editButtonEle: enableEdit ? /*#__PURE__*/jsx(Button, {\n type: \"default\",\n className: \"btn-gray\",\n onClick: handleEditClick,\n children: texts.editButton\n }) : null,\n children: texts.loadButton\n })) : /*#__PURE__*/jsx(SubmitButton, {\n action: onSave,\n loading: isLoading,\n children: texts.saveButton\n })]\n });\n});\n\nconst Preset = _ref => {\n let {\n open,\n onClose,\n // API 方法通过 props 传入\n getPresetList,\n savePreset,\n removePreset,\n loadPreset,\n updatePreset,\n uploadPreset,\n downloadPreset,\n onLoadSuccess,\n // 加载成功后的回调\n onLoadError,\n // 加载失败后的回调\n\n // 字段配置\n fields = {\n name: {\n label: \"preset.name\",\n placeholder: \"preset.placeholder.enterName\",\n required: true\n }\n },\n texts = {\n title: \"preset.title\",\n emptyText: \"preset.empty.noData\",\n deleteConfirm: \"preset.delete.confirmMessage\",\n loadConfirm: \"preset.load.confirmMessage\",\n loadText: \"preset.load.loading\",\n successText: \"preset.success\",\n newButton: \"preset.button.new\",\n removeButton: \"preset.button.delete\",\n loadButton: \"preset.button.load\",\n saveButton: \"preset.button.save\",\n editButton: \"preset.button.edit\",\n cancelButton: \"preset.button.cancel\",\n importButton: \"preset.button.import\",\n exportButton: \"preset.button.export\"\n },\n // 样式定制\n width = 1000,\n height = 680,\n className = \"\",\n // 功能配置\n enableEdit = true,\n enableImportAndExport = false\n } = _ref;\n const intl = useIntl();\n const {\n message,\n modal\n } = App.useApp();\n const [presetList, setPresetList] = useState([]);\n const [selectedPreset, setSelectedPreset] = useState(null);\n const [loading, setLoading] = useState(false);\n const [uploading, setUploading] = useState(false);\n const [presetChanged, setPresetChanged] = useState(0);\n const [form] = Form.useForm();\n\n // 格式化文本的辅助函数\n const fmt = useCallback(key => {\n if (typeof key === 'string' && key.includes('.')) {\n return intl.formatMessage({\n id: key\n });\n }\n return key;\n }, [intl]);\n const fetchPresetList = useCallback(async () => {\n try {\n const data = await getPresetList();\n const presets = (data === null || data === void 0 ? void 0 : data.preset_list) || data || [];\n setPresetList(presets);\n\n // 自动选中第一个预设\n if (presets.length > 0) {\n const firstPreset = presets[0];\n setSelectedPreset(firstPreset);\n form.setFieldsValue(firstPreset);\n setPresetChanged(prev => prev + 1);\n }\n } catch (error) {\n console.error('Failed to fetch preset list:', error);\n }\n }, [getPresetList]);\n const handleSelectPreset = useCallback(preset => {\n setSelectedPreset(preset);\n form.setFieldsValue(preset);\n setPresetChanged(prev => prev + 1);\n }, [form]);\n const handleAddNew = useCallback(() => {\n var _fields$category_list;\n const unsavedPreset = presetList.find(item => !item.id);\n if (unsavedPreset) {\n message.warning(intl.formatMessage({\n id: 'preset.unsaved.detected'\n }));\n return;\n }\n\n // 创建新的数据,包含所有配置的字段\n const newPreset = Object.keys(fields).reduce((acc, fieldName) => {\n acc[fieldName] = '';\n return acc;\n }, {});\n\n // 特殊处理 category_list\n if ((_fields$category_list = fields.category_list) !== null && _fields$category_list !== void 0 && _fields$category_list.options) {\n newPreset.category_list = fields.category_list.options.map(item => item.name);\n }\n setPresetList([...presetList, newPreset]);\n setSelectedPreset(newPreset);\n form.setFieldsValue(newPreset);\n }, [form, presetList, message]);\n const handleRemove = useCallback(async () => {\n if (!selectedPreset) return;\n\n // 检查是否为新建的未保存数据(无 id)\n const isUnsavedPreset = !selectedPreset.id;\n const presetName = selectedPreset.name || fmt('preset.untitled');\n try {\n modal.confirm({\n icon: /*#__PURE__*/jsx(ExclamationCircleFilled, {}),\n title: fmt('preset.delete.title'),\n content: \"\".concat(fmt('preset.delete.confirmMessage'), \" \\\"\").concat(presetName, \"\\\"?\"),\n cancelText: fmt('button.cancel'),\n okText: fmt('button.delete'),\n onOk: async () => {\n // 在删除前记录当前选中项的位置\n const currentIndex = presetList.findIndex(item => isUnsavedPreset ? !item.id : item.id === selectedPreset.id);\n if (!isUnsavedPreset) {\n await removePreset({\n id: selectedPreset.id\n });\n message.success(fmt('preset.success'));\n } else {\n // 移除未保存的预设\n setPresetList(prev => prev.filter(item => !!item.id));\n }\n\n // 获取删除后的列表\n const updatedList = isUnsavedPreset ? presetList.filter(item => !!item.id) : await getPresetList().then(data => (data === null || data === void 0 ? void 0 : data.preset_list) || data || []);\n\n // 更新列表\n setPresetList(updatedList);\n if (updatedList.length > 0) {\n // 计算下一个索引\n let nextIndex = 0;\n if (currentIndex > 0) {\n // 如果删除的不是最后一项\n if (currentIndex < updatedList.length) {\n nextIndex = currentIndex; // 保持相同位置\n } else {\n nextIndex = updatedList.length - 1; // 选最后一个\n }\n }\n const nextPreset = updatedList[nextIndex];\n if (nextPreset) {\n setSelectedPreset(nextPreset);\n form.setFieldsValue(nextPreset);\n setPresetChanged(prev => prev + 1);\n return;\n }\n }\n\n // 列表为空\n setSelectedPreset(null);\n form.resetFields();\n }\n });\n } catch (error) {\n console.error('Failed to delete preset:', error);\n }\n }, [selectedPreset, form, modal, message, removePreset, getPresetList, fmt]);\n const handleImport = useCallback(async () => {\n // 创建一个临时的 input 元素\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = '.preset'; // 限制只能选择 .preset 文件\n\n input.onchange = async e => {\n var _e$target$files;\n const file = (_e$target$files = e.target.files) === null || _e$target$files === void 0 ? void 0 : _e$target$files[0];\n if (!file) {\n return; // 用户取消选择\n }\n\n // 确保文件扩展名是 .preset(防止 accept 被绕过)\n if (!file.name.toLowerCase().endsWith('.preset')) {\n message.error(intl.formatMessage({\n id: 'preset.import.invalidFile'\n }));\n return;\n }\n try {\n setUploading(true);\n await uploadPreset(file);\n message.success(intl.formatMessage({\n id: 'preset.success'\n }));\n\n // 上传成功后刷新列表\n fetchPresetList();\n } catch (error) {\n console.error('Failed to import preset file:', error);\n } finally {\n setUploading(false);\n }\n\n // 清理:移除 input\n input.remove();\n };\n\n // 触发文件选择框\n input.click();\n }, [uploadPreset, message, intl, fetchPresetList]);\n const handleExport = useCallback(() => {\n if (!(selectedPreset !== null && selectedPreset !== void 0 && selectedPreset.id)) {\n message.warning(intl.formatMessage({\n id: 'preset.error.noSelectionOrIdMissing'\n }));\n return;\n }\n\n // 构造下载 URL\n const downloadUrl = \"\".concat(downloadPreset, \"/\").concat(selectedPreset.id);\n\n // 创建临时 a 标签\n const link = document.createElement('a');\n link.href = downloadUrl;\n link.download = \"\".concat(selectedPreset.name || 'preset', \".preset\"); // 指定文件名\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }, [selectedPreset, message, intl]);\n const handleLoadPreset = useCallback(async loadData => {\n if (!loadData) return;\n let modalInstance = null;\n let resolveOk = null; // 用于控制 confirm 关闭时机\n\n modalInstance = modal.confirm({\n title: fmt('preset.load.title'),\n content: \"\".concat(fmt('preset.load.confirmMessage'), \" \\\"\").concat(loadData.name, \"\\\"?\"),\n cancelText: fmt('button.cancel'),\n okText: fmt('preset.button.load'),\n // onOk 返回一个 pending Promise\n onOk: () => {\n return new Promise((resolve, reject) => {\n resolveOk = resolve;\n\n // 立即切换为 loading 状态\n modalInstance.update({\n title: fmt('preset.load.loading'),\n content: /*#__PURE__*/jsx(Spin, {\n size: \"large\",\n className: \"block mx-auto\"\n }),\n okButtonProps: {\n style: {\n display: 'none'\n }\n },\n cancelButtonProps: {\n style: {\n display: 'none'\n }\n },\n maskClosable: false,\n closable: false\n });\n (async () => {\n try {\n await loadPreset(_objectSpread2$1({\n id: loadData.id\n }, loadData.category_list && {\n category_list: loadData.category_list\n }));\n\n // 成功:1 秒后自动关闭\n setTimeout(() => {\n var _resolveOk;\n (_resolveOk = resolveOk) === null || _resolveOk === void 0 || _resolveOk();\n message.success(fmt('preset.success'));\n // 加载成功的外部回调\n if (onLoadSuccess) {\n onLoadSuccess(loadData);\n }\n }, 1000);\n } catch (error) {\n console.error('Failed to load preset:', error);\n // 失败:直接关闭 modal\n modalInstance.destroy();\n // 加载失败的外部回调\n if (onLoadError) {\n onLoadError(error, loadData);\n }\n }\n })();\n });\n },\n onCancel: () => {\n // 用户取消\n }\n });\n }, [loadPreset, message, modal, onLoadSuccess, onLoadError, fmt]);\n const handleSave = useCallback(async () => {\n setLoading(true);\n try {\n var _fields$name, _fields$category_list2;\n const values = await form.getFieldsValue();\n\n // 验证预设名称\n if ((_fields$name = fields.name) !== null && _fields$name !== void 0 && _fields$name.required) {\n if (!values.name || values.name.trim() === '') {\n message.error(fmt('preset.validation.nameRequired'));\n return; // 直接返回 不执行\n }\n }\n\n // 验证分类列表\n if ((_fields$category_list2 = fields.category_list) !== null && _fields$category_list2 !== void 0 && _fields$category_list2.required) {\n if (!values.category_list || values.category_list.length === 0) {\n message.error(fmt('preset.validation.categoryRequired'));\n return;\n }\n }\n await savePreset(values);\n message.success(fmt('preset.success'));\n const savedPresetName = values.name;\n\n // 刷新列表\n const data = await getPresetList();\n const presets = (data === null || data === void 0 ? void 0 : data.preset_list) || data || [];\n setPresetList(presets);\n\n // 在刷新后的列表中查找同名的预设\n const newlySavedPreset = presets.find(item => item.name === savedPresetName);\n if (newlySavedPreset) {\n setSelectedPreset(newlySavedPreset);\n form.setFieldsValue(newlySavedPreset);\n setPresetChanged(prev => prev + 1);\n } else {\n setSelectedPreset(values);\n }\n } catch (error) {\n console.error('Failed to save preset:', error);\n } finally {\n setLoading(false);\n }\n }, [form, message, fields, savePreset, getPresetList, fmt]);\n const handleUpdate = useCallback(async () => {\n if (!selectedPreset || !selectedPreset.id) {\n message.error(fmt('preset.error.noSelectionOrIdMissing'));\n return;\n }\n setLoading(true);\n try {\n var _fields$name2;\n const values = await form.getFieldsValue();\n\n // 验证预设名称\n if ((_fields$name2 = fields.name) !== null && _fields$name2 !== void 0 && _fields$name2.required) {\n if (!values.name || values.name.trim() === '') {\n message.error(fmt('preset.validation.nameRequired'));\n return; // 直接返回 不执行\n }\n }\n await updatePreset({\n id: selectedPreset.id,\n name: values.name,\n description: values.description\n });\n\n // 刷新列表\n const data = await getPresetList();\n const presets = (data === null || data === void 0 ? void 0 : data.preset_list) || data || [];\n setPresetList(presets);\n\n // 更新当前选中的预设\n const updatedPreset = presets.find(item => item.id === selectedPreset.id);\n if (updatedPreset) {\n setSelectedPreset(updatedPreset);\n }\n message.success(fmt('preset.success'));\n } catch (error) {\n console.error('Failed to update preset:', error);\n throw error;\n } finally {\n setLoading(false);\n }\n }, [form, message, fields, updatePreset, selectedPreset, fmt]);\n\n // 初始化数据\n useEffect(() => {\n fetchPresetList();\n }, [fetchPresetList]);\n return /*#__PURE__*/jsx(StyledModal$3, {\n title: fmt(texts.title),\n width: width,\n open: open,\n wrapClassName: \"preset-management \".concat(className),\n footer: null,\n onCancel: onClose,\n centered: true,\n styles: {\n body: {\n padding: 0,\n height: \"\".concat(height, \"px\")\n }\n },\n children: /*#__PURE__*/jsxs(Row, {\n gutter: 0,\n className: \"h-full w-full\",\n children: [/*#__PURE__*/jsx(Col, {\n span: 14,\n className: \"h-full\",\n children: /*#__PURE__*/jsx(LeftList, {\n dataSource: presetList,\n selectedPresetId: selectedPreset === null || selectedPreset === void 0 ? void 0 : selectedPreset.id,\n onSelectPreset: handleSelectPreset,\n onAddNew: handleAddNew,\n onRemove: handleRemove,\n onImport: handleImport,\n onExport: handleExport,\n enableImportAndExport: enableImportAndExport,\n texts: {\n newButton: fmt(texts.newButton),\n removeButton: fmt(texts.removeButton),\n importButton: fmt(texts.importButton),\n exportButton: fmt(texts.exportButton)\n }\n })\n }), /*#__PURE__*/jsx(Col, {\n span: 10,\n className: \"h-full\",\n children: selectedPreset ? /*#__PURE__*/jsx(RightDetailForm, {\n form: form,\n onSave: handleSave,\n onLoad: handleLoadPreset,\n onUpdate: handleUpdate,\n isLoading: loading,\n isSavedPreset: !!(selectedPreset !== null && selectedPreset !== void 0 && selectedPreset.id),\n originalPresetData: selectedPreset // 传递原始数据\n ,\n fields: fields,\n texts: {\n loadButton: fmt(texts.loadButton),\n saveButton: fmt(texts.saveButton),\n editButton: fmt(texts.editButton),\n cancelButton: fmt(texts.cancelButton)\n },\n presetChanged: presetChanged,\n enableEdit: enableEdit\n }) : /*#__PURE__*/jsx(Flex, {\n vertical: true,\n justify: \"center\",\n align: \"center\",\n className: \"h-full text-gray-400\",\n children: /*#__PURE__*/jsx(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n description: fmt(texts.emptyText)\n })\n })\n })]\n })\n });\n};\nvar PresetModal = /*#__PURE__*/memo(Preset);\n\nconst _excluded$2 = [\"menuItems\", \"onMenuClick\", \"downloadFiles\", \"upgradeExecute\", \"upgradeStatus\", \"acceptFileTypes\", \"uploadCompleteDelay\", \"statusPollingInterval\", \"children\"];\nconst UpgradeManager = _ref => {\n let {\n menuItems = [],\n onMenuClick,\n downloadFiles,\n upgradeExecute,\n upgradeStatus,\n acceptFileTypes = \"application/octet-stream\",\n uploadCompleteDelay = 3000,\n statusPollingInterval = 1000,\n children\n } = _ref,\n dropdownProps = _objectWithoutProperties$1(_ref, _excluded$2);\n const [upgradeElement] = useUpgrade$1({\n menuItems,\n onMenuClick,\n downloadFiles,\n upgradeExecute,\n upgradeStatus,\n acceptFileTypes,\n uploadCompleteDelay,\n statusPollingInterval\n });\n if (children) {\n // 提取Dropdown组件和其menu属性\n const dropdownElement = upgradeElement.props.children[0];\n const otherElements = upgradeElement.props.children.slice(1);\n return /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Dropdown, _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, dropdownProps), dropdownElement.props), {}, {\n children: children\n })), otherElements]\n });\n }\n\n // 如果没有children,直接返回完整的升级元素\n return upgradeElement;\n};\nUpgradeManager.defaultProps = {\n trigger: [\"hover\"],\n placement: \"bottomRight\"\n};\nvar UpgradeManager$1 = UpgradeManager;\n\nfunction getDefaultExportFromCjs$7 (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar propTypes$7 = {exports: {}};\n\nvar reactIs$7 = {exports: {}};\n\nvar reactIs_production_min$7 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$7;\n\nfunction requireReactIs_production_min$7 () {\n\tif (hasRequiredReactIs_production_min$7) return reactIs_production_min$7;\n\thasRequiredReactIs_production_min$7 = 1;\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\n\tSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\n\tfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}reactIs_production_min$7.AsyncMode=l;reactIs_production_min$7.ConcurrentMode=m;reactIs_production_min$7.ContextConsumer=k;reactIs_production_min$7.ContextProvider=h;reactIs_production_min$7.Element=c;reactIs_production_min$7.ForwardRef=n;reactIs_production_min$7.Fragment=e;reactIs_production_min$7.Lazy=t;reactIs_production_min$7.Memo=r;reactIs_production_min$7.Portal=d;\n\treactIs_production_min$7.Profiler=g;reactIs_production_min$7.StrictMode=f;reactIs_production_min$7.Suspense=p;reactIs_production_min$7.isAsyncMode=function(a){return A(a)||z(a)===l};reactIs_production_min$7.isConcurrentMode=A;reactIs_production_min$7.isContextConsumer=function(a){return z(a)===k};reactIs_production_min$7.isContextProvider=function(a){return z(a)===h};reactIs_production_min$7.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};reactIs_production_min$7.isForwardRef=function(a){return z(a)===n};reactIs_production_min$7.isFragment=function(a){return z(a)===e};reactIs_production_min$7.isLazy=function(a){return z(a)===t};\n\treactIs_production_min$7.isMemo=function(a){return z(a)===r};reactIs_production_min$7.isPortal=function(a){return z(a)===d};reactIs_production_min$7.isProfiler=function(a){return z(a)===g};reactIs_production_min$7.isStrictMode=function(a){return z(a)===f};reactIs_production_min$7.isSuspense=function(a){return z(a)===p};\n\treactIs_production_min$7.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};reactIs_production_min$7.typeOf=z;\n\treturn reactIs_production_min$7;\n}\n\nvar reactIs_development$7 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$7;\n\nfunction requireReactIs_development$7 () {\n\tif (hasRequiredReactIs_development$7) return reactIs_development$7;\n\thasRequiredReactIs_development$7 = 1;\n\n\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t (function() {\n\n\t// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n\t// nor polyfill, then a plain number is used for performance.\n\tvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\tvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n\tvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n\tvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n\tvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n\tvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n\tvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n\tvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n\t// (unstable) APIs that have been removed. Can we remove the symbols?\n\n\tvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n\tvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n\tvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\tvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n\tvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n\tvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n\tvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\tvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n\tvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n\tvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n\tvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\n\tfunction isValidElementType(type) {\n\t return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n\t type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n\t}\n\n\tfunction typeOf(object) {\n\t if (typeof object === 'object' && object !== null) {\n\t var $$typeof = object.$$typeof;\n\n\t switch ($$typeof) {\n\t case REACT_ELEMENT_TYPE:\n\t var type = object.type;\n\n\t switch (type) {\n\t case REACT_ASYNC_MODE_TYPE:\n\t case REACT_CONCURRENT_MODE_TYPE:\n\t case REACT_FRAGMENT_TYPE:\n\t case REACT_PROFILER_TYPE:\n\t case REACT_STRICT_MODE_TYPE:\n\t case REACT_SUSPENSE_TYPE:\n\t return type;\n\n\t default:\n\t var $$typeofType = type && type.$$typeof;\n\n\t switch ($$typeofType) {\n\t case REACT_CONTEXT_TYPE:\n\t case REACT_FORWARD_REF_TYPE:\n\t case REACT_LAZY_TYPE:\n\t case REACT_MEMO_TYPE:\n\t case REACT_PROVIDER_TYPE:\n\t return $$typeofType;\n\n\t default:\n\t return $$typeof;\n\t }\n\n\t }\n\n\t case REACT_PORTAL_TYPE:\n\t return $$typeof;\n\t }\n\t }\n\n\t return undefined;\n\t} // AsyncMode is deprecated along with isAsyncMode\n\n\tvar AsyncMode = REACT_ASYNC_MODE_TYPE;\n\tvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n\tvar ContextConsumer = REACT_CONTEXT_TYPE;\n\tvar ContextProvider = REACT_PROVIDER_TYPE;\n\tvar Element = REACT_ELEMENT_TYPE;\n\tvar ForwardRef = REACT_FORWARD_REF_TYPE;\n\tvar Fragment = REACT_FRAGMENT_TYPE;\n\tvar Lazy = REACT_LAZY_TYPE;\n\tvar Memo = REACT_MEMO_TYPE;\n\tvar Portal = REACT_PORTAL_TYPE;\n\tvar Profiler = REACT_PROFILER_TYPE;\n\tvar StrictMode = REACT_STRICT_MODE_TYPE;\n\tvar Suspense = REACT_SUSPENSE_TYPE;\n\tvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n\tfunction isAsyncMode(object) {\n\t {\n\t if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n\t hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n\t console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n\t }\n\t }\n\n\t return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n\t}\n\tfunction isConcurrentMode(object) {\n\t return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n\t}\n\tfunction isContextConsumer(object) {\n\t return typeOf(object) === REACT_CONTEXT_TYPE;\n\t}\n\tfunction isContextProvider(object) {\n\t return typeOf(object) === REACT_PROVIDER_TYPE;\n\t}\n\tfunction isElement(object) {\n\t return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n\t}\n\tfunction isForwardRef(object) {\n\t return typeOf(object) === REACT_FORWARD_REF_TYPE;\n\t}\n\tfunction isFragment(object) {\n\t return typeOf(object) === REACT_FRAGMENT_TYPE;\n\t}\n\tfunction isLazy(object) {\n\t return typeOf(object) === REACT_LAZY_TYPE;\n\t}\n\tfunction isMemo(object) {\n\t return typeOf(object) === REACT_MEMO_TYPE;\n\t}\n\tfunction isPortal(object) {\n\t return typeOf(object) === REACT_PORTAL_TYPE;\n\t}\n\tfunction isProfiler(object) {\n\t return typeOf(object) === REACT_PROFILER_TYPE;\n\t}\n\tfunction isStrictMode(object) {\n\t return typeOf(object) === REACT_STRICT_MODE_TYPE;\n\t}\n\tfunction isSuspense(object) {\n\t return typeOf(object) === REACT_SUSPENSE_TYPE;\n\t}\n\n\treactIs_development$7.AsyncMode = AsyncMode;\n\treactIs_development$7.ConcurrentMode = ConcurrentMode;\n\treactIs_development$7.ContextConsumer = ContextConsumer;\n\treactIs_development$7.ContextProvider = ContextProvider;\n\treactIs_development$7.Element = Element;\n\treactIs_development$7.ForwardRef = ForwardRef;\n\treactIs_development$7.Fragment = Fragment;\n\treactIs_development$7.Lazy = Lazy;\n\treactIs_development$7.Memo = Memo;\n\treactIs_development$7.Portal = Portal;\n\treactIs_development$7.Profiler = Profiler;\n\treactIs_development$7.StrictMode = StrictMode;\n\treactIs_development$7.Suspense = Suspense;\n\treactIs_development$7.isAsyncMode = isAsyncMode;\n\treactIs_development$7.isConcurrentMode = isConcurrentMode;\n\treactIs_development$7.isContextConsumer = isContextConsumer;\n\treactIs_development$7.isContextProvider = isContextProvider;\n\treactIs_development$7.isElement = isElement;\n\treactIs_development$7.isForwardRef = isForwardRef;\n\treactIs_development$7.isFragment = isFragment;\n\treactIs_development$7.isLazy = isLazy;\n\treactIs_development$7.isMemo = isMemo;\n\treactIs_development$7.isPortal = isPortal;\n\treactIs_development$7.isProfiler = isProfiler;\n\treactIs_development$7.isStrictMode = isStrictMode;\n\treactIs_development$7.isSuspense = isSuspense;\n\treactIs_development$7.isValidElementType = isValidElementType;\n\treactIs_development$7.typeOf = typeOf;\n\t })();\n\t}\n\treturn reactIs_development$7;\n}\n\nvar hasRequiredReactIs$7;\n\nfunction requireReactIs$7 () {\n\tif (hasRequiredReactIs$7) return reactIs$7.exports;\n\thasRequiredReactIs$7 = 1;\n\n\tif (process.env.NODE_ENV === 'production') {\n\t reactIs$7.exports = requireReactIs_production_min$7();\n\t} else {\n\t reactIs$7.exports = requireReactIs_development$7();\n\t}\n\treturn reactIs$7.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$7;\nvar hasRequiredObjectAssign$7;\n\nfunction requireObjectAssign$7 () {\n\tif (hasRequiredObjectAssign$7) return objectAssign$7;\n\thasRequiredObjectAssign$7 = 1;\n\t/* eslint-disable no-unused-vars */\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\n\t\treturn Object(val);\n\t}\n\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tobjectAssign$7 = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (getOwnPropertySymbols) {\n\t\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn to;\n\t};\n\treturn objectAssign$7;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$7;\nvar hasRequiredReactPropTypesSecret$7;\n\nfunction requireReactPropTypesSecret$7 () {\n\tif (hasRequiredReactPropTypesSecret$7) return ReactPropTypesSecret_1$7;\n\thasRequiredReactPropTypesSecret$7 = 1;\n\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\n\tReactPropTypesSecret_1$7 = ReactPropTypesSecret;\n\treturn ReactPropTypesSecret_1$7;\n}\n\nvar has$7;\nvar hasRequiredHas$7;\n\nfunction requireHas$7 () {\n\tif (hasRequiredHas$7) return has$7;\n\thasRequiredHas$7 = 1;\n\thas$7 = Function.call.bind(Object.prototype.hasOwnProperty);\n\treturn has$7;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$7;\nvar hasRequiredCheckPropTypes$7;\n\nfunction requireCheckPropTypes$7 () {\n\tif (hasRequiredCheckPropTypes$7) return checkPropTypes_1$7;\n\thasRequiredCheckPropTypes$7 = 1;\n\n\tvar printWarning = function() {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t var ReactPropTypesSecret = /*@__PURE__*/ requireReactPropTypesSecret$7();\n\t var loggedTypeFailures = {};\n\t var has = /*@__PURE__*/ requireHas$7();\n\n\t printWarning = function(text) {\n\t var message = 'Warning: ' + text;\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) { /**/ }\n\t };\n\t}\n\n\t/**\n\t * Assert that the values match with the type specs.\n\t * Error messages are memorized and will only be shown once.\n\t *\n\t * @param {object} typeSpecs Map of name to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @param {string} componentName Name of the component for error messages.\n\t * @param {?Function} getStack Returns the component stack.\n\t * @private\n\t */\n\tfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t for (var typeSpecName in typeSpecs) {\n\t if (has(typeSpecs, typeSpecName)) {\n\t var error;\n\t // Prop type validation may throw. In case they do, we don't want to\n\t // fail the render phase where it didn't fail before. So we log it.\n\t // After these have been cleaned up, we'll let them throw.\n\t try {\n\t // This is intentionally an invariant that gets caught. It's the same\n\t // behavior as without this statement except with a better message.\n\t if (typeof typeSpecs[typeSpecName] !== 'function') {\n\t var err = Error(\n\t (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n\t 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n\t 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n\t );\n\t err.name = 'Invariant Violation';\n\t throw err;\n\t }\n\t error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n\t } catch (ex) {\n\t error = ex;\n\t }\n\t if (error && !(error instanceof Error)) {\n\t printWarning(\n\t (componentName || 'React class') + ': type specification of ' +\n\t location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n\t 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n\t 'You may have forgotten to pass an argument to the type checker ' +\n\t 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n\t 'shape all require an argument).'\n\t );\n\t }\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\n\t var stack = getStack ? getStack() : '';\n\n\t printWarning(\n\t 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n\t );\n\t }\n\t }\n\t }\n\t }\n\t}\n\n\t/**\n\t * Resets warning cache when testing.\n\t *\n\t * @private\n\t */\n\tcheckPropTypes.resetWarningCache = function() {\n\t if (process.env.NODE_ENV !== 'production') {\n\t loggedTypeFailures = {};\n\t }\n\t};\n\n\tcheckPropTypes_1$7 = checkPropTypes;\n\treturn checkPropTypes_1$7;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$7;\nvar hasRequiredFactoryWithTypeCheckers$7;\n\nfunction requireFactoryWithTypeCheckers$7 () {\n\tif (hasRequiredFactoryWithTypeCheckers$7) return factoryWithTypeCheckers$7;\n\thasRequiredFactoryWithTypeCheckers$7 = 1;\n\n\tvar ReactIs = requireReactIs$7();\n\tvar assign = requireObjectAssign$7();\n\n\tvar ReactPropTypesSecret = /*@__PURE__*/ requireReactPropTypesSecret$7();\n\tvar has = /*@__PURE__*/ requireHas$7();\n\tvar checkPropTypes = /*@__PURE__*/ requireCheckPropTypes$7();\n\n\tvar printWarning = function() {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t printWarning = function(text) {\n\t var message = 'Warning: ' + text;\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t}\n\n\tfunction emptyFunctionThatReturnsNull() {\n\t return null;\n\t}\n\n\tfactoryWithTypeCheckers$7 = function(isValidElement, throwOnDirectAccess) {\n\t /* global Symbol */\n\t var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n\t /**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\t function getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\n\t /**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\n\t var ANONYMOUS = '<<anonymous>>';\n\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\t var ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bigint: createPrimitiveTypeChecker('bigint'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t elementType: createElementTypeTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker,\n\t exact: createStrictShapeTypeChecker,\n\t };\n\n\t /**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t /*eslint-disable no-self-compare*/\n\t function is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t }\n\t /*eslint-enable no-self-compare*/\n\n\t /**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However, we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\t function PropTypeError(message, data) {\n\t this.message = message;\n\t this.data = data && typeof data === 'object' ? data: {};\n\t this.stack = '';\n\t }\n\t // Make `instanceof Error` still work for returned errors.\n\t PropTypeError.prototype = Error.prototype;\n\n\t function createChainableTypeChecker(validate) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var manualPropTypeCallCache = {};\n\t var manualPropTypeWarningCount = 0;\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\n\t if (secret !== ReactPropTypesSecret) {\n\t if (throwOnDirectAccess) {\n\t // New behavior only for users of `prop-types` package\n\t var err = new Error(\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use `PropTypes.checkPropTypes()` to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t err.name = 'Invariant Violation';\n\t throw err;\n\t } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n\t // Old behavior for people using React.PropTypes\n\t var cacheKey = componentName + ':' + propName;\n\t if (\n\t !manualPropTypeCallCache[cacheKey] &&\n\t // Avoid spamming the console because they are often not actionable except for lib authors\n\t manualPropTypeWarningCount < 3\n\t ) {\n\t printWarning(\n\t 'You are manually calling a React.PropTypes validation ' +\n\t 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n\t 'and will throw in the standalone `prop-types` package. ' +\n\t 'You may be seeing this warning due to a third-party PropTypes ' +\n\t 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n\t );\n\t manualPropTypeCallCache[cacheKey] = true;\n\t manualPropTypeWarningCount++;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\n\t return chainedCheckType;\n\t }\n\n\t function createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\n\t return new PropTypeError(\n\t 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n\t {expectedType: expectedType}\n\t );\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n\t }\n\n\t function createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!isValidElement(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createElementTypeTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!ReactIs.isValidElementType(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t if (arguments.length > 1) {\n\t printWarning(\n\t 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n\t 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n\t );\n\t } else {\n\t printWarning('Invalid argument supplied to oneOf, expected an array.');\n\t }\n\t }\n\t return emptyFunctionThatReturnsNull;\n\t }\n\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\n\t var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n\t var type = getPreciseType(value);\n\t if (type === 'symbol') {\n\t return String(value);\n\t }\n\t return value;\n\t });\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (has(propValue, key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunctionThatReturnsNull;\n\t }\n\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (typeof checker !== 'function') {\n\t printWarning(\n\t 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n\t 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n\t );\n\t return emptyFunctionThatReturnsNull;\n\t }\n\t }\n\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var expectedTypes = [];\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n\t if (checkerResult == null) {\n\t return null;\n\t }\n\t if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n\t expectedTypes.push(checkerResult.data.expectedType);\n\t }\n\t }\n\t var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function invalidValidatorError(componentName, location, propFullName, key, type) {\n\t return new PropTypeError(\n\t (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n\t 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n\t );\n\t }\n\n\t function createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (typeof checker !== 'function') {\n\t return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function createStrictShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t // We need to check all keys in case some are required but missing from props.\n\t var allKeys = assign({}, props[propName], shapeTypes);\n\t for (var key in allKeys) {\n\t var checker = shapeTypes[key];\n\t if (has(shapeTypes, key) && typeof checker !== 'function') {\n\t return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n\t }\n\t if (!checker) {\n\t return new PropTypeError(\n\t 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n\t '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n\t '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n\t );\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\n\t return createChainableTypeChecker(validate);\n\t }\n\n\t function isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || isValidElement(propValue)) {\n\t return true;\n\t }\n\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\n\t function isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\n\t // falsy value can't be a Symbol\n\t if (!propValue) {\n\t return false;\n\t }\n\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\n\t return false;\n\t }\n\n\t // Equivalent of `typeof` but with special handling for array and regexp.\n\t function getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t }\n\n\t // This handles more types than `getPropType`. Only used for error messages.\n\t // See `createPrimitiveTypeChecker`.\n\t function getPreciseType(propValue) {\n\t if (typeof propValue === 'undefined' || propValue === null) {\n\t return '' + propValue;\n\t }\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t }\n\n\t // Returns a string that is postfixed to a warning about an invalid type.\n\t // For example, \"undefined\" or \"of type array\"\n\t function getPostfixForTypeWarning(value) {\n\t var type = getPreciseType(value);\n\t switch (type) {\n\t case 'array':\n\t case 'object':\n\t return 'an ' + type;\n\t case 'boolean':\n\t case 'date':\n\t case 'regexp':\n\t return 'a ' + type;\n\t default:\n\t return type;\n\t }\n\t }\n\n\t // Returns class name of the object, if any.\n\t function getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t }\n\n\t ReactPropTypes.checkPropTypes = checkPropTypes;\n\t ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\n\t return ReactPropTypes;\n\t};\n\treturn factoryWithTypeCheckers$7;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$7;\nvar hasRequiredFactoryWithThrowingShims$7;\n\nfunction requireFactoryWithThrowingShims$7 () {\n\tif (hasRequiredFactoryWithThrowingShims$7) return factoryWithThrowingShims$7;\n\thasRequiredFactoryWithThrowingShims$7 = 1;\n\n\tvar ReactPropTypesSecret = /*@__PURE__*/ requireReactPropTypesSecret$7();\n\n\tfunction emptyFunction() {}\n\tfunction emptyFunctionWithReset() {}\n\temptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n\tfactoryWithThrowingShims$7 = function() {\n\t function shim(props, propName, componentName, location, propFullName, secret) {\n\t if (secret === ReactPropTypesSecret) {\n\t // It is still safe when called from React.\n\t return;\n\t }\n\t var err = new Error(\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use PropTypes.checkPropTypes() to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t err.name = 'Invariant Violation';\n\t throw err;\n\t }\t shim.isRequired = shim;\n\t function getShim() {\n\t return shim;\n\t }\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\t var ReactPropTypes = {\n\t array: shim,\n\t bigint: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t elementType: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim,\n\t exact: getShim,\n\n\t checkPropTypes: emptyFunctionWithReset,\n\t resetWarningCache: emptyFunction\n\t };\n\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\n\t return ReactPropTypes;\n\t};\n\treturn factoryWithThrowingShims$7;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$7;\n\nfunction requirePropTypes$7 () {\n\tif (hasRequiredPropTypes$7) return propTypes$7.exports;\n\thasRequiredPropTypes$7 = 1;\n\tif (process.env.NODE_ENV !== 'production') {\n\t var ReactIs = requireReactIs$7();\n\n\t // By explicitly using `prop-types` you are opting into new development behavior.\n\t // http://fb.me/prop-types-in-prod\n\t var throwOnDirectAccess = true;\n\t propTypes$7.exports = /*@__PURE__*/ requireFactoryWithTypeCheckers$7()(ReactIs.isElement, throwOnDirectAccess);\n\t} else {\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t propTypes$7.exports = /*@__PURE__*/ requireFactoryWithThrowingShims$7()();\n\t}\n\treturn propTypes$7.exports;\n}\n\nvar propTypesExports$7 = /*@__PURE__*/ requirePropTypes$7();\nvar PropTypes$7 = /*@__PURE__*/getDefaultExportFromCjs$7(propTypesExports$7);\n\nconst SystemOperations = _ref => {\n let {\n onPowerOff,\n onRestart,\n onPowerOffSuccess,\n onRestartSuccess,\n beforeAction,\n // 在执行关机/重启前调用\n powerOffLabel = \"system.poweroff\",\n restartLabel = \"system.restart\",\n iconClassName = \"seeder-iconfont seeder-icon-guanji1 text-xl text-neutral-400\",\n confirmMessage = \"system.confirm.message\",\n confirmTitle = \"system.confirm.title\",\n cancelText = \"system.button.cancel\",\n okText = \"system.button.confirm\"\n } = _ref;\n const intl = useIntl();\n const {\n modal\n } = App.useApp();\n const menuItems = [{\n key: \"poweroff\",\n label: typeof powerOffLabel === 'string' && powerOffLabel.includes('.') ? intl.formatMessage({\n id: powerOffLabel\n }) : powerOffLabel\n }, {\n key: \"restart\",\n label: typeof restartLabel === 'string' && restartLabel.includes('.') ? intl.formatMessage({\n id: restartLabel\n }) : restartLabel\n }];\n const doAction = action => {\n try {\n // 根据 action 决定显示的确认信息\n const actionLabels = {\n poweroff: intl.formatMessage({\n id: 'system.action.powerOff'\n }),\n restart: intl.formatMessage({\n id: 'system.action.restart'\n })\n };\n const actionText = actionLabels[action] || action;\n\n // 处理标题和消息的国际化\n const titleText = typeof confirmTitle === 'string' && confirmTitle.includes('.') ? intl.formatMessage({\n id: confirmTitle\n }) : confirmTitle;\n\n // 如果是国际化 key,使用 intl.formatMessage 处理参数\n // 如果是普通文本,使用 replace 替换占位符\n const messageText = typeof confirmMessage === 'string' && confirmMessage.includes('.') ? intl.formatMessage({\n id: confirmMessage\n }, {\n action: actionText\n }) : typeof confirmMessage === 'string' ? confirmMessage.replace('{action}', actionText) : confirmMessage;\n modal.confirm({\n icon: /*#__PURE__*/jsx(ExclamationCircleFilled, {}),\n title: titleText,\n content: messageText,\n cancelText: typeof cancelText === 'string' && cancelText.includes('.') ? intl.formatMessage({\n id: cancelText\n }) : cancelText,\n okText: typeof okText === 'string' && okText.includes('.') ? intl.formatMessage({\n id: okText\n }) : okText,\n onOk: async () => {\n // 先执行 beforeAction(用于 enterMaintenanceMode)\n if (typeof beforeAction === 'function') {\n beforeAction(action); // 可传 action 类型\n }\n if (action === 'poweroff' && onPowerOff) {\n await onPowerOff();\n } else if (action === 'restart' && onRestart) {\n await onRestart();\n }\n\n // 成功后再触发 success 回调\n if (action === 'poweroff' && typeof onPowerOffSuccess === 'function') {\n onPowerOffSuccess();\n } else if (action === 'restart' && typeof onRestartSuccess === 'function') {\n onRestartSuccess();\n }\n }\n });\n } catch (error) {\n console.error(\"\".concat(action.toUpperCase(), \" ERROR: \"), error);\n }\n };\n const handleMenuClick = _ref2 => {\n let {\n key\n } = _ref2;\n doAction(key);\n };\n return /*#__PURE__*/jsx(Dropdown, {\n menu: {\n items: menuItems,\n onClick: handleMenuClick\n },\n trigger: [\"hover\"],\n children: /*#__PURE__*/jsx(\"a\", {\n onClick: e => e.preventDefault(),\n children: /*#__PURE__*/jsx(\"i\", {\n className: iconClassName\n })\n })\n });\n};\nSystemOperations.propTypes = {\n onPowerOff: PropTypes$7.func,\n onRestart: PropTypes$7.func,\n powerOffLabel: PropTypes$7.string,\n restartLabel: PropTypes$7.string,\n iconClassName: PropTypes$7.string,\n confirmTitle: PropTypes$7.string,\n cancelText: PropTypes$7.string,\n okText: PropTypes$7.string,\n run: PropTypes$7.func\n};\nvar SystemOperations$1 = SystemOperations;\n\nconst logoBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAGaCAYAAAAfLro4AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAGj2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDg4LCAyMDIwLzA3LzEwLTIyOjA2OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YmIxNjQ4OC1hYzczLWI3NGYtODczMC1hZGZiY2Y1NTk3OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MjdjZjIwMy0zM2IyLWU3NDItYWRhNC0wNGY2YzA5ZTYxOWIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyN2NmMjAzLTMzYjItZTc0Mi1hZGE0LTA0ZjZjMDllNjE5YiIgc3RFdnQ6d2hlbj0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHN0RXZ0OndoZW49IjIwMjUtMDktMDlUMTA6NTY6NTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZkN2NjZDg5LTViMTQtMDI0MC04YjNhLTQzODU2ODk1YTFlZjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlgJupcAADw7SURBVHic7d15vKdz/f/xx5mNGWMsw1hKkaVQkmm1VFQSKr6VLIXIEtK++ZZIRQtJiG+K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NAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLR/h+CVP12K0zZoAAAAABJRU5ErkJggg==';\nconst defaultResetRoute = () => {\n window.location.href = window.location.origin;\n};\nconst useSpaLogo = function () {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n logoUrl = logoBase64,\n // 使用者传入 logo URL\n logoWidth = 100,\n logoAlt = 'logo',\n onClick = defaultResetRoute,\n buttonStyle = {\n padding: 0,\n lineHeight: 1,\n height: 'auto',\n borderStyle: 'none',\n display: 'inline-block'\n }\n } = props;\n\n // 如果没有提供 logoUrl,返回空\n if (!logoUrl) {\n return [null];\n }\n return [/*#__PURE__*/jsx(Button, {\n type: \"link\",\n style: buttonStyle,\n onClick: onClick,\n children: /*#__PURE__*/jsx(\"img\", {\n alt: logoAlt,\n src: logoUrl,\n style: {\n width: logoWidth\n }\n })\n }, \"logo\")];\n};\nuseSpaLogo.propTypes = {\n logoUrl: PropTypes$7.string,\n logoWidth: PropTypes$7.number,\n logoAlt: PropTypes$7.string,\n onClick: PropTypes$7.func\n};\nvar useSpaLogo$1 = useSpaLogo;\n\nconst defaultGetSocketUrl = url => {\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\n return \"ws://127.0.0.1:\".concat(window.location.port).concat(url);\n }\n return \"ws://\".concat(window.location.host).concat(url);\n};\nconst CommonHeader = _ref => {\n let {\n menuElement,\n productInfo = {},\n showLogo = true,\n showProductInfo = true,\n showHardwareUsage = true,\n showSystemOperations = true,\n onPowerOff,\n onRestart,\n onPowerOffSuccess,\n onRestartSuccess,\n beforeAction,\n hardwareMonitorUrl = '/ws/psmonitor/status_update',\n getSocketUrl = defaultGetSocketUrl,\n logoProps = {},\n className = '',\n style = {},\n // 新增插槽\n leftContent = null,\n // 左侧额外内容\n rightContent = null // 右侧额外内容\n } = _ref;\n const [logo] = useSpaLogo$1(logoProps);\n\n // 系统资源使用情况\n const usageElement = useHardwareUsage$1(getSocketUrl(hardwareMonitorUrl));\n return /*#__PURE__*/jsxs(Flex, {\n justify: \"space-between\",\n align: \"center\",\n className: \"common-header \".concat(className),\n style: style,\n children: [/*#__PURE__*/jsxs(Space, {\n size: 12,\n children: [showLogo && logo, showProductInfo && /*#__PURE__*/jsxs(Flex, {\n align: \"center\",\n gap: 12,\n children: [productInfo.productName && /*#__PURE__*/jsx(Typography.Title, {\n level: 4,\n style: {\n marginBottom: 0\n },\n children: productInfo.productName\n }), productInfo.version && /*#__PURE__*/jsx(Typography.Text, {\n style: {\n position: 'relative',\n top: 6,\n left: -6\n },\n children: productInfo.version\n })]\n }), leftContent]\n }), /*#__PURE__*/jsxs(Flex, {\n align: \"center\",\n gap: 10,\n children: [rightContent, showHardwareUsage && usageElement, /*#__PURE__*/jsxs(\"div\", {\n className: \"header-controls\",\n children: [menuElement && /*#__PURE__*/jsx(\"div\", {\n className: \"control-icon\",\n children: menuElement\n }), showSystemOperations && /*#__PURE__*/jsx(\"div\", {\n className: \"control-icon\",\n children: /*#__PURE__*/jsx(SystemOperations$1, {\n onPowerOff: onPowerOff,\n onRestart: onRestart,\n onPowerOffSuccess: onPowerOffSuccess,\n onRestartSuccess: onRestartSuccess,\n beforeAction: beforeAction\n })\n })]\n })]\n })]\n });\n};\nvar CommonHeader$1 = CommonHeader;\n\nconst LSMLabelField = props => {\n const intl = useIntl();\n const [lsmList, setLsmList] = useState([]);\n const {\n label = \"lsm.label\",\n onLsmSelect,\n fetchLsmData,\n formItemProps = {},\n selectProps = {},\n fieldNames = {\n label: 'label',\n value: 'label'\n }\n } = props;\n useEffect(() => {\n const loadLsmData = async () => {\n try {\n const res = await fetchLsmData();\n if (res !== null && res !== void 0 && res.length) {\n setLsmList(res);\n }\n } catch (error) {\n console.error('Failed to fetch LSM data:', error);\n }\n };\n loadLsmData();\n }, [fetchLsmData]);\n return /*#__PURE__*/jsx(Form.Item, _objectSpread2$1(_objectSpread2$1({\n label: typeof label === 'string' && label.includes('.') ? intl.formatMessage({\n id: label\n }) : label\n }, formItemProps), {}, {\n children: /*#__PURE__*/jsx(Select, _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, field), selectProps), {}, {\n options: lsmList,\n fieldNames: fieldNames,\n allowClear: true,\n showSearch: true,\n optionFilterProp: \"label\",\n onChange: (value, option) => {\n field.onChange(value);\n onLsmSelect === null || onLsmSelect === void 0 || onLsmSelect(value === undefined ? undefined : option);\n },\n placeholder: selectProps.placeholder || intl.formatMessage({\n id: 'lsm.placeholder.select'\n })\n }))\n }));\n};\nvar LSMLabelField$1 = /*#__PURE__*/memo(LSMLabelField);\n\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nconst _excluded$3 = [\"width\", \"okText\", \"cancelText\", \"styles\"];\nconst StyledModal = props => {\n const {\n width = \"520px\",\n okText = \"Apply\",\n cancelText = \"Close\",\n styles: propStyles = {}\n } = props,\n restProps = _objectWithoutProperties(props, _excluded$3);\n\n // 基础样式配置\n const baseStyles = {\n content: {\n padding: 0\n // background: \"#282828\"\n },\n header: {\n marginBottom: 0,\n padding: 0,\n paddingBlock: 16,\n paddingInlineStart: 24,\n background: \"#000000\"\n },\n body: {\n paddingBlock: 20,\n paddingInline: 24\n },\n footer: {\n marginTop: 0,\n padding: 0,\n paddingBlockEnd: 20,\n paddingInline: 24\n }\n };\n\n // 合并样式\n const styles = _objectSpread2(_objectSpread2({}, baseStyles), propStyles);\n return /*#__PURE__*/jsx(Modal, _objectSpread2({\n width: width,\n okText: okText,\n cancelText: cancelText,\n styles: styles\n }, restProps));\n};\nvar StyledModal$1 = StyledModal;\nfunction getDefaultExportFromCjs$6(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$6 = {\n exports: {}\n};\nvar reactIs$6 = {\n exports: {}\n};\nvar reactIs_production_min$6 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$6;\nfunction requireReactIs_production_min$6() {\n if (hasRequiredReactIs_production_min$6) return reactIs_production_min$6;\n hasRequiredReactIs_production_min$6 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$6.AsyncMode = l;\n reactIs_production_min$6.ConcurrentMode = m;\n reactIs_production_min$6.ContextConsumer = k;\n reactIs_production_min$6.ContextProvider = h;\n reactIs_production_min$6.Element = c;\n reactIs_production_min$6.ForwardRef = n;\n reactIs_production_min$6.Fragment = e;\n reactIs_production_min$6.Lazy = t;\n reactIs_production_min$6.Memo = r;\n reactIs_production_min$6.Portal = d;\n reactIs_production_min$6.Profiler = g;\n reactIs_production_min$6.StrictMode = f;\n reactIs_production_min$6.Suspense = p;\n reactIs_production_min$6.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$6.isConcurrentMode = A;\n reactIs_production_min$6.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$6.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$6.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$6.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$6.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$6.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$6.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$6.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$6.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$6.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$6.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$6.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$6.typeOf = z;\n return reactIs_production_min$6;\n}\nvar reactIs_development$6 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$6;\nfunction requireReactIs_development$6() {\n if (hasRequiredReactIs_development$6) return reactIs_development$6;\n hasRequiredReactIs_development$6 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$6.AsyncMode = AsyncMode;\n reactIs_development$6.ConcurrentMode = ConcurrentMode;\n reactIs_development$6.ContextConsumer = ContextConsumer;\n reactIs_development$6.ContextProvider = ContextProvider;\n reactIs_development$6.Element = Element;\n reactIs_development$6.ForwardRef = ForwardRef;\n reactIs_development$6.Fragment = Fragment;\n reactIs_development$6.Lazy = Lazy;\n reactIs_development$6.Memo = Memo;\n reactIs_development$6.Portal = Portal;\n reactIs_development$6.Profiler = Profiler;\n reactIs_development$6.StrictMode = StrictMode;\n reactIs_development$6.Suspense = Suspense;\n reactIs_development$6.isAsyncMode = isAsyncMode;\n reactIs_development$6.isConcurrentMode = isConcurrentMode;\n reactIs_development$6.isContextConsumer = isContextConsumer;\n reactIs_development$6.isContextProvider = isContextProvider;\n reactIs_development$6.isElement = isElement;\n reactIs_development$6.isForwardRef = isForwardRef;\n reactIs_development$6.isFragment = isFragment;\n reactIs_development$6.isLazy = isLazy;\n reactIs_development$6.isMemo = isMemo;\n reactIs_development$6.isPortal = isPortal;\n reactIs_development$6.isProfiler = isProfiler;\n reactIs_development$6.isStrictMode = isStrictMode;\n reactIs_development$6.isSuspense = isSuspense;\n reactIs_development$6.isValidElementType = isValidElementType;\n reactIs_development$6.typeOf = typeOf;\n })();\n }\n return reactIs_development$6;\n}\nvar hasRequiredReactIs$6;\nfunction requireReactIs$6() {\n if (hasRequiredReactIs$6) return reactIs$6.exports;\n hasRequiredReactIs$6 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$6.exports = requireReactIs_production_min$6();\n } else {\n reactIs$6.exports = requireReactIs_development$6();\n }\n return reactIs$6.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$6;\nvar hasRequiredObjectAssign$6;\nfunction requireObjectAssign$6() {\n if (hasRequiredObjectAssign$6) return objectAssign$6;\n hasRequiredObjectAssign$6 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$6 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$6;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$6;\nvar hasRequiredReactPropTypesSecret$6;\nfunction requireReactPropTypesSecret$6() {\n if (hasRequiredReactPropTypesSecret$6) return ReactPropTypesSecret_1$6;\n hasRequiredReactPropTypesSecret$6 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$6 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$6;\n}\nvar has$6;\nvar hasRequiredHas$6;\nfunction requireHas$6() {\n if (hasRequiredHas$6) return has$6;\n hasRequiredHas$6 = 1;\n has$6 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$6;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$6;\nvar hasRequiredCheckPropTypes$6;\nfunction requireCheckPropTypes$6() {\n if (hasRequiredCheckPropTypes$6) return checkPropTypes_1$6;\n hasRequiredCheckPropTypes$6 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$6();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$6();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$6 = checkPropTypes;\n return checkPropTypes_1$6;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$6;\nvar hasRequiredFactoryWithTypeCheckers$6;\nfunction requireFactoryWithTypeCheckers$6() {\n if (hasRequiredFactoryWithTypeCheckers$6) return factoryWithTypeCheckers$6;\n hasRequiredFactoryWithTypeCheckers$6 = 1;\n var ReactIs = requireReactIs$6();\n var assign = requireObjectAssign$6();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$6();\n var has = /*@__PURE__*/requireHas$6();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$6();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$6 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$6;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$6;\nvar hasRequiredFactoryWithThrowingShims$6;\nfunction requireFactoryWithThrowingShims$6() {\n if (hasRequiredFactoryWithThrowingShims$6) return factoryWithThrowingShims$6;\n hasRequiredFactoryWithThrowingShims$6 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$6();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$6 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$6;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$6;\nfunction requirePropTypes$6() {\n if (hasRequiredPropTypes$6) return propTypes$6.exports;\n hasRequiredPropTypes$6 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$6();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$6.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$6()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$6.exports = /*@__PURE__*/requireFactoryWithThrowingShims$6()();\n }\n return propTypes$6.exports;\n}\nvar propTypesExports$6 = /*@__PURE__*/requirePropTypes$6();\nvar PropTypes$6 = /*@__PURE__*/getDefaultExportFromCjs$6(propTypesExports$6);\n({\n onPowerOff: PropTypes$6.func,\n onRestart: PropTypes$6.func,\n powerOffLabel: PropTypes$6.string,\n restartLabel: PropTypes$6.string,\n iconClassName: PropTypes$6.string,\n confirmTitle: PropTypes$6.string,\n cancelText: PropTypes$6.string,\n okText: PropTypes$6.string,\n run: PropTypes$6.func\n});\n({\n logoUrl: PropTypes$6.string,\n logoWidth: PropTypes$6.number,\n logoAlt: PropTypes$6.string,\n onClick: PropTypes$6.func\n});\nfunction getDefaultExportFromCjs$5(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$5 = {\n exports: {}\n};\nvar reactIs$5 = {\n exports: {}\n};\nvar reactIs_production_min$5 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$5;\nfunction requireReactIs_production_min$5() {\n if (hasRequiredReactIs_production_min$5) return reactIs_production_min$5;\n hasRequiredReactIs_production_min$5 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$5.AsyncMode = l;\n reactIs_production_min$5.ConcurrentMode = m;\n reactIs_production_min$5.ContextConsumer = k;\n reactIs_production_min$5.ContextProvider = h;\n reactIs_production_min$5.Element = c;\n reactIs_production_min$5.ForwardRef = n;\n reactIs_production_min$5.Fragment = e;\n reactIs_production_min$5.Lazy = t;\n reactIs_production_min$5.Memo = r;\n reactIs_production_min$5.Portal = d;\n reactIs_production_min$5.Profiler = g;\n reactIs_production_min$5.StrictMode = f;\n reactIs_production_min$5.Suspense = p;\n reactIs_production_min$5.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$5.isConcurrentMode = A;\n reactIs_production_min$5.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$5.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$5.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$5.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$5.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$5.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$5.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$5.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$5.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$5.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$5.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$5.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$5.typeOf = z;\n return reactIs_production_min$5;\n}\nvar reactIs_development$5 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$5;\nfunction requireReactIs_development$5() {\n if (hasRequiredReactIs_development$5) return reactIs_development$5;\n hasRequiredReactIs_development$5 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$5.AsyncMode = AsyncMode;\n reactIs_development$5.ConcurrentMode = ConcurrentMode;\n reactIs_development$5.ContextConsumer = ContextConsumer;\n reactIs_development$5.ContextProvider = ContextProvider;\n reactIs_development$5.Element = Element;\n reactIs_development$5.ForwardRef = ForwardRef;\n reactIs_development$5.Fragment = Fragment;\n reactIs_development$5.Lazy = Lazy;\n reactIs_development$5.Memo = Memo;\n reactIs_development$5.Portal = Portal;\n reactIs_development$5.Profiler = Profiler;\n reactIs_development$5.StrictMode = StrictMode;\n reactIs_development$5.Suspense = Suspense;\n reactIs_development$5.isAsyncMode = isAsyncMode;\n reactIs_development$5.isConcurrentMode = isConcurrentMode;\n reactIs_development$5.isContextConsumer = isContextConsumer;\n reactIs_development$5.isContextProvider = isContextProvider;\n reactIs_development$5.isElement = isElement;\n reactIs_development$5.isForwardRef = isForwardRef;\n reactIs_development$5.isFragment = isFragment;\n reactIs_development$5.isLazy = isLazy;\n reactIs_development$5.isMemo = isMemo;\n reactIs_development$5.isPortal = isPortal;\n reactIs_development$5.isProfiler = isProfiler;\n reactIs_development$5.isStrictMode = isStrictMode;\n reactIs_development$5.isSuspense = isSuspense;\n reactIs_development$5.isValidElementType = isValidElementType;\n reactIs_development$5.typeOf = typeOf;\n })();\n }\n return reactIs_development$5;\n}\nvar hasRequiredReactIs$5;\nfunction requireReactIs$5() {\n if (hasRequiredReactIs$5) return reactIs$5.exports;\n hasRequiredReactIs$5 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$5.exports = requireReactIs_production_min$5();\n } else {\n reactIs$5.exports = requireReactIs_development$5();\n }\n return reactIs$5.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$5;\nvar hasRequiredObjectAssign$5;\nfunction requireObjectAssign$5() {\n if (hasRequiredObjectAssign$5) return objectAssign$5;\n hasRequiredObjectAssign$5 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$5 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$5;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$5;\nvar hasRequiredReactPropTypesSecret$5;\nfunction requireReactPropTypesSecret$5() {\n if (hasRequiredReactPropTypesSecret$5) return ReactPropTypesSecret_1$5;\n hasRequiredReactPropTypesSecret$5 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$5 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$5;\n}\nvar has$5;\nvar hasRequiredHas$5;\nfunction requireHas$5() {\n if (hasRequiredHas$5) return has$5;\n hasRequiredHas$5 = 1;\n has$5 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$5;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$5;\nvar hasRequiredCheckPropTypes$5;\nfunction requireCheckPropTypes$5() {\n if (hasRequiredCheckPropTypes$5) return checkPropTypes_1$5;\n hasRequiredCheckPropTypes$5 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$5();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$5();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$5 = checkPropTypes;\n return checkPropTypes_1$5;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$5;\nvar hasRequiredFactoryWithTypeCheckers$5;\nfunction requireFactoryWithTypeCheckers$5() {\n if (hasRequiredFactoryWithTypeCheckers$5) return factoryWithTypeCheckers$5;\n hasRequiredFactoryWithTypeCheckers$5 = 1;\n var ReactIs = requireReactIs$5();\n var assign = requireObjectAssign$5();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$5();\n var has = /*@__PURE__*/requireHas$5();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$5();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$5 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$5;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$5;\nvar hasRequiredFactoryWithThrowingShims$5;\nfunction requireFactoryWithThrowingShims$5() {\n if (hasRequiredFactoryWithThrowingShims$5) return factoryWithThrowingShims$5;\n hasRequiredFactoryWithThrowingShims$5 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$5();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$5 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$5;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$5;\nfunction requirePropTypes$5() {\n if (hasRequiredPropTypes$5) return propTypes$5.exports;\n hasRequiredPropTypes$5 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$5();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$5.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$5()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$5.exports = /*@__PURE__*/requireFactoryWithThrowingShims$5()();\n }\n return propTypes$5.exports;\n}\nvar propTypesExports$5 = /*@__PURE__*/requirePropTypes$5();\nvar PropTypes$5 = /*@__PURE__*/getDefaultExportFromCjs$5(propTypesExports$5);\n({\n onPowerOff: PropTypes$5.func,\n onRestart: PropTypes$5.func,\n powerOffLabel: PropTypes$5.string,\n restartLabel: PropTypes$5.string,\n iconClassName: PropTypes$5.string,\n confirmTitle: PropTypes$5.string,\n cancelText: PropTypes$5.string,\n okText: PropTypes$5.string,\n run: PropTypes$5.func\n});\n({\n logoUrl: PropTypes$5.string,\n logoWidth: PropTypes$5.number,\n logoAlt: PropTypes$5.string,\n onClick: PropTypes$5.func\n});\nfunction getDefaultExportFromCjs$4(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$4 = {\n exports: {}\n};\nvar reactIs$4 = {\n exports: {}\n};\nvar reactIs_production_min$4 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$4;\nfunction requireReactIs_production_min$4() {\n if (hasRequiredReactIs_production_min$4) return reactIs_production_min$4;\n hasRequiredReactIs_production_min$4 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$4.AsyncMode = l;\n reactIs_production_min$4.ConcurrentMode = m;\n reactIs_production_min$4.ContextConsumer = k;\n reactIs_production_min$4.ContextProvider = h;\n reactIs_production_min$4.Element = c;\n reactIs_production_min$4.ForwardRef = n;\n reactIs_production_min$4.Fragment = e;\n reactIs_production_min$4.Lazy = t;\n reactIs_production_min$4.Memo = r;\n reactIs_production_min$4.Portal = d;\n reactIs_production_min$4.Profiler = g;\n reactIs_production_min$4.StrictMode = f;\n reactIs_production_min$4.Suspense = p;\n reactIs_production_min$4.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$4.isConcurrentMode = A;\n reactIs_production_min$4.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$4.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$4.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$4.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$4.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$4.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$4.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$4.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$4.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$4.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$4.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$4.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$4.typeOf = z;\n return reactIs_production_min$4;\n}\nvar reactIs_development$4 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$4;\nfunction requireReactIs_development$4() {\n if (hasRequiredReactIs_development$4) return reactIs_development$4;\n hasRequiredReactIs_development$4 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$4.AsyncMode = AsyncMode;\n reactIs_development$4.ConcurrentMode = ConcurrentMode;\n reactIs_development$4.ContextConsumer = ContextConsumer;\n reactIs_development$4.ContextProvider = ContextProvider;\n reactIs_development$4.Element = Element;\n reactIs_development$4.ForwardRef = ForwardRef;\n reactIs_development$4.Fragment = Fragment;\n reactIs_development$4.Lazy = Lazy;\n reactIs_development$4.Memo = Memo;\n reactIs_development$4.Portal = Portal;\n reactIs_development$4.Profiler = Profiler;\n reactIs_development$4.StrictMode = StrictMode;\n reactIs_development$4.Suspense = Suspense;\n reactIs_development$4.isAsyncMode = isAsyncMode;\n reactIs_development$4.isConcurrentMode = isConcurrentMode;\n reactIs_development$4.isContextConsumer = isContextConsumer;\n reactIs_development$4.isContextProvider = isContextProvider;\n reactIs_development$4.isElement = isElement;\n reactIs_development$4.isForwardRef = isForwardRef;\n reactIs_development$4.isFragment = isFragment;\n reactIs_development$4.isLazy = isLazy;\n reactIs_development$4.isMemo = isMemo;\n reactIs_development$4.isPortal = isPortal;\n reactIs_development$4.isProfiler = isProfiler;\n reactIs_development$4.isStrictMode = isStrictMode;\n reactIs_development$4.isSuspense = isSuspense;\n reactIs_development$4.isValidElementType = isValidElementType;\n reactIs_development$4.typeOf = typeOf;\n })();\n }\n return reactIs_development$4;\n}\nvar hasRequiredReactIs$4;\nfunction requireReactIs$4() {\n if (hasRequiredReactIs$4) return reactIs$4.exports;\n hasRequiredReactIs$4 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$4.exports = requireReactIs_production_min$4();\n } else {\n reactIs$4.exports = requireReactIs_development$4();\n }\n return reactIs$4.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$4;\nvar hasRequiredObjectAssign$4;\nfunction requireObjectAssign$4() {\n if (hasRequiredObjectAssign$4) return objectAssign$4;\n hasRequiredObjectAssign$4 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$4 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$4;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$4;\nvar hasRequiredReactPropTypesSecret$4;\nfunction requireReactPropTypesSecret$4() {\n if (hasRequiredReactPropTypesSecret$4) return ReactPropTypesSecret_1$4;\n hasRequiredReactPropTypesSecret$4 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$4 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$4;\n}\nvar has$4;\nvar hasRequiredHas$4;\nfunction requireHas$4() {\n if (hasRequiredHas$4) return has$4;\n hasRequiredHas$4 = 1;\n has$4 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$4;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$4;\nvar hasRequiredCheckPropTypes$4;\nfunction requireCheckPropTypes$4() {\n if (hasRequiredCheckPropTypes$4) return checkPropTypes_1$4;\n hasRequiredCheckPropTypes$4 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$4();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$4();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$4 = checkPropTypes;\n return checkPropTypes_1$4;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$4;\nvar hasRequiredFactoryWithTypeCheckers$4;\nfunction requireFactoryWithTypeCheckers$4() {\n if (hasRequiredFactoryWithTypeCheckers$4) return factoryWithTypeCheckers$4;\n hasRequiredFactoryWithTypeCheckers$4 = 1;\n var ReactIs = requireReactIs$4();\n var assign = requireObjectAssign$4();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$4();\n var has = /*@__PURE__*/requireHas$4();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$4();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$4 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$4;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$4;\nvar hasRequiredFactoryWithThrowingShims$4;\nfunction requireFactoryWithThrowingShims$4() {\n if (hasRequiredFactoryWithThrowingShims$4) return factoryWithThrowingShims$4;\n hasRequiredFactoryWithThrowingShims$4 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$4();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$4 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$4;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$4;\nfunction requirePropTypes$4() {\n if (hasRequiredPropTypes$4) return propTypes$4.exports;\n hasRequiredPropTypes$4 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$4();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$4.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$4()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$4.exports = /*@__PURE__*/requireFactoryWithThrowingShims$4()();\n }\n return propTypes$4.exports;\n}\nvar propTypesExports$4 = /*@__PURE__*/requirePropTypes$4();\nvar PropTypes$4 = /*@__PURE__*/getDefaultExportFromCjs$4(propTypesExports$4);\n({\n onPowerOff: PropTypes$4.func,\n onRestart: PropTypes$4.func,\n powerOffLabel: PropTypes$4.string,\n restartLabel: PropTypes$4.string,\n iconClassName: PropTypes$4.string,\n confirmTitle: PropTypes$4.string,\n cancelText: PropTypes$4.string,\n okText: PropTypes$4.string,\n run: PropTypes$4.func\n});\n({\n logoUrl: PropTypes$4.string,\n logoWidth: PropTypes$4.number,\n logoAlt: PropTypes$4.string,\n onClick: PropTypes$4.func\n});\n\n// PropTypes 类型检查\n({\n menuElement: PropTypes$4.node,\n productInfo: PropTypes$4.shape({\n productName: PropTypes$4.string,\n version: PropTypes$4.string\n }),\n showLogo: PropTypes$4.bool,\n showProductInfo: PropTypes$4.bool,\n showHardwareUsage: PropTypes$4.bool,\n showSystemOperations: PropTypes$4.bool,\n onPowerOff: PropTypes$4.func,\n onRestart: PropTypes$4.func,\n onRun: PropTypes$4.func,\n hardwareMonitorUrl: PropTypes$4.string,\n getSocketUrl: PropTypes$4.func,\n logoProps: PropTypes$4.object,\n className: PropTypes$4.string,\n style: PropTypes$4.object\n});\nfunction getDefaultExportFromCjs$3(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$3 = {\n exports: {}\n};\nvar reactIs$3 = {\n exports: {}\n};\nvar reactIs_production_min$3 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$3;\nfunction requireReactIs_production_min$3() {\n if (hasRequiredReactIs_production_min$3) return reactIs_production_min$3;\n hasRequiredReactIs_production_min$3 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$3.AsyncMode = l;\n reactIs_production_min$3.ConcurrentMode = m;\n reactIs_production_min$3.ContextConsumer = k;\n reactIs_production_min$3.ContextProvider = h;\n reactIs_production_min$3.Element = c;\n reactIs_production_min$3.ForwardRef = n;\n reactIs_production_min$3.Fragment = e;\n reactIs_production_min$3.Lazy = t;\n reactIs_production_min$3.Memo = r;\n reactIs_production_min$3.Portal = d;\n reactIs_production_min$3.Profiler = g;\n reactIs_production_min$3.StrictMode = f;\n reactIs_production_min$3.Suspense = p;\n reactIs_production_min$3.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$3.isConcurrentMode = A;\n reactIs_production_min$3.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$3.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$3.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$3.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$3.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$3.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$3.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$3.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$3.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$3.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$3.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$3.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$3.typeOf = z;\n return reactIs_production_min$3;\n}\nvar reactIs_development$3 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$3;\nfunction requireReactIs_development$3() {\n if (hasRequiredReactIs_development$3) return reactIs_development$3;\n hasRequiredReactIs_development$3 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$3.AsyncMode = AsyncMode;\n reactIs_development$3.ConcurrentMode = ConcurrentMode;\n reactIs_development$3.ContextConsumer = ContextConsumer;\n reactIs_development$3.ContextProvider = ContextProvider;\n reactIs_development$3.Element = Element;\n reactIs_development$3.ForwardRef = ForwardRef;\n reactIs_development$3.Fragment = Fragment;\n reactIs_development$3.Lazy = Lazy;\n reactIs_development$3.Memo = Memo;\n reactIs_development$3.Portal = Portal;\n reactIs_development$3.Profiler = Profiler;\n reactIs_development$3.StrictMode = StrictMode;\n reactIs_development$3.Suspense = Suspense;\n reactIs_development$3.isAsyncMode = isAsyncMode;\n reactIs_development$3.isConcurrentMode = isConcurrentMode;\n reactIs_development$3.isContextConsumer = isContextConsumer;\n reactIs_development$3.isContextProvider = isContextProvider;\n reactIs_development$3.isElement = isElement;\n reactIs_development$3.isForwardRef = isForwardRef;\n reactIs_development$3.isFragment = isFragment;\n reactIs_development$3.isLazy = isLazy;\n reactIs_development$3.isMemo = isMemo;\n reactIs_development$3.isPortal = isPortal;\n reactIs_development$3.isProfiler = isProfiler;\n reactIs_development$3.isStrictMode = isStrictMode;\n reactIs_development$3.isSuspense = isSuspense;\n reactIs_development$3.isValidElementType = isValidElementType;\n reactIs_development$3.typeOf = typeOf;\n })();\n }\n return reactIs_development$3;\n}\nvar hasRequiredReactIs$3;\nfunction requireReactIs$3() {\n if (hasRequiredReactIs$3) return reactIs$3.exports;\n hasRequiredReactIs$3 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$3.exports = requireReactIs_production_min$3();\n } else {\n reactIs$3.exports = requireReactIs_development$3();\n }\n return reactIs$3.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$3;\nvar hasRequiredObjectAssign$3;\nfunction requireObjectAssign$3() {\n if (hasRequiredObjectAssign$3) return objectAssign$3;\n hasRequiredObjectAssign$3 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$3 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$3;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$3;\nvar hasRequiredReactPropTypesSecret$3;\nfunction requireReactPropTypesSecret$3() {\n if (hasRequiredReactPropTypesSecret$3) return ReactPropTypesSecret_1$3;\n hasRequiredReactPropTypesSecret$3 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$3 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$3;\n}\nvar has$3;\nvar hasRequiredHas$3;\nfunction requireHas$3() {\n if (hasRequiredHas$3) return has$3;\n hasRequiredHas$3 = 1;\n has$3 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$3;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$3;\nvar hasRequiredCheckPropTypes$3;\nfunction requireCheckPropTypes$3() {\n if (hasRequiredCheckPropTypes$3) return checkPropTypes_1$3;\n hasRequiredCheckPropTypes$3 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$3();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$3();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$3 = checkPropTypes;\n return checkPropTypes_1$3;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$3;\nvar hasRequiredFactoryWithTypeCheckers$3;\nfunction requireFactoryWithTypeCheckers$3() {\n if (hasRequiredFactoryWithTypeCheckers$3) return factoryWithTypeCheckers$3;\n hasRequiredFactoryWithTypeCheckers$3 = 1;\n var ReactIs = requireReactIs$3();\n var assign = requireObjectAssign$3();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$3();\n var has = /*@__PURE__*/requireHas$3();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$3();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$3 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$3;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$3;\nvar hasRequiredFactoryWithThrowingShims$3;\nfunction requireFactoryWithThrowingShims$3() {\n if (hasRequiredFactoryWithThrowingShims$3) return factoryWithThrowingShims$3;\n hasRequiredFactoryWithThrowingShims$3 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$3();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$3 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$3;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$3;\nfunction requirePropTypes$3() {\n if (hasRequiredPropTypes$3) return propTypes$3.exports;\n hasRequiredPropTypes$3 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$3();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$3.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$3()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$3.exports = /*@__PURE__*/requireFactoryWithThrowingShims$3()();\n }\n return propTypes$3.exports;\n}\nvar propTypesExports$3 = /*@__PURE__*/requirePropTypes$3();\nvar PropTypes$3 = /*@__PURE__*/getDefaultExportFromCjs$3(propTypesExports$3);\n({\n onPowerOff: PropTypes$3.func,\n onRestart: PropTypes$3.func,\n powerOffLabel: PropTypes$3.string,\n restartLabel: PropTypes$3.string,\n iconClassName: PropTypes$3.string,\n confirmTitle: PropTypes$3.string,\n cancelText: PropTypes$3.string,\n okText: PropTypes$3.string,\n run: PropTypes$3.func\n});\n({\n logoUrl: PropTypes$3.string,\n logoWidth: PropTypes$3.number,\n logoAlt: PropTypes$3.string,\n onClick: PropTypes$3.func\n});\n\n// PropTypes 类型检查\n({\n menuElement: PropTypes$3.node,\n productInfo: PropTypes$3.shape({\n productName: PropTypes$3.string,\n version: PropTypes$3.string\n }),\n showLogo: PropTypes$3.bool,\n showProductInfo: PropTypes$3.bool,\n showHardwareUsage: PropTypes$3.bool,\n showSystemOperations: PropTypes$3.bool,\n onPowerOff: PropTypes$3.func,\n onRestart: PropTypes$3.func,\n onRun: PropTypes$3.func,\n hardwareMonitorUrl: PropTypes$3.string,\n getSocketUrl: PropTypes$3.func,\n logoProps: PropTypes$3.object,\n className: PropTypes$3.string,\n style: PropTypes$3.object\n});\nfunction getDefaultExportFromCjs$2(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$2 = {\n exports: {}\n};\nvar reactIs$2 = {\n exports: {}\n};\nvar reactIs_production_min$2 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$2;\nfunction requireReactIs_production_min$2() {\n if (hasRequiredReactIs_production_min$2) return reactIs_production_min$2;\n hasRequiredReactIs_production_min$2 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$2.AsyncMode = l;\n reactIs_production_min$2.ConcurrentMode = m;\n reactIs_production_min$2.ContextConsumer = k;\n reactIs_production_min$2.ContextProvider = h;\n reactIs_production_min$2.Element = c;\n reactIs_production_min$2.ForwardRef = n;\n reactIs_production_min$2.Fragment = e;\n reactIs_production_min$2.Lazy = t;\n reactIs_production_min$2.Memo = r;\n reactIs_production_min$2.Portal = d;\n reactIs_production_min$2.Profiler = g;\n reactIs_production_min$2.StrictMode = f;\n reactIs_production_min$2.Suspense = p;\n reactIs_production_min$2.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$2.isConcurrentMode = A;\n reactIs_production_min$2.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$2.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$2.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$2.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$2.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$2.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$2.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$2.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$2.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$2.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$2.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$2.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$2.typeOf = z;\n return reactIs_production_min$2;\n}\nvar reactIs_development$2 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$2;\nfunction requireReactIs_development$2() {\n if (hasRequiredReactIs_development$2) return reactIs_development$2;\n hasRequiredReactIs_development$2 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$2.AsyncMode = AsyncMode;\n reactIs_development$2.ConcurrentMode = ConcurrentMode;\n reactIs_development$2.ContextConsumer = ContextConsumer;\n reactIs_development$2.ContextProvider = ContextProvider;\n reactIs_development$2.Element = Element;\n reactIs_development$2.ForwardRef = ForwardRef;\n reactIs_development$2.Fragment = Fragment;\n reactIs_development$2.Lazy = Lazy;\n reactIs_development$2.Memo = Memo;\n reactIs_development$2.Portal = Portal;\n reactIs_development$2.Profiler = Profiler;\n reactIs_development$2.StrictMode = StrictMode;\n reactIs_development$2.Suspense = Suspense;\n reactIs_development$2.isAsyncMode = isAsyncMode;\n reactIs_development$2.isConcurrentMode = isConcurrentMode;\n reactIs_development$2.isContextConsumer = isContextConsumer;\n reactIs_development$2.isContextProvider = isContextProvider;\n reactIs_development$2.isElement = isElement;\n reactIs_development$2.isForwardRef = isForwardRef;\n reactIs_development$2.isFragment = isFragment;\n reactIs_development$2.isLazy = isLazy;\n reactIs_development$2.isMemo = isMemo;\n reactIs_development$2.isPortal = isPortal;\n reactIs_development$2.isProfiler = isProfiler;\n reactIs_development$2.isStrictMode = isStrictMode;\n reactIs_development$2.isSuspense = isSuspense;\n reactIs_development$2.isValidElementType = isValidElementType;\n reactIs_development$2.typeOf = typeOf;\n })();\n }\n return reactIs_development$2;\n}\nvar hasRequiredReactIs$2;\nfunction requireReactIs$2() {\n if (hasRequiredReactIs$2) return reactIs$2.exports;\n hasRequiredReactIs$2 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$2.exports = requireReactIs_production_min$2();\n } else {\n reactIs$2.exports = requireReactIs_development$2();\n }\n return reactIs$2.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$2;\nvar hasRequiredObjectAssign$2;\nfunction requireObjectAssign$2() {\n if (hasRequiredObjectAssign$2) return objectAssign$2;\n hasRequiredObjectAssign$2 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$2 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$2;\nvar hasRequiredReactPropTypesSecret$2;\nfunction requireReactPropTypesSecret$2() {\n if (hasRequiredReactPropTypesSecret$2) return ReactPropTypesSecret_1$2;\n hasRequiredReactPropTypesSecret$2 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$2 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$2;\n}\nvar has$2;\nvar hasRequiredHas$2;\nfunction requireHas$2() {\n if (hasRequiredHas$2) return has$2;\n hasRequiredHas$2 = 1;\n has$2 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$2;\nvar hasRequiredCheckPropTypes$2;\nfunction requireCheckPropTypes$2() {\n if (hasRequiredCheckPropTypes$2) return checkPropTypes_1$2;\n hasRequiredCheckPropTypes$2 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$2();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$2();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$2 = checkPropTypes;\n return checkPropTypes_1$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$2;\nvar hasRequiredFactoryWithTypeCheckers$2;\nfunction requireFactoryWithTypeCheckers$2() {\n if (hasRequiredFactoryWithTypeCheckers$2) return factoryWithTypeCheckers$2;\n hasRequiredFactoryWithTypeCheckers$2 = 1;\n var ReactIs = requireReactIs$2();\n var assign = requireObjectAssign$2();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$2();\n var has = /*@__PURE__*/requireHas$2();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$2();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$2 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$2;\nvar hasRequiredFactoryWithThrowingShims$2;\nfunction requireFactoryWithThrowingShims$2() {\n if (hasRequiredFactoryWithThrowingShims$2) return factoryWithThrowingShims$2;\n hasRequiredFactoryWithThrowingShims$2 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$2();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$2 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$2;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$2;\nfunction requirePropTypes$2() {\n if (hasRequiredPropTypes$2) return propTypes$2.exports;\n hasRequiredPropTypes$2 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$2();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$2.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$2()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$2.exports = /*@__PURE__*/requireFactoryWithThrowingShims$2()();\n }\n return propTypes$2.exports;\n}\nvar propTypesExports$2 = /*@__PURE__*/requirePropTypes$2();\nvar PropTypes$2 = /*@__PURE__*/getDefaultExportFromCjs$2(propTypesExports$2);\n({\n onPowerOff: PropTypes$2.func,\n onRestart: PropTypes$2.func,\n powerOffLabel: PropTypes$2.string,\n restartLabel: PropTypes$2.string,\n iconClassName: PropTypes$2.string,\n confirmTitle: PropTypes$2.string,\n cancelText: PropTypes$2.string,\n okText: PropTypes$2.string,\n run: PropTypes$2.func\n});\n({\n logoUrl: PropTypes$2.string,\n logoWidth: PropTypes$2.number,\n logoAlt: PropTypes$2.string,\n onClick: PropTypes$2.func\n});\n\n// PropTypes 类型检查\n({\n menuElement: PropTypes$2.node,\n productInfo: PropTypes$2.shape({\n productName: PropTypes$2.string,\n version: PropTypes$2.string\n }),\n showLogo: PropTypes$2.bool,\n showProductInfo: PropTypes$2.bool,\n showHardwareUsage: PropTypes$2.bool,\n showSystemOperations: PropTypes$2.bool,\n onPowerOff: PropTypes$2.func,\n onRestart: PropTypes$2.func,\n onRun: PropTypes$2.func,\n hardwareMonitorUrl: PropTypes$2.string,\n getSocketUrl: PropTypes$2.func,\n logoProps: PropTypes$2.object,\n className: PropTypes$2.string,\n style: PropTypes$2.object\n});\nfunction getDefaultExportFromCjs$1(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes$1 = {\n exports: {}\n};\nvar reactIs$1 = {\n exports: {}\n};\nvar reactIs_production_min$1 = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min$1;\nfunction requireReactIs_production_min$1() {\n if (hasRequiredReactIs_production_min$1) return reactIs_production_min$1;\n hasRequiredReactIs_production_min$1 = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min$1.AsyncMode = l;\n reactIs_production_min$1.ConcurrentMode = m;\n reactIs_production_min$1.ContextConsumer = k;\n reactIs_production_min$1.ContextProvider = h;\n reactIs_production_min$1.Element = c;\n reactIs_production_min$1.ForwardRef = n;\n reactIs_production_min$1.Fragment = e;\n reactIs_production_min$1.Lazy = t;\n reactIs_production_min$1.Memo = r;\n reactIs_production_min$1.Portal = d;\n reactIs_production_min$1.Profiler = g;\n reactIs_production_min$1.StrictMode = f;\n reactIs_production_min$1.Suspense = p;\n reactIs_production_min$1.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min$1.isConcurrentMode = A;\n reactIs_production_min$1.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min$1.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min$1.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min$1.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min$1.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min$1.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min$1.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min$1.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min$1.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min$1.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min$1.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min$1.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min$1.typeOf = z;\n return reactIs_production_min$1;\n}\nvar reactIs_development$1 = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development$1;\nfunction requireReactIs_development$1() {\n if (hasRequiredReactIs_development$1) return reactIs_development$1;\n hasRequiredReactIs_development$1 = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development$1.AsyncMode = AsyncMode;\n reactIs_development$1.ConcurrentMode = ConcurrentMode;\n reactIs_development$1.ContextConsumer = ContextConsumer;\n reactIs_development$1.ContextProvider = ContextProvider;\n reactIs_development$1.Element = Element;\n reactIs_development$1.ForwardRef = ForwardRef;\n reactIs_development$1.Fragment = Fragment;\n reactIs_development$1.Lazy = Lazy;\n reactIs_development$1.Memo = Memo;\n reactIs_development$1.Portal = Portal;\n reactIs_development$1.Profiler = Profiler;\n reactIs_development$1.StrictMode = StrictMode;\n reactIs_development$1.Suspense = Suspense;\n reactIs_development$1.isAsyncMode = isAsyncMode;\n reactIs_development$1.isConcurrentMode = isConcurrentMode;\n reactIs_development$1.isContextConsumer = isContextConsumer;\n reactIs_development$1.isContextProvider = isContextProvider;\n reactIs_development$1.isElement = isElement;\n reactIs_development$1.isForwardRef = isForwardRef;\n reactIs_development$1.isFragment = isFragment;\n reactIs_development$1.isLazy = isLazy;\n reactIs_development$1.isMemo = isMemo;\n reactIs_development$1.isPortal = isPortal;\n reactIs_development$1.isProfiler = isProfiler;\n reactIs_development$1.isStrictMode = isStrictMode;\n reactIs_development$1.isSuspense = isSuspense;\n reactIs_development$1.isValidElementType = isValidElementType;\n reactIs_development$1.typeOf = typeOf;\n })();\n }\n return reactIs_development$1;\n}\nvar hasRequiredReactIs$1;\nfunction requireReactIs$1() {\n if (hasRequiredReactIs$1) return reactIs$1.exports;\n hasRequiredReactIs$1 = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs$1.exports = requireReactIs_production_min$1();\n } else {\n reactIs$1.exports = requireReactIs_development$1();\n }\n return reactIs$1.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign$1;\nvar hasRequiredObjectAssign$1;\nfunction requireObjectAssign$1() {\n if (hasRequiredObjectAssign$1) return objectAssign$1;\n hasRequiredObjectAssign$1 = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign$1 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign$1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1$1;\nvar hasRequiredReactPropTypesSecret$1;\nfunction requireReactPropTypesSecret$1() {\n if (hasRequiredReactPropTypesSecret$1) return ReactPropTypesSecret_1$1;\n hasRequiredReactPropTypesSecret$1 = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1$1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1$1;\n}\nvar has$1;\nvar hasRequiredHas$1;\nfunction requireHas$1() {\n if (hasRequiredHas$1) return has$1;\n hasRequiredHas$1 = 1;\n has$1 = Function.call.bind(Object.prototype.hasOwnProperty);\n return has$1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1$1;\nvar hasRequiredCheckPropTypes$1;\nfunction requireCheckPropTypes$1() {\n if (hasRequiredCheckPropTypes$1) return checkPropTypes_1$1;\n hasRequiredCheckPropTypes$1 = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$1();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas$1();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1$1 = checkPropTypes;\n return checkPropTypes_1$1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers$1;\nvar hasRequiredFactoryWithTypeCheckers$1;\nfunction requireFactoryWithTypeCheckers$1() {\n if (hasRequiredFactoryWithTypeCheckers$1) return factoryWithTypeCheckers$1;\n hasRequiredFactoryWithTypeCheckers$1 = 1;\n var ReactIs = requireReactIs$1();\n var assign = requireObjectAssign$1();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$1();\n var has = /*@__PURE__*/requireHas$1();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes$1();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers$1 = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers$1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims$1;\nvar hasRequiredFactoryWithThrowingShims$1;\nfunction requireFactoryWithThrowingShims$1() {\n if (hasRequiredFactoryWithThrowingShims$1) return factoryWithThrowingShims$1;\n hasRequiredFactoryWithThrowingShims$1 = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret$1();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims$1 = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims$1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes$1;\nfunction requirePropTypes$1() {\n if (hasRequiredPropTypes$1) return propTypes$1.exports;\n hasRequiredPropTypes$1 = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs$1();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes$1.exports = /*@__PURE__*/requireFactoryWithTypeCheckers$1()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes$1.exports = /*@__PURE__*/requireFactoryWithThrowingShims$1()();\n }\n return propTypes$1.exports;\n}\nvar propTypesExports$1 = /*@__PURE__*/requirePropTypes$1();\nvar PropTypes$1 = /*@__PURE__*/getDefaultExportFromCjs$1(propTypesExports$1);\n({\n onPowerOff: PropTypes$1.func,\n onRestart: PropTypes$1.func,\n powerOffLabel: PropTypes$1.string,\n restartLabel: PropTypes$1.string,\n iconClassName: PropTypes$1.string,\n confirmTitle: PropTypes$1.string,\n cancelText: PropTypes$1.string,\n okText: PropTypes$1.string,\n run: PropTypes$1.func\n});\n({\n logoUrl: PropTypes$1.string,\n logoWidth: PropTypes$1.number,\n logoAlt: PropTypes$1.string,\n onClick: PropTypes$1.func\n});\n\n// PropTypes 类型检查\n({\n menuElement: PropTypes$1.node,\n productInfo: PropTypes$1.shape({\n productName: PropTypes$1.string,\n version: PropTypes$1.string\n }),\n showLogo: PropTypes$1.bool,\n showProductInfo: PropTypes$1.bool,\n showHardwareUsage: PropTypes$1.bool,\n showSystemOperations: PropTypes$1.bool,\n onPowerOff: PropTypes$1.func,\n onRestart: PropTypes$1.func,\n onRun: PropTypes$1.func,\n hardwareMonitorUrl: PropTypes$1.string,\n getSocketUrl: PropTypes$1.func,\n logoProps: PropTypes$1.object,\n className: PropTypes$1.string,\n style: PropTypes$1.object\n});\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\nvar propTypes = {\n exports: {}\n};\nvar reactIs = {\n exports: {}\n};\nvar reactIs_production_min = {};\n\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min;\nfunction requireReactIs_production_min() {\n if (hasRequiredReactIs_production_min) return reactIs_production_min;\n hasRequiredReactIs_production_min = 1;\n var b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n function z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n }\n function A(a) {\n return z(a) === m;\n }\n reactIs_production_min.AsyncMode = l;\n reactIs_production_min.ConcurrentMode = m;\n reactIs_production_min.ContextConsumer = k;\n reactIs_production_min.ContextProvider = h;\n reactIs_production_min.Element = c;\n reactIs_production_min.ForwardRef = n;\n reactIs_production_min.Fragment = e;\n reactIs_production_min.Lazy = t;\n reactIs_production_min.Memo = r;\n reactIs_production_min.Portal = d;\n reactIs_production_min.Profiler = g;\n reactIs_production_min.StrictMode = f;\n reactIs_production_min.Suspense = p;\n reactIs_production_min.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n };\n reactIs_production_min.isConcurrentMode = A;\n reactIs_production_min.isContextConsumer = function (a) {\n return z(a) === k;\n };\n reactIs_production_min.isContextProvider = function (a) {\n return z(a) === h;\n };\n reactIs_production_min.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n };\n reactIs_production_min.isForwardRef = function (a) {\n return z(a) === n;\n };\n reactIs_production_min.isFragment = function (a) {\n return z(a) === e;\n };\n reactIs_production_min.isLazy = function (a) {\n return z(a) === t;\n };\n reactIs_production_min.isMemo = function (a) {\n return z(a) === r;\n };\n reactIs_production_min.isPortal = function (a) {\n return z(a) === d;\n };\n reactIs_production_min.isProfiler = function (a) {\n return z(a) === g;\n };\n reactIs_production_min.isStrictMode = function (a) {\n return z(a) === f;\n };\n reactIs_production_min.isSuspense = function (a) {\n return z(a) === p;\n };\n reactIs_production_min.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n };\n reactIs_production_min.typeOf = z;\n return reactIs_production_min;\n}\nvar reactIs_development = {};\n\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development;\nfunction requireReactIs_development() {\n if (hasRequiredReactIs_development) return reactIs_development;\n hasRequiredReactIs_development = 1;\n if (process.env.NODE_ENV !== \"production\") {\n (function () {\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === 'function' && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n function isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n reactIs_development.AsyncMode = AsyncMode;\n reactIs_development.ConcurrentMode = ConcurrentMode;\n reactIs_development.ContextConsumer = ContextConsumer;\n reactIs_development.ContextProvider = ContextProvider;\n reactIs_development.Element = Element;\n reactIs_development.ForwardRef = ForwardRef;\n reactIs_development.Fragment = Fragment;\n reactIs_development.Lazy = Lazy;\n reactIs_development.Memo = Memo;\n reactIs_development.Portal = Portal;\n reactIs_development.Profiler = Profiler;\n reactIs_development.StrictMode = StrictMode;\n reactIs_development.Suspense = Suspense;\n reactIs_development.isAsyncMode = isAsyncMode;\n reactIs_development.isConcurrentMode = isConcurrentMode;\n reactIs_development.isContextConsumer = isContextConsumer;\n reactIs_development.isContextProvider = isContextProvider;\n reactIs_development.isElement = isElement;\n reactIs_development.isForwardRef = isForwardRef;\n reactIs_development.isFragment = isFragment;\n reactIs_development.isLazy = isLazy;\n reactIs_development.isMemo = isMemo;\n reactIs_development.isPortal = isPortal;\n reactIs_development.isProfiler = isProfiler;\n reactIs_development.isStrictMode = isStrictMode;\n reactIs_development.isSuspense = isSuspense;\n reactIs_development.isValidElementType = isValidElementType;\n reactIs_development.typeOf = typeOf;\n })();\n }\n return reactIs_development;\n}\nvar hasRequiredReactIs;\nfunction requireReactIs() {\n if (hasRequiredReactIs) return reactIs.exports;\n hasRequiredReactIs = 1;\n if (process.env.NODE_ENV === 'production') {\n reactIs.exports = requireReactIs_production_min();\n } else {\n reactIs.exports = requireReactIs_development();\n }\n return reactIs.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\nvar objectAssign;\nvar hasRequiredObjectAssign;\nfunction requireObjectAssign() {\n if (hasRequiredObjectAssign) return objectAssign;\n hasRequiredObjectAssign = 1;\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n return objectAssign;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret_1;\nvar hasRequiredReactPropTypesSecret;\nfunction requireReactPropTypesSecret() {\n if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n hasRequiredReactPropTypesSecret = 1;\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1;\n}\nvar has;\nvar hasRequiredHas;\nfunction requireHas() {\n if (hasRequiredHas) return has;\n hasRequiredHas = 1;\n has = Function.call.bind(Object.prototype.hasOwnProperty);\n return has;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar checkPropTypes_1;\nvar hasRequiredCheckPropTypes;\nfunction requireCheckPropTypes() {\n if (hasRequiredCheckPropTypes) return checkPropTypes_1;\n hasRequiredCheckPropTypes = 1;\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret();\n var loggedTypeFailures = {};\n var has = /*@__PURE__*/requireHas();\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {/**/}\n };\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n }\n\n /**\n * Resets warning cache when testing.\n *\n * @private\n */\n checkPropTypes.resetWarningCache = function () {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n };\n checkPropTypes_1 = checkPropTypes;\n return checkPropTypes_1;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithTypeCheckers;\nvar hasRequiredFactoryWithTypeCheckers;\nfunction requireFactoryWithTypeCheckers() {\n if (hasRequiredFactoryWithTypeCheckers) return factoryWithTypeCheckers;\n hasRequiredFactoryWithTypeCheckers = 1;\n var ReactIs = requireReactIs();\n var assign = requireObjectAssign();\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret();\n var has = /*@__PURE__*/requireHas();\n var checkPropTypes = /*@__PURE__*/requireCheckPropTypes();\n var printWarning = function () {};\n if (process.env.NODE_ENV !== 'production') {\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n factoryWithTypeCheckers = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data : {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.');\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {\n expectedType: expectedType\n });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).');\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.');\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? ', expected one of type [' + expectedTypes.join(', ') + ']' : '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.');\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithTypeCheckers;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar factoryWithThrowingShims;\nvar hasRequiredFactoryWithThrowingShims;\nfunction requireFactoryWithThrowingShims() {\n if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n hasRequiredFactoryWithThrowingShims = 1;\n var ReactPropTypesSecret = /*@__PURE__*/requireReactPropTypesSecret();\n function emptyFunction() {}\n function emptyFunctionWithReset() {}\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n return factoryWithThrowingShims;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredPropTypes;\nfunction requirePropTypes() {\n if (hasRequiredPropTypes) return propTypes.exports;\n hasRequiredPropTypes = 1;\n if (process.env.NODE_ENV !== 'production') {\n var ReactIs = requireReactIs();\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n propTypes.exports = /*@__PURE__*/requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes.exports = /*@__PURE__*/requireFactoryWithThrowingShims()();\n }\n return propTypes.exports;\n}\nvar propTypesExports = /*@__PURE__*/requirePropTypes();\nvar PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);\n({\n onPowerOff: PropTypes.func,\n onRestart: PropTypes.func,\n powerOffLabel: PropTypes.string,\n restartLabel: PropTypes.string,\n iconClassName: PropTypes.string,\n confirmTitle: PropTypes.string,\n cancelText: PropTypes.string,\n okText: PropTypes.string,\n run: PropTypes.func\n});\n({\n logoUrl: PropTypes.string,\n logoWidth: PropTypes.number,\n logoAlt: PropTypes.string,\n onClick: PropTypes.func\n});\n\n// PropTypes 类型检查\n({\n menuElement: PropTypes.node,\n productInfo: PropTypes.shape({\n productName: PropTypes.string,\n version: PropTypes.string\n }),\n showLogo: PropTypes.bool,\n showProductInfo: PropTypes.bool,\n showHardwareUsage: PropTypes.bool,\n showSystemOperations: PropTypes.bool,\n onPowerOff: PropTypes.func,\n onRestart: PropTypes.func,\n onRun: PropTypes.func,\n hardwareMonitorUrl: PropTypes.string,\n getSocketUrl: PropTypes.func,\n logoProps: PropTypes.object,\n className: PropTypes.string,\n style: PropTypes.object\n});\n\nconst numberProps = {\n controls: false,\n keyboard: false,\n changeOnWheel: false,\n precision: 0\n};\nconst NmosModal = _ref => {\n let {\n open,\n onClose,\n getNmosSettings,\n updateNmosSettings,\n hostAddressOptions = [],\n modalProps = {},\n formProps = {}\n } = _ref;\n const intl = useIntl();\n const [nmosSettings, setNmosSettings] = useState(null);\n const [loading, setLoading] = useState(false);\n const [form] = Form.useForm();\n const {\n message\n } = App.useApp();\n useEffect(() => {\n // 重置表单和状态当 Modal 打开时\n if (open) {\n setLoading(true);\n getNmosSettings().then(data => {\n if (data) {\n setNmosSettings(data);\n // 数据加载后设置表单值\n form.setFieldsValue({\n host_addresses: data.host_addresses || [],\n domain: data.domain,\n registry_address: data.registry_address,\n registration_port: data.registration_port,\n registry_version: data.registry_version,\n logging_level: data.logging_level\n });\n }\n }).catch(err => {\n console.error(\"Failed to fetch settings\", err);\n }).finally(() => {\n setLoading(false);\n });\n } else {\n // 关闭时重置表单\n form.resetFields();\n setNmosSettings(null);\n }\n }, [open, form, getNmosSettings]);\n const handleSubmit = async () => {\n const values = await form.getFieldsValue();\n setLoading(true);\n try {\n const response = await updateNmosSettings(_objectSpread2$1(_objectSpread2$1({}, nmosSettings), values));\n if (response) {\n message.success(intl.formatMessage({\n id: 'nmos.saveSuccess'\n }));\n setTimeout(() => {\n onClose();\n }, 1500);\n }\n } catch (error) {\n console.error('Update failed:', error);\n } finally {\n setLoading(false);\n }\n };\n return /*#__PURE__*/jsx(StyledModal$1, _objectSpread2$1(_objectSpread2$1({\n title: intl.formatMessage({\n id: 'nmos.title'\n }),\n width: 650,\n open: open,\n okText: intl.formatMessage({\n id: 'button.apply'\n }),\n cancelText: intl.formatMessage({\n id: 'button.close'\n }),\n onOk: handleSubmit,\n onCancel: onClose,\n confirmLoading: loading,\n destroyOnHidden: true // 关闭时销毁组件,确保下次打开重新初始化\n }, modalProps), {}, {\n children: /*#__PURE__*/jsxs(Form, _objectSpread2$1(_objectSpread2$1({\n form: form,\n name: \"nmosForm\",\n labelCol: {\n span: 5\n },\n wrapperCol: {\n span: 19\n },\n autoComplete: \"off\",\n disabled: loading\n }, formProps), {}, {\n children: [/*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.hostAddress'\n }),\n name: \"host_addresses\",\n children: /*#__PURE__*/jsx(Select, {\n mode: \"multiple\",\n options: hostAddressOptions,\n fieldNames: {\n label: \"display_name\",\n value: \"ip_address\"\n },\n placeholder: intl.formatMessage({\n id: 'nmos.placeholder.selectHostAddress'\n }),\n allowClear: true\n })\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.domain'\n }),\n name: \"domain\",\n children: /*#__PURE__*/jsx(Input, {})\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.registryAddress'\n }),\n name: \"registry_address\",\n children: /*#__PURE__*/jsx(Input, {})\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.registrationPort'\n }),\n name: \"registration_port\",\n children: /*#__PURE__*/jsx(InputNumber, _objectSpread2$1(_objectSpread2$1({}, numberProps), {}, {\n min: 0,\n max: 65535,\n style: {\n width: '100%'\n }\n }))\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.registryVersion'\n }),\n name: \"registry_version\",\n children: /*#__PURE__*/jsx(Select, {\n options: [{\n label: \"v1.0\",\n value: \"v1.0\"\n }, {\n label: \"v1.1\",\n value: \"v1.1\"\n }, {\n label: \"v1.2\",\n value: \"v1.2\"\n }, {\n label: \"v1.3\",\n value: \"v1.3\"\n }],\n placeholder: intl.formatMessage({\n id: 'nmos.placeholder.selectVersion'\n })\n })\n }), /*#__PURE__*/jsx(Form.Item, {\n label: intl.formatMessage({\n id: 'nmos.loggingLevel'\n }),\n name: \"logging_level\",\n children: /*#__PURE__*/jsx(InputNumber, _objectSpread2$1(_objectSpread2$1({}, numberProps), {}, {\n min: -40,\n max: 40,\n style: {\n width: '100%'\n }\n }))\n })]\n }))\n }));\n};\nvar NmosModal$1 = /*#__PURE__*/memo(NmosModal);\n\nconst useDeviceHealthCheck = function () {\n let {\n healthCheckUrl = '/api/get_fmt',\n maxRetries = 90,\n checkInterval = 2000,\n onRedirect,\n redirectPath = '/'\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const [error, setError] = useState(null);\n const retryCountRef = useRef(0);\n const abortControllerRef = useRef(null); // 用于取消轮询\n\n // 默认跳转行为:原生页面跳转(兼容无路由场景)\n const handleRedirect = useCallback(path => {\n if (onRedirect) {\n onRedirect(path);\n } else {\n // 降级到原生跳转,避免依赖 history\n window.location.assign(path);\n }\n }, [onRedirect]);\n\n // 健康检查函数\n const checkHealth = async () => {\n var _abortControllerRef$c;\n if ((_abortControllerRef$c = abortControllerRef.current) !== null && _abortControllerRef$c !== void 0 && _abortControllerRef$c.signal.aborted) return false;\n try {\n var _abortControllerRef$c2;\n setError(null);\n const res = await fetch(healthCheckUrl, {\n method: 'HEAD',\n signal: (_abortControllerRef$c2 = abortControllerRef.current) === null || _abortControllerRef$c2 === void 0 ? void 0 : _abortControllerRef$c2.signal\n });\n if (res.ok) {\n handleRedirect(redirectPath);\n return true;\n }\n return false;\n } catch (err) {\n if (err.name === 'AbortError') return false;\n setError('Unable to connect to the device. Please check your network.');\n return false;\n }\n };\n const poll = async () => {\n var _abortControllerRef$c3;\n if (retryCountRef.current >= maxRetries) {\n setError('Unable to connect to the device. Click below to retry.');\n return;\n }\n const success = await checkHealth();\n if (success) return;\n if (!((_abortControllerRef$c3 = abortControllerRef.current) !== null && _abortControllerRef$c3 !== void 0 && _abortControllerRef$c3.signal.aborted)) {\n retryCountRef.current += 1;\n setTimeout(poll, checkInterval);\n }\n };\n\n // 轮询逻辑\n const startPolling = useCallback(() => {\n // 重置状态\n retryCountRef.current = 0;\n setError(null);\n // 初始化 AbortController\n abortControllerRef.current = new AbortController();\n poll();\n }, []);\n const manualRetry = useCallback(() => {\n retryCountRef.current = 0;\n setError(null);\n poll();\n }, []);\n const cleanup = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n }, []);\n return {\n error,\n startPolling,\n manualRetry,\n cleanup\n };\n};\n\nconst MaintenancePage = _ref => {\n let {\n isRestart = false,\n healthCheckUrl = '/api/get_fmt',\n redirectPath = '/',\n onRedirect,\n maxRetries = 90,\n // 最多重试 90 次(约 180 秒)\n checkInterval = 2000,\n // 每 2 秒重试\n countdownSeconds = 30 // 倒计时初始值,单位秒\n } = _ref;\n const intl = useIntl();\n const [countdown, setCountdown] = useState(countdownSeconds);\n const {\n error,\n startPolling,\n manualRetry,\n cleanup\n } = useDeviceHealthCheck({\n healthCheckUrl,\n redirectPath,\n onRedirect,\n maxRetries,\n checkInterval\n });\n useEffect(() => {\n if (!isRestart) return;\n const countdownTimer = setInterval(() => {\n setCountdown(prev => Math.max(0, prev - 1));\n }, 1000);\n const firstCheck = async () => {\n try {\n const res = await fetch(healthCheckUrl, {\n method: 'HEAD'\n });\n if (!res.ok) {\n startPolling();\n } else {\n onRedirect === null || onRedirect === void 0 || onRedirect(redirectPath);\n }\n } catch (_unused) {\n startPolling();\n }\n };\n firstCheck();\n return () => {\n clearInterval(countdownTimer);\n cleanup();\n };\n }, [isRestart, healthCheckUrl, startPolling, cleanup]);\n const title = isRestart ? intl.formatMessage({\n id: 'maintenance.restarting'\n }) : intl.formatMessage({\n id: 'maintenance.poweredOff'\n });\n const subTitle = isRestart ? /*#__PURE__*/jsxs(Space, {\n direction: \"vertical\",\n size: 8,\n style: {\n alignItems: 'center'\n },\n children: [/*#__PURE__*/jsx(Typography.Text, {\n children: intl.formatMessage({\n id: 'maintenance.waiting'\n })\n }), countdown > 0 && /*#__PURE__*/jsx(Typography.Text, {\n type: \"secondary\",\n children: intl.formatMessage({\n id: 'maintenance.redirecting.countdown'\n }, {\n countdown\n })\n }), countdown <= 0 && !error && /*#__PURE__*/jsx(Typography.Text, {\n type: \"secondary\",\n children: intl.formatMessage({\n id: 'maintenance.waiting.long'\n })\n }), error && /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Alert, {\n type: \"error\",\n message: error,\n showIcon: true,\n style: {\n width: '100%'\n }\n }), /*#__PURE__*/jsx(Button, {\n type: \"link\",\n onClick: manualRetry,\n children: intl.formatMessage({\n id: 'maintenance.retry'\n })\n })]\n })]\n }) : /*#__PURE__*/jsx(Typography.Text, {\n children: intl.formatMessage({\n id: 'maintenance.offline.description'\n })\n });\n return /*#__PURE__*/jsx(\"div\", {\n className: \"maintenance-page\",\n children: /*#__PURE__*/jsx(Result, {\n status: isRestart ? 'info' : 'warning',\n title: title,\n subTitle: subTitle\n })\n });\n};\n\nconst _excluded$1 = [\"value\", \"min\", \"max\", \"className\", \"disablePointerLock\", \"modifierKeys\", \"decimalPlaces\", \"onChange\", \"onDragStart\", \"onDragEnd\", \"disabled\", \"style\"];\n\n// 默认配置\nconst DEFAULT_DECIMAL_PLACES = 2;\n\n// src/react/defaults-and-utils.ts\n// eslint-disable-next-line no-var\nvar defaultModifiers = {\n default: {\n multiplier: 1,\n sensitivity: 1\n }\n // ctrlKey: { multiplier: 1, sensitivity: 1 },\n // shiftKey: { multiplier: 10, sensitivity: 0.5 },\n // metaKey: { multiplier: 1, sensitivity: 1 },\n // altKey: { multiplier: 1, sensitivity: 1 }\n};\n\n// multiplier: 控制每次鼠标移动时数值变化的基本单位 multiplier: 1- 鼠标移动1像素,值变化1 multiplier: 10- 鼠标移动1像素,值变化10\n// sensitivity: 控制数值变化的灵敏度 sensitivity: 1- 正常灵敏度 sensitivity: 0.5- 减半灵敏度,需要移动2像素才能产生正常1像素的效果\n\n// 修改 formatNumber 函数,强制显示1位小数\nfunction formatNumber(value) {\n let decimalPlaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_DECIMAL_PLACES;\n return new Intl.NumberFormat(\"en-US\", {\n minimumFractionDigits: decimalPlaces,\n maximumFractionDigits: decimalPlaces,\n useGrouping: false\n }).format(value);\n}\nfunction handleArrow(e, multiplier, value) {\n if (e.key === \"ArrowUp\") {\n return value + multiplier;\n }\n if (e.key === \"ArrowDown\") {\n return value - multiplier;\n }\n return value;\n}\n\n// eslint-disable-next-line no-var\nvar DragCursor = _ref => {\n let {\n cursorPosition\n } = _ref;\n return /* @__PURE__ */React.createElement(\"div\", {\n style: {\n position: \"fixed\",\n left: 0,\n top: 0,\n width: \"100vw\",\n height: \"100vh\",\n pointerEvents: \"none\"\n }\n }, /* @__PURE__ */React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n style: {\n position: \"absolute\",\n left: cursorPosition.x,\n top: cursorPosition.y,\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\"\n }\n }, /* @__PURE__ */React.createElement(\"path\", {\n fill: \"#000\",\n stroke: \"#fff\",\n strokeLinejoin: \"round\",\n d: \"M6.5 9a.5.5 0 0 0-.8-.4l-4 3a.5.5 0 0 0 0 .8l4 3a.5.5 0 0 0 .8-.4v-1.5h11V15a.5.5 0 0 0 .8.4l4-3a.5.5 0 0 0 0-.8l-4-3a.5.5 0 0 0-.8.4v1.5h-11V9Z\",\n style: {\n filter: \"drop-shadow( 0px 2px 1px rgba(0, 0, 0, .35))\"\n }\n })));\n};\n\n// eslint-disable-next-line no-var\nvar noop = () => {};\nfunction DraggableNumberInput(_ref2) {\n let {\n value,\n min,\n max,\n className = \"\",\n disablePointerLock = false,\n modifierKeys,\n decimalPlaces = DEFAULT_DECIMAL_PLACES,\n onChange = noop,\n onDragStart = noop,\n onDragEnd = noop,\n disabled = false,\n // 新增 disabled 属性\n style\n } = _ref2,\n restProps = _objectWithoutProperties$1(_ref2, _excluded$1);\n const inputRef = useRef(null);\n const [isMouseDown, setIsMouseDown] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [localValue, setLocalValue] = useState(() => formatNumber(value, decimalPlaces));\n const [cursorPosition, setCursorPosition] = useState({\n x: 0,\n y: 0\n });\n const totalMovement = useRef(0);\n const startValue = useRef(0);\n const startX = useRef(0);\n const currentMultiplier = useRef(1);\n\n // === 新增:编辑状态跟踪 ===\n const [isEditing, setIsEditing] = useState(false);\n const lastExternalValueRef = useRef(value);\n\n // 修改 formatNumber 调用,传入 decimalPlaces\n const formatValue = useCallback(val => {\n return formatNumber(val, decimalPlaces);\n }, [decimalPlaces]);\n const constrainedOnChange = useCallback(newValue => {\n if (disabled) return; // 禁用状态下不触发 onChange\n\n let constrainedValue = newValue;\n if (typeof min === \"number\") {\n constrainedValue = Math.max(min, constrainedValue);\n }\n if (typeof max === \"number\") {\n constrainedValue = Math.min(max, constrainedValue);\n }\n onChange(constrainedValue);\n }, [onChange, min, max, disabled]);\n useEffect(() => {\n // 只有当用户不在编辑状态,且外部值真正变化时才更新\n if (!isEditing && lastExternalValueRef.current !== value) {\n const formattedValue = formatValue(value);\n setLocalValue(formattedValue);\n lastExternalValueRef.current = value;\n }\n }, [value, formatValue, isEditing, disabled]);\n const handleInputChange = e => {\n if (disabled) return; // 禁用状态下不处理输入\n\n const val = e.target.value;\n\n // 标记为编辑状态\n setIsEditing(true);\n setLocalValue(val);\n\n // 允许输入中间状态,不立即触发onChange\n if (val === '' || val === '-' || val === '.' || val.endsWith('.')) {\n return; // 输入中,不触发onChange\n }\n const num = parseFloat(val);\n if (!isNaN(num)) {\n constrainedOnChange(num);\n }\n };\n const handleBlur = () => {\n if (disabled) return; // 禁用状态下不处理失焦\n\n // 退出编辑状态\n setIsEditing(false);\n const num = parseFloat(localValue);\n if (!isNaN(num)) {\n // 根据 decimalPlaces 进行四舍五入\n const precision = Math.pow(10, decimalPlaces);\n const processedValue = Math.round(num * precision) / precision;\n const formattedValue = formatValue(processedValue);\n\n // 更新显示值\n setLocalValue(formattedValue);\n lastExternalValueRef.current = processedValue;\n // 触发外部变化\n constrainedOnChange(processedValue);\n } else {\n // 如果输入无效,重置为当前外部值\n const formattedValue = formatValue(value);\n setLocalValue(formattedValue);\n }\n };\n const handleMouseDown = useCallback(e => {\n if (disabled) return; // 禁用状态下不处理鼠标按下\n if (!inputRef.current) return;\n let x = 0,\n y = 0;\n if (\"clientX\" in e && \"clientY\" in e) {\n [x, y] = [e.clientX, e.clientY];\n }\n if (\"touches\" in e) {\n [x, y] = [e.touches[0].clientX, e.touches[0].clientY];\n }\n setIsMouseDown(true);\n startX.current = x;\n startValue.current = value;\n totalMovement.current = 0;\n setCursorPosition({\n x,\n y\n });\n }, [value, disablePointerLock, disabled]);\n const updateDelta = useCallback(e => {\n if (disabled) return; // 禁用状态下不更新\n if (!isMouseDown) return;\n applyMovement(totalMovement.current, e);\n }, [isMouseDown, disabled]);\n const getModifiers = useCallback(e => {\n const mods = _objectSpread2$1(_objectSpread2$1({}, defaultModifiers), modifierKeys);\n for (const key in mods) {\n if (key !== \"default\" && e[key]) {\n currentMultiplier.current = mods[key].multiplier;\n return mods[key];\n }\n }\n currentMultiplier.current = mods.default.multiplier;\n return mods.default;\n }, [modifierKeys]);\n const applyMovement = useCallback((newMovement, e) => {\n if (disabled) return; // 禁用状态下不应用移动\n\n const {\n sensitivity,\n multiplier\n } = getModifiers(e);\n const delta = newMovement * sensitivity * multiplier;\n let newValue = startValue.current + delta;\n // 根据 decimalPlaces 进行精度控制\n const precision = Math.pow(10, decimalPlaces);\n newValue = Math.round(newValue * precision) / precision;\n newValue = Object.is(newValue, -0) ? 0 : newValue;\n constrainedOnChange(newValue);\n }, [constrainedOnChange, getModifiers, decimalPlaces, disabled]);\n const handleArrowKeyDown = e => {\n if (disabled) return; // 禁用状态下不处理方向键\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const {\n multiplier\n } = getModifiers(e);\n const newValue = handleArrow(e, multiplier, value);\n constrainedOnChange(newValue);\n }\n };\n const handleModifierKeyDuringDrag = useCallback(e => {\n if (disabled) return; // 禁用状态下不处理修饰键\n\n if (e.key === \"Shift\" || e.key === \"Control\" || e.key === \"Meta\" || e.key === \"Alt\") {\n updateDelta(e);\n }\n }, [updateDelta, disabled]);\n const handleMouseMove = useCallback(e => {\n if (disabled) return; // 禁用状态下不处理鼠标移动\n if (!isMouseDown) return;\n if (\"touches\" in e) {\n e.preventDefault();\n }\n if (!disablePointerLock && document.pointerLockElement && !(\"touches\" in e)) {\n setCursorPosition(prev => {\n const width = window.innerWidth;\n const height = window.innerHeight;\n const x2 = (prev.x + e.movementX + width) % width;\n const y = (prev.y + e.movementY + height) % height;\n return {\n x: x2,\n y\n };\n });\n }\n const x = \"touches\" in e ? e.touches[0].clientX : e.clientX;\n const newMovement = disablePointerLock || \"touches\" in e ? x - startX.current : totalMovement.current + e.movementX;\n if (!isDragging && newMovement !== 0) {\n if (!disablePointerLock && !(\"touches\" in e)) {\n var _inputRef$current, _inputRef$current$req;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || (_inputRef$current$req = _inputRef$current.requestPointerLock) === null || _inputRef$current$req === void 0 || _inputRef$current$req.call(_inputRef$current);\n }\n setIsDragging(true);\n document.addEventListener(\"keydown\", handleModifierKeyDuringDrag);\n document.addEventListener(\"keyup\", handleModifierKeyDuringDrag);\n onDragStart();\n }\n totalMovement.current = newMovement;\n applyMovement(newMovement, e);\n }, [isMouseDown, disablePointerLock, startX, isDragging, onDragStart, applyMovement, handleModifierKeyDuringDrag, disabled]);\n const handleMouseUp = useCallback(() => {\n if (disabled) return; // 禁用状态下不处理鼠标抬起\n\n setIsMouseDown(false);\n totalMovement.current = 0;\n if (isDragging) {\n setIsDragging(false);\n document.removeEventListener(\"keydown\", handleModifierKeyDuringDrag);\n document.removeEventListener(\"keyup\", handleModifierKeyDuringDrag);\n onDragEnd();\n }\n if (document.pointerLockElement) {\n document.exitPointerLock();\n }\n }, [isDragging, onDragEnd, disablePointerLock, disabled]);\n useEffect(() => {\n if (isMouseDown && !disabled) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"touchmove\", handleMouseMove, {\n passive: false\n });\n document.addEventListener(\"mouseup\", handleMouseUp);\n document.addEventListener(\"touchend\", handleMouseUp);\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.removeEventListener(\"touchmove\", handleMouseMove);\n document.removeEventListener(\"touchend\", handleMouseUp);\n };\n }\n }, [isMouseDown, handleMouseMove, handleMouseUp, disabled]);\n\n // 禁用状态下的样式\n const disabledStyle = disabled ? {\n cursor: 'not-allowed',\n borderColor: '#424242',\n background: 'rgba(255, 255, 255, 0.08)',\n color: 'rgba(255, 255, 255, 0.25)'\n } : {};\n return /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement(\"input\", _objectSpread2$1({\n ref: inputRef,\n type: \"text\",\n inputMode: \"numeric\",\n pattern: \"-?[0-9]*\\\\.?[0-9]*\",\n value: localValue,\n onChange: handleInputChange,\n onBlur: handleBlur,\n onMouseDown: handleMouseDown,\n onTouchStart: handleMouseDown,\n onKeyDown: handleArrowKeyDown,\n disabled: disabled,\n // 添加 disabled 属性\n className: \"draggable-number-input \".concat(className, \" \").concat(isDragging ? \"dragging\" : \"\", \" \").concat(disabled ? \"disabled\" : \"\"),\n style: _objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, {\n cursor: disabled ? 'not-allowed' : 'ew-resize',\n userSelect: disabled ? 'none' : 'auto',\n caretColor: isDragging ? \"transparent\" : \"initial\"\n }), disabledStyle), style)\n }, restProps)), isDragging && !disablePointerLock && !disabled && /* @__PURE__ */React.createElement(DragCursor, {\n cursorPosition\n }));\n}\n\nconst _excluded = [\"value\", \"onChange\", \"min\", \"max\", \"autoCorrect\", \"placeholder\", \"disabled\"];\nconst BoundedInput = _ref => {\n let {\n value,\n onChange,\n min = 0,\n max = 100,\n autoCorrect = false,\n placeholder = 'input.placeholder.enterInteger',\n disabled = false\n } = _ref,\n props = _objectWithoutProperties$1(_ref, _excluded);\n const intl = useIntl();\n\n // 处理国际化文本\n const placeholderText = typeof placeholder === 'string' && placeholder.includes('.') ? intl.formatMessage({\n id: placeholder\n }) : placeholder;\n\n // 1. 处理输入变更:只管记录,不修正,不打断\n const handleChange = val => {\n if (val === null || val === undefined) {\n onChange === null || onChange === void 0 || onChange(null);\n return;\n }\n // 确保是整数\n if (typeof val === 'number') {\n onChange === null || onChange === void 0 || onChange(Math.floor(val));\n }\n };\n\n // 2. 处理失焦:只有开启 autoCorrect 时才执行修正\n const handleBlur = e => {\n // 如果关闭了自动修正,直接返回,不做任何事\n if (!autoCorrect) return;\n const val = e.target.value;\n if (val === '' || val === null || val === undefined) return;\n const num = Number(val);\n if (isNaN(num)) return;\n\n // 核心修正逻辑\n let safeVal = num;\n if (num < min) safeVal = min;\n if (num > max) safeVal = max;\n\n // 只有当值需要改变时,才触发更新\n if (safeVal !== num) {\n onChange === null || onChange === void 0 || onChange(safeVal);\n }\n };\n return /*#__PURE__*/jsx(InputNumber, _objectSpread2$1({\n value: value,\n onChange: handleChange,\n onBlur: handleBlur,\n placeholder: placeholderText\n // 只有开启自动修正时,才把 min/max 传给组件\n ,\n min: autoCorrect ? min : undefined,\n max: autoCorrect ? max : undefined,\n precision: 0 // 必须是整数\n ,\n controls: false // 隐藏上下箭头\n ,\n keyboard: false // 禁用键盘上下键\n ,\n changeOnWheel: false // 禁用滚轮\n ,\n style: {\n width: '100%'\n },\n disabled: disabled\n }, props));\n};\n\n/**\r\n * 专用端口输入框\r\n */\nconst PortInput = props => /*#__PURE__*/jsx(BoundedInput, _objectSpread2$1({\n min: 0,\n max: 65535,\n placeholder: \"input.placeholder.enterPort\"\n}, props));\n\n/**\r\n * 专用 Payload 输入框\r\n */\nconst PayloadInput = props => /*#__PURE__*/jsx(BoundedInput, _objectSpread2$1({\n min: 96,\n max: 127,\n placeholder: \"input.placeholder.enterPayload\"\n}, props));\n\nexport { AuthorizationModal$1 as AuthorizationModal, CommonHeader$1 as CommonHeader, DraggableNumberInput, LSMLabelField$1 as LSMLabelField, MaintenancePage, NetworkSettingsModal$1 as NetworkSettingsModal, NmosModal$1 as NmosModal, PayloadInput, PortInput, PresetModal, PtpModal$1 as PtpModal, StyledModal$3 as StyledModal, SystemOperations$1 as SystemOperations, UpgradeManager$1 as UpgradeManager, addMessages, debugI18n, enUS as localesEnUS, zhCN as localesZhCN, useAuth, useHardwareUsage$1 as useHardwareUsage, useIntl, usePageReload$1 as usePageReload, useSystemOperations$1 as useSystemOperations, useUpgrade$1 as useUpgrade, useWebSocketWithFeatures$1 as useWebSocketWithFeatures };\n//# sourceMappingURL=index.esm.js.map\n","import { Select, Input, Form, InputNumber, App } from \"antd\";\r\nimport { memo, useEffect, useState } from \"react\";\r\nimport { StyledModal } from \"seeder-st2110-components\";\r\nimport { useIntl } from '../i18n';\r\n\r\nconst numberProps = {\r\n controls: false,\r\n keyboard: false,\r\n changeOnWheel: false,\r\n precision: 0\r\n}\r\n\r\nconst NmosModal = ({\r\n open, \r\n onClose, \r\n getNmosSettings,\r\n updateNmosSettings,\r\n hostAddressOptions = [],\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const intl = useIntl();\r\n const [nmosSettings, setNmosSettings] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n // 重置表单和状态当 Modal 打开时\r\n if (open) {\r\n setLoading(true);\r\n getNmosSettings().then(data => {\r\n if (data) {\r\n setNmosSettings(data);\r\n // 数据加载后设置表单值\r\n form.setFieldsValue({\r\n host_addresses: data.host_addresses || [],\r\n domain: data.domain,\r\n registry_address: data.registry_address,\r\n registration_port: data.registration_port,\r\n registry_version: data.registry_version,\r\n logging_level: data.logging_level,\r\n });\r\n }\r\n }).catch(err => {\r\n console.error(\"Failed to fetch settings\", err);\r\n }).finally(() => {\r\n setLoading(false);\r\n });\r\n } else {\r\n // 关闭时重置表单\r\n form.resetFields();\r\n setNmosSettings(null);\r\n }\r\n }, [open, form, getNmosSettings]); \r\n\r\n const handleSubmit = async () => {\r\n const values = await form.getFieldsValue();\r\n\r\n setLoading(true);\r\n\r\n try {\r\n const response = await updateNmosSettings({\r\n ...nmosSettings,\r\n ...values\r\n });\r\n\r\n if (response) {\r\n message.success(intl.formatMessage({ id: 'nmos.saveSuccess' }));\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title={intl.formatMessage({ id: 'nmos.title' })}\r\n width={650}\r\n open={open}\r\n okText={intl.formatMessage({ id: 'button.apply' })}\r\n cancelText={intl.formatMessage({ id: 'button.close' })}\r\n onOk={handleSubmit}\r\n onCancel={onClose}\r\n confirmLoading={loading}\r\n destroyOnHidden // 关闭时销毁组件,确保下次打开重新初始化\r\n {...modalProps}\r\n >\r\n <Form\r\n form={form}\r\n name=\"nmosForm\"\r\n labelCol={{ span: 5 }}\r\n wrapperCol={{ span: 19 }}\r\n autoComplete=\"off\"\r\n disabled={loading}\r\n {...formProps}\r\n >\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.hostAddress' })}\r\n name=\"host_addresses\"\r\n >\r\n <Select\r\n mode=\"multiple\"\r\n options={hostAddressOptions}\r\n fieldNames={{ label: \"display_name\", value: \"ip_address\" }}\r\n placeholder={intl.formatMessage({ id: 'nmos.placeholder.selectHostAddress' })}\r\n allowClear\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.domain' })} \r\n name=\"domain\"\r\n >\r\n <Input />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registryAddress' })}\r\n name=\"registry_address\"\r\n >\r\n <Input />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registrationPort' })}\r\n name=\"registration_port\"\r\n >\r\n <InputNumber\r\n {...numberProps}\r\n min={0}\r\n max={65535}\r\n style={{ width: '100%' }}\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.registryVersion' })}\r\n name=\"registry_version\"\r\n >\r\n <Select\r\n options={[\r\n { label: \"v1.0\", value: \"v1.0\" },\r\n { label: \"v1.1\", value: \"v1.1\" },\r\n { label: \"v1.2\", value: \"v1.2\" },\r\n { label: \"v1.3\", value: \"v1.3\" }\r\n ]}\r\n placeholder={intl.formatMessage({ id: 'nmos.placeholder.selectVersion' })}\r\n />\r\n </Form.Item>\r\n <Form.Item \r\n label={intl.formatMessage({ id: 'nmos.loggingLevel' })}\r\n name=\"logging_level\"\r\n >\r\n <InputNumber \r\n {...numberProps}\r\n min={-40} \r\n max={40}\r\n style={{ width: '100%' }}\r\n />\r\n </Form.Item>\r\n </Form>\r\n </StyledModal>\r\n )\r\n}\r\n\r\nexport default memo(NmosModal);","import { useState, useRef, useCallback } from 'react';\r\n\r\nexport const useDeviceHealthCheck = ({\r\n healthCheckUrl = '/api/get_fmt',\r\n maxRetries = 90,\r\n checkInterval = 2000,\r\n onRedirect,\r\n redirectPath = '/',\r\n} = {}) => {\r\n const [error, setError] = useState(null);\r\n const retryCountRef = useRef(0);\r\n const abortControllerRef = useRef(null); // 用于取消轮询\r\n\r\n // 默认跳转行为:原生页面跳转(兼容无路由场景)\r\n const handleRedirect = useCallback((path) => {\r\n if (onRedirect) {\r\n onRedirect(path);\r\n } else {\r\n // 降级到原生跳转,避免依赖 history\r\n window.location.assign(path);\r\n }\r\n }, [onRedirect]);\r\n\r\n // 健康检查函数\r\n const checkHealth = async () => {\r\n if (abortControllerRef.current?.signal.aborted) return false;\r\n\r\n try {\r\n setError(null);\r\n const res = await fetch(healthCheckUrl, {\r\n method: 'HEAD',\r\n signal: abortControllerRef.current?.signal,\r\n });\r\n\r\n if (res.ok) {\r\n handleRedirect(redirectPath);\r\n return true;\r\n }\r\n return false;\r\n } catch (err) {\r\n if (err.name === 'AbortError') return false;\r\n setError('Unable to connect to the device. Please check your network.');\r\n return false;\r\n }\r\n };\r\n\r\n const poll = async () => {\r\n if (retryCountRef.current >= maxRetries) {\r\n setError('Unable to connect to the device. Click below to retry.');\r\n return;\r\n }\r\n\r\n const success = await checkHealth();\r\n if (success) return;\r\n\r\n if (!abortControllerRef.current?.signal.aborted) {\r\n retryCountRef.current += 1;\r\n setTimeout(poll, checkInterval);\r\n }\r\n };\r\n\r\n // 轮询逻辑\r\n const startPolling = useCallback(() => {\r\n // 重置状态\r\n retryCountRef.current = 0;\r\n setError(null);\r\n // 初始化 AbortController\r\n abortControllerRef.current = new AbortController();\r\n poll();\r\n }, []);\r\n\r\n const manualRetry = useCallback(() => {\r\n retryCountRef.current = 0;\r\n setError(null);\r\n poll();\r\n }, []);\r\n\r\n const cleanup = useCallback(() => {\r\n if (abortControllerRef.current) {\r\n abortControllerRef.current.abort();\r\n abortControllerRef.current = null;\r\n }\r\n }, []);\r\n\r\n return {\r\n error,\r\n startPolling,\r\n manualRetry,\r\n cleanup\r\n };\r\n};","import { Result, Space, Typography, Button, Alert } from 'antd';\r\nimport { useEffect, useState } from 'react';\r\nimport { useDeviceHealthCheck } from '../hooks/useDeviceHealthCheck';\r\nimport { useIntl } from '../i18n';\r\n\r\nexport const MaintenancePage = ({\r\n isRestart = false,\r\n healthCheckUrl = '/api/get_fmt',\r\n redirectPath = '/',\r\n onRedirect,\r\n maxRetries = 90, // 最多重试 90 次(约 180 秒)\r\n checkInterval = 2000, // 每 2 秒重试\r\n countdownSeconds = 30, // 倒计时初始值,单位秒\r\n}) => {\r\n const intl = useIntl();\r\n const [countdown, setCountdown] = useState(countdownSeconds);\r\n\r\n const { error, startPolling, manualRetry, cleanup } = useDeviceHealthCheck({\r\n healthCheckUrl,\r\n redirectPath,\r\n onRedirect,\r\n maxRetries,\r\n checkInterval\r\n });\r\n\r\n useEffect(() => {\r\n if (!isRestart) return;\r\n\r\n const countdownTimer = setInterval(() => {\r\n setCountdown(prev => Math.max(0, prev - 1));\r\n }, 1000);\r\n\r\n const firstCheck = async () => {\r\n try {\r\n const res = await fetch(healthCheckUrl, { method: 'HEAD' });\r\n if (!res.ok) {\r\n startPolling();\r\n } else {\r\n onRedirect?.(redirectPath);\r\n }\r\n } catch {\r\n startPolling();\r\n }\r\n };\r\n\r\n firstCheck();\r\n\r\n return () => {\r\n clearInterval(countdownTimer);\r\n cleanup();\r\n };\r\n }, [isRestart, healthCheckUrl, startPolling, cleanup]);\r\n\r\n const title = isRestart\r\n ? intl.formatMessage({ id: 'maintenance.restarting' })\r\n : intl.formatMessage({ id: 'maintenance.poweredOff' });\r\n\r\n const subTitle = isRestart ? (\r\n <Space direction=\"vertical\" size={8} style={{ alignItems: 'center' }}>\r\n <Typography.Text>\r\n {intl.formatMessage({ id: 'maintenance.waiting' })}\r\n </Typography.Text>\r\n\r\n {/* 倒计时阶段 */}\r\n {countdown > 0 && (\r\n <Typography.Text type=\"secondary\">\r\n {intl.formatMessage({ id: 'maintenance.redirecting.countdown' }, { countdown })}\r\n </Typography.Text>\r\n )}\r\n\r\n {/* 倒计时结束,仍在自动重试中(无错误) */}\r\n {countdown <= 0 && !error && (\r\n <Typography.Text type=\"secondary\">\r\n {intl.formatMessage({ id: 'maintenance.waiting.long' })}\r\n </Typography.Text>\r\n )}\r\n\r\n {/* 错误提示(含操作引导) */}\r\n {error && (\r\n <>\r\n <Alert\r\n type=\"error\"\r\n message={error}\r\n showIcon\r\n style={{ width: '100%' }}\r\n />\r\n <Button type=\"link\" onClick={manualRetry}>\r\n {intl.formatMessage({ id: 'maintenance.retry' })}\r\n </Button>\r\n </>\r\n )}\r\n </Space>\r\n ) : (\r\n <Typography.Text>\r\n {intl.formatMessage({ id: 'maintenance.offline.description' })}\r\n </Typography.Text>\r\n );\r\n\r\n return (\r\n <div className=\"maintenance-page\">\r\n <Result\r\n status={isRestart ? 'info' : 'warning'}\r\n title={title}\r\n subTitle={subTitle}\r\n />\r\n </div>\r\n );\r\n};","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\n// ==================== 配置与工具函数 ====================\r\n\r\nconst DEFAULT_DECIMAL_PLACES = 2;\r\n\r\nconst defaultModifiers = {\r\n default: { multiplier: 1, sensitivity: 1 },\r\n};\r\n\r\n/**\r\n * multiplier: 控制每次鼠标移动时数值变化的基本单位\r\n * sensitivity: 控制数值变化的灵敏度 (0.5 = 需要移动2像素才产生1像素的效果)\r\n */\r\nfunction formatNumber(value, decimalPlaces = DEFAULT_DECIMAL_PLACES) {\r\n const num = value != null && !isNaN(value) ? value : 0;\r\n return new Intl.NumberFormat(\"en-US\", {\r\n minimumFractionDigits: decimalPlaces,\r\n maximumFractionDigits: decimalPlaces,\r\n useGrouping: false,\r\n }).format(num);\r\n}\r\n\r\nfunction handleArrow(e, multiplier, value) {\r\n if (e.key === \"ArrowUp\") return value + multiplier;\r\n if (e.key === \"ArrowDown\") return value - multiplier;\r\n return value;\r\n}\r\n\r\n// ==================== 子组件 ====================\r\n\r\nconst DragCursor = ({ cursorPosition }) => (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n style={{\r\n position: \"absolute\",\r\n left: cursorPosition.x,\r\n top: cursorPosition.y,\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <path\r\n fill=\"#000\"\r\n stroke=\"#fff\"\r\n strokeLinejoin=\"round\"\r\n d=\"M6.5 9a.5.5 0 0 0-.8-.4l-4 3a.5.5 0 0 0 0 .8l4 3a.5.5 0 0 0 .8-.4v-1.5h11V15a.5.5 0 0 0 .8.4l4-3a.5.5 0 0 0 0-.8l-4-3a.5.5 0 0 0-.8.4v1.5h-11V9Z\"\r\n style={{ filter: \"drop-shadow(0px 2px 1px rgba(0, 0, 0, .35))\" }}\r\n />\r\n </svg>\r\n </div>\r\n);\r\n\r\n// ==================== 主组件 ====================\r\n\r\nconst noop = () => {};\r\n\r\nexport const DraggableNumberInput = ({\r\n value,\r\n min,\r\n max,\r\n className = \"\",\r\n disablePointerLock = false,\r\n modifierKeys,\r\n decimalPlaces = DEFAULT_DECIMAL_PLACES,\r\n onChange = noop,\r\n onDragStart = noop,\r\n onDragEnd = noop,\r\n disabled = false,\r\n style,\r\n ...restProps\r\n}) => {\r\n const inputRef = useRef(null);\r\n const [isMouseDown, setIsMouseDown] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [localValue, setLocalValue] = useState(() => formatNumber(value, decimalPlaces));\r\n const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\r\n const totalMovement = useRef(0);\r\n const startValue = useRef(0);\r\n const startX = useRef(0);\r\n const currentMultiplier = useRef(1);\r\n\r\n // === 编辑状态跟踪 ===\r\n const [isEditing, setIsEditing] = useState(false);\r\n const lastExternalValueRef = useRef(value);\r\n\r\n const formatValue = useCallback(\r\n (val) => formatNumber(val, decimalPlaces),\r\n [decimalPlaces]\r\n );\r\n\r\n const constrainedOnChange = useCallback(\r\n (newValue) => {\r\n if (disabled) return;\r\n let constrainedValue = newValue;\r\n if (typeof min === \"number\") constrainedValue = Math.max(min, constrainedValue);\r\n if (typeof max === \"number\") constrainedValue = Math.min(max, constrainedValue);\r\n onChange(constrainedValue);\r\n },\r\n [onChange, min, max, disabled]\r\n );\r\n\r\n // 外部值同步:仅在非编辑状态且外部值真正变化时更新\r\n useEffect(() => {\r\n if (!isEditing && lastExternalValueRef.current !== value) {\r\n setLocalValue(formatValue(value));\r\n lastExternalValueRef.current = value;\r\n }\r\n }, [value, formatValue, isEditing, disabled]);\r\n\r\n const handleInputChange = (e) => {\r\n if (disabled) return;\r\n const val = e.target.value;\r\n\r\n setIsEditing(true);\r\n setLocalValue(val);\r\n\r\n // 允许输入中间状态,不立即触发 onChange\r\n if (val === \"\" || val === \"-\" || val === \".\" || val.endsWith(\".\")) return;\r\n\r\n const num = parseFloat(val);\r\n if (!isNaN(num)) constrainedOnChange(num);\r\n };\r\n\r\n const handleBlur = () => {\r\n if (disabled) return;\r\n setIsEditing(false);\r\n\r\n const num = parseFloat(localValue);\r\n if (!isNaN(num)) {\r\n const precision = Math.pow(10, decimalPlaces);\r\n const processedValue = Math.round(num * precision) / precision;\r\n const formattedValue = formatValue(processedValue);\r\n\r\n setLocalValue(formattedValue);\r\n // 只有值真正变化时才触发 onChange\r\n if (lastExternalValueRef.current !== processedValue) {\r\n lastExternalValueRef.current = processedValue;\r\n constrainedOnChange(processedValue);\r\n }\r\n } else {\r\n setLocalValue(formatValue(value));\r\n }\r\n };\r\n\r\n const handleMouseDown = useCallback(\r\n (e) => {\r\n if (disabled || !inputRef.current) return;\r\n\r\n let x = 0,\r\n y = 0;\r\n if (\"clientX\" in e && \"clientY\" in e) {\r\n [x, y] = [e.clientX, e.clientY];\r\n }\r\n if (\"touches\" in e) {\r\n [x, y] = [e.touches[0].clientX, e.touches[0].clientY];\r\n }\r\n\r\n setIsMouseDown(true);\r\n startX.current = x;\r\n startValue.current = value;\r\n totalMovement.current = 0;\r\n setCursorPosition({ x, y });\r\n },\r\n [value, disablePointerLock, disabled]\r\n );\r\n\r\n const getModifiers = useCallback(\r\n (e) => {\r\n const mods = { ...defaultModifiers, ...modifierKeys };\r\n for (const key in mods) {\r\n if (key !== \"default\" && e[key]) {\r\n currentMultiplier.current = mods[key].multiplier;\r\n return mods[key];\r\n }\r\n }\r\n currentMultiplier.current = mods.default.multiplier;\r\n return mods.default;\r\n },\r\n [modifierKeys]\r\n );\r\n\r\n const applyMovement = useCallback(\r\n (newMovement, e) => {\r\n if (disabled) return;\r\n const { sensitivity, multiplier } = getModifiers(e);\r\n const delta = newMovement * sensitivity * multiplier;\r\n let newValue = startValue.current + delta;\r\n\r\n const precision = Math.pow(10, decimalPlaces);\r\n newValue = Math.round(newValue * precision) / precision;\r\n newValue = Object.is(newValue, -0) ? 0 : newValue;\r\n constrainedOnChange(newValue);\r\n },\r\n [constrainedOnChange, getModifiers, decimalPlaces, disabled]\r\n );\r\n\r\n const updateDelta = useCallback(\r\n (e) => {\r\n if (disabled || !isMouseDown) return;\r\n applyMovement(totalMovement.current, e);\r\n },\r\n [isMouseDown, disabled, applyMovement]\r\n );\r\n\r\n const handleArrowKeyDown = (e) => {\r\n if (disabled) return;\r\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n const { multiplier } = getModifiers(e);\r\n constrainedOnChange(handleArrow(e, multiplier, value));\r\n }\r\n };\r\n\r\n const handleModifierKeyDuringDrag = useCallback(\r\n (e) => {\r\n if (disabled) return;\r\n if ([\"Shift\", \"Control\", \"Meta\", \"Alt\"].includes(e.key)) {\r\n updateDelta(e);\r\n }\r\n },\r\n [updateDelta, disabled]\r\n );\r\n\r\n const handleMouseMove = useCallback(\r\n (e) => {\r\n if (disabled || !isMouseDown) return;\r\n if (\"touches\" in e) e.preventDefault();\r\n\r\n if (!disablePointerLock && document.pointerLockElement && !(\"touches\" in e)) {\r\n setCursorPosition((prev) => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n const x2 = (prev.x + e.movementX + width) % width;\r\n const y = (prev.y + e.movementY + height) % height;\r\n return { x: x2, y };\r\n });\r\n }\r\n\r\n const x = \"touches\" in e ? e.touches[0].clientX : e.clientX;\r\n const newMovement =\r\n disablePointerLock || \"touches\" in e\r\n ? x - startX.current\r\n : totalMovement.current + e.movementX;\r\n\r\n if (!isDragging && newMovement !== 0) {\r\n if (!disablePointerLock && !(\"touches\" in e)) {\r\n inputRef.current?.requestPointerLock?.();\r\n }\r\n setIsDragging(true);\r\n document.addEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.addEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragStart();\r\n }\r\n\r\n totalMovement.current = newMovement;\r\n applyMovement(newMovement, e);\r\n },\r\n [\r\n isMouseDown,\r\n disablePointerLock,\r\n isDragging,\r\n onDragStart,\r\n applyMovement,\r\n handleModifierKeyDuringDrag,\r\n disabled,\r\n ]\r\n );\r\n\r\n const handleMouseUp = useCallback(() => {\r\n if (disabled) return;\r\n setIsMouseDown(false);\r\n totalMovement.current = 0;\r\n\r\n if (isDragging) {\r\n setIsDragging(false);\r\n document.removeEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.removeEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragEnd();\r\n }\r\n if (document.pointerLockElement) document.exitPointerLock();\r\n }, [isDragging, onDragEnd, disablePointerLock, disabled]);\r\n\r\n useEffect(() => {\r\n if (isMouseDown && !disabled) {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove, { passive: false });\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n };\r\n }\r\n }, [isMouseDown, handleMouseMove, handleMouseUp, disabled]);\r\n\r\n const disabledStyle = disabled\r\n ? {\r\n cursor: \"not-allowed\",\r\n borderColor: \"#424242\",\r\n background: \"rgba(255, 255, 255, 0.08)\",\r\n color: \"rgba(255, 255, 255, 0.25)\",\r\n }\r\n : {};\r\n\r\n return (\r\n <>\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n pattern=\"-?[0-9]*\\.?[0-9]*\"\r\n value={localValue}\r\n onChange={handleInputChange}\r\n onBlur={handleBlur}\r\n onMouseDown={handleMouseDown}\r\n onTouchStart={handleMouseDown}\r\n onKeyDown={handleArrowKeyDown}\r\n disabled={disabled}\r\n className={`draggable-number-input ${className} ${isDragging ? \"dragging\" : \"\"} ${disabled ? \"disabled\" : \"\"}`}\r\n style={{\r\n cursor: disabled ? \"not-allowed\" : \"ew-resize\",\r\n userSelect: disabled ? \"none\" : \"auto\",\r\n caretColor: isDragging ? \"transparent\" : \"initial\",\r\n ...disabledStyle,\r\n ...style,\r\n }}\r\n {...restProps}\r\n />\r\n {isDragging && !disablePointerLock && !disabled && (\r\n <DragCursor cursorPosition={cursorPosition} />\r\n )}\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { InputNumber } from 'antd';\r\nimport { useIntl } from '../i18n';\r\n\r\n/**\r\n * 通用有界输入框\r\n * 用于处理需要范围限制的输入,支持自动修正或自由输入\r\n */\r\nexport const BoundedInput = ({\r\n value, \r\n onChange, \r\n min = 0,\r\n max = 100,\r\n autoCorrect = false, \r\n placeholder = 'input.placeholder.enterInteger',\r\n disabled = false,\r\n ...props\r\n}) => {\r\n const intl = useIntl();\r\n \r\n // 处理国际化文本\r\n const placeholderText = typeof placeholder === 'string' && placeholder.includes('.') \r\n ? intl.formatMessage({ id: placeholder }) \r\n : placeholder;\r\n \r\n // 1. 处理输入变更:只管记录,不修正,不打断\r\n const handleChange = (val) => {\r\n if (val === null || val === undefined) {\r\n onChange?.(null);\r\n return;\r\n }\r\n // 确保是整数\r\n if (typeof val === 'number') {\r\n onChange?.(Math.floor(val));\r\n }\r\n };\r\n\r\n // 2. 处理失焦:只有开启 autoCorrect 时才执行修正\r\n const handleBlur = (e) => {\r\n // 如果关闭了自动修正,直接返回,不做任何事\r\n if (!autoCorrect) return;\r\n\r\n const val = e.target.value;\r\n \r\n if (val === '' || val === null || val === undefined) return;\r\n\r\n const num = Number(val);\r\n if (isNaN(num)) return;\r\n\r\n // 核心修正逻辑\r\n let safeVal = num;\r\n if (num < min) safeVal = min;\r\n if (num > max) safeVal = max;\r\n\r\n // 只有当值需要改变时,才触发更新\r\n if (safeVal !== num) {\r\n onChange?.(safeVal);\r\n }\r\n };\r\n\r\n return (\r\n <InputNumber\r\n value={value}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n placeholder={placeholderText}\r\n // 只有开启自动修正时,才把 min/max 传给组件\r\n min={autoCorrect ? min : undefined}\r\n max={autoCorrect ? max : undefined}\r\n precision={0} // 必须是整数\r\n controls={false} // 隐藏上下箭头\r\n keyboard={false} // 禁用键盘上下键\r\n changeOnWheel={false} // 禁用滚轮\r\n style={{ width: '100%' }}\r\n disabled={disabled}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * 专用端口输入框\r\n */\r\nexport const PortInput = (props) => (\r\n <BoundedInput\r\n min={0}\r\n max={65535}\r\n placeholder=\"input.placeholder.enterPort\"\r\n {...props}\r\n />\r\n);\r\n\r\n/**\r\n * 专用 Payload 输入框\r\n */\r\nexport const PayloadInput = (props) => (\r\n <BoundedInput\r\n min={96}\r\n max={127}\r\n placeholder=\"input.placeholder.enterPayload\"\r\n {...props}\r\n />\r\n);","/**\r\n * 根据当前页面环境动态生成 WebSocket URL\r\n * @param {string} path - WS 路径(如 '/ws' 或 'ws')\r\n * @returns {string} 完整的 WebSocket URL\r\n */\r\nexport function getSocketUrl(path) {\r\n // 1. 防御性处理:确保 path 以 / 开头\r\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\r\n\r\n // 2. 自动适配 ws/wss 协议(核心安全修复)\r\n const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\r\n\r\n // 3. 统一使用 location.host(已包含端口,且兼容 IPv6)\r\n return `${protocol}//${window.location.host}${normalizedPath}`;\r\n}\r\n\r\n/**\r\n * @internal 安全查找选项的通用内核\r\n */\r\nconst findOption = (options, predicate) => {\r\n if (!Array.isArray(options)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.error('[findOption] Expected array but got:', typeof options);\r\n }\r\n return null;\r\n }\r\n return options.find(item => item != null && predicate(item)) ?? null;\r\n};\r\n\r\n/**\r\n * 获取选项列表的默认值(第一个有效项的 value)\r\n * @param {Array<{value: any, name?: string}>} options - 选项列表\r\n * @param {any} [fallback=''] - 无有效项时的兜底值\r\n * @returns {any}\r\n */\r\nexport const getDefaultValue = (options = [], fallback = '') => {\r\n const found = findOption(options, item => item.value != null);\r\n return found ? found.value : fallback;\r\n};\r\n\r\n/**\r\n * 根据 value 获取对应 name(简洁版,适用于短列表 / 低频调用)\r\n * @param {Array<{value: any, name?: string}>} options - 选项列表\r\n * @param {any} value - 目标值\r\n * @param {string} [fallback] - 未匹配时的兜底值,默认为 String(value)\r\n * @returns {string}\r\n */\r\nexport const getNameByValue = (options = [], value, fallback) => {\r\n const found = findOption(options, item => item.value === value);\r\n return found?.name ?? String(fallback ?? value ?? '');\r\n};\r\n\r\n/**\r\n * 根据 value 获取对应 name(高性能缓存版)\r\n * 适用于:选项 > 50 项、Table/List 逐行渲染、高频调用场景\r\n * ⚠️ 注意:options 必须是稳定引用(useMemo),否则缓存失效\r\n * @param {any} value - 目标值\r\n * @param {Array<{value: any, name?: string}>} options - 选项列表\r\n * @returns {string}\r\n */\r\nconst cachedNameMap = new WeakMap();\r\n\r\nexport const getCachedNameByValue = (value, options = []) => {\r\n if (!Array.isArray(options)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.error('[getCachedNameByValue] Expected array but got:', typeof options);\r\n }\r\n return String(value ?? '');\r\n }\r\n\r\n // 缓存命中直接返回\r\n let cache = cachedNameMap.get(options);\r\n if (!cache) {\r\n cache = new Map();\r\n cachedNameMap.set(options, cache);\r\n }\r\n\r\n if (cache.has(value)) return cache.get(value);\r\n\r\n // 查找并写入缓存\r\n const found = options.find(item => item != null && item.value === value);\r\n const result = found?.name ?? String(value ?? '');\r\n cache.set(value, result);\r\n\r\n return result;\r\n};"],"names":["debugI18n","_window$g_initialProp","_window$g_initialProp2","_window$g_initialProp3","_window$g_initialProp4","_window$g_initialProp5","_window$g_initialProp6","window","console","log","group","g_initialProps","locale","___g_initialPropsFromServer","localStorage","getItem","e","__COMPONENT_LOCALE__","__COMPONENT_I18N_MESSAGES__","__PROJECT_I18N_MESSAGES__","messages","componentMessages","projectMessages","umiMessages","allLocales","Set","Object","keys","Array","from","forEach","merged","_objectSpread","concat","length","testKeys","currentLocale","allMessages","key","_allMessages$currentL","_allMessages$enUS","translation","groupEnd","process","env","NODE_ENV","getLocale","g_lang","LOCALE","g_initialPropsFromServer","storedLocale","getMessages","formatMessage","_ref","_messages$locale","_messages$enUS","id","values","arguments","undefined","message","replace","match","useIntl","formatMessageFn","_ref2","addMessages","formatBytes","bytes","decimals","k","dm","sizes","i","Math","floor","parseFloat","pow","toFixed","UsageItem","memo","title","iconClass","children","memTotal","intl","_jsx","Tooltip","_jsxs","_Fragment","destroyOnHidden","className","useHardwareWebSocket","socketUrl","systemStatus","setSystemStatus","useState","handleMessage","useCallback","prev","error","useWebSocket","onMessage","event","parsedMessage","JSON","parse","data","debug","ps_status","getMaxNicTemp","sensors","priorityFields","temps","flatMap","field","_sensors$field","map","item","current","filter","temp","max","getMaxSensorTemp","sensorData","getDetail","_sensors_temperatures","_sensors_temperatures2","_mem$total","_mem$percent","_getMaxNicTemp","_gpu_stats$0$utilizat","_gpu_stats$","_gpu_stats$0$temperat","_gpu_stats$2","status","cpu_percent","mem","sensors_temperatures","gpu_stats","cpu_usage","cpu_temp","coretemp","mem_total","total","mem_usage","percent","mem_temp","spd5118","nic_temp","hd_temp","nvme","gpu_usage","gpu_temp","createMetricItem","value","unit","numValue","valueString","getItems","details","items","push","useHardwareUsage","useMemo","statusItems","index","StyledModal","props","width","okText","cancelText","styles","propStyles","restProps","_objectWithoutProperties","_excluded","okButtonText","includes","cancelButtonText","baseStyles","content","padding","header","marginBottom","paddingBlock","paddingInlineStart","background","body","paddingInline","footer","marginTop","paddingBlockEnd","Modal","AuthorizationModal","onCancel","onOk","authData","App","useApp","code","setCode","accredit_status","isActivated","statusMessage","bios_id","uuid","expires_time","expiresTime","getStatusMessageKey","msg","statusMap","statusMessageKey","handleOk","trimmedCode","trim","statusAlert","Alert","type","showIcon","defaultOkText","open","cancelButtonProps","disabled","maskClosable","closable","Form","name","labelCol","span","wrapperCol","autoComplete","style","Item","label","required","Input","readOnly","TextArea","onChange","target","autoSize","minRows","maxRows","placeholder","DEFAULT_AUTH","useAuth","options","fetchAuthInfo","authorize","defaultAuthData","autoShowModal","messageApi","contextHolder","useMessage","showModal","setShowModal","setAuthData","isRegistered","setIsRegistered","loading","setLoading","openModal","closeModal","useEffect","loadAuthInfo","result","commands","auth","license_data","errorMsg","ciphertext_status","errorMessage","modal","AuthModal","openAuthModal","closeAuthModal","useUpgrade","menuItems","onMenuClick","downloadFiles","upgradeExecute","upgradeStatus","acceptFileTypes","uploadCompleteDelay","statusPollingInterval","isSpinning","setIsSpinning","pollingInterval","setPollingInterval","currentStatus","setCurrentStatus","uploadProgress","setUploadProgress","inputRef","useRef","isUploadingRef","isMountedRef","uploadCancelToken","axios","CancelToken","source","statusCancelToken","showLoader","hideLoader","finalMenuItems","hasDownload","some","hasUpload","licenseIndex","findIndex","itemsToAdd","beforeLicense","slice","licenseItem","afterLicense","itemsToInsert","handleMenuClick","onDownload","onUpload","warn","res","Error","fileName","contentDisposition","headers","filenameMatch","decodeURIComponent","blob","Blob","url","URL","createObjectURL","link","document","createElement","display","href","download","appendChild","click","parentNode","removeChild","revokeObjectURL","updatePackage","_event$target$files","file","files","cancel","formData","FormData","append","response","onUploadProgress","progressEvent","percentCompleted","round","loaded","cancelToken","token","cancelRequest","setTimeout","isCancel","fetchUpgradeStatus","success","location","reload","useInterval","upgradeElement","Dropdown","menu","onClick","trigger","preventDefault","ref","accept","Spin","spinning","indicator","LoadingOutlined","fontSize","spin","tip","size","fullscreen","useSystemOperations","onPowerOff","onRestart","confirmTitle","run","AntdModal","confirmTitleText","cancelTextValue","okTextValue","doAction","action","confirm","icon","ExclamationCircleFilled","toUpperCase","getMenuItems","usePageReload","reloading","setReloading","startReload","delay","backgroundColor","transition","offsetHeight","timer","clearTimeout","ReloadOverlay","position","top","left","right","bottom","flexDirection","alignItems","justifyContent","zIndex","color","getReadyStateText","state","states","createDummyLogger","dummyFn","exportLogs","getLogStats","errors","warnings","info","lastTimestamp","clearLogs","logs","createGlobalLogger","webSocketUrl","maxLogs","isDevelopment","level","timestamp","Date","toISOString","logEntry","timestampDisplay","toLocaleString","year","month","day","hour","minute","second","hour12","shift","consoleMessage","consoleArgs","filenamePrefix","logText","entry","stringify","join","repeat","blobUrl","hostname","pathname","urlObj","readableTime","filename","a","count","_logs","l","useHeartbeat","sendMessage","readyState","config","logger","enabled","heartbeatTimerRef","lastHeartbeatTimeRef","now","configRef","interval","stateRef","clearInterval","stopHeartbeat","startHeartbeat","currentState","currentConfig","setInterval","latestState","latestConfig","timeSinceLastHeartbeat","heartbeatImpl","getLastHeartbeatTime","isEnabled","useWebSocketWithFeatures","heartbeat","heartbeatConfig","enableLog","isConnected","setIsConnected","websocketOptions","onOpen","_options$onOpen","eventCode","call","onError","_options$onError","errorType","onClose","_options$onClose","reason","wasClean","onReconnect","_options$onReconnect","attempt","maxAttempts","reconnectLimit","latestMessage","connect","disconnect","heartbeatOptions","heartbeatEnabled","btoa","loggerMethods","readyStateText","NetworkFieldGroup","_fieldConfig$netmask$","_fieldConfig$netmask","prefix","interfaces","fieldConfig","defaultFieldConfig","ip","netmask","mergedFieldConfig","Typography","Title","iface","Divider","marginBlock","NetworkSettingsModal","getLanConfig","getSysConfig","getConfig","updateLanConfig","updateSysConfig","restart","onRestartSuccess","modalProps","formProps","sections","showNetmask","LAN","QSFP","restartRemark","form","useForm","st2110Interfaces","setSt2110Interfaces","lanConfigs","setLanConfigs","submitLoading","setSubmitLoading","isInitialized","setIsInitialized","originalSt2110InterfacesRef","initializationStatus","hasFetched","hasInitialized","preparedFieldConfig","fetchData","lan_interfaces","promises","results","Promise","allSettled","lanResult","sysResult","st2110_interfaces","resetFields","initialValues","connection_id","display_name","ip_address","setFieldsValue","handleSuccess","messageText","isPopup","refresh","defaultMessage","newConfig","updatedConfig","is_restart_required","handleSubmit","validateFields","hasQsfpChanged","original","orig","ipChanged","updatePromises","lanData","_lanConfigs$index","interfacesData","_st2110Interfaces$ind","_st2110Interfaces$ind2","_st2110Interfaces$ind3","st2110Data","allSucceeded","every","mergedModalProps","confirmLoading","centered","forceRender","mergedFormProps","defaultFieldConfigs","clock_class","formType","clock_accuracy","offset_scaled_log_variance","grandmaster_priority1","grandmaster_priority2","grandmaster_identity","master_port_id","t1_domain_number","min","master_utc_offset","is_connected","text","is_locked","defaultFieldOrder","convertPtpStatusToArray","ptpStatus","fieldConfigs","fieldOrder","rawData","PtpModal","getPtpInfo","updatePtpInfo","setPtpStatus","then","catch","err","finally","ptpStatusArray","renderLabel","getFieldsValue","renderFormItem","_item$options","_item$statusMap","_item$min","_item$max","selectOptions","opt","Select","Switch","normalizedValue","ptp","unknown","ConfigProvider","theme","components","Badge","statusSize","InputNumber","controls","keyboard","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","initialValue","LeftList","dataSource","selectedPresetId","onSelectPreset","onAddNew","onRemove","onImport","onExport","hasPresets","enableImportAndExport","texts","newButton","removeButton","importButton","exportButton","fmt","List","rowKey","renderItem","Text","ellipsis","create_time","description","emptyText","Empty","image","PRESENTED_IMAGE_SIMPLE","Button","PlusOutlined","Space","SubmitButton","editButtonEle","RightDetailForm","_ref3","onSave","onLoad","onEdit","onCancelEdit","onUpdate","isLoading","isSavedPreset","originalPresetData","fields","category_list","loadButton","saveButton","editButton","cancelButton","presetChanged","enableEdit","initialSelected","setInitialSelected","isEditMode","setIsEditMode","currentSelected","useWatch","hasCategoryList","currentValue","getFieldValue","checkboxOptions","category","isInitiallySelected","shouldDisable","initiallySelected","handleCheckboxChange","checkedValues","handleEditClick","handleCancelEdit","handleSaveEdit","handleLoad","formValues","loadData","shouldDisableNameAndDesc","shouldDisableCategories","Flex","vertical","height","layout","flex","overflowY","Checkbox","Group","rows","resize","Preset","getPresetList","savePreset","removePreset","loadPreset","updatePreset","uploadPreset","downloadPreset","onLoadSuccess","onLoadError","deleteConfirm","loadConfirm","loadText","successText","presetList","setPresetList","selectedPreset","setSelectedPreset","uploading","setUploading","setPresetChanged","fetchPresetList","presets","preset_list","firstPreset","handleSelectPreset","preset","handleAddNew","_fields$category_list","unsavedPreset","find","warning","newPreset","reduce","acc","fieldName","handleRemove","isUnsavedPreset","presetName","currentIndex","updatedList","nextIndex","nextPreset","handleImport","input","onchange","_e$target$files","toLowerCase","endsWith","remove","handleExport","downloadUrl","handleLoadPreset","modalInstance","resolveOk","resolve","reject","update","okButtonProps","_resolveOk","destroy","handleSave","_fields$name","_fields$category_list2","savedPresetName","newlySavedPreset","handleUpdate","_fields$name2","updatedPreset","wrapClassName","Row","gutter","Col","justify","align","UpgradeManager","dropdownProps","dropdownElement","otherElements","defaultProps","placement","reactIs_production_min","reactIs_development","reactIsModule","require$$0","require$$1","objectAssign","ReactPropTypesSecret_1","has","checkPropTypes_1","require$$2","require$$3","require$$4","factoryWithTypeCheckers","factoryWithThrowingShims","propTypesModule","SystemOperations","onPowerOffSuccess","beforeAction","powerOffLabel","restartLabel","iconClassName","confirmMessage","actionLabels","poweroff","actionText","titleText","propTypes","PropTypes","func","string","logoBase64","defaultResetRoute","origin","useSpaLogo","logoUrl","logoWidth","logoAlt","buttonStyle","lineHeight","borderStyle","alt","src","number","defaultGetSocketUrl","port","host","CommonHeader","menuElement","productInfo","showLogo","showProductInfo","showHardwareUsage","showSystemOperations","hardwareMonitorUrl","getSocketUrl","logoProps","leftContent","rightContent","logo","usageElement","gap","productName","version","LSMLabelField","lsmList","setLsmList","onLsmSelect","fetchLsmData","formItemProps","selectProps","fieldNames","loadLsmData","allowClear","showSearch","optionFilterProp","option","_objectSpread2$1","numberProps","changeOnWheel","precision","NmosModal","getNmosSettings","updateNmosSettings","hostAddressOptions","nmosSettings","setNmosSettings","host_addresses","domain","registry_address","registration_port","registry_version","logging_level","mode","useDeviceHealthCheck","healthCheckUrl","maxRetries","checkInterval","onRedirect","redirectPath","setError","retryCountRef","abortControllerRef","handleRedirect","path","assign","checkHealth","_abortControllerRef$c","signal","aborted","_abortControllerRef$c2","fetch","method","ok","poll","_abortControllerRef$c3","startPolling","AbortController","manualRetry","cleanup","abort","MaintenancePage","isRestart","countdownSeconds","countdown","setCountdown","countdownTimer","firstCheck","_unused","subTitle","direction","Result","DEFAULT_DECIMAL_PLACES","defaultModifiers","default","multiplier","sensitivity","formatNumber","decimalPlaces","num","isNaN","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","useGrouping","format","handleArrow","DragCursor","cursorPosition","pointerEvents","xmlns","viewBox","x","y","transform","fill","stroke","strokeLinejoin","d","noop","DraggableNumberInput","disablePointerLock","modifierKeys","onDragStart","onDragEnd","isMouseDown","setIsMouseDown","isDragging","setIsDragging","localValue","setLocalValue","setCursorPosition","totalMovement","startValue","startX","currentMultiplier","isEditing","setIsEditing","lastExternalValueRef","formatValue","val","constrainedOnChange","newValue","constrainedValue","handleInputChange","handleBlur","processedValue","formattedValue","handleMouseDown","clientX","clientY","touches","getModifiers","mods","applyMovement","newMovement","delta","is","updateDelta","handleArrowKeyDown","handleModifierKeyDuringDrag","handleMouseMove","pointerLockElement","innerWidth","innerHeight","x2","movementX","movementY","_inputRef$current","_inputRef$current$req","requestPointerLock","addEventListener","handleMouseUp","removeEventListener","exitPointerLock","passive","disabledStyle","cursor","borderColor","inputMode","pattern","onBlur","onMouseDown","onTouchStart","onKeyDown","userSelect","caretColor","BoundedInput","autoCorrect","placeholderText","handleChange","safeVal","PortInput","PayloadInput","normalizedPath","startsWith","protocol","findOption","predicate","_options$find","isArray","getDefaultValue","fallback","found","getNameByValue","_found$name","String","cachedNameMap","WeakMap","getCachedNameByValue","_found$name2","cache","get","Map","set"],"mappings":"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","x_google_ignoreList":[19,20,21,22,23,24,25,26,27,28,33]}
|