@mijalowcode/materials 1.1.5 → 1.1.7

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.
Files changed (47) hide show
  1. package/dist/DescriptionsWrapper-LCWRKPFY.js +4 -0
  2. package/dist/DescriptionsWrapper-LCWRKPFY.js.map +1 -0
  3. package/dist/DesensitizationDisplay-MO3BSJRD.js +3 -0
  4. package/dist/{DesensitizationDisplay-XWRRKQ66.js.map → DesensitizationDisplay-MO3BSJRD.js.map} +1 -1
  5. package/dist/ListWrapper-2EBD6FGB.js +3 -0
  6. package/dist/ListWrapper-2EBD6FGB.js.map +1 -0
  7. package/dist/ProTableWrapper-SHKEQ3B3.js +5 -0
  8. package/dist/{ProTableWrapper-WWYUXBR3.js.map → ProTableWrapper-SHKEQ3B3.js.map} +1 -1
  9. package/dist/{chunk-VCBTHCLX.js → chunk-7X4I2Q6F.js} +2 -2
  10. package/dist/chunk-7X4I2Q6F.js.map +1 -0
  11. package/dist/{chunk-IZCK2NW4.js → chunk-C2Q6TVQH.js} +2 -5
  12. package/dist/chunk-C2Q6TVQH.js.map +1 -0
  13. package/dist/{chunk-4XV45KAK.js → chunk-EM2IRMCA.js} +12 -2
  14. package/dist/chunk-EM2IRMCA.js.map +1 -0
  15. package/dist/chunk-JCJLL4OK.js +44 -0
  16. package/dist/chunk-JCJLL4OK.js.map +1 -0
  17. package/dist/chunk-LVFEPXNW.js +98 -0
  18. package/dist/chunk-LVFEPXNW.js.map +1 -0
  19. package/dist/{chunk-TXHAJOMV.js → chunk-NGLCSHN6.js} +253 -33
  20. package/dist/chunk-NGLCSHN6.js.map +1 -0
  21. package/dist/{chunk-GXBBOWAK.js → chunk-WANSJ5GB.js} +70 -5
  22. package/dist/chunk-WANSJ5GB.js.map +1 -0
  23. package/dist/{chunk-WCGDUFTL.js → chunk-YGTLYQ74.js} +56 -12
  24. package/dist/chunk-YGTLYQ74.js.map +1 -0
  25. package/dist/index.d.ts +17 -2
  26. package/dist/index.js +22 -19
  27. package/dist/index.js.map +1 -1
  28. package/dist/meta-4MKZOZRG.js +3 -0
  29. package/dist/{meta-BSPZO2AJ.js.map → meta-4MKZOZRG.js.map} +1 -1
  30. package/dist/meta-AWRQA4QI.js +3 -0
  31. package/dist/{meta-JJU3VEWF.js.map → meta-AWRQA4QI.js.map} +1 -1
  32. package/dist/meta-OHP3QZXL.js +3 -0
  33. package/dist/{meta-NKZL6DSN.js.map → meta-OHP3QZXL.js.map} +1 -1
  34. package/dist/runtime.d.ts +4 -0
  35. package/dist/runtime.js +1 -1
  36. package/package.json +3 -3
  37. package/dist/DesensitizationDisplay-XWRRKQ66.js +0 -3
  38. package/dist/ProTableWrapper-WWYUXBR3.js +0 -5
  39. package/dist/chunk-4XV45KAK.js.map +0 -1
  40. package/dist/chunk-GXBBOWAK.js.map +0 -1
  41. package/dist/chunk-IZCK2NW4.js.map +0 -1
  42. package/dist/chunk-TXHAJOMV.js.map +0 -1
  43. package/dist/chunk-VCBTHCLX.js.map +0 -1
  44. package/dist/chunk-WCGDUFTL.js.map +0 -1
  45. package/dist/meta-BSPZO2AJ.js +0 -3
  46. package/dist/meta-JJU3VEWF.js +0 -3
  47. package/dist/meta-NKZL6DSN.js +0 -3
