@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.
- package/dist/DescriptionsWrapper-LCWRKPFY.js +4 -0
- package/dist/DescriptionsWrapper-LCWRKPFY.js.map +1 -0
- package/dist/DesensitizationDisplay-MO3BSJRD.js +3 -0
- package/dist/{DesensitizationDisplay-XWRRKQ66.js.map → DesensitizationDisplay-MO3BSJRD.js.map} +1 -1
- package/dist/ListWrapper-2EBD6FGB.js +3 -0
- package/dist/ListWrapper-2EBD6FGB.js.map +1 -0
- package/dist/ProTableWrapper-SHKEQ3B3.js +5 -0
- package/dist/{ProTableWrapper-WWYUXBR3.js.map → ProTableWrapper-SHKEQ3B3.js.map} +1 -1
- package/dist/{chunk-VCBTHCLX.js → chunk-7X4I2Q6F.js} +2 -2
- package/dist/chunk-7X4I2Q6F.js.map +1 -0
- package/dist/{chunk-IZCK2NW4.js → chunk-C2Q6TVQH.js} +2 -5
- package/dist/chunk-C2Q6TVQH.js.map +1 -0
- package/dist/{chunk-4XV45KAK.js → chunk-EM2IRMCA.js} +12 -2
- package/dist/chunk-EM2IRMCA.js.map +1 -0
- package/dist/chunk-JCJLL4OK.js +44 -0
- package/dist/chunk-JCJLL4OK.js.map +1 -0
- package/dist/chunk-LVFEPXNW.js +98 -0
- package/dist/chunk-LVFEPXNW.js.map +1 -0
- package/dist/{chunk-TXHAJOMV.js → chunk-NGLCSHN6.js} +253 -33
- package/dist/chunk-NGLCSHN6.js.map +1 -0
- package/dist/{chunk-GXBBOWAK.js → chunk-WANSJ5GB.js} +70 -5
- package/dist/chunk-WANSJ5GB.js.map +1 -0
- package/dist/{chunk-WCGDUFTL.js → chunk-YGTLYQ74.js} +56 -12
- package/dist/chunk-YGTLYQ74.js.map +1 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +22 -19
- package/dist/index.js.map +1 -1
- package/dist/meta-4MKZOZRG.js +3 -0
- package/dist/{meta-BSPZO2AJ.js.map → meta-4MKZOZRG.js.map} +1 -1
- package/dist/meta-AWRQA4QI.js +3 -0
- package/dist/{meta-JJU3VEWF.js.map → meta-AWRQA4QI.js.map} +1 -1
- package/dist/meta-OHP3QZXL.js +3 -0
- package/dist/{meta-NKZL6DSN.js.map → meta-OHP3QZXL.js.map} +1 -1
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.js +1 -1
- package/package.json +3 -3
- package/dist/DesensitizationDisplay-XWRRKQ66.js +0 -3
- package/dist/ProTableWrapper-WWYUXBR3.js +0 -5
- package/dist/chunk-4XV45KAK.js.map +0 -1
- package/dist/chunk-GXBBOWAK.js.map +0 -1
- package/dist/chunk-IZCK2NW4.js.map +0 -1
- package/dist/chunk-TXHAJOMV.js.map +0 -1
- package/dist/chunk-VCBTHCLX.js.map +0 -1
- package/dist/chunk-WCGDUFTL.js.map +0 -1
- package/dist/meta-BSPZO2AJ.js +0 -3
- package/dist/meta-JJU3VEWF.js +0 -3
- package/dist/meta-NKZL6DSN.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"DescriptionsWrapper-LCWRKPFY.js"}
|
package/dist/{DesensitizationDisplay-XWRRKQ66.js.map → DesensitizationDisplay-MO3BSJRD.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"DesensitizationDisplay-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"DesensitizationDisplay-MO3BSJRD.js"}
|
|
@@ -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-
|
|
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-
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
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
|
|
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
|
-
|
|
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
|
-
[
|
|
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(
|
|
459
|
-
|
|
669
|
+
return /* @__PURE__ */ jsx(
|
|
670
|
+
"div",
|
|
460
671
|
{
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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-
|
|
491
|
-
//# sourceMappingURL=chunk-
|
|
709
|
+
export { ProTableWrapper_default, buildProTableFormConfig, buildProTableQueryDelayDetail, buildProTableRequestParamsSummary, buildProTableSlotRuntimeContext, buildSearchInitialValuesFromStorageValue, resolveProTableQueryActionName, shouldRecordProTableLongTask, unwrapSearchStorageValue };
|
|
710
|
+
//# sourceMappingURL=chunk-NGLCSHN6.js.map
|
|
711
|
+
//# sourceMappingURL=chunk-NGLCSHN6.js.map
|