crud-page-react 0.0.1 → 0.0.2
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 +17 -1496
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +38 -1535
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/classnames/index.js","../node_modules/@ant-design/fast-color/es/FastColor.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/presets.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/rc-util/es/Dom/shadow.js","../node_modules/rc-util/es/warning.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/CodeOutlined.js","../node_modules/@ant-design/icons/es/icons/CodeOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EditOutlined.js","../node_modules/@ant-design/icons/es/icons/EditOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FormOutlined.js","../node_modules/@ant-design/icons/es/icons/FormOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ReloadOutlined.js","../node_modules/@ant-design/icons/es/icons/ReloadOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../src/types/schema.ts","../src/components/DynamicFilter.tsx","../src/components/DynamicTable.tsx","../src/types/validationRules.ts","../src/components/DynamicForm.tsx","../src/components/CrudPage.tsx"],"sourcesContent":["import { createContext } from 'react';\nvar IconContext = /*#__PURE__*/createContext({});\nexport default IconContext;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\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}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\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}\nexport { _defineProperty as default };","function _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}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\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}\nexport { _objectWithoutProperties as default };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nconst round = Math.round;\n\n/**\n * Support format, alpha unit will check the % mark:\n * - rgba(102, 204, 255, .5) -> [102, 204, 255, 0.5]\n * - rgb(102 204 255 / .5) -> [102, 204, 255, 0.5]\n * - rgb(100%, 50%, 0% / 50%) -> [255, 128, 0, 0.5]\n * - hsl(270, 60, 40, .5) -> [270, 60, 40, 0.5]\n * - hsl(270deg 60% 40% / 50%) -> [270, 60, 40, 0.5]\n *\n * When `base` is provided, the percentage value will be divided by `base`.\n */\nfunction splitColorStr(str, parseNum) {\n const match = str\n // Remove str before `(`\n .replace(/^[^(]*\\((.*)/, '$1')\n // Remove str after `)`\n .replace(/\\).*/, '').match(/\\d*\\.?\\d+%?/g) || [];\n const numList = match.map(item => parseFloat(item));\n for (let i = 0; i < 3; i += 1) {\n numList[i] = parseNum(numList[i] || 0, match[i] || '', i);\n }\n\n // For alpha. 50% should be 0.5\n if (match[3]) {\n numList[3] = match[3].includes('%') ? numList[3] / 100 : numList[3];\n } else {\n // By default, alpha is 1\n numList[3] = 1;\n }\n return numList;\n}\nconst parseHSVorHSL = (num, _, index) => index === 0 ? num : num / 100;\n\n/** round and limit number to integer between 0-255 */\nfunction limitRange(value, max) {\n const mergedMax = max || 255;\n if (value > mergedMax) {\n return mergedMax;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n}\nexport class FastColor {\n constructor(input) {\n /**\n * All FastColor objects are valid. So isValid is always true. This property is kept to be compatible with TinyColor.\n */\n _defineProperty(this, \"isValid\", true);\n /**\n * Red, R in RGB\n */\n _defineProperty(this, \"r\", 0);\n /**\n * Green, G in RGB\n */\n _defineProperty(this, \"g\", 0);\n /**\n * Blue, B in RGB\n */\n _defineProperty(this, \"b\", 0);\n /**\n * Alpha/Opacity, A in RGBA/HSLA\n */\n _defineProperty(this, \"a\", 1);\n // HSV privates\n _defineProperty(this, \"_h\", void 0);\n _defineProperty(this, \"_s\", void 0);\n _defineProperty(this, \"_l\", void 0);\n _defineProperty(this, \"_v\", void 0);\n // intermediate variables to calculate HSL/HSV\n _defineProperty(this, \"_max\", void 0);\n _defineProperty(this, \"_min\", void 0);\n _defineProperty(this, \"_brightness\", void 0);\n /**\n * Always check 3 char in the object to determine the format.\n * We not use function in check to save bundle size.\n * e.g. 'rgb' -> { r: 0, g: 0, b: 0 }.\n */\n function matchFormat(str) {\n return str[0] in input && str[1] in input && str[2] in input;\n }\n if (!input) {\n // Do nothing since already initialized\n } else if (typeof input === 'string') {\n const trimStr = input.trim();\n function matchPrefix(prefix) {\n return trimStr.startsWith(prefix);\n }\n if (/^#?[A-F\\d]{3,8}$/i.test(trimStr)) {\n this.fromHexString(trimStr);\n } else if (matchPrefix('rgb')) {\n this.fromRgbString(trimStr);\n } else if (matchPrefix('hsl')) {\n this.fromHslString(trimStr);\n } else if (matchPrefix('hsv') || matchPrefix('hsb')) {\n this.fromHsvString(trimStr);\n }\n } else if (input instanceof FastColor) {\n this.r = input.r;\n this.g = input.g;\n this.b = input.b;\n this.a = input.a;\n this._h = input._h;\n this._s = input._s;\n this._l = input._l;\n this._v = input._v;\n } else if (matchFormat('rgb')) {\n this.r = limitRange(input.r);\n this.g = limitRange(input.g);\n this.b = limitRange(input.b);\n this.a = typeof input.a === 'number' ? limitRange(input.a, 1) : 1;\n } else if (matchFormat('hsl')) {\n this.fromHsl(input);\n } else if (matchFormat('hsv')) {\n this.fromHsv(input);\n } else {\n throw new Error('@ant-design/fast-color: unsupported input ' + JSON.stringify(input));\n }\n }\n\n // ======================= Setter =======================\n\n setR(value) {\n return this._sc('r', value);\n }\n setG(value) {\n return this._sc('g', value);\n }\n setB(value) {\n return this._sc('b', value);\n }\n setA(value) {\n return this._sc('a', value, 1);\n }\n setHue(value) {\n const hsv = this.toHsv();\n hsv.h = value;\n return this._c(hsv);\n }\n\n // ======================= Getter =======================\n /**\n * Returns the perceived luminance of a color, from 0-1.\n * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n */\n getLuminance() {\n function adjustGamma(raw) {\n const val = raw / 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }\n const R = adjustGamma(this.r);\n const G = adjustGamma(this.g);\n const B = adjustGamma(this.b);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n }\n getHue() {\n if (typeof this._h === 'undefined') {\n const delta = this.getMax() - this.getMin();\n if (delta === 0) {\n this._h = 0;\n } else {\n this._h = round(60 * (this.r === this.getMax() ? (this.g - this.b) / delta + (this.g < this.b ? 6 : 0) : this.g === this.getMax() ? (this.b - this.r) / delta + 2 : (this.r - this.g) / delta + 4));\n }\n }\n return this._h;\n }\n getSaturation() {\n if (typeof this._s === 'undefined') {\n const delta = this.getMax() - this.getMin();\n if (delta === 0) {\n this._s = 0;\n } else {\n this._s = delta / this.getMax();\n }\n }\n return this._s;\n }\n getLightness() {\n if (typeof this._l === 'undefined') {\n this._l = (this.getMax() + this.getMin()) / 510;\n }\n return this._l;\n }\n getValue() {\n if (typeof this._v === 'undefined') {\n this._v = this.getMax() / 255;\n }\n return this._v;\n }\n\n /**\n * Returns the perceived brightness of the color, from 0-255.\n * Note: this is not the b of HSB\n * @see http://www.w3.org/TR/AERT#color-contrast\n */\n getBrightness() {\n if (typeof this._brightness === 'undefined') {\n this._brightness = (this.r * 299 + this.g * 587 + this.b * 114) / 1000;\n }\n return this._brightness;\n }\n\n // ======================== Func ========================\n\n darken(amount = 10) {\n const h = this.getHue();\n const s = this.getSaturation();\n let l = this.getLightness() - amount / 100;\n if (l < 0) {\n l = 0;\n }\n return this._c({\n h,\n s,\n l,\n a: this.a\n });\n }\n lighten(amount = 10) {\n const h = this.getHue();\n const s = this.getSaturation();\n let l = this.getLightness() + amount / 100;\n if (l > 1) {\n l = 1;\n }\n return this._c({\n h,\n s,\n l,\n a: this.a\n });\n }\n\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n mix(input, amount = 50) {\n const color = this._c(input);\n const p = amount / 100;\n const calc = key => (color[key] - this[key]) * p + this[key];\n const rgba = {\n r: round(calc('r')),\n g: round(calc('g')),\n b: round(calc('b')),\n a: round(calc('a') * 100) / 100\n };\n return this._c(rgba);\n }\n\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n */\n tint(amount = 10) {\n return this.mix({\n r: 255,\n g: 255,\n b: 255,\n a: 1\n }, amount);\n }\n\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n */\n shade(amount = 10) {\n return this.mix({\n r: 0,\n g: 0,\n b: 0,\n a: 1\n }, amount);\n }\n onBackground(background) {\n const bg = this._c(background);\n const alpha = this.a + bg.a * (1 - this.a);\n const calc = key => {\n return round((this[key] * this.a + bg[key] * bg.a * (1 - this.a)) / alpha);\n };\n return this._c({\n r: calc('r'),\n g: calc('g'),\n b: calc('b'),\n a: alpha\n });\n }\n\n // ======================= Status =======================\n isDark() {\n return this.getBrightness() < 128;\n }\n isLight() {\n return this.getBrightness() >= 128;\n }\n\n // ======================== MISC ========================\n equals(other) {\n return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;\n }\n clone() {\n return this._c(this);\n }\n\n // ======================= Format =======================\n toHexString() {\n let hex = '#';\n const rHex = (this.r || 0).toString(16);\n hex += rHex.length === 2 ? rHex : '0' + rHex;\n const gHex = (this.g || 0).toString(16);\n hex += gHex.length === 2 ? gHex : '0' + gHex;\n const bHex = (this.b || 0).toString(16);\n hex += bHex.length === 2 ? bHex : '0' + bHex;\n if (typeof this.a === 'number' && this.a >= 0 && this.a < 1) {\n const aHex = round(this.a * 255).toString(16);\n hex += aHex.length === 2 ? aHex : '0' + aHex;\n }\n return hex;\n }\n\n /** CSS support color pattern */\n toHsl() {\n return {\n h: this.getHue(),\n s: this.getSaturation(),\n l: this.getLightness(),\n a: this.a\n };\n }\n\n /** CSS support color pattern */\n toHslString() {\n const h = this.getHue();\n const s = round(this.getSaturation() * 100);\n const l = round(this.getLightness() * 100);\n return this.a !== 1 ? `hsla(${h},${s}%,${l}%,${this.a})` : `hsl(${h},${s}%,${l}%)`;\n }\n\n /** Same as toHsb */\n toHsv() {\n return {\n h: this.getHue(),\n s: this.getSaturation(),\n v: this.getValue(),\n a: this.a\n };\n }\n toRgb() {\n return {\n r: this.r,\n g: this.g,\n b: this.b,\n a: this.a\n };\n }\n toRgbString() {\n return this.a !== 1 ? `rgba(${this.r},${this.g},${this.b},${this.a})` : `rgb(${this.r},${this.g},${this.b})`;\n }\n toString() {\n return this.toRgbString();\n }\n\n // ====================== Privates ======================\n /** Return a new FastColor object with one channel changed */\n _sc(rgb, value, max) {\n const clone = this.clone();\n clone[rgb] = limitRange(value, max);\n return clone;\n }\n _c(input) {\n return new this.constructor(input);\n }\n getMax() {\n if (typeof this._max === 'undefined') {\n this._max = Math.max(this.r, this.g, this.b);\n }\n return this._max;\n }\n getMin() {\n if (typeof this._min === 'undefined') {\n this._min = Math.min(this.r, this.g, this.b);\n }\n return this._min;\n }\n fromHexString(trimStr) {\n const withoutPrefix = trimStr.replace('#', '');\n function connectNum(index1, index2) {\n return parseInt(withoutPrefix[index1] + withoutPrefix[index2 || index1], 16);\n }\n if (withoutPrefix.length < 6) {\n // #rgb or #rgba\n this.r = connectNum(0);\n this.g = connectNum(1);\n this.b = connectNum(2);\n this.a = withoutPrefix[3] ? connectNum(3) / 255 : 1;\n } else {\n // #rrggbb or #rrggbbaa\n this.r = connectNum(0, 1);\n this.g = connectNum(2, 3);\n this.b = connectNum(4, 5);\n this.a = withoutPrefix[6] ? connectNum(6, 7) / 255 : 1;\n }\n }\n fromHsl({\n h,\n s,\n l,\n a\n }) {\n this._h = h % 360;\n this._s = s;\n this._l = l;\n this.a = typeof a === 'number' ? a : 1;\n if (s <= 0) {\n const rgb = round(l * 255);\n this.r = rgb;\n this.g = rgb;\n this.b = rgb;\n }\n let r = 0,\n g = 0,\n b = 0;\n const huePrime = h / 60;\n const chroma = (1 - Math.abs(2 * l - 1)) * s;\n const secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n if (huePrime >= 0 && huePrime < 1) {\n r = chroma;\n g = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n r = secondComponent;\n g = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n g = chroma;\n b = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n g = secondComponent;\n b = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n r = secondComponent;\n b = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n r = chroma;\n b = secondComponent;\n }\n const lightnessModification = l - chroma / 2;\n this.r = round((r + lightnessModification) * 255);\n this.g = round((g + lightnessModification) * 255);\n this.b = round((b + lightnessModification) * 255);\n }\n fromHsv({\n h,\n s,\n v,\n a\n }) {\n this._h = h % 360;\n this._s = s;\n this._v = v;\n this.a = typeof a === 'number' ? a : 1;\n const vv = round(v * 255);\n this.r = vv;\n this.g = vv;\n this.b = vv;\n if (s <= 0) {\n return;\n }\n const hh = h / 60;\n const i = Math.floor(hh);\n const ff = hh - i;\n const p = round(v * (1.0 - s) * 255);\n const q = round(v * (1.0 - s * ff) * 255);\n const t = round(v * (1.0 - s * (1.0 - ff)) * 255);\n switch (i) {\n case 0:\n this.g = t;\n this.b = p;\n break;\n case 1:\n this.r = q;\n this.b = p;\n break;\n case 2:\n this.r = p;\n this.b = t;\n break;\n case 3:\n this.r = p;\n this.g = q;\n break;\n case 4:\n this.r = t;\n this.g = p;\n break;\n case 5:\n default:\n this.g = p;\n this.b = q;\n break;\n }\n }\n fromHsvString(trimStr) {\n const cells = splitColorStr(trimStr, parseHSVorHSL);\n this.fromHsv({\n h: cells[0],\n s: cells[1],\n v: cells[2],\n a: cells[3]\n });\n }\n fromHslString(trimStr) {\n const cells = splitColorStr(trimStr, parseHSVorHSL);\n this.fromHsl({\n h: cells[0],\n s: cells[1],\n l: cells[2],\n a: cells[3]\n });\n }\n fromRgbString(trimStr) {\n const cells = splitColorStr(trimStr, (num, txt) =>\n // Convert percentage to number. e.g. 50% -> 128\n txt.includes('%') ? round(num / 100 * 255) : num);\n this.r = cells[0];\n this.g = cells[1];\n this.b = cells[2];\n this.a = cells[3];\n }\n}","import { FastColor } from '@ant-design/fast-color';\nvar hueStep = 2; // 色相阶梯\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\nvar lightColorCount = 5; // 浅色数量,主色上\nvar darkColorCount = 4; // 深色数量,主色下\n\n// 暗色主题颜色映射关系表\nvar darkColorMap = [{\n index: 7,\n amount: 15\n}, {\n index: 6,\n amount: 25\n}, {\n index: 5,\n amount: 30\n}, {\n index: 5,\n amount: 45\n}, {\n index: 5,\n amount: 65\n}, {\n index: 5,\n amount: 85\n}, {\n index: 4,\n amount: 90\n}, {\n index: 3,\n amount: 95\n}, {\n index: 2,\n amount: 97\n}, {\n index: 1,\n amount: 98\n}];\nfunction getHue(hsv, i, light) {\n var hue;\n // 根据色相不同,色相转向不同\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n return hue;\n}\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n var saturation;\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n }\n // 边界值修正\n if (saturation > 1) {\n saturation = 1;\n }\n // 第一格的 s 限制在 0.06-0.1 之间\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n return Math.round(saturation * 100) / 100;\n}\nfunction getValue(hsv, i, light) {\n var value;\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n // Clamp value between 0 and 1\n value = Math.max(0, Math.min(1, value));\n return Math.round(value * 100) / 100;\n}\nexport default function generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = new FastColor(color);\n var hsv = pColor.toHsv();\n for (var i = lightColorCount; i > 0; i -= 1) {\n var c = new FastColor({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n });\n patterns.push(c);\n }\n patterns.push(pColor);\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _c = new FastColor({\n h: getHue(hsv, _i),\n s: getSaturation(hsv, _i),\n v: getValue(hsv, _i)\n });\n patterns.push(_c);\n }\n\n // dark theme patterns\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n amount = _ref.amount;\n return new FastColor(opts.backgroundColor || '#141414').mix(patterns[index], amount).toHexString();\n });\n }\n return patterns.map(function (c) {\n return c.toHexString();\n });\n}","// Generated by script. Do NOT modify!\n\nexport var presetPrimaryColors = {\n \"red\": \"#F5222D\",\n \"volcano\": \"#FA541C\",\n \"orange\": \"#FA8C16\",\n \"gold\": \"#FAAD14\",\n \"yellow\": \"#FADB14\",\n \"lime\": \"#A0D911\",\n \"green\": \"#52C41A\",\n \"cyan\": \"#13C2C2\",\n \"blue\": \"#1677FF\",\n \"geekblue\": \"#2F54EB\",\n \"purple\": \"#722ED1\",\n \"magenta\": \"#EB2F96\",\n \"grey\": \"#666666\"\n};\nexport var red = [\"#fff1f0\", \"#ffccc7\", \"#ffa39e\", \"#ff7875\", \"#ff4d4f\", \"#f5222d\", \"#cf1322\", \"#a8071a\", \"#820014\", \"#5c0011\"];\nred.primary = red[5];\nexport var volcano = [\"#fff2e8\", \"#ffd8bf\", \"#ffbb96\", \"#ff9c6e\", \"#ff7a45\", \"#fa541c\", \"#d4380d\", \"#ad2102\", \"#871400\", \"#610b00\"];\nvolcano.primary = volcano[5];\nexport var orange = [\"#fff7e6\", \"#ffe7ba\", \"#ffd591\", \"#ffc069\", \"#ffa940\", \"#fa8c16\", \"#d46b08\", \"#ad4e00\", \"#873800\", \"#612500\"];\norange.primary = orange[5];\nexport var gold = [\"#fffbe6\", \"#fff1b8\", \"#ffe58f\", \"#ffd666\", \"#ffc53d\", \"#faad14\", \"#d48806\", \"#ad6800\", \"#874d00\", \"#613400\"];\ngold.primary = gold[5];\nexport var yellow = [\"#feffe6\", \"#ffffb8\", \"#fffb8f\", \"#fff566\", \"#ffec3d\", \"#fadb14\", \"#d4b106\", \"#ad8b00\", \"#876800\", \"#614700\"];\nyellow.primary = yellow[5];\nexport var lime = [\"#fcffe6\", \"#f4ffb8\", \"#eaff8f\", \"#d3f261\", \"#bae637\", \"#a0d911\", \"#7cb305\", \"#5b8c00\", \"#3f6600\", \"#254000\"];\nlime.primary = lime[5];\nexport var green = [\"#f6ffed\", \"#d9f7be\", \"#b7eb8f\", \"#95de64\", \"#73d13d\", \"#52c41a\", \"#389e0d\", \"#237804\", \"#135200\", \"#092b00\"];\ngreen.primary = green[5];\nexport var cyan = [\"#e6fffb\", \"#b5f5ec\", \"#87e8de\", \"#5cdbd3\", \"#36cfc9\", \"#13c2c2\", \"#08979c\", \"#006d75\", \"#00474f\", \"#002329\"];\ncyan.primary = cyan[5];\nexport var blue = [\"#e6f4ff\", \"#bae0ff\", \"#91caff\", \"#69b1ff\", \"#4096ff\", \"#1677ff\", \"#0958d9\", \"#003eb3\", \"#002c8c\", \"#001d66\"];\nblue.primary = blue[5];\nexport var geekblue = [\"#f0f5ff\", \"#d6e4ff\", \"#adc6ff\", \"#85a5ff\", \"#597ef7\", \"#2f54eb\", \"#1d39c4\", \"#10239e\", \"#061178\", \"#030852\"];\ngeekblue.primary = geekblue[5];\nexport var purple = [\"#f9f0ff\", \"#efdbff\", \"#d3adf7\", \"#b37feb\", \"#9254de\", \"#722ed1\", \"#531dab\", \"#391085\", \"#22075e\", \"#120338\"];\npurple.primary = purple[5];\nexport var magenta = [\"#fff0f6\", \"#ffd6e7\", \"#ffadd2\", \"#ff85c0\", \"#f759ab\", \"#eb2f96\", \"#c41d7f\", \"#9e1068\", \"#780650\", \"#520339\"];\nmagenta.primary = magenta[5];\nexport var grey = [\"#a6a6a6\", \"#999999\", \"#8c8c8c\", \"#808080\", \"#737373\", \"#666666\", \"#404040\", \"#1a1a1a\", \"#000000\", \"#000000\"];\ngrey.primary = grey[5];\nexport var gray = grey;\nexport var presetPalettes = {\n red: red,\n volcano: volcano,\n orange: orange,\n gold: gold,\n yellow: yellow,\n lime: lime,\n green: green,\n cyan: cyan,\n blue: blue,\n geekblue: geekblue,\n purple: purple,\n magenta: magenta,\n grey: grey\n};\nexport var redDark = [\"#2a1215\", \"#431418\", \"#58181c\", \"#791a1f\", \"#a61d24\", \"#d32029\", \"#e84749\", \"#f37370\", \"#f89f9a\", \"#fac8c3\"];\nredDark.primary = redDark[5];\nexport var volcanoDark = [\"#2b1611\", \"#441d12\", \"#592716\", \"#7c3118\", \"#aa3e19\", \"#d84a1b\", \"#e87040\", \"#f3956a\", \"#f8b692\", \"#fad4bc\"];\nvolcanoDark.primary = volcanoDark[5];\nexport var orangeDark = [\"#2b1d11\", \"#442a11\", \"#593815\", \"#7c4a15\", \"#aa6215\", \"#d87a16\", \"#e89a3c\", \"#f3b765\", \"#f8cf8d\", \"#fae3b7\"];\norangeDark.primary = orangeDark[5];\nexport var goldDark = [\"#2b2111\", \"#443111\", \"#594214\", \"#7c5914\", \"#aa7714\", \"#d89614\", \"#e8b339\", \"#f3cc62\", \"#f8df8b\", \"#faedb5\"];\ngoldDark.primary = goldDark[5];\nexport var yellowDark = [\"#2b2611\", \"#443b11\", \"#595014\", \"#7c6e14\", \"#aa9514\", \"#d8bd14\", \"#e8d639\", \"#f3ea62\", \"#f8f48b\", \"#fafab5\"];\nyellowDark.primary = yellowDark[5];\nexport var limeDark = [\"#1f2611\", \"#2e3c10\", \"#3e4f13\", \"#536d13\", \"#6f9412\", \"#8bbb11\", \"#a9d134\", \"#c9e75d\", \"#e4f88b\", \"#f0fab5\"];\nlimeDark.primary = limeDark[5];\nexport var greenDark = [\"#162312\", \"#1d3712\", \"#274916\", \"#306317\", \"#3c8618\", \"#49aa19\", \"#6abe39\", \"#8fd460\", \"#b2e58b\", \"#d5f2bb\"];\ngreenDark.primary = greenDark[5];\nexport var cyanDark = [\"#112123\", \"#113536\", \"#144848\", \"#146262\", \"#138585\", \"#13a8a8\", \"#33bcb7\", \"#58d1c9\", \"#84e2d8\", \"#b2f1e8\"];\ncyanDark.primary = cyanDark[5];\nexport var blueDark = [\"#111a2c\", \"#112545\", \"#15325b\", \"#15417e\", \"#1554ad\", \"#1668dc\", \"#3c89e8\", \"#65a9f3\", \"#8dc5f8\", \"#b7dcfa\"];\nblueDark.primary = blueDark[5];\nexport var geekblueDark = [\"#131629\", \"#161d40\", \"#1c2755\", \"#203175\", \"#263ea0\", \"#2b4acb\", \"#5273e0\", \"#7f9ef3\", \"#a8c1f8\", \"#d2e0fa\"];\ngeekblueDark.primary = geekblueDark[5];\nexport var purpleDark = [\"#1a1325\", \"#24163a\", \"#301c4d\", \"#3e2069\", \"#51258f\", \"#642ab5\", \"#854eca\", \"#ab7ae0\", \"#cda8f0\", \"#ebd7fa\"];\npurpleDark.primary = purpleDark[5];\nexport var magentaDark = [\"#291321\", \"#40162f\", \"#551c3b\", \"#75204f\", \"#a02669\", \"#cb2b83\", \"#e0529c\", \"#f37fb7\", \"#f8a8cc\", \"#fad2e3\"];\nmagentaDark.primary = magentaDark[5];\nexport var greyDark = [\"#151515\", \"#1f1f1f\", \"#2d2d2d\", \"#393939\", \"#494949\", \"#5a5a5a\", \"#6a6a6a\", \"#7b7b7b\", \"#888888\", \"#969696\"];\ngreyDark.primary = greyDark[5];\nexport var presetDarkPalettes = {\n red: redDark,\n volcano: volcanoDark,\n orange: orangeDark,\n gold: goldDark,\n yellow: yellowDark,\n lime: limeDark,\n green: greenDark,\n cyan: cyanDark,\n blue: blueDark,\n geekblue: geekblueDark,\n purple: purpleDark,\n magenta: magentaDark,\n grey: greyDark\n};","import defineProperty from \"./defineProperty.js\";\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}\nexport { _objectSpread2 as default };","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n if (!root) {\n return false;\n }\n\n // Use native if support\n if (root.contains) {\n return root.contains(n);\n }\n\n // `document.contains` not support with IE11\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar APPEND_PRIORITY = 'data-rc-priority';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mark = _ref.mark;\n if (mark) {\n return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n var head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n return node.tagName === 'STYLE';\n });\n}\nexport function injectCSS(css) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!canUseDom()) {\n return null;\n }\n var csp = option.csp,\n prepend = option.prepend,\n _option$priority = option.priority,\n priority = _option$priority === void 0 ? 0 : _option$priority;\n var mergedOrder = getOrder(prepend);\n var isPrependQueue = mergedOrder === 'prependQueue';\n var styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, mergedOrder);\n if (isPrependQueue && priority) {\n styleNode.setAttribute(APPEND_PRIORITY, \"\".concat(priority));\n }\n if (csp !== null && csp !== void 0 && csp.nonce) {\n styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n styleNode.innerHTML = css;\n var container = getContainer(option);\n var firstChild = container.firstChild;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (isPrependQueue) {\n var existStyle = (option.styles || findStyles(container)).filter(function (node) {\n // Ignore style which not injected by rc-util with prepend\n if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) {\n return false;\n }\n\n // Ignore style which priority less then new style\n var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0);\n return priority >= nodePriority;\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var container = getContainer(option);\n return (option.styles || findStyles(container)).find(function (node) {\n return node.getAttribute(getMark(option)) === key;\n });\n}\nexport function removeCSS(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var existNode = findExistNode(key, option);\n if (existNode) {\n var container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n var cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n var placeholderStyle = injectCSS('', option);\n var parentNode = placeholderStyle.parentNode;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n containerCache.clear();\n}\nexport function updateCSS(css, key) {\n var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var container = getContainer(originOption);\n var styles = findStyles(container);\n var option = _objectSpread(_objectSpread({}, originOption), {}, {\n styles: styles\n });\n\n // Sync real parent\n syncRealContainer(container, option);\n var existNode = findExistNode(key, option);\n if (existNode) {\n var _option$csp, _option$csp2;\n if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n var _option$csp3;\n existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n var newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","function getRoot(ele) {\n var _ele$getRootNode;\n return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);\n}\n\n/**\n * Check if is in shadowRoot\n */\nexport function inShadow(ele) {\n return getRoot(ele) instanceof ShadowRoot;\n}\n\n/**\n * Return shadowRoot if possible\n */\nexport function getShadowRoot(ele) {\n return inShadow(ele) ? getRoot(ele) : null;\n}","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\n\n/**\n * Warning if condition not match.\n * @param valid Condition\n * @param message Warning message\n * @example\n * ```js\n * warning(false, 'some error'); // print some error\n * warning(true, 'some error'); // print nothing\n * warning(1 === 2, 'some error'); // print some error\n * ```\n */\nexport function warning(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\n\n/** @see Similar to {@link warning} */\nexport function note(valid, message) {\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\n\n/** @see Same as {@link warning}, but only warn once for the same message */\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { generate as generateColor } from '@ant-design/colors';\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport warn from \"rc-util/es/warning\";\nimport React, { useContext, useEffect } from 'react';\nimport IconContext from \"./components/Context\";\nfunction camelCase(input) {\n return input.replace(/-(.)/g, function (match, g) {\n return g.toUpperCase();\n });\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons] \".concat(message));\n}\nexport function isIconDefinition(target) {\n return _typeof(target) === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (_typeof(target.icon) === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc.class;\n break;\n default:\n delete acc[key];\n acc[camelCase(key)] = val;\n }\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: key\n }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n return /*#__PURE__*/React.createElement(node.tag, _objectSpread(_objectSpread({\n key: key\n }, normalizeAttrs(node.attrs)), rootProps), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n}\n\n// These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-flex;\\n align-items: center;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nexport var useInsertStyles = function useInsertStyles(eleRef) {\n var _useContext = useContext(IconContext),\n csp = _useContext.csp,\n prefixCls = _useContext.prefixCls,\n layer = _useContext.layer;\n var mergedStyleStr = iconStyles;\n if (prefixCls) {\n mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);\n }\n if (layer) {\n mergedStyleStr = \"@layer \".concat(layer, \" {\\n\").concat(mergedStyleStr, \"\\n}\");\n }\n useEffect(function () {\n var ele = eleRef.current;\n var shadowRoot = getShadowRoot(ele);\n updateCSS(mergedStyleStr, '@ant-design-icons', {\n prepend: !layer,\n csp: csp,\n attachTo: shadowRoot\n });\n }, []);\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"icon\", \"className\", \"onClick\", \"style\", \"primaryColor\", \"secondaryColor\"];\nimport * as React from 'react';\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from \"../utils\";\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\nvar IconBase = function IconBase(props) {\n var icon = props.icon,\n className = props.className,\n onClick = props.onClick,\n style = props.style,\n primaryColor = props.primaryColor,\n secondaryColor = props.secondaryColor,\n restProps = _objectWithoutProperties(props, _excluded);\n var svgRef = React.useRef();\n var colors = twoToneColorPalette;\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n useInsertStyles(svgRef);\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n if (!isIconDefinition(icon)) {\n return null;\n }\n var target = icon;\n if (target && typeof target.icon === 'function') {\n target = _objectSpread(_objectSpread({}, target), {}, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread(_objectSpread({\n className: className,\n onClick: onClick,\n style: style,\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n }, restProps), {}, {\n ref: svgRef\n }));\n};\nIconBase.displayName = 'IconReact';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ReactIcon from \"./IconBase\";\nimport { normalizeTwoToneColors } from \"../utils\";\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n return ReactIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = ReactIcon.getTwoToneColors();\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n return [colors.primaryColor, colors.secondaryColor];\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"icon\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"twoToneColor\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { blue } from '@ant-design/colors';\nimport Context from \"./Context\";\nimport ReactIcon from \"./IconBase\";\nimport { getTwoToneColor, setTwoToneColor } from \"./twoTonePrimaryColor\";\nimport { normalizeTwoToneColors } from \"../utils\";\n// Initial setting\n// should move it to antd main repo?\nsetTwoToneColor(blue.primary);\n\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720\n\nvar Icon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var className = props.className,\n icon = props.icon,\n spin = props.spin,\n rotate = props.rotate,\n tabIndex = props.tabIndex,\n onClick = props.onClick,\n twoToneColor = props.twoToneColor,\n restProps = _objectWithoutProperties(props, _excluded);\n var _React$useContext = React.useContext(Context),\n _React$useContext$pre = _React$useContext.prefixCls,\n prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre,\n rootClassName = _React$useContext.rootClassName;\n var classString = classNames(rootClassName, prefixCls, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(icon.name), !!icon.name), \"\".concat(prefixCls, \"-spin\"), !!spin || icon.name === 'loading'), className);\n var iconTabIndex = tabIndex;\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n }\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n role: \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n ref: ref,\n tabIndex: iconTabIndex,\n onClick: onClick,\n className: classString\n }), /*#__PURE__*/React.createElement(ReactIcon, {\n icon: icon,\n primaryColor: primaryColor,\n secondaryColor: secondaryColor,\n style: svgStyle\n }));\n});\nIcon.displayName = 'AntdIcon';\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar CodeOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"code\", \"theme\": \"outlined\" };\nexport default CodeOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CodeOutlinedSvg from \"@ant-design/icons-svg/es/asn/CodeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CodeOutlined = function CodeOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CodeOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CodeOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'CodeOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CopyOutlined = function CopyOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CopyOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CopyOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'CopyOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DeleteOutlined = function DeleteOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DeleteOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DeleteOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DeleteOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar EditOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\" } }] }, \"name\": \"edit\", \"theme\": \"outlined\" };\nexport default EditOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EditOutlinedSvg from \"@ant-design/icons-svg/es/asn/EditOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EditOutlined = function EditOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EditOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EditOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'EditOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar EyeOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z\" } }] }, \"name\": \"eye\", \"theme\": \"outlined\" };\nexport default EyeOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport EyeOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar EyeOutlined = function EyeOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: EyeOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(EyeOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'EyeOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FormOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 00-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z\" } }] }, \"name\": \"form\", \"theme\": \"outlined\" };\nexport default FormOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FormOutlinedSvg from \"@ant-design/icons-svg/es/asn/FormOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FormOutlined = function FormOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FormOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FormOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'FormOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PlusOutlined = function PlusOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PlusOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(PlusOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'PlusOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar ReloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\" } }] }, \"name\": \"reload\", \"theme\": \"outlined\" };\nexport default ReloadOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ReloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/ReloadOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ReloadOutlined = function ReloadOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: ReloadOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ReloadOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'ReloadOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SearchOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\" } }] }, \"name\": \"search\", \"theme\": \"outlined\" };\nexport default SearchOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SearchOutlinedSvg\n }));\n};\n\n/** */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SearchOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'SearchOutlined';\n}\nexport default RefIcon;","/** API 请求函数类型 */\nexport interface ApiRequest {\n <T = unknown>(url: string, options?: RequestInit): Promise<T>;\n}\n\n/**\n * 数据类型:描述字段存储的值类型。\n *\n * 嵌套对象不再作为独立类型,而是通过 key 的点分路径(dot-path)表达,\n * 例如 `emergencyContact.name`、`emergencyContact.phone`。\n * 框架会自动将 Form 数据写入/读出对应的嵌套路径。\n */\nexport type DataType =\n | 'string' // 字符串\n | 'number' // 数字\n | 'boolean' // 布尔\n | 'datetime' // 日期时间\n | 'date' // 仅日期\n | 'array' // 基本类型数组(string[] / number[]),配合 multiselect / checkbox\n | 'objectArray'; // 对象数组(object[]),配合 editableTable,需配置 itemFields\n\n/** UI 组件类型:描述字段渲染使用的组件 */\nexport type WidgetType =\n // ── 基础输入 ──────────────────────────────\n | 'input' // 单行输入框(string 默认)\n | 'textarea' // 多行文本域\n | 'inputNumber' // 数字输入框(number 默认)\n // ── 选择类 ────────────────────────────────\n | 'select' // 单选下拉\n | 'multiselect' // 多选下拉(array 默认)\n | 'radio' // 单选按钮组\n | 'checkbox' // 多选复选框\n | 'switch' // 开关(boolean 默认)\n // ── 日期时间 ──────────────────────────────\n | 'datePicker' // 日期/时间选择(date/datetime 默认)\n | 'rangePicker' // 日期范围选择\n | 'timePicker' // 时间点选择\n // ── 对象数组 ──────────────────────────────\n | 'editableTable' // 行内可编辑表格(objectArray 默认)\n // ── JSON 原始编辑 ─────────────────────────\n | 'jsonInput'; // 原始 JSON 文本域(fallback)\n\n/** 兼容旧版 —— 不再推荐直接使用 */\nexport type FieldType = DataType;\n\nexport interface SelectOption {\n label: string;\n value: string | number | boolean;\n color?: string;\n}\n\n/**\n * 筛选项配置 —— 仅放筛选独有配置。\n * options / placeholder / dateFormat 统一在 FieldSchema.config 里配置。\n */\nexport interface FilterConfig {\n /** 覆盖字段级 widget,指定筛选组件类型 */\n widget?: WidgetType;\n /** inputNumber 时可开启数字范围(min/max 两个输入框) */\n range?: boolean;\n defaultValue?: unknown;\n}\n\n/** 表格列配置 */\nexport interface TableColumnConfig {\n width?: number;\n fixed?: 'left' | 'right';\n sortable?: boolean;\n ellipsis?: boolean;\n}\n\n/**\n * 表单字段配置 —— 仅放表单独有配置。\n * options / placeholder / dateFormat / rows 统一在 FieldSchema.config 里配置。\n */\nexport interface FormFieldConfig {\n /** 覆盖字段级 widget,指定表单组件类型 */\n widget?: WidgetType;\n required?: boolean;\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * 字段级共用组件配置。\n * filter 和 form 均可读取,无需在两处重复填写。\n */\nexport interface FieldConfig {\n /** 下拉/多选/单选等组件的选项列表 */\n options?: SelectOption[];\n /** 输入框、选择框等的占位提示文字 */\n placeholder?: string;\n /** 日期/时间组件的显示格式,如 'YYYY-MM-DD' */\n dateFormat?: string;\n /** textarea / jsonInput 的行数 */\n rows?: number;\n}\n\n/**\n * 对象数组(objectArray)中每个 item 的字段定义。\n * 故意保持简单:不支持嵌套 objectArray,不支持 dot-path key。\n */\nexport interface ArrayItemField {\n /** item 对象的属性名,不使用点分路径 */\n key: string;\n label: string;\n /** 不允许嵌套数组 */\n type: Exclude<DataType, 'array' | 'objectArray'>;\n /** 不允许嵌套 editableTable */\n widget?: Exclude<WidgetType, 'editableTable'>;\n config?: Pick<FieldConfig, 'options' | 'placeholder' | 'dateFormat'>;\n required?: boolean;\n /** 列宽(px) */\n width?: number;\n}\n\n/**\n * 字段定义。\n *\n * ### 点分路径(dot-path)规则\n * `key` 支持点分路径表达嵌套结构,例如:\n * - `emergencyContact.name`\n * - `emergencyContact.phone`\n *\n * Form 层会自动将值写入 / 读取对应的嵌套对象属性;\n * 具有相同前缀的字段在表单中会被归为同一视觉分组,并显示分组标题。\n */\nexport interface FieldSchema {\n key: string;\n label: string;\n /** 数据类型(值的类型) */\n type: DataType;\n /**\n * 默认 UI 组件类型;可被 filter / form 级别的 widget 覆盖。\n * 不填时由 defaultWidgetForType 推导。\n */\n widget?: WidgetType;\n filter?: boolean | FilterConfig;\n table?: boolean | TableColumnConfig;\n form?: boolean | FormFieldConfig;\n /**\n * 字段级共用组件配置(options、placeholder、dateFormat 等)。\n * filter 和 form 均从这里读取,不再重复配置。\n */\n config?: FieldConfig;\n render?: string;\n /**\n * 对象数组子字段定义,仅 type='objectArray' 时生效。\n * 配置后 widget 默认推导为 'editableTable'。\n */\n itemFields?: ArrayItemField[];\n /**\n * 校验规则 key 数组,引用 validationRules.ts 中内置或自定义规则的 key。\n * 例如 `rules: ['phone_cn', 'max_len_50']`\n * 注意:required 规则通过 form.required 单独控制,无需在此重复。\n */\n rules?: string[];\n}\n\nexport type ActionType = 'edit' | 'delete' | 'view' | 'custom';\n\nexport interface ActionPermission {\n role?: string[];\n condition?: string;\n}\n\nexport interface ActionSchema {\n key: string;\n label: string;\n type: ActionType;\n icon?: string;\n danger?: boolean;\n permission?: ActionPermission;\n confirm?: {\n title: string;\n content?: string;\n };\n}\n\nexport interface PaginationConfig {\n pageSize?: number;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n}\n\nexport interface CrudPageSchema {\n id: string;\n title: string;\n api: {\n list: string;\n create?: string;\n update?: string;\n delete?: string;\n detail?: string;\n };\n fields: FieldSchema[];\n actions?: ActionSchema[];\n pagination?: PaginationConfig;\n rowKey?: string;\n createButtonLabel?: string;\n}\n\n/* ─── 工具函数 ──────────────────────────────────────── */\n\n/**\n * 根据数据类型推导默认 UI 组件\n *\n * string → input\n * number → inputNumber\n * boolean → switch\n * date → datePicker\n * datetime → datePicker\n * array → multiselect\n * objectArray → editableTable\n */\nexport function defaultWidgetForType(type: DataType): WidgetType {\n switch (type) {\n case 'number': return 'inputNumber';\n case 'boolean': return 'switch';\n case 'date':\n case 'datetime': return 'datePicker';\n case 'array': return 'multiselect';\n case 'objectArray': return 'editableTable';\n default: return 'input'; // string\n }\n}\n\n/** 获取实际生效的组件类型(context.widget > field.widget > type 推导) */\nexport function getEffectiveWidget(\n field: FieldSchema,\n config?: FilterConfig | FormFieldConfig,\n): WidgetType {\n if (config?.widget) return config.widget;\n if (field.widget) return field.widget;\n return defaultWidgetForType(field.type);\n}\n\n/**\n * 从嵌套对象按点分路径取值\n *\n * getNestedValue({ a: { b: 1 } }, 'a.b') → 1\n * getNestedValue({ x: [1, 2] }, 'x') → [1, 2]\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce((acc: unknown, key) => {\n if (acc != null && typeof acc === 'object' && !Array.isArray(acc)) {\n return (acc as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n}\n\n/**\n * 从点分路径 key 中提取分组前缀(第一个 segment)。\n * 无前缀的顶层字段返回 null。\n *\n * 'emergencyContact.name' → 'emergencyContact'\n * 'name' → null\n */\nexport function getFieldGroupPrefix(key: string): string | null {\n const idx = key.indexOf('.');\n return idx >= 0 ? key.slice(0, idx) : null;\n}","import { useState } from 'react';\nimport { Form, Input, InputNumber, Select, Switch, DatePicker, Button, Row, Col, Space, Radio } from 'antd';\nimport { SearchOutlined, ReloadOutlined } from '@ant-design/icons';\nimport type { CrudPageSchema, FieldSchema, FilterConfig, SelectOption } from '../types/schema';\nimport { getEffectiveWidget } from '../types/schema';\n\nconst { RangePicker } = DatePicker;\n\ninterface DynamicFilterProps {\n schema: CrudPageSchema;\n onSearch: (values: Record<string, unknown>) => void;\n onReset: () => void;\n}\n\n/** 解析 FilterConfig */\nfunction getFilterConfig(field: FieldSchema): FilterConfig | undefined {\n if (!field.filter || typeof field.filter === 'boolean') return undefined;\n return field.filter as FilterConfig;\n}\n\n/** 获取选项列表(从 field.config 读取) */\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 渲染单个筛选组件 */\nfunction renderFilterInput(field: FieldSchema, cfg?: FilterConfig): React.ReactNode {\n const widget = getEffectiveWidget(field, cfg);\n const placeholder = field.config?.placeholder;\n const dateFormat = field.config?.dateFormat;\n const options = getOptions(field);\n const style = { width: '100%' };\n\n switch (widget) {\n case 'input':\n return <Input placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'textarea':\n return <Input.TextArea placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'inputNumber': {\n if (cfg?.range) {\n return (\n <Space>\n <Form.Item name={`${field.key}_min`} noStyle>\n <InputNumber placeholder=\"最小值\" />\n </Form.Item>\n <span>~</span>\n <Form.Item name={`${field.key}_max`} noStyle>\n <InputNumber placeholder=\"最大值\" />\n </Form.Item>\n </Space>\n );\n }\n return <InputNumber placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n\n case 'select':\n return (\n <Select allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'multiselect':\n return (\n <Select mode=\"multiple\" allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'radio':\n return (\n <Radio.Group style={style}>\n {options.map((o) => (\n <Radio key={String(o.value)} value={o.value}>{o.label}</Radio>\n ))}\n </Radio.Group>\n );\n\n case 'switch':\n return <Switch />;\n\n case 'datePicker': {\n const showTime = field.type === 'datetime';\n return <DatePicker showTime={showTime} format={dateFormat} style={style} />;\n }\n\n case 'rangePicker': {\n const showTime = field.type === 'datetime';\n return <RangePicker showTime={showTime} format={dateFormat} style={style} />;\n }\n\n case 'timePicker':\n return <DatePicker picker=\"time\" format={dateFormat ?? 'HH:mm:ss'} style={style} />;\n\n case 'jsonInput':\n return <Input placeholder={placeholder ?? `搜索 ${field.label}`} style={style} />;\n\n default:\n return <Input placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n}\n\nexport default function DynamicFilter({ schema, onSearch, onReset }: DynamicFilterProps) {\n const [form] = Form.useForm();\n const [expanded, setExpanded] = useState(false);\n\n const filterFields = schema.fields.filter(\n (f) => f.filter !== false && f.filter !== undefined && f.type !== 'objectArray',\n );\n\n const handleFinish = (values: Record<string, unknown>) => {\n onSearch(values);\n };\n\n const handleReset = () => {\n form.resetFields();\n onReset();\n };\n\n const colSpan = { xs: 24, sm: 12, md: 12, lg: 8, xl: 6, xxl: 6 };\n\n const visibleFields = expanded ? filterFields : filterFields.slice(0, 4);\n\n return (\n <Form form={form} onFinish={handleFinish} layout=\"vertical\">\n <Row gutter={[16, 0]}>\n {visibleFields.map((field) => {\n const cfg = getFilterConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n\n // inputNumber 数字范围:name 不放在 Form.Item 上,由内部子 Form.Item 承载\n const isNumberRange = widget === 'inputNumber' && cfg?.range;\n\n return (\n <Col key={field.key} {...colSpan}>\n <Form.Item\n label={field.label}\n name={isNumberRange ? undefined : field.key}\n valuePropName={widget === 'switch' ? 'checked' : 'value'}\n >\n {renderFilterInput(field, cfg)}\n </Form.Item>\n </Col>\n );\n })}\n\n {/* 操作按钮 */}\n <Col {...colSpan}>\n <Form.Item label=\" \">\n <Space>\n <Button type=\"primary\" htmlType=\"submit\" icon={<SearchOutlined />}>\n 搜索\n </Button>\n <Button onClick={handleReset} icon={<ReloadOutlined />}>\n 重置\n </Button>\n {filterFields.length > 4 && (\n <Button type=\"link\" onClick={() => setExpanded(!expanded)}>\n {expanded ? '收起' : '展开'}\n </Button>\n )}\n </Space>\n </Form.Item>\n </Col>\n </Row>\n </Form>\n );\n}\n","import { Table, Tag, Switch, Space, Button, Popconfirm, Tooltip, message } from 'antd';\nimport { EyeOutlined, EditOutlined, DeleteOutlined, CopyOutlined } from '@ant-design/icons';\nimport type { ColumnsType } from 'antd/es/table';\nimport dayjs from 'dayjs';\nimport type { CrudPageSchema, FieldSchema, TableColumnConfig, SelectOption } from '../types/schema';\nimport { getEffectiveWidget, getNestedValue } from '../types/schema';\n\ninterface DynamicTableProps {\n schema: CrudPageSchema;\n data: Record<string, unknown>[];\n loading: boolean;\n pagination: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n };\n onView: (record: Record<string, unknown>) => void;\n onEdit: (record: Record<string, unknown>) => void;\n onDelete: (record: Record<string, unknown>) => void;\n onCustomAction?: (actionKey: string, record: Record<string, unknown>) => void;\n}\n\nfunction getTableConfig(field: FieldSchema): TableColumnConfig | undefined {\n if (!field.table || typeof field.table === 'boolean') return undefined;\n return field.table as TableColumnConfig;\n}\n\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 格式化单元格显示值 */\nfunction renderCell(field: FieldSchema, value: unknown): React.ReactNode {\n if (value == null || value === '') return <span style={{ color: '#ccc' }}>-</span>;\n\n const widget = getEffectiveWidget(field);\n\n // ── 布尔类 ──────────────────────────────────────────────\n if (field.type === 'boolean' || widget === 'switch') {\n return <Switch checked={Boolean(value)} disabled size=\"small\" />;\n }\n\n // ── 下拉/单选(有 options) ──────────────────────────────\n if (widget === 'select' || widget === 'radio') {\n const options = getOptions(field);\n const opt = options.find((o) => o.value === value);\n if (opt) {\n return opt.color ? <Tag color={opt.color}>{opt.label}</Tag> : <span>{opt.label}</span>;\n }\n return <span>{String(value)}</span>;\n }\n\n // ── 多选(multiselect / checkbox,值为数组) ─────────────\n if (widget === 'multiselect' || widget === 'checkbox') {\n const arr = Array.isArray(value) ? value : [value];\n const options = getOptions(field);\n return (\n <Space size={4} wrap>\n {arr.map((v) => {\n const opt = options.find((o) => o.value === v);\n return opt ? (\n <Tag key={String(v)} color={opt.color}>{opt.label}</Tag>\n ) : (\n <Tag key={String(v)}>{String(v)}</Tag>\n );\n })}\n </Space>\n );\n }\n\n // ── 日期/时间 ────────────────────────────────────────────\n if (widget === 'datePicker') {\n const fmt = field.config?.dateFormat ?? (field.type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n const d = dayjs(value as string);\n return d.isValid() ? <span>{d.format(fmt)}</span> : <span>{String(value)}</span>;\n }\n\n if (widget === 'rangePicker') {\n if (Array.isArray(value)) {\n const fmt = field.config?.dateFormat ?? 'YYYY-MM-DD';\n return <span>{value.map((v) => (v ? dayjs(v as string).format(fmt) : '-')).join(' ~ ')}</span>;\n }\n }\n\n if (widget === 'timePicker') {\n const fmt = field.config?.dateFormat ?? 'HH:mm:ss';\n const d = dayjs(value as string);\n return d.isValid() ? <span>{d.format(fmt)}</span> : <span>{String(value)}</span>;\n }\n\n // ── 普通数组(array 基本类型) ───────────────────────────\n if (field.type === 'array' && Array.isArray(value)) {\n return (\n <Space size={4} wrap>\n {(value as unknown[]).map((v, i) => (\n <Tag key={i}>{String(v)}</Tag>\n ))}\n </Space>\n );\n }\n\n // ── objectArray / editableTable:显示 N 条记录 ──────────\n if (field.type === 'objectArray' || widget === 'editableTable') {\n const arr = Array.isArray(value) ? value : [];\n return <span style={{ color: '#888' }}>{arr.length} 条记录</span>;\n }\n\n // ── jsonInput(对象序列化为字符串) ──────────────────────\n if (widget === 'jsonInput') {\n if (typeof value === 'object') {\n const str = JSON.stringify(value);\n return (\n <Tooltip title={<pre style={{ margin: 0, fontSize: 11 }}>{JSON.stringify(value, null, 2)}</pre>}>\n <span style={{ cursor: 'help', fontFamily: 'monospace', fontSize: 12 }}>\n {str.length > 40 ? str.slice(0, 40) + '…' : str}\n </span>\n </Tooltip>\n );\n }\n return <span>{String(value)}</span>;\n }\n\n return <span>{String(value)}</span>;\n}\n\nexport default function DynamicTable({\n schema,\n data,\n loading,\n pagination,\n onView,\n onEdit,\n onDelete,\n onCustomAction,\n}: DynamicTableProps) {\n const tableFields = schema.fields.filter((f) => f.table !== false && f.table !== undefined);\n\n const columns: ColumnsType<Record<string, unknown>> = tableFields.map((field) => {\n const cfg = getTableConfig(field);\n const isNested = field.key.includes('.');\n\n return {\n title: field.label,\n // 点分路径使用数组形式,Ant Design Table 支持嵌套取值\n dataIndex: isNested ? field.key.split('.') : field.key,\n key: field.key,\n width: cfg?.width,\n fixed: cfg?.fixed,\n ellipsis: cfg?.ellipsis,\n sorter: cfg?.sortable,\n render: (_value: unknown, record: Record<string, unknown>) => {\n // 统一使用 getNestedValue 以支持多层点分路径\n const actualValue = isNested ? getNestedValue(record, field.key) : _value;\n return renderCell(field, actualValue);\n },\n };\n });\n\n const copyJson = (record: Record<string, unknown>) => {\n navigator.clipboard.writeText(JSON.stringify(record, null, 2))\n .then(() => void message.success('已复制 JSON'))\n .catch(() => void message.error('复制失败'));\n };\n\n // 操作列(有 schema.actions 或始终存在,以便展示复制按钮)\n columns.push({\n title: '操作',\n key: '__actions',\n fixed: 'right',\n width: (schema.actions?.length ?? 0) * 60 + 60,\n render: (_: unknown, record: Record<string, unknown>) => (\n <Space size={4}>\n {(schema.actions ?? []).map((action) => {\n if (action.type === 'view') {\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n icon={<EyeOutlined />}\n onClick={() => onView(record)}\n />\n </Tooltip>\n );\n }\n if (action.type === 'edit') {\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n icon={<EditOutlined />}\n onClick={() => onEdit(record)}\n />\n </Tooltip>\n );\n }\n if (action.type === 'delete') {\n return (\n <Popconfirm\n key={action.key}\n title={action.confirm?.title ?? '确定删除?'}\n description={action.confirm?.content}\n onConfirm={() => onDelete(record)}\n okText=\"确定\"\n cancelText=\"取消\"\n okButtonProps={{ danger: true }}\n >\n <Tooltip title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </Popconfirm>\n );\n }\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={() => onCustomAction?.(action.key, record)}\n >\n {action.label}\n </Button>\n </Tooltip>\n );\n })}\n <Tooltip title=\"复制 JSON\">\n <Button\n type=\"link\"\n size=\"small\"\n icon={<CopyOutlined />}\n onClick={() => copyJson(record)}\n />\n </Tooltip>\n </Space>\n ),\n });\n\n return (\n <Table\n rowKey={schema.rowKey ?? 'id'}\n columns={columns}\n dataSource={data}\n loading={loading}\n scroll={{ x: 'max-content' }}\n pagination={{\n current: pagination.current,\n pageSize: pagination.pageSize,\n total: pagination.total,\n showSizeChanger: true,\n showTotal: schema.pagination?.showTotal\n ? (total) => `共 ${total} 条`\n : undefined,\n onChange: pagination.onChange,\n pageSizeOptions: schema.pagination?.pageSizeOptions ?? [10, 20, 50],\n }}\n />\n );\n}\n","import type { Rule } from 'antd/es/form';\n\n/** 校验规则配置(内置 + 自定义均使用此结构) */\nexport interface ValidationRuleConfig {\n key: string;\n label: string;\n description?: string;\n message: string;\n /** 正则字符串(将转为 RegExp) */\n pattern?: string;\n /** 最小值(number)或最小长度(string) */\n min?: number;\n /** 最大值(number)或最大长度(string) */\n max?: number;\n /** antd 内置类型校验 */\n type?: 'string' | 'number' | 'email' | 'url' | 'integer';\n /** 是否不允许纯空白字符 */\n whitespace?: boolean;\n /** 是否内置(内置规则不可删除) */\n builtin?: boolean;\n}\n\n/** 内置规则集 */\nexport const BUILTIN_RULES: ValidationRuleConfig[] = [\n {\n key: 'phone_cn',\n label: '手机号(中国大陆)',\n description: '1 开头的 11 位数字',\n message: '请输入正确的手机号',\n pattern: '^1[3-9]\\\\d{9}$',\n builtin: true,\n },\n {\n key: 'email',\n label: '邮箱地址',\n description: '标准电子邮箱格式',\n message: '请输入正确的邮箱地址',\n type: 'email',\n builtin: true,\n },\n {\n key: 'url',\n label: 'URL 链接',\n description: '以 http/https 开头的合法 URL',\n message: '请输入正确的 URL 地址',\n type: 'url',\n builtin: true,\n },\n {\n key: 'id_card_cn',\n label: '居民身份证(中国)',\n description: '18 位二代身份证号码',\n message: '请输入正确的身份证号',\n pattern: '^[1-9]\\\\d{5}(18|19|20)\\\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\\\d|3[01])\\\\d{3}[\\\\dXx]$',\n builtin: true,\n },\n {\n key: 'positive_integer',\n label: '正整数',\n description: '大于 0 的整数',\n message: '请输入正整数',\n pattern: '^[1-9]\\\\d*$',\n builtin: true,\n },\n {\n key: 'non_negative_integer',\n label: '非负整数',\n description: '0 或大于 0 的整数',\n message: '请输入非负整数',\n pattern: '^\\\\d+$',\n builtin: true,\n },\n {\n key: 'chinese',\n label: '纯中文',\n description: '只能包含中文字符',\n message: '只能输入中文字符',\n pattern: '^[\\\\u4e00-\\\\u9fa5]+$',\n builtin: true,\n },\n {\n key: 'alphanumeric',\n label: '字母和数字',\n description: '只能包含英文字母和数字',\n message: '只能输入字母和数字',\n pattern: '^[a-zA-Z0-9]+$',\n builtin: true,\n },\n {\n key: 'no_special_chars',\n label: '无特殊字符',\n description: '只允许中文、字母、数字、下划线、短横线',\n message: '不能包含特殊字符',\n pattern: '^[a-zA-Z0-9\\\\u4e00-\\\\u9fa5_-]+$',\n builtin: true,\n },\n {\n key: 'ip_address',\n label: 'IPv4 地址',\n description: '标准 IPv4 地址格式',\n message: '请输入正确的 IP 地址',\n pattern: '^((25[0-5]|2[0-4]\\\\d|[01]?\\\\d\\\\d?)\\\\.){3}(25[0-5]|2[0-4]\\\\d|[01]?\\\\d\\\\d?)$',\n builtin: true,\n },\n {\n key: 'date_format',\n label: '日期格式 (YYYY-MM-DD)',\n description: '格式如 2024-01-01',\n message: '请输入正确的日期格式,如 2024-01-01',\n pattern: '^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01])$',\n builtin: true,\n },\n {\n key: 'no_whitespace',\n label: '不含空格',\n description: '不允许包含任何空白字符',\n message: '不能包含空格',\n pattern: '^\\\\S+$',\n builtin: true,\n },\n {\n key: 'min_len_2',\n label: '最少 2 个字符',\n description: '字符串长度不少于 2',\n message: '长度不能少于 2 个字符',\n min: 2,\n builtin: true,\n },\n {\n key: 'max_len_50',\n label: '最多 50 个字符',\n description: '字符串长度不超过 50',\n message: '长度不能超过 50 个字符',\n max: 50,\n builtin: true,\n },\n {\n key: 'max_len_200',\n label: '最多 200 个字符',\n description: '字符串长度不超过 200',\n message: '长度不能超过 200 个字符',\n max: 200,\n builtin: true,\n },\n {\n key: 'bank_card',\n label: '银行卡号',\n description: '16-19 位纯数字',\n message: '请输入正确的银行卡号',\n pattern: '^\\\\d{16,19}$',\n builtin: true,\n },\n {\n key: 'plate_cn',\n label: '车牌号(中国)',\n description: '含新能源车牌在内的中国大陆车牌',\n message: '请输入正确的车牌号',\n pattern: '^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤川青藏琼宁夏][A-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$',\n builtin: true,\n },\n {\n key: 'postal_code_cn',\n label: '邮政编码(中国)',\n description: '6 位数字邮编',\n message: '请输入正确的邮政编码',\n pattern: '^\\\\d{6}$',\n builtin: true,\n },\n];\n\nconst CUSTOM_RULES_STORAGE_KEY = 'dynamic_crud_custom_rules';\n\nexport function loadCustomRules(): ValidationRuleConfig[] {\n try {\n const raw = localStorage.getItem(CUSTOM_RULES_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as ValidationRuleConfig[]) : [];\n } catch {\n return [];\n }\n}\n\nexport function saveCustomRules(rules: ValidationRuleConfig[]): void {\n try {\n localStorage.setItem(CUSTOM_RULES_STORAGE_KEY, JSON.stringify(rules));\n } catch { /* ignore */ }\n}\n\n/** 获取所有规则(内置 + 自定义) */\nexport function getAllRules(): ValidationRuleConfig[] {\n return [...BUILTIN_RULES, ...loadCustomRules()];\n}\n\n/** 根据 key 查找规则 */\nexport function getRuleByKey(key: string): ValidationRuleConfig | undefined {\n return getAllRules().find(r => r.key === key);\n}\n\n/** 将规则配置转为 Ant Design Form Rule */\nexport function ruleConfigToAntdRule(config: ValidationRuleConfig): Rule {\n const rule: Record<string, unknown> = { message: config.message };\n if (config.pattern) {\n rule.pattern = new RegExp(config.pattern);\n }\n if (config.type) {\n rule.type = config.type;\n }\n if (config.min !== undefined) {\n rule.min = config.min;\n }\n if (config.max !== undefined) {\n rule.max = config.max;\n }\n if (config.whitespace !== undefined) {\n rule.whitespace = config.whitespace;\n }\n return rule as Rule;\n}\n\n/** 将一组规则 key 转为 Ant Design Form Rules 数组 */\nexport function keysToAntdRules(keys: string[]): Rule[] {\n return keys\n .map(k => getRuleByKey(k))\n .filter((c): c is ValidationRuleConfig => c !== undefined)\n .map(ruleConfigToAntdRule);\n}","import { useEffect, useState } from 'react';\nimport {\n Modal, Form, Input, InputNumber, Select, Switch,\n DatePicker, Radio, Checkbox, Space, Card, Divider,\n Button, Table, message,\n} from 'antd';\nimport { PlusOutlined, DeleteOutlined, CodeOutlined, FormOutlined } from '@ant-design/icons';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\ndayjs.extend(customParseFormat);\nimport type { CrudPageSchema, FieldSchema, FormFieldConfig, SelectOption, ArrayItemField } from '../types/schema';\nimport { getEffectiveWidget, getFieldGroupPrefix, getNestedValue } from '../types/schema';\nimport { keysToAntdRules } from '../types/validationRules';\n\ntype FormMode = 'create' | 'edit' | 'view';\n\ninterface DynamicFormProps {\n schema: CrudPageSchema;\n mode: FormMode;\n visible: boolean;\n initialValues?: Record<string, unknown>;\n onSubmit: (values: Record<string, unknown>) => void;\n onCancel: () => void;\n}\n\nfunction getFormConfig(field: FieldSchema): FormFieldConfig | undefined {\n if (!field.form || typeof field.form === 'boolean') return undefined;\n return field.form as FormFieldConfig;\n}\n\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 将 camelCase 前缀转为可读标签(仅首字母大写) */\nfunction prefixToLabel(prefix: string): string {\n return prefix.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase()).trim();\n}\n\n/** 设置嵌套对象指定路径的值(修改原对象) */\nfunction setNestedValue(\n obj: Record<string, unknown>,\n path: string[],\n value: unknown,\n): void {\n let cur = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const k = path[i];\n if (cur[k] == null || typeof cur[k] !== 'object' || Array.isArray(cur[k])) {\n cur[k] = {};\n }\n cur = cur[k] as Record<string, unknown>;\n }\n cur[path[path.length - 1]] = value;\n}\n\n/** 行内可编辑表格 cell 组件 */\nfunction EditableCellInput({\n itemField,\n disabled,\n value,\n onChange,\n}: {\n itemField: ArrayItemField;\n disabled: boolean;\n value?: unknown; // Form.Item 注入\n onChange?: (val: unknown) => void; // Form.Item 注入\n}) {\n const ph = itemField.config?.placeholder ?? `请输入${itemField.label}`;\n switch (itemField.type) {\n case 'number':\n return (\n <InputNumber\n disabled={disabled}\n placeholder={ph}\n value={value as number | null | undefined}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n />\n );\n case 'boolean':\n // Form.Item 默认 valuePropName=\"value\",这里手动映射到 checked\n return (\n <Switch\n disabled={disabled}\n checked={value as boolean}\n onChange={(checked) => onChange?.(checked)}\n />\n );\n case 'date':\n case 'datetime': {\n const fmt = itemField.config?.dateFormat ?? (itemField.type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n // value 可能是字符串(来自 initialValues)或 dayjs 对象(用户选择后)\n const pickerValue = value != null\n ? (dayjs.isDayjs(value) ? value : dayjs(value as string))\n : null;\n return (\n <DatePicker\n disabled={disabled}\n format={fmt}\n value={pickerValue}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n />\n );\n }\n case 'string': {\n if (itemField.widget === 'select' && itemField.config?.options?.length) {\n return (\n <Select\n disabled={disabled}\n allowClear\n placeholder={ph}\n value={value as string | undefined}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n >\n {itemField.config.options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>{o.label}</Select.Option>\n ))}\n </Select>\n );\n }\n return (\n <Input\n disabled={disabled}\n placeholder={ph}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n default:\n return (\n <Input\n disabled={disabled}\n placeholder={ph}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n}\n\nfunction renderFormInput(\n field: FieldSchema,\n cfg: FormFieldConfig | undefined,\n disabled: boolean,\n): React.ReactNode {\n const widget = getEffectiveWidget(field, cfg);\n const options = getOptions(field);\n const placeholder = field.config?.placeholder;\n const rows = field.config?.rows;\n const style = { width: '100%' };\n\n switch (widget) {\n case 'input':\n return <Input disabled={disabled} placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'textarea':\n return (\n <Input.TextArea\n disabled={disabled}\n rows={rows ?? 4}\n placeholder={placeholder ?? `请输入 ${field.label}`}\n style={style}\n />\n );\n\n case 'jsonInput':\n return (\n <Input.TextArea\n disabled={disabled}\n rows={rows ?? 5}\n placeholder={placeholder ?? '请输入 JSON'}\n style={{ ...style, fontFamily: 'monospace', fontSize: 12 }}\n />\n );\n\n case 'inputNumber':\n return (\n <InputNumber\n disabled={disabled}\n min={cfg?.min}\n max={cfg?.max}\n step={cfg?.step ?? 1}\n placeholder={placeholder ?? `请输入 ${field.label}`}\n style={style}\n />\n );\n\n case 'select':\n return (\n <Select disabled={disabled} allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'multiselect':\n return (\n <Select\n mode=\"multiple\"\n disabled={disabled}\n allowClear\n placeholder={placeholder ?? `请选择 ${field.label}`}\n style={style}\n >\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'radio':\n return (\n <Radio.Group disabled={disabled}>\n {options.map((o) => (\n <Radio key={String(o.value)} value={o.value}>{o.label}</Radio>\n ))}\n </Radio.Group>\n );\n\n case 'checkbox':\n return (\n <Checkbox.Group disabled={disabled}>\n <Space wrap>\n {options.map((o) => (\n <Checkbox key={String(o.value)} value={o.value}>{o.label}</Checkbox>\n ))}\n </Space>\n </Checkbox.Group>\n );\n\n case 'switch':\n return <Switch disabled={disabled} />;\n\n case 'datePicker': {\n const showTime = field.type === 'datetime';\n const format = field.config?.dateFormat ?? (showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n return <DatePicker disabled={disabled} showTime={showTime} format={format} style={style} />;\n }\n\n case 'rangePicker': {\n const showTime = field.type === 'datetime';\n const format = field.config?.dateFormat ?? (showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n return <DatePicker.RangePicker disabled={disabled} showTime={showTime} format={format} style={style} />;\n }\n\n case 'timePicker':\n return (\n <DatePicker\n picker=\"time\"\n disabled={disabled}\n format={field.config?.dateFormat ?? 'HH:mm:ss'}\n style={style}\n />\n );\n\n case 'editableTable': {\n const itemFields = field.itemFields ?? [];\n return (\n <Form.List name={field.key}>\n {(listFields, { add, remove }) => {\n const columns = [\n ...itemFields.map((itemField) => ({\n title: itemField.label,\n dataIndex: itemField.key,\n width: itemField.width,\n render: (_: unknown, record: { name: number }) => (\n <Form.Item\n name={[record.name, itemField.key]}\n rules={itemField.required ? [{ required: true, message: `${itemField.label}必填` }] : undefined}\n style={{ margin: 0 }}\n >\n <EditableCellInput itemField={itemField} disabled={disabled} />\n </Form.Item>\n ),\n })),\n ...(!disabled\n ? [{\n title: '',\n width: 50,\n render: (_: unknown, record: { name: number }) => (\n <Button\n type=\"text\"\n danger\n icon={<DeleteOutlined />}\n onClick={() => remove(record.name)}\n />\n ),\n }]\n : []),\n ];\n return (\n <div>\n <Table\n size=\"small\"\n dataSource={listFields.map((f) => ({ ...f, _key: f.key }))}\n rowKey=\"_key\"\n columns={columns}\n pagination={false}\n style={{ marginBottom: 8 }}\n />\n {!disabled && (\n <Button\n type=\"dashed\"\n icon={<PlusOutlined />}\n onClick={() => add({})}\n block\n >\n 添加一行\n </Button>\n )}\n </div>\n );\n }}\n </Form.List>\n );\n }\n\n default:\n return <Input disabled={disabled} placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n}\n\n/**\n * 将接口数据转为 Form 使用的初始值。\n *\n * - 顶层字段:直接展开(与原来相同)\n * - dot-path 字段(如 `emergencyContact.name`):\n * API 返回的数据已是嵌套结构,form.setFieldsValue 可直接识别\n * - 日期字段:将字符串转为 dayjs 对象\n */\nfunction normalizeInitialValues(\n fields: FieldSchema[],\n values?: Record<string, unknown>,\n): Record<string, unknown> {\n if (!values) return {};\n // 深拷贝,避免修改原对象\n const result: Record<string, unknown> = JSON.parse(JSON.stringify(values)) as Record<string, unknown>;\n\n fields.forEach((field) => {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n if (widget !== 'datePicker' && widget !== 'rangePicker' && widget !== 'timePicker') return;\n\n const path = field.key.split('.');\n const val = path.length > 1 ? getNestedValue(result, field.key) : result[field.key];\n if (val == null) return;\n\n if (widget === 'rangePicker' && Array.isArray(val)) {\n setNestedValue(result, path, (val as (string | dayjs.Dayjs)[]).map((v) => {\n if (!v) return null;\n return dayjs.isDayjs(v) ? v : dayjs(v as string);\n }));\n } else if (val) {\n // 检查是否已经是 dayjs 对象,避免重复转换\n if (dayjs.isDayjs(val)) {\n setNestedValue(result, path, val);\n } else {\n // timePicker 存储的是纯时间字符串(如 \"09:30:00\"),需要带 format 解析\n const fmt = widget === 'timePicker'\n ? (field.config?.dateFormat ?? 'HH:mm:ss')\n : undefined;\n setNestedValue(result, path, fmt ? dayjs(val as string, fmt) : dayjs(val as string));\n }\n }\n });\n\n return result;\n}\n\n/** 将 Form 值序列化为提交数据(dayjs → ISO string) */\nfunction serializeValues(\n fields: FieldSchema[],\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const result: Record<string, unknown> = JSON.parse(JSON.stringify(values)) as Record<string, unknown>;\n\n fields.forEach((field) => {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n if (widget !== 'datePicker' && widget !== 'rangePicker' && widget !== 'timePicker') return;\n\n const path = field.key.split('.');\n // 必须从原始 values 读(dayjs 对象仍存在),\n // 不能从 result 读——JSON.parse(JSON.stringify) 已把 dayjs 序列化为 ISO 字符串,\n // 导致 dayjs.isDayjs() 全部失败(rangePicker 变成 [null, null])。\n const val = path.length > 1 ? getNestedValue(values, field.key) : values[field.key];\n if (val == null) return;\n\n if (widget === 'timePicker' && dayjs.isDayjs(val)) {\n const fmt = field.config?.dateFormat ?? 'HH:mm:ss';\n setNestedValue(result, path, (val as ReturnType<typeof dayjs>).format(fmt));\n } else if (widget === 'datePicker' && dayjs.isDayjs(val)) {\n setNestedValue(result, path, (val as ReturnType<typeof dayjs>).toISOString());\n } else if (widget === 'rangePicker' && Array.isArray(val)) {\n setNestedValue(\n result,\n path,\n (val as ReturnType<typeof dayjs>[]).map((v) => (v && dayjs.isDayjs(v) ? v.toISOString() : null)),\n );\n }\n });\n\n return result;\n}\n\n/** 渲染单个 Form.Item */\nfunction renderField(field: FieldSchema, disabled: boolean): React.ReactNode {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n const required = !disabled && (cfg?.required ?? false);\n\n // editableTable 使用 Form.List,不能再套 Form.Item name\n if (widget === 'editableTable') {\n return (\n <Form.Item key={field.key} label={field.label} style={{ marginBottom: 14 }}>\n {renderFormInput(field, cfg, disabled)}\n </Form.Item>\n );\n }\n\n const namePath = field.key.includes('.') ? field.key.split('.') : field.key;\n const extraRules = field.rules && !disabled ? keysToAntdRules(field.rules) : [];\n const validationRules = [\n ...(required ? [{ required: true, message: `请输入 ${field.label}` }] : []),\n ...extraRules,\n ];\n\n return (\n <Form.Item\n key={field.key}\n label={field.label}\n name={namePath}\n valuePropName={widget === 'switch' ? 'checked' : 'value'}\n rules={validationRules}\n style={{ marginBottom: 14 }}\n >\n {renderFormInput(field, cfg, disabled)}\n </Form.Item>\n );\n}\n\nexport default function DynamicForm({\n schema,\n mode,\n visible,\n initialValues,\n onSubmit,\n onCancel,\n}: DynamicFormProps) {\n const [form] = Form.useForm();\n const [rawJsonMode, setRawJsonMode] = useState(false);\n const [rawJsonText, setRawJsonText] = useState('');\n const [rawJsonError, setRawJsonError] = useState('');\n const disabled = mode === 'view';\n const entityName = schema.title.replace(/管理$/, '');\n\n const titleMap: Record<FormMode, string> = {\n create: `新增${entityName}`,\n edit: `编辑${entityName}`,\n view: `查看${entityName}`,\n };\n\n const formFields = schema.fields.filter((f) => {\n if (mode === 'view') return f.table !== false && f.table !== undefined;\n return f.form !== false && f.form !== undefined;\n });\n\n useEffect(() => {\n if (!visible) {\n form.resetFields();\n setRawJsonMode(false);\n setRawJsonText('');\n setRawJsonError('');\n } else {\n // 模态框打开时,根据模式设置表单值\n if (mode === 'create') {\n // 新增模式:清空表单并确保没有残留数据\n form.resetFields();\n form.setFieldsValue({});\n } else {\n // 编辑/查看模式设置初始值\n const normalized = normalizeInitialValues(formFields, initialValues);\n form.setFieldsValue(normalized);\n }\n }\n }, [visible, mode, initialValues]);\n\n const switchToRaw = () => {\n // getFieldsValue(true) 返回 store 全量数据(含 id 等非 Form.Item 字段)\n const rawValues = disabled\n ? (initialValues ?? {})\n : (form.getFieldsValue(true) as Record<string, unknown>);\n const serialized = disabled ? rawValues : serializeValues(formFields, rawValues);\n setRawJsonText(JSON.stringify(serialized, null, 2));\n setRawJsonError('');\n setRawJsonMode(true);\n };\n\n const switchToForm = () => {\n if (!disabled) {\n try {\n const parsed = JSON.parse(rawJsonText) as Record<string, unknown>;\n form.setFieldsValue(normalizeInitialValues(formFields, parsed));\n setRawJsonError('');\n } catch {\n setRawJsonError('JSON 格式错误,请修正后再切换');\n return;\n }\n }\n setRawJsonMode(false);\n };\n\n const handleOk = async () => {\n if (disabled) { onCancel(); return; }\n if (rawJsonMode) {\n try {\n const parsed = JSON.parse(rawJsonText) as Record<string, unknown>;\n onSubmit(parsed);\n } catch {\n setRawJsonError('JSON 格式错误,无法提交');\n }\n return;\n }\n const values = await form.validateFields();\n onSubmit(serializeValues(formFields, values as Record<string, unknown>));\n };\n\n /**\n * 将字段列表按 dot-path 前缀分组渲染:\n * - 无前缀字段:直接渲染\n * - 有前缀的字段:相同前缀聚合到一个带标题的 Card 中\n */\n const renderFieldGroups = () => {\n const nodes: React.ReactNode[] = [];\n let i = 0;\n while (i < formFields.length) {\n const field = formFields[i];\n const prefix = getFieldGroupPrefix(field.key);\n\n if (!prefix) {\n nodes.push(renderField(field, disabled));\n i++;\n } else {\n // 收集相同前缀的连续字段\n const groupFields: FieldSchema[] = [];\n while (i < formFields.length && getFieldGroupPrefix(formFields[i].key) === prefix) {\n groupFields.push(formFields[i]);\n i++;\n }\n nodes.push(\n <div key={prefix} style={{ marginBottom: 16 }}>\n <Divider style={{ fontSize: 13, color: '#666', margin: '8px 0 12px' }}>\n {prefixToLabel(prefix)}\n </Divider>\n <Card\n size=\"small\"\n style={{ background: '#fafafa', borderRadius: 6 }}\n styles={{ body: { paddingBottom: 4 } }}\n >\n {groupFields.map((gf) => renderField(gf, disabled))}\n </Card>\n </div>,\n );\n }\n }\n return nodes;\n };\n\n const copyRawJson = () => {\n const json = rawJsonMode\n ? rawJsonText\n : JSON.stringify(\n disabled\n ? (initialValues ?? {})\n : serializeValues(formFields, form.getFieldsValue(true) as Record<string, unknown>),\n null, 2,\n );\n navigator.clipboard.writeText(json)\n .then(() => void message.success('已复制 JSON'))\n .catch(() => void message.error('复制失败'));\n };\n\n const modalTitle = (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', paddingRight: 32 }}>\n <span>{titleMap[mode]}</span>\n <Space size={8}>\n <Button\n size=\"small\"\n type=\"text\"\n icon={rawJsonMode ? <FormOutlined /> : <CodeOutlined />}\n onClick={rawJsonMode ? switchToForm : switchToRaw}\n >\n {rawJsonMode ? '表单视图' : 'Raw JSON'}\n </Button>\n </Space>\n </div>\n );\n\n return (\n <Modal\n title={modalTitle}\n open={visible}\n onOk={handleOk}\n onCancel={onCancel}\n okText={disabled ? '关闭' : '确认'}\n cancelText=\"取消\"\n cancelButtonProps={disabled ? { style: { display: 'none' } } : {}}\n width={720}\n destroyOnClose\n >\n {/* Form 始终挂载,切换模式时仅用 display 隐藏,防止卸载导致 store 重置 */}\n <div style={{ display: rawJsonMode ? 'none' : undefined }}>\n <Form\n form={form}\n layout=\"vertical\"\n initialValues={mode === 'create' ? {} : normalizeInitialValues(formFields, initialValues)}\n >\n {renderFieldGroups()}\n </Form>\n </div>\n\n {rawJsonMode && (\n <div>\n <Input.TextArea\n value={rawJsonText}\n onChange={disabled ? undefined : (e) => { setRawJsonText(e.target.value); setRawJsonError(''); }}\n readOnly={disabled}\n rows={20}\n style={{ fontFamily: 'monospace', fontSize: 12, resize: 'vertical' }}\n status={rawJsonError ? 'error' : undefined}\n />\n {rawJsonError && (\n <div style={{ color: '#ff4d4f', fontSize: 12, marginTop: 4 }}>{rawJsonError}</div>\n )}\n {!disabled && (\n <div style={{ marginTop: 8, textAlign: 'right' }}>\n <Button size=\"small\" icon={<CodeOutlined />} onClick={copyRawJson}>复制 JSON</Button>\n </div>\n )}\n </div>\n )}\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport { Button, message, Typography } from 'antd';\nimport { PlusOutlined } from '@ant-design/icons';\nimport type { CrudPageSchema, ActionSchema, ApiRequest } from '../types/schema';\nimport DynamicFilter from './DynamicFilter';\nimport DynamicTable from './DynamicTable';\nimport DynamicForm from './DynamicForm';\n\nconst { Title } = Typography;\n\ninterface CrudPageProps {\n schema: CrudPageSchema;\n initialData?: Record<string, unknown>[];\n apiRequest?: ApiRequest;\n}\n\n/** 替换 URL 模板中的 :id */\nfunction buildUrl(template: string, id: unknown): string {\n return template.replace(/:id/, String(id));\n}\n\n/** 通用请求封装 */\nasync function apiRequest<T = unknown>(\n url: string,\n options?: RequestInit,\n): Promise<T> {\n const res = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json() as Promise<T>;\n}\n\n/** 从接口响应中提取列表和总数(兼容常见结构) */\nfunction extractListResponse(json: unknown): { list: Record<string, unknown>[]; total: number } {\n if (!json || typeof json !== 'object') return { list: [], total: 0 };\n const obj = json as Record<string, unknown>;\n const data = obj.data ?? obj.result ?? obj;\n if (Array.isArray(data)) return { list: data as Record<string, unknown>[], total: data.length };\n if (data && typeof data === 'object') {\n const inner = data as Record<string, unknown>;\n const list = (inner.list ?? inner.records ?? inner.data ?? []) as Record<string, unknown>[];\n const total = Number(inner.total ?? inner.count ?? list.length);\n return { list, total };\n }\n return { list: [], total: 0 };\n}\n\nconst CrudPage: React.FC<CrudPageProps> = ({ schema, initialData = [], apiRequest: customApiRequest }) => {\n const rowKey = schema.rowKey || 'id';\n\n // 使用传入的apiRequest或默认的\n const request = customApiRequest || apiRequest;\n\n // 本地兜底数据(API 失败时使用)\n const localDataRef = useRef<Record<string, unknown>[]>(initialData);\n\n const [data, setData] = useState<Record<string, unknown>[]>([]);\n const [loading, setLoading] = useState(false);\n const [total, setTotal] = useState(0);\n const [filterParams, setFilterParams] = useState<Record<string, unknown>>({});\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(schema.pagination?.pageSize || 10);\n const [modalState, setModalState] = useState<{\n open: boolean;\n mode: 'create' | 'edit' | 'view';\n record?: Record<string, unknown>;\n }>({ open: false, mode: 'create' });\n\n const [messageApi, contextHolder] = message.useMessage();\n\n // ---------- 本地过滤(API 失败时兜底) ----------\n const localFilter = useCallback(\n (params: Record<string, unknown>, p: number, ps: number) => {\n const filtered = localDataRef.current.filter(row => {\n return Object.entries(params).every(([key, val]) => {\n if (val === undefined || val === null || val === '') return true;\n if (key.endsWith('_min')) return Number(row[key.slice(0, -4)]) >= Number(val);\n if (key.endsWith('_max')) return Number(row[key.slice(0, -4)]) <= Number(val);\n if (key.endsWith('_start') || key.endsWith('_end')) return true;\n const rowVal = row[key];\n if (Array.isArray(rowVal)) {\n return Array.isArray(val) ? val.some(v => rowVal.includes(v)) : rowVal.includes(val);\n }\n if (typeof val === 'string') return String(rowVal).toLowerCase().includes(val.toLowerCase());\n return rowVal === val;\n });\n });\n const start = (p - 1) * ps;\n setData(filtered.slice(start, start + ps));\n setTotal(filtered.length);\n },\n [],\n );\n\n // ---------- 获取列表 ----------\n const fetchList = useCallback(async (\n params: Record<string, unknown> = filterParams,\n p: number = page,\n ps: number = pageSize,\n ) => {\n setLoading(true);\n try {\n const query = new URLSearchParams({ page: String(p), pageSize: String(ps) });\n Object.entries(params).forEach(([k, v]) => {\n if (v !== undefined && v !== null && v !== '') query.set(k, String(v));\n });\n const json = await request(`${schema.api.list}?${query}`);\n const { list, total: tot } = extractListResponse(json);\n setData(list);\n setTotal(tot);\n } catch {\n // API 不可用 → 本地演示模式\n localFilter(params, p, ps);\n } finally {\n setLoading(false);\n }\n }, [request, schema.api.list, filterParams, page, pageSize, localFilter]);\n\n // 初始加载 & 参数变化时重新请求\n useEffect(() => {\n fetchList(filterParams, page, pageSize);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterParams, page, pageSize]);\n\n // ---------- 搜索 ----------\n const handleSearch = useCallback((params: Record<string, unknown>) => {\n setFilterParams(params);\n setPage(1);\n }, []);\n\n // ---------- 翻页 ----------\n const handlePageChange = useCallback((p: number, ps: number) => {\n setPage(p);\n setPageSize(ps);\n }, []);\n\n // ---------- 删除 ----------\n const handleDelete = useCallback(async (record: Record<string, unknown>) => {\n const id = record[rowKey];\n if (schema.api.delete) {\n try {\n await request(buildUrl(schema.api.delete, id), { method: 'DELETE' });\n messageApi.success('删除成功');\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n localDataRef.current = localDataRef.current.filter(r => r[rowKey] !== id);\n localFilter(filterParams, page, pageSize);\n messageApi.success('删除成功(演示模式)');\n }, [request, schema.api.delete, rowKey, fetchList, localFilter, filterParams, page, pageSize, messageApi]);\n\n // ---------- 操作列点击 ----------\n const handleAction = useCallback((action: ActionSchema, record: Record<string, unknown>) => {\n if (action.type === 'view') {\n setModalState({ open: true, mode: 'view', record });\n } else if (action.type === 'edit') {\n setModalState({ open: true, mode: 'edit', record });\n } else if (action.type === 'delete') {\n handleDelete(record);\n }\n }, [handleDelete]);\n\n // ---------- 新增 / 编辑提交 ----------\n const handleFormOk = useCallback(async (values: Record<string, unknown>) => {\n const isCreate = modalState.mode === 'create';\n\n if (isCreate) {\n if (schema.api.create) {\n try {\n await request(schema.api.create, {\n method: 'POST',\n body: JSON.stringify(values),\n });\n messageApi.success('新增成功');\n setModalState({ open: false, mode: 'create' });\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n const newRecord = { [rowKey]: `local-${Date.now()}`, ...values };\n localDataRef.current = [newRecord, ...localDataRef.current];\n localFilter(filterParams, 1, pageSize);\n setPage(1);\n messageApi.success('新增成功(演示模式)');\n } else {\n const id = values[rowKey];\n if (schema.api.update) {\n try {\n await request(buildUrl(schema.api.update, id), {\n method: 'PUT',\n body: JSON.stringify(values),\n });\n messageApi.success('编辑成功');\n setModalState({ open: false, mode: 'create' });\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n localDataRef.current = localDataRef.current.map(r =>\n r[rowKey] === id ? { ...r, ...values } : r,\n );\n localFilter(filterParams, page, pageSize);\n messageApi.success('编辑成功(演示模式)');\n }\n\n setModalState({ open: false, mode: 'create' });\n }, [\n request, modalState.mode, schema.api, rowKey,\n fetchList, localFilter, filterParams, page, pageSize, messageApi,\n ]);\n\n return (\n <div style={{ padding: 24, background: '#f5f6fa', minHeight: '100vh' }}>\n {contextHolder}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>\n <Title level={4} style={{ margin: 0 }}>{schema.title}</Title>\n {schema.api.create && (\n <Button\n type=\"primary\"\n icon={<PlusOutlined />}\n onClick={() => setModalState({ open: true, mode: 'create', record: undefined })}\n >\n {schema.createButtonLabel || '新增'}\n </Button>\n )}\n </div>\n\n <DynamicFilter schema={schema} onSearch={handleSearch} onReset={() => handleSearch({})} />\n\n <DynamicTable\n schema={schema}\n data={data}\n loading={loading}\n pagination={{\n current: page,\n pageSize,\n total,\n onChange: handlePageChange,\n }}\n onView={(record) => handleAction({ key: 'view', label: '查看', type: 'view' }, record)}\n onEdit={(record) => handleAction({ key: 'edit', label: '编辑', type: 'edit' }, record)}\n onDelete={(record) => handleDelete(record)}\n onCustomAction={(actionKey, record) => {\n const action = schema.actions?.find(a => a.key === actionKey);\n if (action) handleAction(action, record);\n }}\n />\n\n <DynamicForm\n schema={schema}\n visible={modalState.open}\n mode={modalState.mode}\n initialValues={modalState.record}\n onSubmit={handleFormOk}\n onCancel={() => setModalState({ open: false, mode: 'create' })}\n />\n </div>\n );\n};\n\nexport default CrudPage;\n"],"names":["arrayLikeToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","objectWithoutPropertiesLoose","generate","defineProperty","_objectSpread","warning","warn","React","generateColor","_excluded","ReactIcon","Context","CodeOutlined","AntdIcon","CodeOutlinedSvg","RefIcon","CopyOutlined","CopyOutlinedSvg","DeleteOutlined","DeleteOutlinedSvg","EditOutlined","EditOutlinedSvg","EyeOutlined","EyeOutlinedSvg","FormOutlined","FormOutlinedSvg","PlusOutlined","PlusOutlinedSvg","ReloadOutlined","ReloadOutlinedSvg","SearchOutlined","SearchOutlinedSvg","getOptions","_jsx","_jsxs"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/types/schema.ts","../src/components/DynamicFilter.tsx","../src/components/DynamicTable.tsx","../src/types/validationRules.ts","../src/components/DynamicForm.tsx","../src/components/CrudPage.tsx"],"sourcesContent":["/** API 请求函数类型 */\nexport interface ApiRequest {\n <T = unknown>(url: string, options?: RequestInit): Promise<T>;\n}\n\n/**\n * 数据类型:描述字段存储的值类型。\n *\n * 嵌套对象不再作为独立类型,而是通过 key 的点分路径(dot-path)表达,\n * 例如 `emergencyContact.name`、`emergencyContact.phone`。\n * 框架会自动将 Form 数据写入/读出对应的嵌套路径。\n */\nexport type DataType =\n | 'string' // 字符串\n | 'number' // 数字\n | 'boolean' // 布尔\n | 'datetime' // 日期时间\n | 'date' // 仅日期\n | 'array' // 基本类型数组(string[] / number[]),配合 multiselect / checkbox\n | 'objectArray'; // 对象数组(object[]),配合 editableTable,需配置 itemFields\n\n/** UI 组件类型:描述字段渲染使用的组件 */\nexport type WidgetType =\n // ── 基础输入 ──────────────────────────────\n | 'input' // 单行输入框(string 默认)\n | 'textarea' // 多行文本域\n | 'inputNumber' // 数字输入框(number 默认)\n // ── 选择类 ────────────────────────────────\n | 'select' // 单选下拉\n | 'multiselect' // 多选下拉(array 默认)\n | 'radio' // 单选按钮组\n | 'checkbox' // 多选复选框\n | 'switch' // 开关(boolean 默认)\n // ── 日期时间 ──────────────────────────────\n | 'datePicker' // 日期/时间选择(date/datetime 默认)\n | 'rangePicker' // 日期范围选择\n | 'timePicker' // 时间点选择\n // ── 对象数组 ──────────────────────────────\n | 'editableTable' // 行内可编辑表格(objectArray 默认)\n // ── JSON 原始编辑 ─────────────────────────\n | 'jsonInput'; // 原始 JSON 文本域(fallback)\n\n/** 兼容旧版 —— 不再推荐直接使用 */\nexport type FieldType = DataType;\n\nexport interface SelectOption {\n label: string;\n value: string | number | boolean;\n color?: string;\n}\n\n/**\n * 筛选项配置 —— 仅放筛选独有配置。\n * options / placeholder / dateFormat 统一在 FieldSchema.config 里配置。\n */\nexport interface FilterConfig {\n /** 覆盖字段级 widget,指定筛选组件类型 */\n widget?: WidgetType;\n /** inputNumber 时可开启数字范围(min/max 两个输入框) */\n range?: boolean;\n defaultValue?: unknown;\n}\n\n/** 表格列配置 */\nexport interface TableColumnConfig {\n width?: number;\n fixed?: 'left' | 'right';\n sortable?: boolean;\n ellipsis?: boolean;\n}\n\n/**\n * 表单字段配置 —— 仅放表单独有配置。\n * options / placeholder / dateFormat / rows 统一在 FieldSchema.config 里配置。\n */\nexport interface FormFieldConfig {\n /** 覆盖字段级 widget,指定表单组件类型 */\n widget?: WidgetType;\n required?: boolean;\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * 字段级共用组件配置。\n * filter 和 form 均可读取,无需在两处重复填写。\n */\nexport interface FieldConfig {\n /** 下拉/多选/单选等组件的选项列表 */\n options?: SelectOption[];\n /** 输入框、选择框等的占位提示文字 */\n placeholder?: string;\n /** 日期/时间组件的显示格式,如 'YYYY-MM-DD' */\n dateFormat?: string;\n /** textarea / jsonInput 的行数 */\n rows?: number;\n}\n\n/**\n * 对象数组(objectArray)中每个 item 的字段定义。\n * 故意保持简单:不支持嵌套 objectArray,不支持 dot-path key。\n */\nexport interface ArrayItemField {\n /** item 对象的属性名,不使用点分路径 */\n key: string;\n label: string;\n /** 不允许嵌套数组 */\n type: Exclude<DataType, 'array' | 'objectArray'>;\n /** 不允许嵌套 editableTable */\n widget?: Exclude<WidgetType, 'editableTable'>;\n config?: Pick<FieldConfig, 'options' | 'placeholder' | 'dateFormat'>;\n required?: boolean;\n /** 列宽(px) */\n width?: number;\n}\n\n/**\n * 字段定义。\n *\n * ### 点分路径(dot-path)规则\n * `key` 支持点分路径表达嵌套结构,例如:\n * - `emergencyContact.name`\n * - `emergencyContact.phone`\n *\n * Form 层会自动将值写入 / 读取对应的嵌套对象属性;\n * 具有相同前缀的字段在表单中会被归为同一视觉分组,并显示分组标题。\n */\nexport interface FieldSchema {\n key: string;\n label: string;\n /** 数据类型(值的类型) */\n type: DataType;\n /**\n * 默认 UI 组件类型;可被 filter / form 级别的 widget 覆盖。\n * 不填时由 defaultWidgetForType 推导。\n */\n widget?: WidgetType;\n filter?: boolean | FilterConfig;\n table?: boolean | TableColumnConfig;\n form?: boolean | FormFieldConfig;\n /**\n * 字段级共用组件配置(options、placeholder、dateFormat 等)。\n * filter 和 form 均从这里读取,不再重复配置。\n */\n config?: FieldConfig;\n render?: string;\n /**\n * 对象数组子字段定义,仅 type='objectArray' 时生效。\n * 配置后 widget 默认推导为 'editableTable'。\n */\n itemFields?: ArrayItemField[];\n /**\n * 校验规则 key 数组,引用 validationRules.ts 中内置或自定义规则的 key。\n * 例如 `rules: ['phone_cn', 'max_len_50']`\n * 注意:required 规则通过 form.required 单独控制,无需在此重复。\n */\n rules?: string[];\n}\n\nexport type ActionType = 'edit' | 'delete' | 'view' | 'custom';\n\nexport interface ActionPermission {\n role?: string[];\n condition?: string;\n}\n\nexport interface ActionSchema {\n key: string;\n label: string;\n type: ActionType;\n icon?: string;\n danger?: boolean;\n permission?: ActionPermission;\n confirm?: {\n title: string;\n content?: string;\n };\n}\n\nexport interface PaginationConfig {\n pageSize?: number;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n}\n\nexport interface CrudPageSchema {\n id: string;\n title: string;\n api: {\n list: string;\n create?: string;\n update?: string;\n delete?: string;\n detail?: string;\n };\n fields: FieldSchema[];\n actions?: ActionSchema[];\n pagination?: PaginationConfig;\n rowKey?: string;\n createButtonLabel?: string;\n}\n\n/* ─── 工具函数 ──────────────────────────────────────── */\n\n/**\n * 根据数据类型推导默认 UI 组件\n *\n * string → input\n * number → inputNumber\n * boolean → switch\n * date → datePicker\n * datetime → datePicker\n * array → multiselect\n * objectArray → editableTable\n */\nexport function defaultWidgetForType(type: DataType): WidgetType {\n switch (type) {\n case 'number': return 'inputNumber';\n case 'boolean': return 'switch';\n case 'date':\n case 'datetime': return 'datePicker';\n case 'array': return 'multiselect';\n case 'objectArray': return 'editableTable';\n default: return 'input'; // string\n }\n}\n\n/** 获取实际生效的组件类型(context.widget > field.widget > type 推导) */\nexport function getEffectiveWidget(\n field: FieldSchema,\n config?: FilterConfig | FormFieldConfig,\n): WidgetType {\n if (config?.widget) return config.widget;\n if (field.widget) return field.widget;\n return defaultWidgetForType(field.type);\n}\n\n/**\n * 从嵌套对象按点分路径取值\n *\n * getNestedValue({ a: { b: 1 } }, 'a.b') → 1\n * getNestedValue({ x: [1, 2] }, 'x') → [1, 2]\n */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce((acc: unknown, key) => {\n if (acc != null && typeof acc === 'object' && !Array.isArray(acc)) {\n return (acc as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n}\n\n/**\n * 从点分路径 key 中提取分组前缀(第一个 segment)。\n * 无前缀的顶层字段返回 null。\n *\n * 'emergencyContact.name' → 'emergencyContact'\n * 'name' → null\n */\nexport function getFieldGroupPrefix(key: string): string | null {\n const idx = key.indexOf('.');\n return idx >= 0 ? key.slice(0, idx) : null;\n}","import { useState } from 'react';\nimport { Form, Input, InputNumber, Select, Switch, DatePicker, Button, Row, Col, Space, Radio } from 'antd';\nimport { SearchOutlined, ReloadOutlined } from '@ant-design/icons';\nimport type { CrudPageSchema, FieldSchema, FilterConfig, SelectOption } from '../types/schema';\nimport { getEffectiveWidget } from '../types/schema';\n\nconst { RangePicker } = DatePicker;\n\ninterface DynamicFilterProps {\n schema: CrudPageSchema;\n onSearch: (values: Record<string, unknown>) => void;\n onReset: () => void;\n}\n\n/** 解析 FilterConfig */\nfunction getFilterConfig(field: FieldSchema): FilterConfig | undefined {\n if (!field.filter || typeof field.filter === 'boolean') return undefined;\n return field.filter as FilterConfig;\n}\n\n/** 获取选项列表(从 field.config 读取) */\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 渲染单个筛选组件 */\nfunction renderFilterInput(field: FieldSchema, cfg?: FilterConfig): React.ReactNode {\n const widget = getEffectiveWidget(field, cfg);\n const placeholder = field.config?.placeholder;\n const dateFormat = field.config?.dateFormat;\n const options = getOptions(field);\n const style = { width: '100%' };\n\n switch (widget) {\n case 'input':\n return <Input placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'textarea':\n return <Input.TextArea placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'inputNumber': {\n if (cfg?.range) {\n return (\n <Space>\n <Form.Item name={`${field.key}_min`} noStyle>\n <InputNumber placeholder=\"最小值\" />\n </Form.Item>\n <span>~</span>\n <Form.Item name={`${field.key}_max`} noStyle>\n <InputNumber placeholder=\"最大值\" />\n </Form.Item>\n </Space>\n );\n }\n return <InputNumber placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n\n case 'select':\n return (\n <Select allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'multiselect':\n return (\n <Select mode=\"multiple\" allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'radio':\n return (\n <Radio.Group style={style}>\n {options.map((o) => (\n <Radio key={String(o.value)} value={o.value}>{o.label}</Radio>\n ))}\n </Radio.Group>\n );\n\n case 'switch':\n return <Switch />;\n\n case 'datePicker': {\n const showTime = field.type === 'datetime';\n return <DatePicker showTime={showTime} format={dateFormat} style={style} />;\n }\n\n case 'rangePicker': {\n const showTime = field.type === 'datetime';\n return <RangePicker showTime={showTime} format={dateFormat} style={style} />;\n }\n\n case 'timePicker':\n return <DatePicker picker=\"time\" format={dateFormat ?? 'HH:mm:ss'} style={style} />;\n\n case 'jsonInput':\n return <Input placeholder={placeholder ?? `搜索 ${field.label}`} style={style} />;\n\n default:\n return <Input placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n}\n\nexport default function DynamicFilter({ schema, onSearch, onReset }: DynamicFilterProps) {\n const [form] = Form.useForm();\n const [expanded, setExpanded] = useState(false);\n\n const filterFields = schema.fields.filter(\n (f) => f.filter !== false && f.filter !== undefined && f.type !== 'objectArray',\n );\n\n const handleFinish = (values: Record<string, unknown>) => {\n onSearch(values);\n };\n\n const handleReset = () => {\n form.resetFields();\n onReset();\n };\n\n const colSpan = { xs: 24, sm: 12, md: 12, lg: 8, xl: 6, xxl: 6 };\n\n const visibleFields = expanded ? filterFields : filterFields.slice(0, 4);\n\n return (\n <Form form={form} onFinish={handleFinish} layout=\"vertical\">\n <Row gutter={[16, 0]}>\n {visibleFields.map((field) => {\n const cfg = getFilterConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n\n // inputNumber 数字范围:name 不放在 Form.Item 上,由内部子 Form.Item 承载\n const isNumberRange = widget === 'inputNumber' && cfg?.range;\n\n return (\n <Col key={field.key} {...colSpan}>\n <Form.Item\n label={field.label}\n name={isNumberRange ? undefined : field.key}\n valuePropName={widget === 'switch' ? 'checked' : 'value'}\n >\n {renderFilterInput(field, cfg)}\n </Form.Item>\n </Col>\n );\n })}\n\n {/* 操作按钮 */}\n <Col {...colSpan}>\n <Form.Item label=\" \">\n <Space>\n <Button type=\"primary\" htmlType=\"submit\" icon={<SearchOutlined />}>\n 搜索\n </Button>\n <Button onClick={handleReset} icon={<ReloadOutlined />}>\n 重置\n </Button>\n {filterFields.length > 4 && (\n <Button type=\"link\" onClick={() => setExpanded(!expanded)}>\n {expanded ? '收起' : '展开'}\n </Button>\n )}\n </Space>\n </Form.Item>\n </Col>\n </Row>\n </Form>\n );\n}\n","import { Table, Tag, Switch, Space, Button, Popconfirm, Tooltip, message } from 'antd';\nimport { EyeOutlined, EditOutlined, DeleteOutlined, CopyOutlined } from '@ant-design/icons';\nimport type { ColumnsType } from 'antd/es/table';\nimport dayjs from 'dayjs';\nimport type { CrudPageSchema, FieldSchema, TableColumnConfig, SelectOption } from '../types/schema';\nimport { getEffectiveWidget, getNestedValue } from '../types/schema';\n\ninterface DynamicTableProps {\n schema: CrudPageSchema;\n data: Record<string, unknown>[];\n loading: boolean;\n pagination: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n };\n onView: (record: Record<string, unknown>) => void;\n onEdit: (record: Record<string, unknown>) => void;\n onDelete: (record: Record<string, unknown>) => void;\n onCustomAction?: (actionKey: string, record: Record<string, unknown>) => void;\n}\n\nfunction getTableConfig(field: FieldSchema): TableColumnConfig | undefined {\n if (!field.table || typeof field.table === 'boolean') return undefined;\n return field.table as TableColumnConfig;\n}\n\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 格式化单元格显示值 */\nfunction renderCell(field: FieldSchema, value: unknown): React.ReactNode {\n if (value == null || value === '') return <span style={{ color: '#ccc' }}>-</span>;\n\n const widget = getEffectiveWidget(field);\n\n // ── 布尔类 ──────────────────────────────────────────────\n if (field.type === 'boolean' || widget === 'switch') {\n return <Switch checked={Boolean(value)} disabled size=\"small\" />;\n }\n\n // ── 下拉/单选(有 options) ──────────────────────────────\n if (widget === 'select' || widget === 'radio') {\n const options = getOptions(field);\n const opt = options.find((o) => o.value === value);\n if (opt) {\n return opt.color ? <Tag color={opt.color}>{opt.label}</Tag> : <span>{opt.label}</span>;\n }\n return <span>{String(value)}</span>;\n }\n\n // ── 多选(multiselect / checkbox,值为数组) ─────────────\n if (widget === 'multiselect' || widget === 'checkbox') {\n const arr = Array.isArray(value) ? value : [value];\n const options = getOptions(field);\n return (\n <Space size={4} wrap>\n {arr.map((v) => {\n const opt = options.find((o) => o.value === v);\n return opt ? (\n <Tag key={String(v)} color={opt.color}>{opt.label}</Tag>\n ) : (\n <Tag key={String(v)}>{String(v)}</Tag>\n );\n })}\n </Space>\n );\n }\n\n // ── 日期/时间 ────────────────────────────────────────────\n if (widget === 'datePicker') {\n const fmt = field.config?.dateFormat ?? (field.type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n const d = dayjs(value as string);\n return d.isValid() ? <span>{d.format(fmt)}</span> : <span>{String(value)}</span>;\n }\n\n if (widget === 'rangePicker') {\n if (Array.isArray(value)) {\n const fmt = field.config?.dateFormat ?? 'YYYY-MM-DD';\n return <span>{value.map((v) => (v ? dayjs(v as string).format(fmt) : '-')).join(' ~ ')}</span>;\n }\n }\n\n if (widget === 'timePicker') {\n const fmt = field.config?.dateFormat ?? 'HH:mm:ss';\n const d = dayjs(value as string);\n return d.isValid() ? <span>{d.format(fmt)}</span> : <span>{String(value)}</span>;\n }\n\n // ── 普通数组(array 基本类型) ───────────────────────────\n if (field.type === 'array' && Array.isArray(value)) {\n return (\n <Space size={4} wrap>\n {(value as unknown[]).map((v, i) => (\n <Tag key={i}>{String(v)}</Tag>\n ))}\n </Space>\n );\n }\n\n // ── objectArray / editableTable:显示 N 条记录 ──────────\n if (field.type === 'objectArray' || widget === 'editableTable') {\n const arr = Array.isArray(value) ? value : [];\n return <span style={{ color: '#888' }}>{arr.length} 条记录</span>;\n }\n\n // ── jsonInput(对象序列化为字符串) ──────────────────────\n if (widget === 'jsonInput') {\n if (typeof value === 'object') {\n const str = JSON.stringify(value);\n return (\n <Tooltip title={<pre style={{ margin: 0, fontSize: 11 }}>{JSON.stringify(value, null, 2)}</pre>}>\n <span style={{ cursor: 'help', fontFamily: 'monospace', fontSize: 12 }}>\n {str.length > 40 ? str.slice(0, 40) + '…' : str}\n </span>\n </Tooltip>\n );\n }\n return <span>{String(value)}</span>;\n }\n\n return <span>{String(value)}</span>;\n}\n\nexport default function DynamicTable({\n schema,\n data,\n loading,\n pagination,\n onView,\n onEdit,\n onDelete,\n onCustomAction,\n}: DynamicTableProps) {\n const tableFields = schema.fields.filter((f) => f.table !== false && f.table !== undefined);\n\n const columns: ColumnsType<Record<string, unknown>> = tableFields.map((field) => {\n const cfg = getTableConfig(field);\n const isNested = field.key.includes('.');\n\n return {\n title: field.label,\n // 点分路径使用数组形式,Ant Design Table 支持嵌套取值\n dataIndex: isNested ? field.key.split('.') : field.key,\n key: field.key,\n width: cfg?.width,\n fixed: cfg?.fixed,\n ellipsis: cfg?.ellipsis,\n sorter: cfg?.sortable,\n render: (_value: unknown, record: Record<string, unknown>) => {\n // 统一使用 getNestedValue 以支持多层点分路径\n const actualValue = isNested ? getNestedValue(record, field.key) : _value;\n return renderCell(field, actualValue);\n },\n };\n });\n\n const copyJson = (record: Record<string, unknown>) => {\n navigator.clipboard.writeText(JSON.stringify(record, null, 2))\n .then(() => void message.success('已复制 JSON'))\n .catch(() => void message.error('复制失败'));\n };\n\n // 操作列(有 schema.actions 或始终存在,以便展示复制按钮)\n columns.push({\n title: '操作',\n key: '__actions',\n fixed: 'right',\n width: (schema.actions?.length ?? 0) * 60 + 60,\n render: (_: unknown, record: Record<string, unknown>) => (\n <Space size={4}>\n {(schema.actions ?? []).map((action) => {\n if (action.type === 'view') {\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n icon={<EyeOutlined />}\n onClick={() => onView(record)}\n />\n </Tooltip>\n );\n }\n if (action.type === 'edit') {\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n icon={<EditOutlined />}\n onClick={() => onEdit(record)}\n />\n </Tooltip>\n );\n }\n if (action.type === 'delete') {\n return (\n <Popconfirm\n key={action.key}\n title={action.confirm?.title ?? '确定删除?'}\n description={action.confirm?.content}\n onConfirm={() => onDelete(record)}\n okText=\"确定\"\n cancelText=\"取消\"\n okButtonProps={{ danger: true }}\n >\n <Tooltip title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </Popconfirm>\n );\n }\n return (\n <Tooltip key={action.key} title={action.label}>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={() => onCustomAction?.(action.key, record)}\n >\n {action.label}\n </Button>\n </Tooltip>\n );\n })}\n <Tooltip title=\"复制 JSON\">\n <Button\n type=\"link\"\n size=\"small\"\n icon={<CopyOutlined />}\n onClick={() => copyJson(record)}\n />\n </Tooltip>\n </Space>\n ),\n });\n\n return (\n <Table\n rowKey={schema.rowKey ?? 'id'}\n columns={columns}\n dataSource={data}\n loading={loading}\n scroll={{ x: 'max-content' }}\n pagination={{\n current: pagination.current,\n pageSize: pagination.pageSize,\n total: pagination.total,\n showSizeChanger: true,\n showTotal: schema.pagination?.showTotal\n ? (total) => `共 ${total} 条`\n : undefined,\n onChange: pagination.onChange,\n pageSizeOptions: schema.pagination?.pageSizeOptions ?? [10, 20, 50],\n }}\n />\n );\n}\n","import type { Rule } from 'antd/es/form';\n\n/** 校验规则配置(内置 + 自定义均使用此结构) */\nexport interface ValidationRuleConfig {\n key: string;\n label: string;\n description?: string;\n message: string;\n /** 正则字符串(将转为 RegExp) */\n pattern?: string;\n /** 最小值(number)或最小长度(string) */\n min?: number;\n /** 最大值(number)或最大长度(string) */\n max?: number;\n /** antd 内置类型校验 */\n type?: 'string' | 'number' | 'email' | 'url' | 'integer';\n /** 是否不允许纯空白字符 */\n whitespace?: boolean;\n /** 是否内置(内置规则不可删除) */\n builtin?: boolean;\n}\n\n/** 内置规则集 */\nexport const BUILTIN_RULES: ValidationRuleConfig[] = [\n {\n key: 'phone_cn',\n label: '手机号(中国大陆)',\n description: '1 开头的 11 位数字',\n message: '请输入正确的手机号',\n pattern: '^1[3-9]\\\\d{9}$',\n builtin: true,\n },\n {\n key: 'email',\n label: '邮箱地址',\n description: '标准电子邮箱格式',\n message: '请输入正确的邮箱地址',\n type: 'email',\n builtin: true,\n },\n {\n key: 'url',\n label: 'URL 链接',\n description: '以 http/https 开头的合法 URL',\n message: '请输入正确的 URL 地址',\n type: 'url',\n builtin: true,\n },\n {\n key: 'id_card_cn',\n label: '居民身份证(中国)',\n description: '18 位二代身份证号码',\n message: '请输入正确的身份证号',\n pattern: '^[1-9]\\\\d{5}(18|19|20)\\\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\\\d|3[01])\\\\d{3}[\\\\dXx]$',\n builtin: true,\n },\n {\n key: 'positive_integer',\n label: '正整数',\n description: '大于 0 的整数',\n message: '请输入正整数',\n pattern: '^[1-9]\\\\d*$',\n builtin: true,\n },\n {\n key: 'non_negative_integer',\n label: '非负整数',\n description: '0 或大于 0 的整数',\n message: '请输入非负整数',\n pattern: '^\\\\d+$',\n builtin: true,\n },\n {\n key: 'chinese',\n label: '纯中文',\n description: '只能包含中文字符',\n message: '只能输入中文字符',\n pattern: '^[\\\\u4e00-\\\\u9fa5]+$',\n builtin: true,\n },\n {\n key: 'alphanumeric',\n label: '字母和数字',\n description: '只能包含英文字母和数字',\n message: '只能输入字母和数字',\n pattern: '^[a-zA-Z0-9]+$',\n builtin: true,\n },\n {\n key: 'no_special_chars',\n label: '无特殊字符',\n description: '只允许中文、字母、数字、下划线、短横线',\n message: '不能包含特殊字符',\n pattern: '^[a-zA-Z0-9\\\\u4e00-\\\\u9fa5_-]+$',\n builtin: true,\n },\n {\n key: 'ip_address',\n label: 'IPv4 地址',\n description: '标准 IPv4 地址格式',\n message: '请输入正确的 IP 地址',\n pattern: '^((25[0-5]|2[0-4]\\\\d|[01]?\\\\d\\\\d?)\\\\.){3}(25[0-5]|2[0-4]\\\\d|[01]?\\\\d\\\\d?)$',\n builtin: true,\n },\n {\n key: 'date_format',\n label: '日期格式 (YYYY-MM-DD)',\n description: '格式如 2024-01-01',\n message: '请输入正确的日期格式,如 2024-01-01',\n pattern: '^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\\\d|3[01])$',\n builtin: true,\n },\n {\n key: 'no_whitespace',\n label: '不含空格',\n description: '不允许包含任何空白字符',\n message: '不能包含空格',\n pattern: '^\\\\S+$',\n builtin: true,\n },\n {\n key: 'min_len_2',\n label: '最少 2 个字符',\n description: '字符串长度不少于 2',\n message: '长度不能少于 2 个字符',\n min: 2,\n builtin: true,\n },\n {\n key: 'max_len_50',\n label: '最多 50 个字符',\n description: '字符串长度不超过 50',\n message: '长度不能超过 50 个字符',\n max: 50,\n builtin: true,\n },\n {\n key: 'max_len_200',\n label: '最多 200 个字符',\n description: '字符串长度不超过 200',\n message: '长度不能超过 200 个字符',\n max: 200,\n builtin: true,\n },\n {\n key: 'bank_card',\n label: '银行卡号',\n description: '16-19 位纯数字',\n message: '请输入正确的银行卡号',\n pattern: '^\\\\d{16,19}$',\n builtin: true,\n },\n {\n key: 'plate_cn',\n label: '车牌号(中国)',\n description: '含新能源车牌在内的中国大陆车牌',\n message: '请输入正确的车牌号',\n pattern: '^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤川青藏琼宁夏][A-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$',\n builtin: true,\n },\n {\n key: 'postal_code_cn',\n label: '邮政编码(中国)',\n description: '6 位数字邮编',\n message: '请输入正确的邮政编码',\n pattern: '^\\\\d{6}$',\n builtin: true,\n },\n];\n\nconst CUSTOM_RULES_STORAGE_KEY = 'dynamic_crud_custom_rules';\n\nexport function loadCustomRules(): ValidationRuleConfig[] {\n try {\n const raw = localStorage.getItem(CUSTOM_RULES_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as ValidationRuleConfig[]) : [];\n } catch {\n return [];\n }\n}\n\nexport function saveCustomRules(rules: ValidationRuleConfig[]): void {\n try {\n localStorage.setItem(CUSTOM_RULES_STORAGE_KEY, JSON.stringify(rules));\n } catch { /* ignore */ }\n}\n\n/** 获取所有规则(内置 + 自定义) */\nexport function getAllRules(): ValidationRuleConfig[] {\n return [...BUILTIN_RULES, ...loadCustomRules()];\n}\n\n/** 根据 key 查找规则 */\nexport function getRuleByKey(key: string): ValidationRuleConfig | undefined {\n return getAllRules().find(r => r.key === key);\n}\n\n/** 将规则配置转为 Ant Design Form Rule */\nexport function ruleConfigToAntdRule(config: ValidationRuleConfig): Rule {\n const rule: Record<string, unknown> = { message: config.message };\n if (config.pattern) {\n rule.pattern = new RegExp(config.pattern);\n }\n if (config.type) {\n rule.type = config.type;\n }\n if (config.min !== undefined) {\n rule.min = config.min;\n }\n if (config.max !== undefined) {\n rule.max = config.max;\n }\n if (config.whitespace !== undefined) {\n rule.whitespace = config.whitespace;\n }\n return rule as Rule;\n}\n\n/** 将一组规则 key 转为 Ant Design Form Rules 数组 */\nexport function keysToAntdRules(keys: string[]): Rule[] {\n return keys\n .map(k => getRuleByKey(k))\n .filter((c): c is ValidationRuleConfig => c !== undefined)\n .map(ruleConfigToAntdRule);\n}","import { useEffect, useState } from 'react';\nimport {\n Modal, Form, Input, InputNumber, Select, Switch,\n DatePicker, Radio, Checkbox, Space, Card, Divider,\n Button, Table, message,\n} from 'antd';\nimport { PlusOutlined, DeleteOutlined, CodeOutlined, FormOutlined } from '@ant-design/icons';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\ndayjs.extend(customParseFormat);\nimport type { CrudPageSchema, FieldSchema, FormFieldConfig, SelectOption, ArrayItemField } from '../types/schema';\nimport { getEffectiveWidget, getFieldGroupPrefix, getNestedValue } from '../types/schema';\nimport { keysToAntdRules } from '../types/validationRules';\n\ntype FormMode = 'create' | 'edit' | 'view';\n\ninterface DynamicFormProps {\n schema: CrudPageSchema;\n mode: FormMode;\n visible: boolean;\n initialValues?: Record<string, unknown>;\n onSubmit: (values: Record<string, unknown>) => void;\n onCancel: () => void;\n}\n\nfunction getFormConfig(field: FieldSchema): FormFieldConfig | undefined {\n if (!field.form || typeof field.form === 'boolean') return undefined;\n return field.form as FormFieldConfig;\n}\n\nfunction getOptions(field: FieldSchema): SelectOption[] {\n return field.config?.options ?? [];\n}\n\n/** 将 camelCase 前缀转为可读标签(仅首字母大写) */\nfunction prefixToLabel(prefix: string): string {\n return prefix.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase()).trim();\n}\n\n/** 设置嵌套对象指定路径的值(修改原对象) */\nfunction setNestedValue(\n obj: Record<string, unknown>,\n path: string[],\n value: unknown,\n): void {\n let cur = obj;\n for (let i = 0; i < path.length - 1; i++) {\n const k = path[i];\n if (cur[k] == null || typeof cur[k] !== 'object' || Array.isArray(cur[k])) {\n cur[k] = {};\n }\n cur = cur[k] as Record<string, unknown>;\n }\n cur[path[path.length - 1]] = value;\n}\n\n/** 行内可编辑表格 cell 组件 */\nfunction EditableCellInput({\n itemField,\n disabled,\n value,\n onChange,\n}: {\n itemField: ArrayItemField;\n disabled: boolean;\n value?: unknown; // Form.Item 注入\n onChange?: (val: unknown) => void; // Form.Item 注入\n}) {\n const ph = itemField.config?.placeholder ?? `请输入${itemField.label}`;\n switch (itemField.type) {\n case 'number':\n return (\n <InputNumber\n disabled={disabled}\n placeholder={ph}\n value={value as number | null | undefined}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n />\n );\n case 'boolean':\n // Form.Item 默认 valuePropName=\"value\",这里手动映射到 checked\n return (\n <Switch\n disabled={disabled}\n checked={value as boolean}\n onChange={(checked) => onChange?.(checked)}\n />\n );\n case 'date':\n case 'datetime': {\n const fmt = itemField.config?.dateFormat ?? (itemField.type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n // value 可能是字符串(来自 initialValues)或 dayjs 对象(用户选择后)\n const pickerValue = value != null\n ? (dayjs.isDayjs(value) ? value : dayjs(value as string))\n : null;\n return (\n <DatePicker\n disabled={disabled}\n format={fmt}\n value={pickerValue}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n />\n );\n }\n case 'string': {\n if (itemField.widget === 'select' && itemField.config?.options?.length) {\n return (\n <Select\n disabled={disabled}\n allowClear\n placeholder={ph}\n value={value as string | undefined}\n onChange={(v) => onChange?.(v)}\n style={{ width: '100%' }}\n >\n {itemField.config.options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>{o.label}</Select.Option>\n ))}\n </Select>\n );\n }\n return (\n <Input\n disabled={disabled}\n placeholder={ph}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n default:\n return (\n <Input\n disabled={disabled}\n placeholder={ph}\n value={value as string | undefined}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n }\n}\n\nfunction renderFormInput(\n field: FieldSchema,\n cfg: FormFieldConfig | undefined,\n disabled: boolean,\n): React.ReactNode {\n const widget = getEffectiveWidget(field, cfg);\n const options = getOptions(field);\n const placeholder = field.config?.placeholder;\n const rows = field.config?.rows;\n const style = { width: '100%' };\n\n switch (widget) {\n case 'input':\n return <Input disabled={disabled} placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n\n case 'textarea':\n return (\n <Input.TextArea\n disabled={disabled}\n rows={rows ?? 4}\n placeholder={placeholder ?? `请输入 ${field.label}`}\n style={style}\n />\n );\n\n case 'jsonInput':\n return (\n <Input.TextArea\n disabled={disabled}\n rows={rows ?? 5}\n placeholder={placeholder ?? '请输入 JSON'}\n style={{ ...style, fontFamily: 'monospace', fontSize: 12 }}\n />\n );\n\n case 'inputNumber':\n return (\n <InputNumber\n disabled={disabled}\n min={cfg?.min}\n max={cfg?.max}\n step={cfg?.step ?? 1}\n placeholder={placeholder ?? `请输入 ${field.label}`}\n style={style}\n />\n );\n\n case 'select':\n return (\n <Select disabled={disabled} allowClear placeholder={placeholder ?? `请选择 ${field.label}`} style={style}>\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'multiselect':\n return (\n <Select\n mode=\"multiple\"\n disabled={disabled}\n allowClear\n placeholder={placeholder ?? `请选择 ${field.label}`}\n style={style}\n >\n {options.map((o) => (\n <Select.Option key={String(o.value)} value={o.value}>\n {o.label}\n </Select.Option>\n ))}\n </Select>\n );\n\n case 'radio':\n return (\n <Radio.Group disabled={disabled}>\n {options.map((o) => (\n <Radio key={String(o.value)} value={o.value}>{o.label}</Radio>\n ))}\n </Radio.Group>\n );\n\n case 'checkbox':\n return (\n <Checkbox.Group disabled={disabled}>\n <Space wrap>\n {options.map((o) => (\n <Checkbox key={String(o.value)} value={o.value}>{o.label}</Checkbox>\n ))}\n </Space>\n </Checkbox.Group>\n );\n\n case 'switch':\n return <Switch disabled={disabled} />;\n\n case 'datePicker': {\n const showTime = field.type === 'datetime';\n const format = field.config?.dateFormat ?? (showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n return <DatePicker disabled={disabled} showTime={showTime} format={format} style={style} />;\n }\n\n case 'rangePicker': {\n const showTime = field.type === 'datetime';\n const format = field.config?.dateFormat ?? (showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n return <DatePicker.RangePicker disabled={disabled} showTime={showTime} format={format} style={style} />;\n }\n\n case 'timePicker':\n return (\n <DatePicker\n picker=\"time\"\n disabled={disabled}\n format={field.config?.dateFormat ?? 'HH:mm:ss'}\n style={style}\n />\n );\n\n case 'editableTable': {\n const itemFields = field.itemFields ?? [];\n return (\n <Form.List name={field.key}>\n {(listFields, { add, remove }) => {\n const columns = [\n ...itemFields.map((itemField) => ({\n title: itemField.label,\n dataIndex: itemField.key,\n width: itemField.width,\n render: (_: unknown, record: { name: number }) => (\n <Form.Item\n name={[record.name, itemField.key]}\n rules={itemField.required ? [{ required: true, message: `${itemField.label}必填` }] : undefined}\n style={{ margin: 0 }}\n >\n <EditableCellInput itemField={itemField} disabled={disabled} />\n </Form.Item>\n ),\n })),\n ...(!disabled\n ? [{\n title: '',\n width: 50,\n render: (_: unknown, record: { name: number }) => (\n <Button\n type=\"text\"\n danger\n icon={<DeleteOutlined />}\n onClick={() => remove(record.name)}\n />\n ),\n }]\n : []),\n ];\n return (\n <div>\n <Table\n size=\"small\"\n dataSource={listFields.map((f) => ({ ...f, _key: f.key }))}\n rowKey=\"_key\"\n columns={columns}\n pagination={false}\n style={{ marginBottom: 8 }}\n />\n {!disabled && (\n <Button\n type=\"dashed\"\n icon={<PlusOutlined />}\n onClick={() => add({})}\n block\n >\n 添加一行\n </Button>\n )}\n </div>\n );\n }}\n </Form.List>\n );\n }\n\n default:\n return <Input disabled={disabled} placeholder={placeholder ?? `请输入 ${field.label}`} style={style} />;\n }\n}\n\n/**\n * 将接口数据转为 Form 使用的初始值。\n *\n * - 顶层字段:直接展开(与原来相同)\n * - dot-path 字段(如 `emergencyContact.name`):\n * API 返回的数据已是嵌套结构,form.setFieldsValue 可直接识别\n * - 日期字段:将字符串转为 dayjs 对象\n */\nfunction normalizeInitialValues(\n fields: FieldSchema[],\n values?: Record<string, unknown>,\n): Record<string, unknown> {\n if (!values) return {};\n // 深拷贝,避免修改原对象\n const result: Record<string, unknown> = JSON.parse(JSON.stringify(values)) as Record<string, unknown>;\n\n fields.forEach((field) => {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n if (widget !== 'datePicker' && widget !== 'rangePicker' && widget !== 'timePicker') return;\n\n const path = field.key.split('.');\n const val = path.length > 1 ? getNestedValue(result, field.key) : result[field.key];\n if (val == null) return;\n\n if (widget === 'rangePicker' && Array.isArray(val)) {\n setNestedValue(result, path, (val as (string | dayjs.Dayjs)[]).map((v) => {\n if (!v) return null;\n return dayjs.isDayjs(v) ? v : dayjs(v as string);\n }));\n } else if (val) {\n // 检查是否已经是 dayjs 对象,避免重复转换\n if (dayjs.isDayjs(val)) {\n setNestedValue(result, path, val);\n } else {\n // timePicker 存储的是纯时间字符串(如 \"09:30:00\"),需要带 format 解析\n const fmt = widget === 'timePicker'\n ? (field.config?.dateFormat ?? 'HH:mm:ss')\n : undefined;\n setNestedValue(result, path, fmt ? dayjs(val as string, fmt) : dayjs(val as string));\n }\n }\n });\n\n return result;\n}\n\n/** 将 Form 值序列化为提交数据(dayjs → ISO string) */\nfunction serializeValues(\n fields: FieldSchema[],\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const result: Record<string, unknown> = JSON.parse(JSON.stringify(values)) as Record<string, unknown>;\n\n fields.forEach((field) => {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n if (widget !== 'datePicker' && widget !== 'rangePicker' && widget !== 'timePicker') return;\n\n const path = field.key.split('.');\n // 必须从原始 values 读(dayjs 对象仍存在),\n // 不能从 result 读——JSON.parse(JSON.stringify) 已把 dayjs 序列化为 ISO 字符串,\n // 导致 dayjs.isDayjs() 全部失败(rangePicker 变成 [null, null])。\n const val = path.length > 1 ? getNestedValue(values, field.key) : values[field.key];\n if (val == null) return;\n\n if (widget === 'timePicker' && dayjs.isDayjs(val)) {\n const fmt = field.config?.dateFormat ?? 'HH:mm:ss';\n setNestedValue(result, path, (val as ReturnType<typeof dayjs>).format(fmt));\n } else if (widget === 'datePicker' && dayjs.isDayjs(val)) {\n setNestedValue(result, path, (val as ReturnType<typeof dayjs>).toISOString());\n } else if (widget === 'rangePicker' && Array.isArray(val)) {\n setNestedValue(\n result,\n path,\n (val as ReturnType<typeof dayjs>[]).map((v) => (v && dayjs.isDayjs(v) ? v.toISOString() : null)),\n );\n }\n });\n\n return result;\n}\n\n/** 渲染单个 Form.Item */\nfunction renderField(field: FieldSchema, disabled: boolean): React.ReactNode {\n const cfg = getFormConfig(field);\n const widget = getEffectiveWidget(field, cfg);\n const required = !disabled && (cfg?.required ?? false);\n\n // editableTable 使用 Form.List,不能再套 Form.Item name\n if (widget === 'editableTable') {\n return (\n <Form.Item key={field.key} label={field.label} style={{ marginBottom: 14 }}>\n {renderFormInput(field, cfg, disabled)}\n </Form.Item>\n );\n }\n\n const namePath = field.key.includes('.') ? field.key.split('.') : field.key;\n const extraRules = field.rules && !disabled ? keysToAntdRules(field.rules) : [];\n const validationRules = [\n ...(required ? [{ required: true, message: `请输入 ${field.label}` }] : []),\n ...extraRules,\n ];\n\n return (\n <Form.Item\n key={field.key}\n label={field.label}\n name={namePath}\n valuePropName={widget === 'switch' ? 'checked' : 'value'}\n rules={validationRules}\n style={{ marginBottom: 14 }}\n >\n {renderFormInput(field, cfg, disabled)}\n </Form.Item>\n );\n}\n\nexport default function DynamicForm({\n schema,\n mode,\n visible,\n initialValues,\n onSubmit,\n onCancel,\n}: DynamicFormProps) {\n const [form] = Form.useForm();\n const [rawJsonMode, setRawJsonMode] = useState(false);\n const [rawJsonText, setRawJsonText] = useState('');\n const [rawJsonError, setRawJsonError] = useState('');\n const disabled = mode === 'view';\n const entityName = schema.title.replace(/管理$/, '');\n\n const titleMap: Record<FormMode, string> = {\n create: `新增${entityName}`,\n edit: `编辑${entityName}`,\n view: `查看${entityName}`,\n };\n\n const formFields = schema.fields.filter((f) => {\n if (mode === 'view') return f.table !== false && f.table !== undefined;\n return f.form !== false && f.form !== undefined;\n });\n\n useEffect(() => {\n if (!visible) {\n form.resetFields();\n setRawJsonMode(false);\n setRawJsonText('');\n setRawJsonError('');\n } else {\n // 模态框打开时,根据模式设置表单值\n if (mode === 'create') {\n // 新增模式:清空表单并确保没有残留数据\n form.resetFields();\n // 延迟一下确保resetFields完成\n setTimeout(() => {\n form.setFieldsValue({});\n }, 0);\n } else {\n // 编辑/查看模式设置初始值\n const normalized = normalizeInitialValues(formFields, initialValues);\n form.setFieldsValue(normalized);\n }\n }\n }, [visible, mode, initialValues, form, formFields]);\n\n const switchToRaw = () => {\n // getFieldsValue(true) 返回 store 全量数据(含 id 等非 Form.Item 字段)\n const rawValues = disabled\n ? (initialValues ?? {})\n : (form.getFieldsValue(true) as Record<string, unknown>);\n const serialized = disabled ? rawValues : serializeValues(formFields, rawValues);\n setRawJsonText(JSON.stringify(serialized, null, 2));\n setRawJsonError('');\n setRawJsonMode(true);\n };\n\n const switchToForm = () => {\n if (!disabled) {\n try {\n const parsed = JSON.parse(rawJsonText) as Record<string, unknown>;\n form.setFieldsValue(normalizeInitialValues(formFields, parsed));\n setRawJsonError('');\n } catch {\n setRawJsonError('JSON 格式错误,请修正后再切换');\n return;\n }\n }\n setRawJsonMode(false);\n };\n\n const handleOk = async () => {\n if (disabled) { onCancel(); return; }\n if (rawJsonMode) {\n try {\n const parsed = JSON.parse(rawJsonText) as Record<string, unknown>;\n onSubmit(parsed);\n } catch {\n setRawJsonError('JSON 格式错误,无法提交');\n }\n return;\n }\n const values = await form.validateFields();\n onSubmit(serializeValues(formFields, values as Record<string, unknown>));\n };\n\n /**\n * 将字段列表按 dot-path 前缀分组渲染:\n * - 无前缀字段:直接渲染\n * - 有前缀的字段:相同前缀聚合到一个带标题的 Card 中\n */\n const renderFieldGroups = () => {\n const nodes: React.ReactNode[] = [];\n let i = 0;\n while (i < formFields.length) {\n const field = formFields[i];\n const prefix = getFieldGroupPrefix(field.key);\n\n if (!prefix) {\n nodes.push(renderField(field, disabled));\n i++;\n } else {\n // 收集相同前缀的连续字段\n const groupFields: FieldSchema[] = [];\n while (i < formFields.length && getFieldGroupPrefix(formFields[i].key) === prefix) {\n groupFields.push(formFields[i]);\n i++;\n }\n nodes.push(\n <div key={prefix} style={{ marginBottom: 16 }}>\n <Divider style={{ fontSize: 13, color: '#666', margin: '8px 0 12px' }}>\n {prefixToLabel(prefix)}\n </Divider>\n <Card\n size=\"small\"\n style={{ background: '#fafafa', borderRadius: 6 }}\n styles={{ body: { paddingBottom: 4 } }}\n >\n {groupFields.map((gf) => renderField(gf, disabled))}\n </Card>\n </div>,\n );\n }\n }\n return nodes;\n };\n\n const copyRawJson = () => {\n const json = rawJsonMode\n ? rawJsonText\n : JSON.stringify(\n disabled\n ? (initialValues ?? {})\n : serializeValues(formFields, form.getFieldsValue(true) as Record<string, unknown>),\n null, 2,\n );\n navigator.clipboard.writeText(json)\n .then(() => void message.success('已复制 JSON'))\n .catch(() => void message.error('复制失败'));\n };\n\n const modalTitle = (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', paddingRight: 32 }}>\n <span>{titleMap[mode]}</span>\n <Space size={8}>\n <Button\n size=\"small\"\n type=\"text\"\n icon={rawJsonMode ? <FormOutlined /> : <CodeOutlined />}\n onClick={rawJsonMode ? switchToForm : switchToRaw}\n >\n {rawJsonMode ? '表单视图' : 'Raw JSON'}\n </Button>\n </Space>\n </div>\n );\n\n return (\n <Modal\n title={modalTitle}\n open={visible}\n onOk={handleOk}\n onCancel={onCancel}\n okText={disabled ? '关闭' : '确认'}\n cancelText=\"取消\"\n cancelButtonProps={disabled ? { style: { display: 'none' } } : {}}\n width={720}\n destroyOnClose\n >\n {/* Form 始终挂载,切换模式时仅用 display 隐藏,防止卸载导致 store 重置 */}\n <div style={{ display: rawJsonMode ? 'none' : undefined }}>\n <Form\n form={form}\n layout=\"vertical\"\n initialValues={{}} // 不依赖initialValues,完全通过useEffect控制\n >\n {renderFieldGroups()}\n </Form>\n </div>\n\n {rawJsonMode && (\n <div>\n <Input.TextArea\n value={rawJsonText}\n onChange={disabled ? undefined : (e) => { setRawJsonText(e.target.value); setRawJsonError(''); }}\n readOnly={disabled}\n rows={20}\n style={{ fontFamily: 'monospace', fontSize: 12, resize: 'vertical' }}\n status={rawJsonError ? 'error' : undefined}\n />\n {rawJsonError && (\n <div style={{ color: '#ff4d4f', fontSize: 12, marginTop: 4 }}>{rawJsonError}</div>\n )}\n {!disabled && (\n <div style={{ marginTop: 8, textAlign: 'right' }}>\n <Button size=\"small\" icon={<CodeOutlined />} onClick={copyRawJson}>复制 JSON</Button>\n </div>\n )}\n </div>\n )}\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport { Button, message, Typography } from 'antd';\nimport { PlusOutlined } from '@ant-design/icons';\nimport type { CrudPageSchema, ActionSchema, ApiRequest } from '../types/schema';\nimport DynamicFilter from './DynamicFilter';\nimport DynamicTable from './DynamicTable';\nimport DynamicForm from './DynamicForm';\n\nconst { Title } = Typography;\n\ninterface CrudPageProps {\n schema: CrudPageSchema;\n initialData?: Record<string, unknown>[];\n apiRequest?: ApiRequest;\n}\n\n/** 替换 URL 模板中的 :id */\nfunction buildUrl(template: string, id: unknown): string {\n return template.replace(/:id/, String(id));\n}\n\n/** 通用请求封装 */\nasync function apiRequest<T = unknown>(\n url: string,\n options?: RequestInit,\n): Promise<T> {\n const res = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n ...options,\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json() as Promise<T>;\n}\n\n/** 从接口响应中提取列表和总数(兼容常见结构) */\nfunction extractListResponse(json: unknown): { list: Record<string, unknown>[]; total: number } {\n if (!json || typeof json !== 'object') return { list: [], total: 0 };\n const obj = json as Record<string, unknown>;\n const data = obj.data ?? obj.result ?? obj;\n if (Array.isArray(data)) return { list: data as Record<string, unknown>[], total: data.length };\n if (data && typeof data === 'object') {\n const inner = data as Record<string, unknown>;\n const list = (inner.list ?? inner.records ?? inner.data ?? []) as Record<string, unknown>[];\n const total = Number(inner.total ?? inner.count ?? list.length);\n return { list, total };\n }\n return { list: [], total: 0 };\n}\n\nconst CrudPage: React.FC<CrudPageProps> = ({ schema, initialData = [], apiRequest: customApiRequest }) => {\n const rowKey = schema.rowKey || 'id';\n\n // 使用传入的apiRequest或默认的\n const request = customApiRequest || apiRequest;\n\n // 本地兜底数据(API 失败时使用)\n const localDataRef = useRef<Record<string, unknown>[]>(initialData);\n\n const [data, setData] = useState<Record<string, unknown>[]>([]);\n const [loading, setLoading] = useState(false);\n const [total, setTotal] = useState(0);\n const [filterParams, setFilterParams] = useState<Record<string, unknown>>({});\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(schema.pagination?.pageSize || 10);\n const [modalState, setModalState] = useState<{\n open: boolean;\n mode: 'create' | 'edit' | 'view';\n record?: Record<string, unknown>;\n }>({ open: false, mode: 'create' });\n\n const [messageApi, contextHolder] = message.useMessage();\n\n // ---------- 本地过滤(API 失败时兜底) ----------\n const localFilter = useCallback(\n (params: Record<string, unknown>, p: number, ps: number) => {\n const filtered = localDataRef.current.filter(row => {\n return Object.entries(params).every(([key, val]) => {\n if (val === undefined || val === null || val === '') return true;\n if (key.endsWith('_min')) return Number(row[key.slice(0, -4)]) >= Number(val);\n if (key.endsWith('_max')) return Number(row[key.slice(0, -4)]) <= Number(val);\n if (key.endsWith('_start') || key.endsWith('_end')) return true;\n const rowVal = row[key];\n if (Array.isArray(rowVal)) {\n return Array.isArray(val) ? val.some(v => rowVal.includes(v)) : rowVal.includes(val);\n }\n if (typeof val === 'string') return String(rowVal).toLowerCase().includes(val.toLowerCase());\n return rowVal === val;\n });\n });\n const start = (p - 1) * ps;\n setData(filtered.slice(start, start + ps));\n setTotal(filtered.length);\n },\n [],\n );\n\n // ---------- 获取列表 ----------\n const fetchList = useCallback(async (\n params: Record<string, unknown> = filterParams,\n p: number = page,\n ps: number = pageSize,\n ) => {\n setLoading(true);\n try {\n const query = new URLSearchParams({ page: String(p), pageSize: String(ps) });\n Object.entries(params).forEach(([k, v]) => {\n if (v !== undefined && v !== null && v !== '') query.set(k, String(v));\n });\n const json = await request(`${schema.api.list}?${query}`);\n const { list, total: tot } = extractListResponse(json);\n setData(list);\n setTotal(tot);\n } catch {\n // API 不可用 → 本地演示模式\n localFilter(params, p, ps);\n } finally {\n setLoading(false);\n }\n }, [request, schema.api.list, filterParams, page, pageSize, localFilter]);\n\n // 初始加载 & 参数变化时重新请求\n useEffect(() => {\n fetchList(filterParams, page, pageSize);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterParams, page, pageSize]);\n\n // ---------- 搜索 ----------\n const handleSearch = useCallback((params: Record<string, unknown>) => {\n setFilterParams(params);\n setPage(1);\n }, []);\n\n // ---------- 翻页 ----------\n const handlePageChange = useCallback((p: number, ps: number) => {\n setPage(p);\n setPageSize(ps);\n }, []);\n\n // ---------- 删除 ----------\n const handleDelete = useCallback(async (record: Record<string, unknown>) => {\n const id = record[rowKey];\n if (schema.api.delete) {\n try {\n await request(buildUrl(schema.api.delete, id), { method: 'DELETE' });\n messageApi.success('删除成功');\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n localDataRef.current = localDataRef.current.filter(r => r[rowKey] !== id);\n localFilter(filterParams, page, pageSize);\n messageApi.success('删除成功(演示模式)');\n }, [request, schema.api.delete, rowKey, fetchList, localFilter, filterParams, page, pageSize, messageApi]);\n\n // ---------- 操作列点击 ----------\n const handleAction = useCallback((action: ActionSchema, record: Record<string, unknown>) => {\n if (action.type === 'view') {\n setModalState({ open: true, mode: 'view', record });\n } else if (action.type === 'edit') {\n setModalState({ open: true, mode: 'edit', record });\n } else if (action.type === 'delete') {\n handleDelete(record);\n }\n }, [handleDelete]);\n\n // ---------- 新增 / 编辑提交 ----------\n const handleFormOk = useCallback(async (values: Record<string, unknown>) => {\n const isCreate = modalState.mode === 'create';\n\n if (isCreate) {\n if (schema.api.create) {\n try {\n await request(schema.api.create, {\n method: 'POST',\n body: JSON.stringify(values),\n });\n messageApi.success('新增成功');\n setModalState({ open: false, mode: 'create' });\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n const newRecord = { [rowKey]: `local-${Date.now()}`, ...values };\n localDataRef.current = [newRecord, ...localDataRef.current];\n localFilter(filterParams, 1, pageSize);\n setPage(1);\n messageApi.success('新增成功(演示模式)');\n } else {\n const id = values[rowKey];\n if (schema.api.update) {\n try {\n await request(buildUrl(schema.api.update, id), {\n method: 'PUT',\n body: JSON.stringify(values),\n });\n messageApi.success('编辑成功');\n setModalState({ open: false, mode: 'create' });\n fetchList();\n return;\n } catch {\n // 降级本地\n }\n }\n localDataRef.current = localDataRef.current.map(r =>\n r[rowKey] === id ? { ...r, ...values } : r,\n );\n localFilter(filterParams, page, pageSize);\n messageApi.success('编辑成功(演示模式)');\n }\n\n setModalState({ open: false, mode: 'create' });\n }, [\n request, modalState.mode, schema.api, rowKey,\n fetchList, localFilter, filterParams, page, pageSize, messageApi,\n ]);\n\n return (\n <div style={{ padding: 24, background: '#f5f6fa', minHeight: '100vh' }}>\n {contextHolder}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>\n <Title level={4} style={{ margin: 0 }}>{schema.title}</Title>\n {schema.api.create && (\n <Button\n type=\"primary\"\n icon={<PlusOutlined />}\n onClick={() => setModalState({ open: true, mode: 'create', record: undefined })}\n >\n {schema.createButtonLabel || '新增'}\n </Button>\n )}\n </div>\n\n <DynamicFilter schema={schema} onSearch={handleSearch} onReset={() => handleSearch({})} />\n\n <DynamicTable\n schema={schema}\n data={data}\n loading={loading}\n pagination={{\n current: page,\n pageSize,\n total,\n onChange: handlePageChange,\n }}\n onView={(record) => handleAction({ key: 'view', label: '查看', type: 'view' }, record)}\n onEdit={(record) => handleAction({ key: 'edit', label: '编辑', type: 'edit' }, record)}\n onDelete={(record) => handleDelete(record)}\n onCustomAction={(actionKey, record) => {\n const action = schema.actions?.find(a => a.key === actionKey);\n if (action) handleAction(action, record);\n }}\n />\n\n <DynamicForm\n schema={schema}\n visible={modalState.open}\n mode={modalState.mode}\n initialValues={modalState.record}\n onSubmit={handleFormOk}\n onCancel={() => setModalState({ open: false, mode: 'create' })}\n />\n </div>\n );\n};\n\nexport default CrudPage;\n"],"names":["getOptions","_jsx","_jsxs"],"mappings":"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"}
|