@@ -0,0 +1,4 @@
1
+ export { DescriptionsWrapper_default as default } from './chunk-LVFEPXNW.js';
2
+ import './chunk-VNMO5V4F.js';
3
+ //# sourceMappingURL=DescriptionsWrapper-LCWRKPFY.js.map
4
+ //# sourceMappingURL=DescriptionsWrapper-LCWRKPFY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DescriptionsWrapper-LCWRKPFY.js"}
@@ -0,0 +1,3 @@
1
+ export { DesensitizationDisplay_default as default } from './chunk-7X4I2Q6F.js';
2
+ //# sourceMappingURL=DesensitizationDisplay-MO3BSJRD.js.map
3
+ //# sourceMappingURL=DesensitizationDisplay-MO3BSJRD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"DesensitizationDisplay-XWRRKQ66.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DesensitizationDisplay-MO3BSJRD.js"}
@@ -0,0 +1,3 @@
1
+ export { ListWrapper as default } from './chunk-JCJLL4OK.js';
2
+ //# sourceMappingURL=ListWrapper-2EBD6FGB.js.map
3
+ //# sourceMappingURL=ListWrapper-2EBD6FGB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ListWrapper-2EBD6FGB.js"}
@@ -0,0 +1,5 @@
1
+ export { buildProTableFormConfig, buildProTableQueryDelayDetail, buildProTableRequestParamsSummary, buildProTableSlotRuntimeContext, buildSearchInitialValuesFromStorageValue, ProTableWrapper_default as default, resolveProTableQueryActionName, shouldRecordProTableLongTask, unwrapSearchStorageValue } from './chunk-NGLCSHN6.js';
2
+ import './chunk-VNMO5V4F.js';
3
+ import './chunk-CTF6CVK3.js';
4
+ //# sourceMappingURL=ProTableWrapper-SHKEQ3B3.js.map
5
+ //# sourceMappingURL=ProTableWrapper-SHKEQ3B3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ProTableWrapper-WWYUXBR3.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ProTableWrapper-SHKEQ3B3.js"}
@@ -74,5 +74,5 @@ var DesensitizationDisplay = (props) => {
74
74
  var DesensitizationDisplay_default2 = DesensitizationDisplay;
75
75
 
76
76
  export { DesensitizationDisplay_default2 as DesensitizationDisplay_default };
77
- //# sourceMappingURL=chunk-VCBTHCLX.js.map
78
- //# sourceMappingURL=chunk-VCBTHCLX.js.map
77
+ //# sourceMappingURL=chunk-7X4I2Q6F.js.map
78
+ //# sourceMappingURL=chunk-7X4I2Q6F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/DesensitizationDisplay/index.module.css","../src/custom/DesensitizationDisplay/index.tsx"],"names":["desensitizationDisplay","eyeIcon","DesensitizationDisplay_default"],"mappings":";;;;;;;;;AAAA,IAAA,8BAAA,GAAA;AAAA,EAAC,sBAAA,EAAAA,+CAAAA;AAAA,EAQA,OAAA,EAAAC;AAAA,CAAA;ACyBD,IAAM,sBAAA,GAAyB,CAAC,KAAA,KAAuC;AACrE,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,MAAK,GAAI,UAAA;AACjB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AAEpD,EAAA,MAAM,cAAA,GAAiB,SAAS,OAAA,IAAW,gBAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,eAClB,YAAA,GACA,MAAA;AAAA,IACE,cAAA,EAAgB,IAAA,EAAM,YAAA,IACpB,cAAA,EAAgB,MAAM,QAAA,IACtB;AAAA,GACJ;AAEJ,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,aAAA;AAAA,QACN,QAAQ,MAAM;AACZ,UAAA,OAAA,CAAQ,QAAQ,0BAAM,CAAA;AAAA,QACxB,CAAA;AAAA,QACA,IAAA,EAAM;AAAA,8BACH,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,MAAkB,CAAG,CAAA;AAAA,8BAC9C,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,MAAkB,CAAG;AAAA;AACjD,OACF;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,SAAA,EAAW,8BAAA,CAAO,sBAAsB,CAAA;AAAA,MAC7D,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,aAAA,IAAiB,IAAA,KAAS,QAAA,GACvB,WAAA,GACE,aAAA,GACA,cAAc,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA,GAC5B,UAAA,GACA,aAAA,CAAc,SAAA,CAAU,EAAA,EAAI,EAAE,CAAA,GAChC,IAAA;AAAA,QACH,aAAA,IAAiB,IAAA,KAAS,OAAA,GACvB,WAAA,GACE,gBACA,aAAA,CAAc,SAAA,CAAU,CAAA,EAAG,CAAC,IAC5B,MAAA,GACA,aAAA,CAAc,SAAA,CAAU,CAAA,EAAG,EAAE,CAAA,GAC/B,IAAA;AAAA,QACH,aAAA,GACC,WAAA,mBACE,GAAA,CAAC,OAAA,EAAA,EAAqB,OAAM,cAAA,EAC1B,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,8BAAA,CAAO,OAAA;AAAA,YAClB,OAAA,EAAS,CAAC,CAAA,KAAiC;AACzC,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,cAAA,CAAe,CAAC,WAAW,CAAA;AAAA,YAC7B;AAAA;AAAA,aANS,QAQb,CAAA,mBAEA,GAAA,CAAC,OAAA,EAAA,EAAqB,OAAM,cAAA,EAC1B,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,WAAW,8BAAA,CAAO,OAAA;AAAA,YAClB,OAAA,EAAS,CAAC,CAAA,KAAiC;AACzC,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,cAAA,CAAe,CAAC,WAAW,CAAA;AAAA,YAC7B;AAAA;AAAA,SACF,EAAA,EAPW,QAQb,CAAA,GAEA;AAAA;AAAA;AAAA,GACN;AAEJ,CAAA;AACA,IAAOC,+BAAAA,GAAQ","file":"chunk-7X4I2Q6F.js","sourcesContent":[".desensitizationDisplay {\n color: inherit;\n}\n\n.desensitizationDisplay :global(.ant-typography-copy) {\n margin-left: 4px;\n}\n\n.eyeIcon {\n color: #006dfc;\n margin-left: 4px;\n}\n\n.eyeIcon:hover {\n cursor: pointer;\n}\n","import { useState } from \"react\";\r\nimport type { ComponentProps, MouseEvent } from \"react\";\r\nimport { SbtBukejian, SbtFuzhi, SbtYulan } from \"@firesoon/icons-react\";\r\nimport { Typography, Tooltip } from \"@mijadesign/web\";\r\nimport classNames from \"classnames\";\r\nimport { message } from \"@mijadesign/web\";\r\nimport styles from \"./index.module.css\";\r\n\r\ntype RuntimeContext = {\r\n scope?: string;\r\n area?: string;\r\n data?: {\r\n rawValue?: unknown;\r\n displayValue?: unknown;\r\n status?: unknown;\r\n record?: Record<string, unknown>;\r\n [key: string]: unknown;\r\n };\r\n};\r\n\r\ntype DesensitizationDisplayProps = Omit<\r\n ComponentProps<typeof Typography.Text>,\r\n \"children\" | \"copyable\" | \"type\"\r\n> & {\r\n copyableText?: string;\r\n type?: \"idCard\" | \"phone\";\r\n menuPath?: string;\r\n runtime?: {\r\n context?: RuntimeContext;\r\n };\r\n __runtimeContext?: RuntimeContext;\r\n};\r\n\r\nconst DesensitizationDisplay = (props: DesensitizationDisplayProps) => {\r\n const {\r\n copyableText,\r\n type = \"idCard\",\r\n className,\r\n menuPath,\r\n runtime,\r\n __runtimeContext,\r\n ...rest\r\n } = props;\r\n const { Text } = Typography;\r\n const [showCardNum, setShowCardNum] = useState(false);\r\n\r\n const runtimeContext = runtime?.context || __runtimeContext;\r\n const resolvedValue = copyableText\r\n ? copyableText\r\n : String(\r\n runtimeContext?.data?.displayValue ??\r\n runtimeContext?.data?.rawValue ??\r\n \"\",\r\n );\r\n\r\n if (!resolvedValue) {\r\n return \"-\";\r\n }\r\n return (\r\n <Text\r\n copyable={{\r\n text: resolvedValue,\r\n onCopy: () => {\r\n message.success(\"复制成功\");\r\n },\r\n icon: [\r\n <SbtFuzhi style={{ color: \"#1677FF\" }} key={1} />,\r\n <SbtFuzhi style={{ color: \"#1677FF\" }} key={2} />,\r\n ],\r\n }}\r\n className={classNames(className, styles.desensitizationDisplay)}\r\n {...rest}\r\n >\r\n {resolvedValue && type === \"idCard\"\r\n ? showCardNum\r\n ? resolvedValue\r\n : resolvedValue.substring(0, 6) +\r\n \"********\" +\r\n resolvedValue.substring(14, 18)\r\n : null}\r\n {resolvedValue && type === \"phone\"\r\n ? showCardNum\r\n ? resolvedValue\r\n : resolvedValue.substring(0, 3) +\r\n \"****\" +\r\n resolvedValue.substring(7, 11)\r\n : null}\r\n {resolvedValue ? (\r\n showCardNum ? (\r\n <Tooltip key=\"tuomin\" title=\"脱敏\">\r\n <SbtYulan\r\n className={styles.eyeIcon}\r\n onClick={(e: MouseEvent<SVGSVGElement>) => {\r\n e.stopPropagation();\r\n setShowCardNum(!showCardNum);\r\n }}\r\n />\r\n </Tooltip>\r\n ) : (\r\n <Tooltip key=\"chakan\" title=\"查看\">\r\n <SbtBukejian\r\n className={styles.eyeIcon}\r\n onClick={(e: MouseEvent<SVGSVGElement>) => {\r\n e.stopPropagation();\r\n setShowCardNum(!showCardNum);\r\n }}\r\n />\r\n </Tooltip>\r\n )\r\n ) : null}\r\n </Text>\r\n );\r\n};\r\nexport default DesensitizationDisplay;\r\nexport type { RuntimeContext };\r\n"]}
@@ -15,7 +15,6 @@ var DesensitizationDisplayMeta = {
15
15
  name: "copyableText",
16
16
  label: "\u5C55\u793A\u6587\u672C",
17
17
  type: PropType.STRING,
18
- defaultValue: "110101199001011234",
19
18
  group: "\u57FA\u7840"
20
19
  },
21
20
  {
@@ -31,7 +30,6 @@ var DesensitizationDisplayMeta = {
31
30
  }
32
31
  ],
33
32
  defaultProps: {
34
- copyableText: "110101199001011234",
35
33
  type: "idCard"
36
34
  },
37
35
  npm: {
@@ -42,12 +40,11 @@ var DesensitizationDisplayMeta = {
42
40
  componentName: "DesensitizationDisplay",
43
41
  package: "custom",
44
42
  props: {
45
- copyableText: "13812345678",
46
43
  type: "phone"
47
44
  }
48
45
  }
49
46
  };
50
47
 
51
48
  export { DesensitizationDisplayMeta };
52
- //# sourceMappingURL=chunk-IZCK2NW4.js.map
53
- //# sourceMappingURL=chunk-IZCK2NW4.js.map
49
+ //# sourceMappingURL=chunk-C2Q6TVQH.js.map
50
+ //# sourceMappingURL=chunk-C2Q6TVQH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/custom/DesensitizationDisplay/meta.ts"],"names":[],"mappings":";;;AAGO,IAAM,0BAAA,GAA4C;AAAA,EACvD,aAAA,EAAe,wBAAA;AAAA,EACf,OAAA,EAAS,QAAA;AAAA,EACT,KAAA,EAAO,0BAAA;AAAA,EACP,WAAA,EAAa,yGAAA;AAAA,EACb,UAAU,iBAAA,CAAkB,YAAA;AAAA,EAC5B,uBAAA,EAAyB,IAAA;AAAA,EACzB,IAAA,EAAM,2BAAA;AAAA,EACN,eAAA,EAAiB,KAAA;AAAA,EACjB,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,0BAAA;AAAA,MACP,MAAM,QAAA,CAAS,MAAA;AAAA,MACf,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,0BAAA;AAAA,MACP,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,YAAA,EAAc,QAAA;AAAA,MACd,OAAA,EAAS;AAAA,QACP,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,QAAA,EAAS;AAAA,QAChC,EAAE,KAAA,EAAO,oBAAA,EAAO,KAAA,EAAO,OAAA;AAAQ,OACjC;AAAA,MACA,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,GAAA,EAAK;AAAA,IACH,OAAA,EAAS,wBAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,wBAAA;AAAA,IACf,OAAA,EAAS,QAAA;AAAA,IACT,KAAA,EAAO;AAAA,MACL,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-C2Q6TVQH.js","sourcesContent":["import type { ComponentMeta } from \"@mijalowcode/types\";\r\nimport { ComponentCategory, PropType } from \"@mijalowcode/types\";\r\n\r\nexport const DesensitizationDisplayMeta: ComponentMeta = {\r\n componentName: \"DesensitizationDisplay\",\r\n package: \"custom\",\r\n title: \"脱敏展示\",\r\n description: \"支持手机号/身份证脱敏显示与一键复制\",\r\n category: ComponentCategory.DATA_DISPLAY,\r\n visibleInComponentPanel: true,\r\n icon: \"SafetyCertificateOutlined\",\r\n canHaveChildren: false,\r\n props: [\r\n {\n name: \"copyableText\",\n label: \"展示文本\",\n type: PropType.STRING,\n group: \"基础\",\n },\n {\r\n name: \"type\",\r\n label: \"脱敏类型\",\r\n type: PropType.ENUM,\r\n defaultValue: \"idCard\",\r\n options: [\r\n { label: \"身份证\", value: \"idCard\" },\r\n { label: \"手机号\", value: \"phone\" },\r\n ],\r\n group: \"功能\",\r\n },\r\n ],\n defaultProps: {\n type: \"idCard\",\n },\n npm: {\r\n package: \"@mijalowcode/materials\",\r\n exportName: \"DesensitizationDisplay\",\r\n },\r\n snippet: {\n componentName: \"DesensitizationDisplay\",\n package: \"custom\",\n props: {\n type: \"phone\",\n },\n },\n};\n"]}
@@ -9,6 +9,16 @@ var DescriptionsMeta = {
9
9
  category: ComponentCategory.DATA_DISPLAY,
10
10
  icon: "UnorderedListOutlined",
11
11
  visibleInComponentPanel: true,
12
+ canHaveChildren: false,
13
+ editorDnd: {
14
+ dropMode: "slot",
15
+ slotConfig: {
16
+ areas: [{ key: "item", label: "\u63CF\u8FF0\u9879\u5185\u5BB9", requiresKey: true }],
17
+ defaultArea: "item",
18
+ keyOptionsSource: "descriptions.items",
19
+ keyPlaceholder: "\u8BF7\u9009\u62E9\u76EE\u6807\u63CF\u8FF0\u9879"
20
+ }
21
+ },
12
22
  props: [
13
23
  {
14
24
  name: "title",
@@ -117,5 +127,5 @@ var DescriptionsMeta = {
117
127
  };
118
128
 
119
129
  export { DescriptionsMeta };
120
- //# sourceMappingURL=chunk-4XV45KAK.js.map
121
- //# sourceMappingURL=chunk-4XV45KAK.js.map
130
+ //# sourceMappingURL=chunk-EM2IRMCA.js.map
131
+ //# sourceMappingURL=chunk-EM2IRMCA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/antd/Descriptions/meta.ts"],"names":[],"mappings":"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","file":"chunk-EM2IRMCA.js","sourcesContent":["import type { ComponentMeta } from \"@mijalowcode/types\";\r\nimport { ComponentCategory, PropType } from \"@mijalowcode/types\";\r\n\r\nexport const DescriptionsMeta: ComponentMeta = {\r\n componentName: \"Descriptions\",\r\n package: \"@mijadesign/web\",\r\n title: \"描述列表\",\r\n description: \"用于描述对象或列表的详细信息\",\r\n category: ComponentCategory.DATA_DISPLAY,\r\n icon: \"UnorderedListOutlined\",\n visibleInComponentPanel: true,\n canHaveChildren: false,\n editorDnd: {\n dropMode: \"slot\",\n slotConfig: {\n areas: [{ key: \"item\", label: \"描述项内容\", requiresKey: true }],\n defaultArea: \"item\",\n keyOptionsSource: \"descriptions.items\",\n keyPlaceholder: \"请选择目标描述项\",\n },\n },\n props: [\n {\r\n name: \"title\",\r\n label: \"标题\",\r\n type: PropType.STRING,\r\n group: \"基础\",\r\n },\r\n {\r\n name: \"extra\",\r\n label: \"右上角内容\",\r\n type: PropType.STRING,\r\n group: \"基础\",\r\n },\r\n {\r\n name: \"column\",\r\n label: \"列配置\",\r\n type: PropType.JSON,\r\n defaultValue: 3,\r\n description: \"支持数字或响应式对象,如 { xs: 1, sm: 2, md: 3 }\",\r\n group: \"布局\",\r\n },\r\n {\r\n name: \"layout\",\r\n label: \"布局方向\",\r\n type: PropType.ENUM,\r\n defaultValue: \"horizontal\",\r\n options: [\r\n { label: \"水平\", value: \"horizontal\" },\r\n { label: \"垂直\", value: \"vertical\" },\r\n ],\r\n group: \"布局\",\r\n },\r\n {\r\n name: \"bordered\",\r\n label: \"边框\",\r\n type: PropType.BOOLEAN,\r\n defaultValue: false,\r\n group: \"样式\",\r\n },\r\n {\r\n name: \"colon\",\r\n label: \"显示冒号\",\r\n type: PropType.BOOLEAN,\r\n defaultValue: true,\r\n group: \"样式\",\r\n },\r\n {\r\n name: \"size\",\r\n label: \"尺寸\",\r\n type: PropType.ENUM,\r\n defaultValue: \"large\",\r\n options: [\r\n { label: \"大\", value: \"large\" },\r\n { label: \"中\", value: \"medium\" },\r\n { label: \"小\", value: \"small\" },\r\n ],\r\n group: \"样式\",\r\n },\r\n {\r\n name: \"items\",\r\n label: \"列表项配置\",\r\n type: PropType.DESCRIPTIONS_ITEMS,\r\n description: \"5.8+ 推荐写法,支持直接配置 item 数组\",\r\n group: \"数据\",\r\n },\r\n {\r\n name: \"classNames\",\r\n label: \"语义类名\",\r\n type: PropType.JSON,\r\n description: \"自定义语义节点 className(高级)\",\r\n group: \"高级\",\r\n },\r\n {\r\n name: \"styles\",\r\n label: \"语义样式\",\r\n type: PropType.JSON,\r\n description: \"自定义语义节点样式(高级)\",\r\n group: \"高级\",\r\n },\r\n ],\r\n defaultProps: {\r\n column: 3,\r\n bordered: false,\r\n layout: \"horizontal\",\r\n size: \"large\",\r\n colon: true,\r\n items: [{ label: \"名称\", children: \"示例文本\" }],\r\n },\r\n npm: {\r\n package: \"@mijadesign/web\",\r\n exportName: \"Descriptions\",\r\n },\r\n snippet: {\r\n componentName: \"Descriptions\",\r\n package: \"@mijadesign/web\",\r\n props: {\r\n title: \"基本信息\",\r\n column: 3,\r\n bordered: false,\r\n layout: \"horizontal\",\r\n size: \"large\",\r\n colon: true,\r\n items: [{ label: \"名称\", children: \"示例文本\" }],\r\n },\r\n },\r\n};\r\n"]}
@@ -0,0 +1,44 @@
1
+ import { List } from '@mijadesign/web';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+
4
+ // src/antd/List/ListWrapper.tsx
5
+ function normalizeGap(value, fallback) {
6
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
7
+ }
8
+ function buildFlexClassName(columnGap, rowGap) {
9
+ return `mija-list-flex-${columnGap}-${rowGap}`.replace(
10
+ /[^a-zA-Z0-9_-]/g,
11
+ "-"
12
+ );
13
+ }
14
+ function ListWrapper(props) {
15
+ const {
16
+ layoutMode = "grid",
17
+ flex,
18
+ grid: _grid,
19
+ className,
20
+ ...restProps
21
+ } = props;
22
+ if (layoutMode !== "flex") {
23
+ return /* @__PURE__ */ jsx(List, { ...restProps, grid: _grid, className });
24
+ }
25
+ const columnGap = normalizeGap(flex?.columnGap, 16);
26
+ const rowGap = normalizeGap(flex?.rowGap, 16);
27
+ const flexClassName = buildFlexClassName(columnGap, rowGap);
28
+ const mergedClassName = [className, flexClassName].filter(Boolean).join(" ");
29
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
30
+ /* @__PURE__ */ jsx("style", { children: `
31
+ .${flexClassName} .ant-list-items {
32
+ display: flex;
33
+ flex-wrap: wrap;
34
+ column-gap: ${columnGap}px;
35
+ row-gap: ${rowGap}px;
36
+ }
37
+ ` }),
38
+ /* @__PURE__ */ jsx(List, { ...restProps, className: mergedClassName })
39
+ ] });
40
+ }
41
+
42
+ export { ListWrapper };
43
+ //# sourceMappingURL=chunk-JCJLL4OK.js.map
44
+ //# sourceMappingURL=chunk-JCJLL4OK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/antd/List/ListWrapper.tsx"],"names":[],"mappings":";;;;AAiBA,SAAS,YAAA,CAAa,OAAgB,QAAA,EAA0B;AAC9D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,QAAA,CAAS,KAAK,IAAI,KAAA,GAAQ,QAAA;AACvE;AAEA,SAAS,kBAAA,CAAmB,WAAmB,MAAA,EAAwB;AACrE,EAAA,OAAO,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,OAAA;AAAA,IAC7C,iBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEe,SAAR,YAA6B,KAAA,EAAyB;AAC3D,EAAA,MAAM;AAAA,IACJ,UAAA,GAAa,MAAA;AAAA,IACb,IAAA;AAAA,IACA,IAAA,EAAM,KAAA;AAAA,IACN,SAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,IAAA,2BAAQ,IAAA,EAAA,EAAM,GAAG,SAAA,EAAW,IAAA,EAAM,OAAO,SAAA,EAAsB,CAAA;AAAA,EACjE;AAEA,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,EAAM,SAAA,EAAW,EAAE,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,EAAE,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,SAAA,EAAW,MAAM,CAAA;AAC1D,EAAA,MAAM,eAAA,GAAkB,CAAC,SAAA,EAAW,aAAa,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE3E,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA;AAAA,WAAA,EACI,aAAa,CAAA;AAAA;AAAA;AAAA,wBAAA,EAGA,SAAS,CAAA;AAAA,qBAAA,EACZ,MAAM,CAAA;AAAA;AAAA,QAAA,CAAA,EAGvB,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAM,GAAG,SAAA,EAAW,WAAW,eAAA,EAAiB;AAAA,GAAA,EACnD,CAAA;AAEJ","file":"chunk-JCJLL4OK.js","sourcesContent":["import { List } from \"@mijadesign/web\";\nimport type { CSSProperties } from \"react\";\n\ntype FlexConfig = {\n columnGap?: number;\n rowGap?: number;\n};\n\ntype ListWrapperProps = {\n layoutMode?: \"grid\" | \"flex\";\n flex?: FlexConfig;\n grid?: Record<string, unknown>;\n className?: string;\n style?: CSSProperties;\n [key: string]: unknown;\n};\n\nfunction normalizeGap(value: unknown, fallback: number): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : fallback;\n}\n\nfunction buildFlexClassName(columnGap: number, rowGap: number): string {\n return `mija-list-flex-${columnGap}-${rowGap}`.replace(\n /[^a-zA-Z0-9_-]/g,\n \"-\",\n );\n}\n\nexport default function ListWrapper(props: ListWrapperProps) {\n const {\n layoutMode = \"grid\",\n flex,\n grid: _grid,\n className,\n ...restProps\n } = props;\n if (layoutMode !== \"flex\") {\n return <List {...restProps} grid={_grid} className={className} />;\n }\n\n const columnGap = normalizeGap(flex?.columnGap, 16);\n const rowGap = normalizeGap(flex?.rowGap, 16);\n const flexClassName = buildFlexClassName(columnGap, rowGap);\n const mergedClassName = [className, flexClassName].filter(Boolean).join(\" \");\n\n return (\n <>\n <style>\n {`\n .${flexClassName} .ant-list-items {\n display: flex;\n flex-wrap: wrap;\n column-gap: ${columnGap}px;\n row-gap: ${rowGap}px;\n }\n `}\n </style>\n <List {...restProps} className={mergedClassName} />\n </>\n );\n}\n"]}
@@ -0,0 +1,98 @@
1
+ import { useSlotRuntime } from './chunk-VNMO5V4F.js';
2
+ import { useMemo } from 'react';
3
+ import { Descriptions } from '@mijadesign/web';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/antd/Descriptions/normalize.ts
7
+ function normalizeDescriptionsItemChildren(value) {
8
+ if (value === void 0 || value === null || value === "") return "-";
9
+ return value;
10
+ }
11
+ function getItemSlotName(item, index) {
12
+ const key = String(item.key || "").trim();
13
+ return key ? `item:${key}` : `item:${index + 1}`;
14
+ }
15
+ function isPlainObject(value) {
16
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
17
+ }
18
+ function buildDescriptionsSlotRuntimeContext(runtimeContext, item, index, slotName) {
19
+ const baseData = isPlainObject(runtimeContext?.data) ? runtimeContext.data : {};
20
+ const itemKey = String(item.key || "").trim();
21
+ const value = item.children;
22
+ return {
23
+ ...runtimeContext || {},
24
+ scope: "descriptions.item",
25
+ area: slotName,
26
+ container: {
27
+ type: "descriptions",
28
+ area: slotName,
29
+ index,
30
+ item
31
+ },
32
+ data: {
33
+ ...baseData,
34
+ item,
35
+ index,
36
+ key: itemKey,
37
+ label: item.label,
38
+ value,
39
+ rawValue: value,
40
+ displayValue: value
41
+ }
42
+ };
43
+ }
44
+ function DescriptionsWrapper({
45
+ items = [],
46
+ renderSlot,
47
+ children,
48
+ runtime,
49
+ ...restProps
50
+ }) {
51
+ const runtimeContext = runtime?.context;
52
+ const slotAreas = useMemo(
53
+ () => items.map((item, index) => ({
54
+ name: getItemSlotName(item, index)
55
+ })),
56
+ [items]
57
+ );
58
+ const { getAreaNodes } = useSlotRuntime({
59
+ renderSlot,
60
+ children,
61
+ areas: slotAreas,
62
+ context: runtimeContext ? { runtimeContext } : void 0
63
+ });
64
+ const finalItems = useMemo(
65
+ () => items.map((item, index) => {
66
+ const normalizedItem = {
67
+ ...item,
68
+ children: normalizeDescriptionsItemChildren(
69
+ item.children
70
+ )
71
+ };
72
+ const slotName = getItemSlotName(item, index);
73
+ const slotRuntimeContext = buildDescriptionsSlotRuntimeContext(
74
+ runtimeContext,
75
+ normalizedItem,
76
+ index,
77
+ slotName
78
+ );
79
+ const slotNodes = getAreaNodes(slotName, {
80
+ item: normalizedItem,
81
+ index,
82
+ runtimeContext: slotRuntimeContext
83
+ });
84
+ if (!slotNodes || slotNodes.length === 0) return normalizedItem;
85
+ return {
86
+ ...normalizedItem,
87
+ children: slotNodes.length === 1 ? slotNodes[0] : slotNodes
88
+ };
89
+ }),
90
+ [items, getAreaNodes, runtimeContext]
91
+ );
92
+ return /* @__PURE__ */ jsx(Descriptions, { ...restProps, items: finalItems });
93
+ }
94
+ var DescriptionsWrapper_default = DescriptionsWrapper;
95
+
96
+ export { DescriptionsWrapper_default };
97
+ //# sourceMappingURL=chunk-LVFEPXNW.js.map
98
+ //# sourceMappingURL=chunk-LVFEPXNW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/antd/Descriptions/normalize.ts","../src/antd/Descriptions/DescriptionsWrapper.tsx"],"names":[],"mappings":"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","file":"chunk-LVFEPXNW.js","sourcesContent":["export function normalizeDescriptionsItemChildren(value: unknown): unknown {\n if (value === undefined || value === null || value === \"\") return \"-\";\n return value;\n}\n","import { useMemo, type ComponentProps, type ReactNode } from \"react\";\nimport { Descriptions } from \"@mijadesign/web\";\nimport { useSlotRuntime, type SlotArea } from \"../../slot-runtime\";\nimport { normalizeDescriptionsItemChildren } from \"./normalize\";\n\ntype DescriptionsItem = NonNullable<\n ComponentProps<typeof Descriptions>[\"items\"]\n>[number] & {\n key?: string;\n};\n\ninterface DescriptionsWrapperProps extends Omit<\n ComponentProps<typeof Descriptions>,\n \"items\"\n> {\n items?: DescriptionsItem[];\n renderSlot?: (\n slotName: string,\n payload?: Record<string, unknown>,\n ) => ReactNode;\n children?: ReactNode;\n runtime?: {\n context?: Record<string, unknown>;\n };\n}\n\nfunction getItemSlotName(item: DescriptionsItem, index: number) {\n const key = String(item.key || \"\").trim();\n return key ? `item:${key}` : `item:${index + 1}`;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction buildDescriptionsSlotRuntimeContext(\n runtimeContext: Record<string, unknown> | undefined,\n item: DescriptionsItem,\n index: number,\n slotName: string,\n): Record<string, unknown> {\n const baseData = isPlainObject(runtimeContext?.data)\n ? (runtimeContext.data as Record<string, unknown>)\n : {};\n const itemKey = String(item.key || \"\").trim();\n const value = item.children;\n\n return {\n ...(runtimeContext || {}),\n scope: \"descriptions.item\",\n area: slotName,\n container: {\n type: \"descriptions\",\n area: slotName,\n index,\n item,\n },\n data: {\n ...baseData,\n item,\n index,\n key: itemKey,\n label: item.label,\n value,\n rawValue: value,\n displayValue: value,\n },\n };\n}\n\nfunction DescriptionsWrapper({\n items = [],\n renderSlot,\n children,\n runtime,\n ...restProps\n}: DescriptionsWrapperProps) {\n const runtimeContext = runtime?.context;\n const slotAreas = useMemo<SlotArea[]>(\n () =>\n items.map((item, index) => ({\n name: getItemSlotName(item, index),\n })),\n [items],\n );\n const { getAreaNodes } = useSlotRuntime({\n renderSlot,\n children,\n areas: slotAreas,\n context: runtimeContext ? { runtimeContext } : undefined,\n });\n\n const finalItems = useMemo(\n () =>\n items.map((item, index) => {\n const normalizedItem = {\n ...item,\n children: normalizeDescriptionsItemChildren(\n item.children,\n ) as typeof item.children,\n };\n const slotName = getItemSlotName(item, index);\n const slotRuntimeContext = buildDescriptionsSlotRuntimeContext(\n runtimeContext,\n normalizedItem,\n index,\n slotName,\n );\n const slotNodes = getAreaNodes(slotName, {\n item: normalizedItem,\n index,\n runtimeContext: slotRuntimeContext,\n });\n if (!slotNodes || slotNodes.length === 0) return normalizedItem;\n return {\n ...normalizedItem,\n children: slotNodes.length === 1 ? slotNodes[0] : slotNodes,\n };\n }),\n [items, getAreaNodes, runtimeContext],\n );\n\n return <Descriptions {...restProps} items={finalItems} />;\n}\n\nexport default DescriptionsWrapper;\n"]}
@@ -26,6 +26,62 @@ function hasTableRequestBinding(eventMap) {
26
26
  }
27
27
  return Array.isArray(current.actions) && current.actions.length > 0;
28
28
  }
