@mijalowcode/materials 1.1.5 → 1.1.6

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.
@@ -0,0 +1,3 @@
1
+ export { ListWrapper as default } from './chunk-BNSJDDTL.js';
2
+ //# sourceMappingURL=ListWrapper-XKFDOVLU.js.map
3
+ //# sourceMappingURL=ListWrapper-XKFDOVLU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ListWrapper-XKFDOVLU.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"}
@@ -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
+ .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-BNSJDDTL.js.map
44
+ //# sourceMappingURL=chunk-BNSJDDTL.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;AAAA;AAAA;AAAA,wBAAA,EAIiB,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-BNSJDDTL.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 .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"]}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/antdPro/ProTable/data-source.ts","../src/antdPro/ProTable/ProTableWrapper.tsx"],"names":["size","AntdProTable"],"mappings":"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","file":"chunk-NGLCSHN6.js","sourcesContent":["export type TableRowRecord = Record<string, unknown>;\n\nexport function normalizeProTableDataSource(\n dataSource: unknown,\n): TableRowRecord[] {\n return Array.isArray(dataSource)\n ? dataSource.filter(\n (item): item is TableRowRecord =>\n Boolean(item) && typeof item === \"object\" && !Array.isArray(item),\n )\n : [];\n}\n\nexport function hasTableRequestBinding(\n eventMap: Record<string, unknown> | undefined,\n): boolean {\n const binding = eventMap?.[\"table.request\"];\n if (!binding || typeof binding !== \"object\" || Array.isArray(binding)) {\n return false;\n }\n const current = binding as {\n enabled?: unknown;\n handlerName?: unknown;\n handlerCode?: unknown;\n actions?: unknown;\n };\n if (current.enabled === false) return false;\n if (typeof current.handlerName === \"string\" && current.handlerName.trim()) {\n return true;\n }\n if (typeof current.handlerCode === \"string\" && current.handlerCode.trim()) {\n return true;\n }\n return Array.isArray(current.actions) && current.actions.length > 0;\n}\n","import {\r\n useCallback,\r\n useRef,\r\n useState,\r\n useEffect,\r\n useMemo,\r\n type ReactNode,\r\n type ComponentProps,\r\n} from \"react\";\r\nimport { ProTable as AntdProTable } from \"@ant-design/pro-components\";\r\nimport type { ProColumns, ActionType } from \"@ant-design/pro-components\";\r\nimport type { TableColumnConfig, FieldPropsConfig } from \"@mijalowcode/types\";\r\nimport { useSlotRuntime, type SlotArea } from \"../../slot-runtime\";\r\nimport { useEventEmitter, type EventEmitter } from \"../../event-runtime\";\r\nimport * as AntdIcons from \"@ant-design/icons\";\r\nimport {\r\n hasTableRequestBinding,\r\n normalizeProTableDataSource,\r\n} from \"./data-source\";\r\n\r\ntype TableRequestResult = {\n data: Record<string, unknown>[];\n success: boolean;\n total: number;\n};\n\ndeclare global {\n interface Window {\n __LC_DEBUG_ENABLED__?: boolean;\n __LC_PERF_COUNTS__?: Record<string, number>;\n }\n}\n\r\ntype RegisterCapabilities = (\r\n componentId: string,\r\n capabilities: Record<string, (...args: unknown[]) => unknown>,\r\n) => () => void;\r\n\r\ntype MaterialRuntime = {\r\n nodeId: string;\r\n context?: Record<string, unknown>;\r\n registerComponentCapabilities?: RegisterCapabilities;\r\n};\r\n\r\ninterface ProTableWrapperProps {\r\n columns?: TableColumnConfig[];\r\n dataSource?: unknown;\r\n type?: \"\" | \"form\" | \"list\" | \"descriptions\" | \"table\" | \"cardList\";\r\n rowKey?: string;\r\n headerTitle?: string;\r\n size?: \"large\" | \"middle\" | \"small\";\r\n bordered?: boolean;\r\n showHeader?: boolean;\r\n search?: boolean;\r\n searchInitialValuesSource?: \"none\" | \"storage\";\r\n searchInitialValuesStorageType?: \"sessionStorage\" | \"localStorage\";\r\n searchInitialValuesStorageKey?: string;\r\n searchInitialValuesMappings?: SearchInitialValuesStorageMapping[];\r\n clearSearchInitialValuesAfterUse?: boolean;\r\n rowSelectionEnabled?: boolean;\r\n rowSelectionType?: \"checkbox\" | \"radio\";\r\n paginationEnabled?: boolean;\r\n pageSize?: number;\r\n showSizeChanger?: boolean;\r\n showQuickJumper?: boolean;\r\n scrollX?: number;\r\n scrollY?: number;\r\n autoHeight?: boolean;\r\n autoHeightOffset?: number;\r\n autoHeightMinY?: number;\r\n style?: React.CSSProperties;\r\n onEvent?: EventEmitter;\r\n renderSlot?: (\r\n slotName: string,\r\n payload?: Record<string, unknown>,\r\n ) => ReactNode;\r\n children?: ReactNode;\r\n toolbarSlotName?: string;\r\n runtime?: MaterialRuntime;\r\n __nodeId?: string;\r\n __registerCapabilities?: RegisterCapabilities;\r\n __events?: Record<string, unknown>;\r\n}\r\n\r\ntype ProTableSearchProp = ComponentProps<typeof AntdProTable>[\"search\"];\n\nfunction isRuntimeDebugEnabled() {\n if (typeof window === \"undefined\") return false;\n return window.__LC_DEBUG_ENABLED__ === true;\n}\n\nfunction recordProTableDiagnostic(\n name: string,\n detail?: Record<string, unknown>,\n) {\n if (typeof window === \"undefined\" || !isRuntimeDebugEnabled()) return;\n if (!window.__LC_PERF_COUNTS__) {\n window.__LC_PERF_COUNTS__ = {};\n }\n const eventName = String(name || \"\").trim();\n if (!eventName) return;\n const nextCount = Number(window.__LC_PERF_COUNTS__[eventName] || 0) + 1;\n window.__LC_PERF_COUNTS__[eventName] = nextCount;\n console.info(\"[LC PERF]\", {\n name: eventName,\n count: nextCount,\n detail,\n });\n}\n\nexport function resolveProTableQueryActionName(\n text: string,\n): \"query\" | \"reset\" | undefined {\n const normalized = String(text || \"\").replace(/\\s+/g, \"\");\n if (normalized === \"查询\") return \"query\";\n if (normalized === \"重置\") return \"reset\";\n return undefined;\n}\n\nexport function buildProTableQueryDelayDetail(\n capturedAt: number,\n triggeredAt: number,\n) {\n return {\n delayMs: Math.round(triggeredAt - capturedAt),\n };\n}\n\nfunction getDiagnosticValueType(value: unknown): string {\n if (Array.isArray(value)) return `array(${value.length})`;\n if (value === null) return \"null\";\n return typeof value;\n}\n\nexport function buildProTableRequestParamsSummary(\n params: Record<string, unknown>,\n) {\n const keys = Object.keys(params || {});\n return {\n keys,\n fieldTypes: keys.reduce<Record<string, string>>((acc, key) => {\n acc[key] = getDiagnosticValueType(params[key]);\n return acc;\n }, {}),\n };\n}\n\nexport function shouldRecordProTableLongTask(duration: number) {\n return Number(duration || 0) >= 50;\n}\n\nfunction getEventTargetButton(target: EventTarget | null): HTMLElement | null {\n if (!target || typeof Element === \"undefined\") return null;\n if (!(target instanceof Element)) return null;\n return target.closest(\"button\");\n}\n\nfunction getNowTime() {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\r\nfunction buildTableRequestSortPayload(sort: Record<string, unknown>) {\r\n const [sortField, sortOrder] = Object.entries(sort).find(([, value]) => {\r\n return value === \"ascend\" || value === \"descend\";\r\n }) || [undefined, undefined];\r\n\r\n if (!sortField || typeof sortOrder !== \"string\") return {};\r\n\r\n return {\r\n sortField,\r\n sortMode: sortOrder === \"ascend\" ? \"ASC\" : \"DESC\",\r\n };\r\n}\r\n\r\nfunction isBindValue(value: unknown): value is {\r\n __bind: {\r\n fallback?: unknown;\r\n };\r\n} {\r\n return (\r\n Boolean(value) &&\r\n typeof value === \"object\" &&\r\n !Array.isArray(value) &&\r\n typeof (value as Record<string, unknown>).__bind === \"object\"\r\n );\r\n}\r\n\r\nfunction renderFieldPropsPrefixSuffix(\r\n fieldProps: FieldPropsConfig | undefined,\r\n) {\r\n if (!fieldProps) return undefined;\r\n\r\n const result: FieldPropsConfig = { ...fieldProps };\r\n\r\n if (fieldProps.prefixType === \"icon\" && fieldProps.prefixIcon) {\r\n const icons = AntdIcons as unknown as Record<\r\n string,\r\n React.ComponentType<unknown>\r\n >;\r\n const IconComponent = icons[fieldProps.prefixIcon];\r\n result.prefix = IconComponent ? <IconComponent /> : undefined;\r\n } else if (fieldProps.prefixText) {\r\n result.prefix = fieldProps.prefixText as React.ReactNode;\r\n }\r\n\r\n if (fieldProps.suffixType === \"icon\" && fieldProps.suffixIcon) {\r\n const icons = AntdIcons as unknown as Record<\r\n string,\r\n React.ComponentType<unknown>\r\n >;\r\n const IconComponent = icons[fieldProps.suffixIcon];\r\n result.suffix = IconComponent ? <IconComponent /> : undefined;\r\n } else if (fieldProps.suffixText) {\r\n result.suffix = fieldProps.suffixText as React.ReactNode;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction resolveColumnValueEnum(\r\n col: TableColumnConfig,\r\n): ProColumns[\"valueEnum\"] {\r\n if (isBindValue(col.valueEnum)) {\r\n return col.valueEnum.__bind.fallback as ProColumns[\"valueEnum\"];\r\n }\r\n return col.valueEnum as ProColumns[\"valueEnum\"];\r\n}\r\n\r\nfunction resolveColumnSlotAreaNames(col: TableColumnConfig) {\r\n const areaNames: string[] = [];\r\n const columnId = String(col.columnId || \"\").trim();\r\n if (columnId) {\r\n areaNames.push(`columnId:${columnId}`);\r\n }\r\n return areaNames;\r\n}\r\n\r\ntype SearchInitialValuesStorageMapping = {\r\n target?: string;\r\n from?: string;\r\n defaultValue?: unknown;\r\n};\r\n\r\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\r\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\r\n}\r\n\r\nfunction getValueByPath(value: unknown, pathText: string) {\r\n const parts = String(pathText || \"\")\r\n .split(\".\")\r\n .map((part) => part.trim())\r\n .filter(Boolean);\r\n return parts.reduce<unknown>((current, part) => {\r\n if (!current || typeof current !== \"object\") return undefined;\r\n return (current as Record<string, unknown>)[part];\r\n }, value);\r\n}\r\n\r\nfunction getBrowserStorage(storageType: \"sessionStorage\" | \"localStorage\") {\r\n if (typeof window === \"undefined\") return null;\r\n return storageType === \"localStorage\"\r\n ? window.localStorage\r\n : window.sessionStorage;\r\n}\r\n\r\nexport function unwrapSearchStorageValue(value: unknown, now = Date.now()) {\r\n if (!isPlainObject(value) || value.__mijalowcodeStorage !== true) {\r\n return value;\r\n }\r\n const expiresAt = Number(value.expiresAt || 0);\r\n if (expiresAt > 0 && expiresAt <= now) return undefined;\r\n return value.value;\r\n}\r\n\r\nexport function buildSearchInitialValuesFromStorageValue(\n storageValue: unknown,\n mappings: SearchInitialValuesStorageMapping[] = [],\n) {\n if (!isPlainObject(storageValue)) return {};\r\n if (!Array.isArray(mappings) || mappings.length === 0) {\r\n return { ...storageValue };\r\n }\r\n return mappings.reduce<Record<string, unknown>>((acc, mapping) => {\r\n const target = String(mapping.target || \"\").trim();\r\n if (!target) return acc;\r\n const from = String(mapping.from || target).trim();\r\n const value = from ? getValueByPath(storageValue, from) : undefined;\r\n acc[target] = value === undefined ? mapping.defaultValue : value;\r\n return acc;\r\n }, {});\n}\n\nexport function buildProTableFormConfig(\n searchInitialValues: Record<string, unknown>,\n) {\n if (Object.keys(searchInitialValues).length === 0) return undefined;\n return {\n initialValues: searchInitialValues,\n };\n}\n\nexport function buildProTableSlotRuntimeContext(\n runtimeContext: Record<string, unknown> | undefined,\n slotRuntimeContext: Record<string, unknown>,\n): Record<string, unknown> {\r\n const baseData = isPlainObject(runtimeContext?.data)\r\n ? (runtimeContext.data as Record<string, unknown>)\r\n : {};\r\n const slotData = isPlainObject(slotRuntimeContext.data)\r\n ? (slotRuntimeContext.data as Record<string, unknown>)\r\n : {};\r\n\r\n return {\r\n ...(runtimeContext || {}),\r\n ...slotRuntimeContext,\r\n data: {\r\n ...baseData,\r\n ...slotData,\r\n },\r\n };\r\n}\r\n\r\n// 将低代码列配置转换为 ProTable 列配置,并按约定挂载列级插槽渲染\r\nfunction convertColumns(\r\n columns: TableColumnConfig[] = [],\r\n getAreaNodes?: (\r\n areaName: string,\r\n payload?: Record<string, unknown>,\r\n ) => ReactNode[] | undefined,\r\n areaMap: Record<string, ReactNode[]> = {},\r\n hasExternalRenderSlot = false,\r\n runtimeContext?: Record<string, unknown>,\r\n): ProColumns[] {\r\n return columns.map((col) => {\r\n const extendedCol = col as TableColumnConfig & {\r\n slotName?: string;\r\n request?: ProColumns[\"request\"];\r\n };\r\n const areaNames = resolveColumnSlotAreaNames(col);\r\n const hasSchemaSlot = areaNames.some(\r\n (areaName) => areaMap[areaName]?.length,\r\n );\r\n\r\n const proColumn: ProColumns = {\r\n key: col.key || col.dataIndex,\r\n title: col.title,\r\n dataIndex: col.dataIndex,\r\n width: col.width,\r\n align: col.align,\r\n fixed: col.fixed || undefined,\r\n ellipsis: col.ellipsis,\r\n copyable: col.copyable,\r\n sorter: col.sorter,\r\n valueType: col.valueType as any,\r\n valueEnum: resolveColumnValueEnum(col),\r\n request: extendedCol.request,\r\n hideInSearch: col.hideInSearch,\r\n hideInTable: col.hideInTable,\r\n formItemProps: col.formItemProps,\r\n fieldProps: renderFieldPropsPrefixSuffix(col.fieldProps) as any,\r\n };\r\n\r\n if (!areaNames.length || (!hasExternalRenderSlot && !hasSchemaSlot)) {\r\n return proColumn;\r\n }\r\n\r\n proColumn.render = (_, record: Record<string, unknown>, index: number) => {\r\n const rawValue = record[col.dataIndex];\r\n const valueEnum = resolveColumnValueEnum(col) as\r\n | Record<string, { text?: unknown; status?: unknown }>\r\n | undefined;\r\n const enumMatch =\r\n valueEnum && rawValue !== undefined && rawValue !== null\r\n ? valueEnum[String(rawValue)]\r\n : undefined;\r\n const slotPayload = {\r\n record,\r\n index,\r\n column: col,\r\n value: rawValue,\r\n valueEnum,\r\n valueEnumItem: enumMatch,\r\n enumText: enumMatch?.text,\r\n enumStatus: enumMatch?.status,\r\n };\r\n const slotNodes = areaNames.reduce<ReactNode[] | undefined>(\r\n (matchedNodes, areaName) => {\r\n if (matchedNodes !== undefined) {\r\n return matchedNodes;\r\n }\r\n const slotRuntimeContext = buildProTableSlotRuntimeContext(\r\n runtimeContext,\r\n {\r\n scope: \"table.cell\",\r\n area: areaName,\r\n container: {\r\n type: \"table\",\r\n area: areaName,\r\n index,\r\n column: col,\r\n record,\r\n },\r\n data: {\r\n ...slotPayload,\r\n rawValue: rawValue,\r\n displayValue:\r\n enumMatch?.text !== undefined && enumMatch?.text !== null\r\n ? enumMatch.text\r\n : rawValue,\r\n status: enumMatch?.status,\r\n },\r\n },\r\n );\r\n return getAreaNodes?.(areaName, {\r\n ...slotPayload,\r\n runtimeContext: slotRuntimeContext,\r\n });\r\n },\r\n undefined,\r\n );\r\n if (slotNodes !== undefined) {\r\n return slotNodes.length === 1 ? slotNodes[0] : slotNodes;\r\n }\r\n return String(record[col.dataIndex] ?? \"\");\r\n };\r\n\r\n return proColumn;\r\n });\r\n}\r\n\r\nfunction ProTableWrapper({\r\n columns = [],\r\n dataSource = [],\r\n rowKey = \"key\",\r\n headerTitle,\r\n size = \"middle\",\r\n bordered = false,\r\n showHeader = true,\r\n search = true,\r\n searchInitialValuesSource = \"none\",\r\n searchInitialValuesStorageType = \"sessionStorage\",\r\n searchInitialValuesStorageKey,\r\n searchInitialValuesMappings = [],\r\n clearSearchInitialValuesAfterUse = true,\r\n paginationEnabled = true,\r\n pageSize = 10,\r\n showSizeChanger = true,\r\n showQuickJumper = false,\r\n scrollX,\r\n scrollY,\r\n autoHeight = true,\r\n autoHeightOffset = 0,\r\n autoHeightMinY = 240,\r\n style,\r\n onEvent,\r\n renderSlot,\r\n children,\r\n toolbarSlotName = \"toolbar\",\r\n runtime,\r\n __nodeId,\r\n __registerCapabilities,\r\n __events,\r\n}: ProTableWrapperProps) {\r\n const actionRef = useRef<ActionType>();\r\n const componentNodeId = runtime?.nodeId || __nodeId;\r\n const registerCapabilities =\r\n runtime?.registerComponentCapabilities || __registerCapabilities;\r\n\r\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const lastQueryActionRef = useRef<{\n actionName: \"query\" | \"reset\" | \"enter\";\n capturedAt: number;\n source: string;\n } | null>(null);\n const lastFormSubmitRef = useRef<{\n capturedAt: number;\n source: string;\n } | null>(null);\n const longTaskObserverRef = useRef<PerformanceObserver | null>(null);\n const [searchAreaHeight, setSearchAreaHeight] = useState(0);\r\n const [viewportHeight, setViewportHeight] = useState(\r\n typeof window !== \"undefined\" ? window.innerHeight : 900,\r\n );\r\n const [tablePageSize, setTablePageSize] = useState(pageSize);\n const emitEvent = useEventEmitter(onEvent);\n const emitEventRef = useRef(emitEvent);\n emitEventRef.current = emitEvent;\n\r\n useEffect(() => {\r\n setTablePageSize(pageSize);\r\n }, [pageSize]);\r\n\r\n useEffect(() => {\r\n if (!componentNodeId || !registerCapabilities) return;\r\n return registerCapabilities(componentNodeId, {\r\n reload: () => actionRef.current?.reload?.(),\r\n reloadAndRest: () => actionRef.current?.reloadAndRest?.(),\r\n reset: () => actionRef.current?.reset?.(),\r\n clearSelected: () => actionRef.current?.clearSelected?.(),\r\n });\r\n }, [componentNodeId, registerCapabilities]);\r\n\r\n const slotAreas = useMemo<SlotArea[]>(() => {\r\n const areaSet = new Set<string>([toolbarSlotName]);\r\n columns.forEach((col) => {\r\n resolveColumnSlotAreaNames(col).forEach((areaName) => {\r\n areaSet.add(areaName);\r\n });\r\n });\r\n return Array.from(areaSet).map((name) => ({ name }));\r\n }, [columns, toolbarSlotName]);\r\n const runtimeContext = runtime?.context;\r\n\r\n const { getAreaNodes, areaMap } = useSlotRuntime({\r\n renderSlot,\r\n children,\r\n areas: slotAreas,\r\n context: runtimeContext ? { runtimeContext } : undefined,\r\n });\r\n\r\n const proColumns = useMemo(\r\n () =>\r\n convertColumns(\r\n columns,\r\n getAreaNodes,\r\n areaMap,\r\n Boolean(renderSlot),\r\n runtimeContext,\r\n ),\r\n [columns, getAreaNodes, areaMap, renderSlot, runtimeContext],\r\n );\r\n\r\n const toolbarNodes = useMemo(() => {\r\n return getAreaNodes(toolbarSlotName, { actionRef: actionRef.current });\r\n }, [getAreaNodes, toolbarSlotName, actionRef]);\r\n\r\n // 统一获取搜索区节点,用于计算自动高度\r\n const getSearchNode = useCallback(() => {\r\n const container = tableContainerRef.current;\r\n if (!container) return null;\r\n return container.querySelector(\r\n \".ant-pro-table-search\",\r\n ) as HTMLElement | null;\r\n }, []);\r\n\r\n // 同步视口高度与搜索区高度,供表格滚动区高度计算使用\r\n const updateAutoHeightMetrics = useCallback(() => {\r\n setViewportHeight(window.innerHeight);\r\n const searchNode = getSearchNode();\r\n const next = searchNode\r\n ? Math.ceil(searchNode.getBoundingClientRect().height)\r\n : 0;\r\n setSearchAreaHeight(next);\r\n }, [getSearchNode]);\r\n\r\n // autoHeight 开启时监听窗口与搜索区尺寸变化;关闭时清空搜索区高度\r\n useEffect(() => {\r\n if (!autoHeight) {\r\n setSearchAreaHeight(0);\r\n return;\r\n }\r\n\r\n updateAutoHeightMetrics();\r\n\r\n const searchNode = getSearchNode();\r\n const resizeObserver =\r\n searchNode && typeof ResizeObserver !== \"undefined\"\r\n ? new ResizeObserver(updateAutoHeightMetrics)\r\n : null;\r\n\r\n if (resizeObserver && searchNode) {\r\n resizeObserver.observe(searchNode);\r\n }\r\n\r\n window.addEventListener(\"resize\", updateAutoHeightMetrics);\r\n\r\n return () => {\r\n if (resizeObserver) resizeObserver.disconnect();\r\n window.removeEventListener(\"resize\", updateAutoHeightMetrics);\r\n };\r\n }, [autoHeight, search, getSearchNode, updateAutoHeightMetrics]);\r\n\r\n const finalScrollY = useMemo(() => {\r\n if (!autoHeight) return scrollY;\r\n const headerOffset = 47;\r\n const paginationOffset = paginationEnabled ? 40 : 0;\r\n const toolbarOffset = toolbarNodes && toolbarNodes.length > 0 ? 64 : 0;\r\n const dynamic =\r\n viewportHeight -\r\n searchAreaHeight -\r\n autoHeightOffset -\r\n headerOffset -\r\n paginationOffset -\r\n toolbarOffset;\r\n return Math.max(autoHeightMinY, dynamic);\r\n }, [\r\n autoHeight,\r\n scrollY,\r\n viewportHeight,\r\n searchAreaHeight,\r\n autoHeightOffset,\r\n autoHeightMinY,\r\n paginationEnabled,\r\n toolbarNodes,\r\n ]);\r\n\r\n const tableDataSource = useMemo(\r\n () => normalizeProTableDataSource(dataSource),\r\n [dataSource],\r\n );\r\n const hasRequestBinding = useMemo(\r\n () => hasTableRequestBinding(__events),\r\n [__events],\r\n );\r\n\r\n // 配置了 table.request 时完全交给 request 驱动;未配置时使用 dataSource。\r\n const request = useCallback(\n async (\n params: Record<string, unknown>,\n sort: Record<string, unknown>,\n filter: Record<string, unknown>,\n ): Promise<TableRequestResult> => {\n const startedAt =\n typeof performance !== \"undefined\" ? performance.now() : Date.now();\n const lastQueryAction = lastQueryActionRef.current;\n recordProTableDiagnostic(\"protable.request.start\", {\n nodeId: componentNodeId,\n paramsSummary: buildProTableRequestParamsSummary(params),\n sortSummary: buildProTableRequestParamsSummary(sort),\n filterSummary: buildProTableRequestParamsSummary(filter),\n previousAction: lastQueryAction\n ? {\n actionName: lastQueryAction.actionName,\n source: lastQueryAction.source,\n delayMs: Math.round(startedAt - lastQueryAction.capturedAt),\n }\n : undefined,\n previousSubmit: lastFormSubmitRef.current\n ? {\n source: lastFormSubmitRef.current.source,\n delayMs: Math.round(\n startedAt - lastFormSubmitRef.current.capturedAt,\n ),\n }\n : undefined,\n });\n const result = await emitEventRef.current<TableRequestResult>(\"table.request\", {\n ...params,\n ...buildTableRequestSortPayload(sort),\n ...filter,\n });\n const finalResult = result || {\n data: [],\n success: true,\n total: 0,\n };\n const endedAt =\n typeof performance !== \"undefined\" ? performance.now() : Date.now();\n recordProTableDiagnostic(\"protable.request.done\", {\n nodeId: componentNodeId,\n durationMs: Math.round(endedAt - startedAt),\n hasResult: Boolean(result),\n });\n return finalResult;\n },\n [componentNodeId],\n );\n\r\n // 统一分页事件载荷,避免 onShowSizeChange / onChange 重复拼装参数\r\n const emitPaginationChange = useCallback(\r\n (current: number, size?: number) => {\r\n emitEvent(\"table.pagination.change\", {\r\n current,\r\n pageSize: size,\r\n pagination: {\r\n current,\r\n pageSize: size,\r\n },\r\n });\r\n },\r\n [emitEvent],\r\n );\r\n\r\n const handlePageSizeChange = useCallback(\r\n (current: number, size: number) => {\r\n setTablePageSize(size);\r\n emitPaginationChange(current, size);\r\n },\r\n [emitPaginationChange],\r\n );\r\n\r\n const handlePaginationChange = useCallback(\r\n (current: number, size?: number) => {\r\n if (typeof size === \"number\") setTablePageSize(size);\r\n emitPaginationChange(current, size);\r\n },\r\n [emitPaginationChange],\r\n );\r\n\r\n const paginationConfig = useMemo(\r\n () =>\r\n paginationEnabled\r\n ? {\r\n pageSize: tablePageSize,\r\n size: \"default\",\r\n showSizeChanger,\r\n showQuickJumper,\r\n showTotal: (total: number) => `共 ${total} 条`,\r\n onShowSizeChange: handlePageSizeChange,\r\n onChange: handlePaginationChange,\r\n }\r\n : false,\r\n [\r\n paginationEnabled,\r\n tablePageSize,\r\n showSizeChanger,\r\n showQuickJumper,\r\n handlePageSizeChange,\r\n handlePaginationChange,\r\n ],\r\n );\r\n\r\n const handleRowClick = useCallback(\n (record: Record<string, unknown>) => {\r\n emitEvent(\"table.row.click\", { record });\r\n },\r\n [emitEvent],\n );\n\n const recordQueryAction = useCallback(\n (\n actionName: \"query\" | \"reset\" | \"enter\",\n source: string,\n detail?: Record<string, unknown>,\n ) => {\n const capturedAt = getNowTime();\n lastQueryActionRef.current = {\n actionName,\n capturedAt,\n source,\n };\n recordProTableDiagnostic(\"protable.query.action\", {\n nodeId: componentNodeId,\n actionName,\n source,\n ...detail,\n });\n if (\n isRuntimeDebugEnabled() &&\n typeof PerformanceObserver !== \"undefined\"\n ) {\n longTaskObserverRef.current?.disconnect();\n try {\n const observer = new PerformanceObserver((list) => {\n list.getEntries().forEach((entry) => {\n if (!shouldRecordProTableLongTask(entry.duration)) return;\n recordProTableDiagnostic(\"protable.query.longtask\", {\n nodeId: componentNodeId,\n actionName,\n source,\n startDelayMs: Math.round(entry.startTime - capturedAt),\n durationMs: Math.round(entry.duration),\n entryType: entry.entryType,\n name: entry.name,\n });\n });\n });\n observer.observe({ entryTypes: [\"longtask\"] });\n longTaskObserverRef.current = observer;\n window.setTimeout(() => {\n observer.disconnect();\n if (longTaskObserverRef.current === observer) {\n longTaskObserverRef.current = null;\n }\n }, 8000);\n } catch {\n longTaskObserverRef.current = null;\n }\n }\n Promise.resolve().then(() => {\n recordProTableDiagnostic(\"protable.query.microtask\", {\n nodeId: componentNodeId,\n actionName,\n source,\n ...buildProTableQueryDelayDetail(capturedAt, getNowTime()),\n });\n });\n window.setTimeout(() => {\n recordProTableDiagnostic(\"protable.query.timeout\", {\n nodeId: componentNodeId,\n actionName,\n source,\n ...buildProTableQueryDelayDetail(capturedAt, getNowTime()),\n });\n }, 0);\n if (typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(() => {\n recordProTableDiagnostic(\"protable.query.raf\", {\n nodeId: componentNodeId,\n actionName,\n source,\n ...buildProTableQueryDelayDetail(capturedAt, getNowTime()),\n });\n });\n }\n },\n [componentNodeId],\n );\n\n const handleTableClickCapture = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const button = getEventTargetButton(event.target);\n if (!button) return;\n const actionName = resolveProTableQueryActionName(\n button.textContent || \"\",\n );\n if (!actionName) return;\n recordQueryAction(actionName, \"click\", {\n buttonText: button.textContent || \"\",\n });\n },\n [recordQueryAction],\n );\n\n const handleTableSubmitCapture = useCallback(\n (event: React.FormEvent<HTMLDivElement>) => {\n const target = event.target;\n if (typeof HTMLElement === \"undefined\") return;\n if (!(target instanceof HTMLElement)) return;\n const isSearchForm = Boolean(target.closest(\".ant-pro-table-search\"));\n if (!isSearchForm) return;\n const capturedAt = getNowTime();\n lastFormSubmitRef.current = {\n capturedAt,\n source: \"submit\",\n };\n recordProTableDiagnostic(\"protable.form.submit\", {\n nodeId: componentNodeId,\n previousAction: lastQueryActionRef.current\n ? {\n actionName: lastQueryActionRef.current.actionName,\n source: lastQueryActionRef.current.source,\n delayMs: Math.round(\n capturedAt - lastQueryActionRef.current.capturedAt,\n ),\n }\n : undefined,\n });\n },\n [componentNodeId],\n );\n\n const handleTableKeyDownCapture = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== \"Enter\") return;\n const target = event.target;\n if (typeof HTMLElement === \"undefined\") return;\n if (!(target instanceof HTMLElement)) return;\n const isSearchArea = Boolean(target.closest(\".ant-pro-table-search\"));\n if (!isSearchArea) return;\n recordQueryAction(\"enter\", \"keydown\", {\n targetTag: target.tagName.toLowerCase(),\n });\n },\n [recordQueryAction],\n );\n\r\n const tableScroll = useMemo(\r\n () =>\r\n scrollX || finalScrollY ? { x: scrollX, y: finalScrollY } : undefined,\r\n [scrollX, finalScrollY],\r\n );\r\n\r\n const searchConfig = useMemo<ProTableSearchProp>(\r\n () => (search ? ({ colon: false } as ProTableSearchProp) : false),\r\n [search],\r\n );\r\n\r\n const searchInitialValues = useMemo(() => {\r\n if (searchInitialValuesSource !== \"storage\") return {};\r\n const key = String(searchInitialValuesStorageKey || \"\").trim();\r\n if (!key) return {};\r\n const storage = getBrowserStorage(searchInitialValuesStorageType);\r\n if (!storage) return {};\r\n\r\n const raw = storage.getItem(key);\r\n\r\n if (!raw) return {};\n try {\n const parsed = unwrapSearchStorageValue(JSON.parse(raw));\n const values = buildSearchInitialValuesFromStorageValue(\n parsed,\n searchInitialValuesMappings,\n );\r\n if (clearSearchInitialValuesAfterUse) {\r\n storage.removeItem(key);\r\n }\r\n return values;\r\n } catch {\r\n return {};\r\n }\r\n }, [\r\n searchInitialValuesSource,\r\n searchInitialValuesStorageType,\r\n searchInitialValuesStorageKey,\r\n searchInitialValuesMappings,\r\n clearSearchInitialValuesAfterUse,\n ]);\n const formConfig = useMemo(\n () => buildProTableFormConfig(searchInitialValues),\n [searchInitialValues],\n );\n\n return (\n <div\n ref={tableContainerRef}\n onClickCapture={handleTableClickCapture}\n onKeyDownCapture={handleTableKeyDownCapture}\n onSubmitCapture={handleTableSubmitCapture}\n >\n <AntdProTable\r\n actionRef={actionRef}\r\n columns={proColumns}\r\n request={hasRequestBinding ? request : undefined}\r\n dataSource={hasRequestBinding ? undefined : tableDataSource}\r\n rowKey={rowKey}\r\n headerTitle={headerTitle}\r\n size={size}\r\n tableStyle={{\r\n padding: toolbarNodes || !searchConfig ? 0 : 24,\r\n }}\r\n bordered={bordered}\n showHeader={showHeader}\n search={searchConfig}\n form={formConfig}\n options={false}\n dateFormatter=\"string\"\r\n toolBarRender={toolbarNodes ? () => toolbarNodes : undefined}\r\n pagination={\r\n paginationConfig as ComponentProps<typeof AntdProTable>[\"pagination\"]\r\n }\r\n onRow={(record) => ({\r\n onClick: () => handleRowClick(record as Record<string, unknown>),\r\n })}\r\n scroll={tableScroll}\r\n style={style}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default ProTableWrapper;\r\n"]}
@@ -72,6 +72,18 @@ var ListMeta = {
72
72
  description: "\u63A7\u5236 List.Item \u5185\u5BB9\u5E03\u5C40\u65B9\u5411",
73
73
  group: "\u6837\u5F0F"
74
74
  },