29
+ function isRuntimeDebugEnabled() {
30
+ if (typeof window === "undefined") return false;
31
+ return window.__LC_DEBUG_ENABLED__ === true;
32
+ }
33
+ function recordProTableDiagnostic(name, detail) {
34
+ if (typeof window === "undefined" || !isRuntimeDebugEnabled()) return;
35
+ if (!window.__LC_PERF_COUNTS__) {
36
+ window.__LC_PERF_COUNTS__ = {};
37
+ }
38
+ const eventName = String(name || "").trim();
39
+ if (!eventName) return;
40
+ const nextCount = Number(window.__LC_PERF_COUNTS__[eventName] || 0) + 1;
41
+ window.__LC_PERF_COUNTS__[eventName] = nextCount;
42
+ console.info("[LC PERF]", {
43
+ name: eventName,
44
+ count: nextCount,
45
+ detail
46
+ });
47
+ }
48
+ function resolveProTableQueryActionName(text) {
49
+ const normalized = String(text || "").replace(/\s+/g, "");
50
+ if (normalized === "\u67E5\u8BE2") return "query";
51
+ if (normalized === "\u91CD\u7F6E") return "reset";
52
+ return void 0;
53
+ }
54
+ function buildProTableQueryDelayDetail(capturedAt, triggeredAt) {
55
+ return {
56
+ delayMs: Math.round(triggeredAt - capturedAt)
57
+ };
58
+ }
59
+ function getDiagnosticValueType(value) {
60
+ if (Array.isArray(value)) return `array(${value.length})`;
61
+ if (value === null) return "null";
62
+ return typeof value;
63
+ }
64
+ function buildProTableRequestParamsSummary(params) {
65
+ const keys = Object.keys(params || {});
66
+ return {
67
+ keys,
68
+ fieldTypes: keys.reduce((acc, key) => {
69
+ acc[key] = getDiagnosticValueType(params[key]);
70
+ return acc;
71
+ }, {})
72
+ };
73
+ }
74
+ function shouldRecordProTableLongTask(duration) {
75
+ return Number(duration || 0) >= 50;
76
+ }
77
+ function getEventTargetButton(target) {
78
+ if (!target || typeof Element === "undefined") return null;
79
+ if (!(target instanceof Element)) return null;
80
+ return target.closest("button");
81
+ }
82
+ function getNowTime() {
83
+ return typeof performance !== "undefined" ? performance.now() : Date.now();
84
+ }
29
85
  function buildTableRequestSortPayload(sort) {
30
86
  const [sortField, sortOrder] = Object.entries(sort).find(([, value]) => {
31
87
  return value === "ascend" || value === "descend";
@@ -245,12 +301,17 @@ function ProTableWrapper({
245
301
  const componentNodeId = runtime?.nodeId || __nodeId;
246
302
  const registerCapabilities = runtime?.registerComponentCapabilities || __registerCapabilities;
247
303
  const tableContainerRef = useRef(null);
304
+ const lastQueryActionRef = useRef(null);
305
+ const lastFormSubmitRef = useRef(null);
306
+ const longTaskObserverRef = useRef(null);
248
307
  const [searchAreaHeight, setSearchAreaHeight] = useState(0);
249
308
  const [viewportHeight, setViewportHeight] = useState(
250
309
  typeof window !== "undefined" ? window.innerHeight : 900
251
310
  );
252
311
  const [tablePageSize, setTablePageSize] = useState(pageSize);
253
312
  const emitEvent = useEventEmitter(onEvent);
313
+ const emitEventRef = useRef(emitEvent);
314
+ emitEventRef.current = emitEvent;
254
315
  useEffect(() => {
255
316
  setTablePageSize(pageSize);
256
317
  }, [pageSize]);
@@ -349,19 +410,44 @@ function ProTableWrapper({
349
410
  );
350
411
  const request = useCallback(
351
412
  async (params, sort, filter) => {
352
- const result = await emitEvent("table.request", {
413
+ const startedAt = typeof performance !== "undefined" ? performance.now() : Date.now();
414
+ const lastQueryAction = lastQueryActionRef.current;
415
+ recordProTableDiagnostic("protable.request.start", {
416
+ nodeId: componentNodeId,
417
+ paramsSummary: buildProTableRequestParamsSummary(params),
418
+ sortSummary: buildProTableRequestParamsSummary(sort),
419
+ filterSummary: buildProTableRequestParamsSummary(filter),
420
+ previousAction: lastQueryAction ? {
421
+ actionName: lastQueryAction.actionName,
422
+ source: lastQueryAction.source,
423
+ delayMs: Math.round(startedAt - lastQueryAction.capturedAt)
424
+ } : void 0,
425
+ previousSubmit: lastFormSubmitRef.current ? {
426
+ source: lastFormSubmitRef.current.source,
427
+ delayMs: Math.round(
428
+ startedAt - lastFormSubmitRef.current.capturedAt
429
+ )
430
+ } : void 0
431
+ });
432
+ const result = await emitEventRef.current("table.request", {
353
433
  ...params,
354
434
  ...buildTableRequestSortPayload(sort),
355
435
  ...filter
356
436
  });
357
- if (result) return result;
358
- return {
437
+ const finalResult = result || {
359
438
  data: [],
360
439
  success: true,
361
440
  total: 0
362
441
  };
442
+ const endedAt = typeof performance !== "undefined" ? performance.now() : Date.now();
443
+ recordProTableDiagnostic("protable.request.done", {
444
+ nodeId: componentNodeId,
445
+ durationMs: Math.round(endedAt - startedAt),
446
+ hasResult: Boolean(result)
447
+ });
448
+ return finalResult;
363
449
  },
364
- [emitEvent]
450
+ [componentNodeId]
365
451
  );
366
452
  const emitPaginationChange = useCallback(
367
453
  (current, size2) => {
@@ -415,6 +501,131 @@ function ProTableWrapper({
415
501
  },
416
502
  [emitEvent]
417
503
  );
504
+ const recordQueryAction = useCallback(
505
+ (actionName, source, detail) => {
506
+ const capturedAt = getNowTime();
507
+ lastQueryActionRef.current = {
508
+ actionName,
509
+ capturedAt,
510
+ source
511
+ };
512
+ recordProTableDiagnostic("protable.query.action", {
513
+ nodeId: componentNodeId,
514
+ actionName,
515
+ source,
516
+ ...detail
517
+ });
518
+ if (isRuntimeDebugEnabled() && typeof PerformanceObserver !== "undefined") {
519
+ longTaskObserverRef.current?.disconnect();
520
+ try {
521
+ const observer = new PerformanceObserver((list) => {
522
+ list.getEntries().forEach((entry) => {
523
+ if (!shouldRecordProTableLongTask(entry.duration)) return;
524
+ recordProTableDiagnostic("protable.query.longtask", {
525
+ nodeId: componentNodeId,
526
+ actionName,
527
+ source,
528
+ startDelayMs: Math.round(entry.startTime - capturedAt),
529
+ durationMs: Math.round(entry.duration),
530
+ entryType: entry.entryType,
531
+ name: entry.name
532
+ });
533
+ });
534
+ });
535
+ observer.observe({ entryTypes: ["longtask"] });
536
+ longTaskObserverRef.current = observer;
537
+ window.setTimeout(() => {
538
+ observer.disconnect();
539
+ if (longTaskObserverRef.current === observer) {
540
+ longTaskObserverRef.current = null;
541
+ }
542
+ }, 8e3);
543
+ } catch {
544
+ longTaskObserverRef.current = null;
545
+ }
546
+ }
547
+ Promise.resolve().then(() => {
548
+ recordProTableDiagnostic("protable.query.microtask", {
549
+ nodeId: componentNodeId,
550
+ actionName,
551
+ source,
552
+ ...buildProTableQueryDelayDetail(capturedAt, getNowTime())
553
+ });
554
+ });
555
+ window.setTimeout(() => {
556
+ recordProTableDiagnostic("protable.query.timeout", {
557
+ nodeId: componentNodeId,
558
+ actionName,
559
+ source,
560
+ ...buildProTableQueryDelayDetail(capturedAt, getNowTime())
561
+ });
562
+ }, 0);
563
+ if (typeof window.requestAnimationFrame === "function") {
564
+ window.requestAnimationFrame(() => {
565
+ recordProTableDiagnostic("protable.query.raf", {
566
+ nodeId: componentNodeId,
567
+ actionName,
568
+ source,
569
+ ...buildProTableQueryDelayDetail(capturedAt, getNowTime())
570
+ });
571
+ });
572
+ }
573
+ },
574
+ [componentNodeId]
575
+ );
576
+ const handleTableClickCapture = useCallback(
577
+ (event) => {
578
+ const button = getEventTargetButton(event.target);
579
+ if (!button) return;
580
+ const actionName = resolveProTableQueryActionName(
581
+ button.textContent || ""
582
+ );
583
+ if (!actionName) return;
584
+ recordQueryAction(actionName, "click", {
585
+ buttonText: button.textContent || ""
586
+ });
587
+ },
588
+ [recordQueryAction]
589
+ );
590
+ const handleTableSubmitCapture = useCallback(
591
+ (event) => {
592
+ const target = event.target;
593
+ if (typeof HTMLElement === "undefined") return;
594
+ if (!(target instanceof HTMLElement)) return;
595
+ const isSearchForm = Boolean(target.closest(".ant-pro-table-search"));
596
+ if (!isSearchForm) return;
597
+ const capturedAt = getNowTime();
598
+ lastFormSubmitRef.current = {
599
+ capturedAt,
600
+ source: "submit"
601
+ };
602
+ recordProTableDiagnostic("protable.form.submit", {
603
+ nodeId: componentNodeId,
604
+ previousAction: lastQueryActionRef.current ? {
605
+ actionName: lastQueryActionRef.current.actionName,
606
+ source: lastQueryActionRef.current.source,
607
+ delayMs: Math.round(
608
+ capturedAt - lastQueryActionRef.current.capturedAt
609
+ )
610
+ } : void 0
611
+ });
612
+ },
613
+ [componentNodeId]
614
+ );
615
+ const handleTableKeyDownCapture = useCallback(
616
+ (event) => {
617
+ if (event.key !== "Enter") return;
618
+ const target = event.target;
619
+ if (typeof HTMLElement === "undefined") return;
620
+ if (!(target instanceof HTMLElement)) return;
621
+ const isSearchArea = Boolean(target.closest(".ant-pro-table-search"));
622
+ if (!isSearchArea) return;
623
+ recordQueryAction("enter", "keydown", {
624
+ targetTag: target.tagName.toLowerCase()
625
+ });
626
+ },
627
+ [recordQueryAction]
628
+ );
418
629
  const tableScroll = useMemo(
419
630
  () => scrollX || finalScrollY ? { x: scrollX, y: finalScrollY } : void 0,
420
631
  [scrollX, finalScrollY]
@@ -455,37 +666,46 @@ function ProTableWrapper({
455
666
  () => buildProTableFormConfig(searchInitialValues),
456
667
  [searchInitialValues]
457
668
  );
458
- return /* @__PURE__ */ jsx("div", { ref: tableContainerRef, children: /* @__PURE__ */ jsx(
459
- ProTable,
669
+ return /* @__PURE__ */ jsx(
670
+ "div",
460
671
  {
461
- actionRef,
462
- columns: proColumns,
463
- request: hasRequestBinding ? request : void 0,
464
- dataSource: hasRequestBinding ? void 0 : tableDataSource,
465
- rowKey,
466
- headerTitle,
467
- size,
468
- tableStyle: {
469
- padding: toolbarNodes || !searchConfig ? 0 : 24
470
- },
471
- bordered,
472
- showHeader,
473
- search: searchConfig,
474
- form: formConfig,
475
- options: false,
476
- dateFormatter: "string",
477
- toolBarRender: toolbarNodes ? () => toolbarNodes : void 0,
478
- pagination: paginationConfig,
479
- onRow: (record) => ({
480
- onClick: () => handleRowClick(record)
481
- }),
482
- scroll: tableScroll,
483
- style
672
+ ref: tableContainerRef,
673
+ onClickCapture: handleTableClickCapture,
674
+ onKeyDownCapture: handleTableKeyDownCapture,
675
+ onSubmitCapture: handleTableSubmitCapture,
676
+ children: /* @__PURE__ */ jsx(
677
+ ProTable,
678
+ {
679
+ actionRef,
680
+ columns: proColumns,
681
+ request: hasRequestBinding ? request : void 0,
682
+ dataSource: hasRequestBinding ? void 0 : tableDataSource,
683
+ rowKey,
684
+ headerTitle,
685
+ size,
686
+ tableStyle: {
687
+ padding: toolbarNodes || !searchConfig ? 0 : 24
688
+ },
689
+ bordered,
690
+ showHeader,
691
+ search: searchConfig,
692
+ form: formConfig,
693
+ options: false,
694
+ dateFormatter: "string",
695
+ toolBarRender: toolbarNodes ? () => toolbarNodes : void 0,
696
+ pagination: paginationConfig,
697
+ onRow: (record) => ({
698
+ onClick: () => handleRowClick(record)
699
+ }),
700
+ scroll: tableScroll,
701
+ style
702
+ }
703
+ )
484
704
  }
485
- ) });
705
+ );
486
706
  }
487
707
  var ProTableWrapper_default = ProTableWrapper;
488
708
 
489
- export { ProTableWrapper_default, buildProTableFormConfig, buildProTableSlotRuntimeContext, buildSearchInitialValuesFromStorageValue, unwrapSearchStorageValue };
490
- //# sourceMappingURL=chunk-TXHAJOMV.js.map
491
- //# sourceMappingURL=chunk-TXHAJOMV.js.map
709
+ export { ProTableWrapper_default, buildProTableFormConfig, buildProTableQueryDelayDetail, buildProTableRequestParamsSummary, buildProTableSlotRuntimeContext, buildSearchInitialValuesFromStorageValue, resolveProTableQueryActionName, shouldRecordProTableLongTask, unwrapSearchStorageValue };
710
+ //# sourceMappingURL=chunk-NGLCSHN6.js.map
711
+ //# sourceMappingURL=chunk-NGLCSHN6.js.map