75
+ {
76
+ name: "layoutMode",
77
+ label: "\u5E03\u5C40\u6A21\u5F0F",
78
+ type: PropType.ENUM,
79
+ defaultValue: "grid",
80
+ options: [
81
+ { label: "\u6805\u683C", value: "grid" },
82
+ { label: "Flex", value: "flex" }
83
+ ],
84
+ description: "\u6805\u683C\u5E03\u5C40\u6216 Flex \u6362\u884C\u5E03\u5C40",
85
+ group: "\u6837\u5F0F"
86
+ },
75
87
  {
76
88
  name: "grid.column",
77
89
  label: "\u7F51\u683C\u5217\u6570",
@@ -81,7 +93,11 @@ var ListMeta = {
81
93
  max: 24,
82
94
  step: 1,
83
95
  description: "List \u7F51\u683C\u5E03\u5C40\u7684 column \u5B57\u6BB5",
84
- group: "\u6837\u5F0F"
96
+ group: "\u6837\u5F0F",
97
+ visibleWhen: {
98
+ field: "layoutMode",
99
+ equals: "grid"
100
+ }
85
101
  },
86
102
  {
87
103
  name: "grid.gutter",
@@ -92,7 +108,41 @@ var ListMeta = {
92
108
  max: 96,
93
109
  step: 1,
94
110
  description: "List \u7F51\u683C\u5E03\u5C40\u7684 gutter \u5B57\u6BB5",
95
- group: "\u6837\u5F0F"
111
+ group: "\u6837\u5F0F",
112
+ visibleWhen: {
113
+ field: "layoutMode",
114
+ equals: "grid"
115
+ }
116
+ },
117
+ {
118
+ name: "flex.columnGap",
119
+ label: "\u5217\u95F4\u8DDD(px)",
120
+ type: PropType.NUMBER,
121
+ defaultValue: 16,
122
+ min: 0,
123
+ max: 96,
124
+ step: 1,
125
+ description: "Flex \u6362\u884C\u65F6\u5217\u8868\u9879\u4E4B\u95F4\u7684\u6A2A\u5411\u95F4\u8DDD",
126
+ group: "\u6837\u5F0F",
127
+ visibleWhen: {
128
+ field: "layoutMode",
129
+ equals: "flex"
130
+ }
131
+ },
132
+ {
133
+ name: "flex.rowGap",
134
+ label: "\u884C\u95F4\u8DDD(px)",
135
+ type: PropType.NUMBER,
136
+ defaultValue: 16,
137
+ min: 0,
138
+ max: 96,
139
+ step: 1,
140
+ description: "Flex \u6362\u884C\u65F6\u5217\u8868\u9879\u4E4B\u95F4\u7684\u7EB5\u5411\u95F4\u8DDD",
141
+ group: "\u6837\u5F0F",
142
+ visibleWhen: {
143
+ field: "layoutMode",
144
+ equals: "flex"
145
+ }
96
146
  },
97
147
  {
98
148
  name: "bordered",
@@ -125,7 +175,17 @@ var ListMeta = {
125
175
  ],
126
176
  defaultProps: {
127
177
  bordered: true,
128
- split: true
178
+ split: true,
179
+ layoutMode: "grid",
180
+ itemLayout: "horizontal",
181
+ grid: {
182
+ column: 1,
183
+ gutter: 16
184
+ },
185
+ flex: {
186
+ columnGap: 16,
187
+ rowGap: 16
188
+ }
129
189
  },
130
190
  npm: {
131
191
  package: "@mijadesign/web",
@@ -141,10 +201,15 @@ var ListMeta = {
141
201
  { id: "2", title: "\u7B2C\u4E8C\u9879", description: "\u5217\u8868\u9879\u63CF\u8FF0" }
142
202
  ],
143
203
  rowKey: "id",
204
+ layoutMode: "grid",
144
205
  itemLayout: "horizontal",
145
206
  grid: {
146
207
  column: 1,
147
208
  gutter: 16
209
+ },
210
+ flex: {
211
+ columnGap: 16,
212
+ rowGap: 16
148
213
  }
149
214
  },
150
215
  children: []
@@ -184,5 +249,5 @@ var ListItemMeta = {
184
249
  };
185
250
 
186
251
  export { ListItemMeta, ListMeta };
187
- //# sourceMappingURL=chunk-GXBBOWAK.js.map
188
- //# sourceMappingURL=chunk-GXBBOWAK.js.map
252
+ //# sourceMappingURL=chunk-WANSJ5GB.js.map
253
+ //# sourceMappingURL=chunk-WANSJ5GB.js.map