@gadmin2n/schematics 0.0.72 → 0.0.74

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 (173) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +2 -0
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/job.prisma +62 -0
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +0 -21
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/workflow.prisma +171 -0
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/AgendaJob.ts +60 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +1 -1
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/WorkflowEventOutbox.ts +62 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/WorkflowNodeInstance.ts +62 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/WorkflowNodeType.ts +62 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.env +5 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -4
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +14 -7
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +4 -0
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +49 -3
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflow-node-types.ts +746 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/workflows.ts +786 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.controller.ts +6 -0
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.service.ts +79 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agendaJob/agendaJob.controller.spec.ts +20 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agendaJob/agendaJob.controller.ts +145 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agendaJob/agendaJob.module.ts +10 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/{canvas/canvas.service.spec.ts → agendaJob/agendaJob.service.spec.ts} +71 -65
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agendaJob/agendaJob.service.ts +83 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +2 -1
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.module.ts +9 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/temporal.service.ts +100 -0
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-execution.dto.ts +19 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.dto.ts +43 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-export.service.ts +317 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-node-type.controller.ts +16 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow-node-type.service.ts +13 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.controller.ts +220 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.dto.ts +82 -0
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.module.ts +16 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflow/workflow.service.ts +505 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.controller.spec.ts +22 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.controller.ts +147 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.module.ts +10 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.service.spec.ts +356 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowEventOutbox/workflowEventOutbox.service.ts +110 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.spec.ts +22 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.controller.ts +216 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.module.ts +10 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.spec.ts +356 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeInstance/workflowNodeInstance.service.ts +168 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeType/workflowNodeType.controller.spec.ts +22 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeType/workflowNodeType.controller.ts +199 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeType/workflowNodeType.module.ts +10 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeType/workflowNodeType.service.spec.ts +348 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/workflowNodeType/workflowNodeType.service.ts +106 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +579 -1082
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/README.md +278 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/config/development-sql.yaml +5 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/docker-compose.yml +25 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/package.json +13 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/sql/create-event-trigger.sql +87 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/.env +7 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/SANDBOX.md +122 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/package-lock.json +4285 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/package.json +28 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/__tests__/activities/code-execute.test.ts +44 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/__tests__/activities/http-request.test.ts +87 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/__tests__/helpers.test.ts +225 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/__tests__/node-type-consistency.test.ts +101 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/code-execute.ts +51 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/db-execute.ts +85 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/db-query.ts +35 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/http-request.ts +54 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/index.ts +6 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/reporting.ts +62 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/activities/send-notification.ts +47 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/config.ts +13 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/condition.ts +101 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/context.ts +58 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/graph.ts +184 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/helpers.ts +133 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/node-types.ts +57 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/dsl/types.ts +77 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/index.ts +36 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/outbox-poller.ts +226 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/src/workflows/dsl-workflow.ts +411 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/tsconfig.json +19 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/vitest.config.ts +8 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/temporal/worker/yarn.lock +1905 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package-lock.json +17555 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +5 -2
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +1 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +5 -1
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +1 -1
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +63 -0
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +91 -2
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +48 -2
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +43 -2
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +14 -9
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +14 -9
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +309 -56
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +1 -3
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/create.tsx +108 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/edit.tsx +124 -0
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/index.tsx +4 -0
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/list.tsx +245 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agendaJob/show.tsx +70 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +0 -1
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +160 -2
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +120 -148
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +74 -181
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +15 -13
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +2 -2
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +338 -3
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +18 -17
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +10 -4
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +10 -4
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/{ChartViewerConfigModal.tsx → MultiChartConfigModal.tsx} +30 -18
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/MultiChartDataSourceModal.tsx +427 -0
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +10 -4
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +6 -14
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +10 -4
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +10 -4
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/canvasModalProps.ts +24 -0
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +45 -63
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/CustomNode.tsx +99 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ExportModal.tsx +87 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/FlowRenderer.tsx +322 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/ImportModal.tsx +175 -0
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodeEditModal.tsx +60 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/NodePropertyPanel.tsx +1150 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/RunWorkflowModal.tsx +101 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/StatusCards.tsx +198 -0
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/components/VersionPanel.tsx +81 -0
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/editor.tsx +566 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/hooks/useWorkflowAgent.ts +224 -0
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/index.tsx +524 -0
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instance-detail.tsx +343 -0
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/instances.tsx +243 -0
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/CreateNodeInstanceModal.tsx +363 -0
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/DynamicConfigForm.tsx +154 -0
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/components/NodeInstanceForm.tsx +176 -0
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/create.tsx +77 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/edit.tsx +112 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/index.tsx +305 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/node-instances/show.tsx +282 -0
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/show.tsx +469 -0
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflow/types.ts +92 -0
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/create.tsx +111 -0
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/edit.tsx +127 -0
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/index.tsx +4 -0
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/list.tsx +254 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/workflowEventOutbox/show.tsx +74 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +1501 -1199
  151. package/package.json +1 -1
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.spec.ts +0 -22
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +0 -896
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +0 -219
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +0 -159
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +0 -192
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +0 -1034
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +0 -8
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +0 -509
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +0 -66
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +0 -552
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +0 -263
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +0 -35
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +0 -207
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +0 -382
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +0 -135
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +0 -53
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +0 -8
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +0 -1
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +0 -31
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +0 -9
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +0 -39349
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +0 -19
@@ -1,92 +1,16 @@
1
1
  import React, { useState, useCallback, useRef, useEffect } from 'react';
2
- import Editor, { type OnMount } from '@monaco-editor/react';
3
- import { Button, Tooltip, Tabs } from 'antd';
4
- import { CloseOutlined, CopyOutlined, CheckOutlined } from '@ant-design/icons';
2
+ import Editor, { type OnMount, type BeforeMount } from '@monaco-editor/react';
3
+ import { Button, Tooltip } from 'antd';
4
+ import {
5
+ CloseOutlined,
6
+ CopyOutlined,
7
+ CheckOutlined,
8
+ CodeOutlined,
9
+ } from '@ant-design/icons';
5
10
  import type { PropDoc, ComponentVariant } from './types';
6
11
 
7
12
  type IStandaloneCodeEditor = Parameters<OnMount>[0];
8
13
 
9
- // ─── Theme (reuse from ComponentCanvas) ──────────────────────────────────
10
-
11
- const C = {
12
- bg: '#ffffff',
13
- editorBg: '#fafafa',
14
- editorBorder: '#e5e5e5',
15
- importBg: '#f0f4ff',
16
- importBorder: '#dce6fd',
17
- importText: '#3451b2',
18
- text: '#1a1a1a',
19
- textMuted: '#999',
20
- accent: '#087ea4',
21
- };
22
-
23
- // ─── PropTable (simplified inline version) ───────────────────────────────────
24
-
25
- const PropTable: React.FC<{ props: PropDoc[]; height: number }> = ({
26
- props,
27
- height,
28
- }) => (
29
- <div
30
- style={{
31
- height,
32
- overflow: 'auto',
33
- borderTop: `1px solid ${C.editorBorder}`,
34
- }}
35
- >
36
- <table style={{ width: '100%', borderCollapse: 'collapse', fontSize: 12 }}>
37
- <thead>
38
- <tr style={{ background: '#fafafa', position: 'sticky', top: 0 }}>
39
- {['Prop', 'Type', 'Default', 'Description'].map((h) => (
40
- <th
41
- key={h}
42
- style={{
43
- padding: '6px 8px',
44
- textAlign: 'left',
45
- borderBottom: `1px solid ${C.editorBorder}`,
46
- fontWeight: 600,
47
- color: C.text,
48
- }}
49
- >
50
- {h}
51
- </th>
52
- ))}
53
- </tr>
54
- </thead>
55
- <tbody>
56
- {props.map((p) => (
57
- <tr key={p.name} style={{ borderBottom: `1px solid #f0f0f0` }}>
58
- <td
59
- style={{
60
- padding: '5px 8px',
61
- fontFamily: 'monospace',
62
- color: C.accent,
63
- fontWeight: 600,
64
- }}
65
- >
66
- {p.name}
67
- {p.required && <span style={{ color: '#f5222d' }}> *</span>}
68
- </td>
69
- <td
70
- style={{
71
- padding: '5px 8px',
72
- fontFamily: 'monospace',
73
- color: '#666',
74
- fontSize: 11,
75
- }}
76
- >
77
- {p.type}
78
- </td>
79
- <td style={{ padding: '5px 8px', color: '#999', fontSize: 11 }}>
80
- {p.default ?? '—'}
81
- </td>
82
- <td style={{ padding: '5px 8px', color: '#444' }}>{p.desc}</td>
83
- </tr>
84
- ))}
85
- </tbody>
86
- </table>
87
- </div>
88
- );
89
-
90
14
  // ─── CopyButton ──────────────────────────────────────────────────────────────
91
15
 
92
16
  const CopyButton: React.FC<{ text: string }> = ({ text }) => {
@@ -108,7 +32,7 @@ const CopyButton: React.FC<{ text: string }> = ({ text }) => {
108
32
  setCopied(true);
109
33
  setTimeout(() => setCopied(false), 1500);
110
34
  }}
111
- style={{ fontSize: 12, color: C.textMuted }}
35
+ style={{ fontSize: 12, color: 'rgba(0,0,0,0.45)' }}
112
36
  />
113
37
  </Tooltip>
114
38
  );
@@ -126,8 +50,8 @@ interface CodeFloatWindowProps {
126
50
  onClose: () => void;
127
51
  }
128
52
 
129
- const MIN_W = 320;
130
- const MIN_H = 240;
53
+ const MIN_W = 360;
54
+ const MIN_H = 280;
131
55
 
132
56
  type ResizeEdge = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';
133
57
 
@@ -146,14 +70,11 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
146
70
  componentType,
147
71
  imports,
148
72
  code,
149
- props,
150
- variants,
151
73
  onChange,
152
74
  onClose,
153
75
  }) => {
154
- const [pos, setPos] = useState({ x: 200, y: 100 });
155
- const [size, setSize] = useState({ w: 520, h: 500 });
156
- const [propsHeight, setPropsHeight] = useState(160);
76
+ const [pos, setPos] = useState({ x: 200, y: 80 });
77
+ const [size, setSize] = useState({ w: 560, h: 480 });
157
78
  const dragging = useRef(false);
158
79
  const dragStart = useRef({ x: 0, y: 0, px: 0, py: 0 });
159
80
  const editorRef = useRef<IStandaloneCodeEditor | null>(null);
@@ -244,29 +165,31 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
244
165
  }
245
166
  }, [code]);
246
167
 
168
+ // 配置 TypeScript/JSX 支持以获得完整语法高亮
169
+ const handleBeforeMount: BeforeMount = useCallback((monaco) => {
170
+ monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
171
+ jsx: monaco.languages.typescript.JsxEmit.React,
172
+ jsxFactory: 'React.createElement',
173
+ reactNamespace: 'React',
174
+ allowNonTsExtensions: true,
175
+ allowJs: true,
176
+ target: monaco.languages.typescript.ScriptTarget.Latest,
177
+ module: monaco.languages.typescript.ModuleKind.ESNext,
178
+ moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
179
+ esModuleInterop: true,
180
+ });
181
+ // 关闭诊断(避免红色波浪线)
182
+ monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
183
+ noSemanticValidation: true,
184
+ noSyntaxValidation: false,
185
+ });
186
+ }, []);
187
+
247
188
  const handleMount: OnMount = useCallback((editor) => {
248
189
  editorRef.current = editor;
249
190
  }, []);
250
191
 
251
- // Props 区域 resize
252
- const handlePropsResize = useCallback(
253
- (startY: number) => {
254
- const startH = propsHeight;
255
- const onMove = (e: MouseEvent) => {
256
- const delta = e.clientY - startY;
257
- setPropsHeight(Math.max(60, Math.min(size.h * 0.6, startH - delta)));
258
- };
259
- const onUp = () => {
260
- window.removeEventListener('mousemove', onMove);
261
- window.removeEventListener('mouseup', onUp);
262
- };
263
- window.addEventListener('mousemove', onMove);
264
- window.addEventListener('mouseup', onUp);
265
- },
266
- [propsHeight, size.h],
267
- );
268
-
269
- const HANDLE = 6; // resize handle 宽度 px
192
+ const HANDLE = 6;
270
193
 
271
194
  return (
272
195
  <div
@@ -276,10 +199,11 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
276
199
  top: pos.y,
277
200
  width: size.w,
278
201
  height: size.h,
279
- background: C.bg,
280
- border: `1px solid ${C.editorBorder}`,
202
+ background: '#fff',
203
+ border: '1px solid #d9d9d9',
281
204
  borderRadius: 8,
282
- boxShadow: '0 8px 24px rgba(0,0,0,0.12)',
205
+ boxShadow:
206
+ '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',
283
207
  display: 'flex',
284
208
  flexDirection: 'column',
285
209
  zIndex: 1000,
@@ -303,7 +227,6 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
303
227
  position: 'absolute',
304
228
  cursor: EDGE_CURSORS[edge],
305
229
  zIndex: 10,
306
- // edges
307
230
  top: isCorner
308
231
  ? isN
309
232
  ? 0
@@ -347,14 +270,15 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
347
270
  );
348
271
  },
349
272
  )}
273
+
350
274
  {/* 标题栏 */}
351
275
  <div
352
276
  onMouseDown={handleTitleMouseDown}
353
277
  style={{
354
- height: 36,
355
- padding: '0 12px',
356
- background: '#f7f7f7',
357
- borderBottom: `1px solid ${C.editorBorder}`,
278
+ height: 40,
279
+ padding: '0 16px',
280
+ background: '#fafafa',
281
+ borderBottom: '1px solid #f0f0f0',
358
282
  display: 'flex',
359
283
  alignItems: 'center',
360
284
  justifyContent: 'space-between',
@@ -363,9 +287,14 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
363
287
  userSelect: 'none',
364
288
  }}
365
289
  >
366
- <span style={{ fontSize: 13, fontWeight: 600, color: C.accent }}>
367
- {componentType}
368
- </span>
290
+ <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
291
+ <CodeOutlined style={{ fontSize: 14, color: '#1677ff' }} />
292
+ <span
293
+ style={{ fontSize: 13, fontWeight: 600, color: 'rgba(0,0,0,0.88)' }}
294
+ >
295
+ {componentType}
296
+ </span>
297
+ </div>
369
298
  <div style={{ display: 'flex', gap: 4, alignItems: 'center' }}>
370
299
  <CopyButton text={`${imports}\n\n${code}`} />
371
300
  <Button
@@ -373,53 +302,30 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
373
302
  type="text"
374
303
  icon={<CloseOutlined />}
375
304
  onClick={onClose}
376
- style={{ color: C.textMuted }}
305
+ style={{ color: 'rgba(0,0,0,0.45)' }}
377
306
  />
378
307
  </div>
379
308
  </div>
380
309
 
381
- {/* Variant 切换 */}
382
- {variants.length > 1 && (
383
- <div
384
- style={{
385
- padding: '0 12px',
386
- borderBottom: `1px solid ${C.editorBorder}`,
387
- flexShrink: 0,
388
- background: C.bg,
389
- }}
390
- >
391
- <Tabs
392
- size="small"
393
- style={{ marginBottom: 0 }}
394
- items={variants.map((v) => ({
395
- key: v.name,
396
- label: <span style={{ fontSize: 12 }}>{v.label}</span>,
397
- }))}
398
- onChange={(key) => {
399
- const variant = variants.find((v) => v.name === key);
400
- if (variant) onChange(variant.code);
401
- }}
402
- />
403
- </div>
404
- )}
405
-
406
- {/* Imports(只读) */}
310
+ {/* Imports(只读提示条) */}
407
311
  <div
408
312
  style={{
409
- background: C.importBg,
410
- borderBottom: `1px solid ${C.importBorder}`,
411
- padding: '6px 12px',
313
+ background: '#f6f8fa',
314
+ borderBottom: '1px solid #f0f0f0',
315
+ padding: '6px 16px',
412
316
  flexShrink: 0,
413
317
  }}
414
318
  >
415
319
  <pre
416
320
  style={{
417
321
  margin: 0,
418
- fontSize: 12,
419
- color: C.importText,
420
- fontFamily: "'Fira Mono', monospace",
322
+ fontSize: 13,
323
+ color: '#1677ff',
324
+ fontFamily:
325
+ "'JetBrains Mono', 'Fira Code', Menlo, Monaco, 'Courier New', monospace",
421
326
  lineHeight: 1.5,
422
327
  whiteSpace: 'pre-wrap',
328
+ opacity: 0.85,
423
329
  }}
424
330
  >
425
331
  {imports}
@@ -429,46 +335,33 @@ const CodeFloatWindow: React.FC<CodeFloatWindowProps> = ({
429
335
  {/* Monaco 编辑器 */}
430
336
  <div style={{ flex: 1, minHeight: 0, overflow: 'hidden' }}>
431
337
  <Editor
432
- defaultLanguage="tsx"
338
+ defaultLanguage="typescript"
339
+ defaultPath="component.tsx"
433
340
  value={code}
434
341
  onChange={(val) => onChange(val ?? '')}
342
+ beforeMount={handleBeforeMount}
435
343
  onMount={handleMount}
436
344
  theme="vs"
437
345
  options={{
438
346
  minimap: { enabled: false },
439
- fontSize: 13,
440
- fontFamily: "'Fira Mono', monospace",
347
+ fontSize: 14,
348
+ fontFamily:
349
+ "'JetBrains Mono', 'Fira Code', Menlo, Monaco, 'Courier New', monospace",
350
+ fontLigatures: true,
441
351
  lineNumbers: 'on',
442
352
  lineNumbersMinChars: 3,
443
353
  scrollBeyondLastLine: false,
444
354
  automaticLayout: true,
445
355
  tabSize: 2,
446
- renderLineHighlight: 'gutter',
356
+ renderLineHighlight: 'line',
357
+ padding: { top: 8, bottom: 8 },
358
+ wordWrap: 'on',
359
+ folding: true,
360
+ bracketPairColorization: { enabled: true },
361
+ guides: { bracketPairs: true },
447
362
  }}
448
363
  />
449
364
  </div>
450
-
451
- {/* Resize handle */}
452
- <div
453
- onMouseDown={(e) => {
454
- e.preventDefault();
455
- handlePropsResize(e.clientY);
456
- }}
457
- style={{
458
- height: 4,
459
- flexShrink: 0,
460
- cursor: 'row-resize',
461
- background: C.editorBorder,
462
- transition: 'background 0.15s',
463
- }}
464
- onMouseEnter={(e) => (e.currentTarget.style.background = C.accent)}
465
- onMouseLeave={(e) =>
466
- (e.currentTarget.style.background = C.editorBorder)
467
- }
468
- />
469
-
470
- {/* Props 表 */}
471
- {props.length > 0 && <PropTable props={props} height={propsHeight} />}
472
365
  </div>
473
366
  );
474
367
  };
@@ -12,18 +12,20 @@ import { transform } from 'sucrase';
12
12
  import { Alert } from 'antd';
13
13
 
14
14
  // 引入所有 canvas 需要的组件
15
- import { NumCard } from '@/components/canvas/NumCard';
16
- import { NumLineCard } from '@/components/canvas/NumLineCard';
17
- import { Filter } from '@/components/canvas/Filter';
18
- import { BarChart } from '@/components/canvas/BarChart';
19
- import { LineChart } from '@/components/canvas/LineChart';
20
- import { PieChart } from '@/components/canvas/PieChart';
21
- import { RadarChart } from '@/components/canvas/RadarChart';
22
- import { TreemapChart } from '@/components/canvas/TreemapChart';
23
- import { Table } from '@/components/canvas/Table';
24
- import { WorldMap } from '@/components/canvas/WorldMap';
25
- import { ChartViewer } from '@/components/canvas/ChartViewer';
26
- import { Section } from '@/components/canvas/Section';
15
+ import {
16
+ NumCard,
17
+ NumLineCard,
18
+ Filter,
19
+ BarChart,
20
+ LineChart,
21
+ PieChart,
22
+ RadarChart,
23
+ TreemapChart,
24
+ Table,
25
+ WorldMap,
26
+ MultiChart,
27
+ Section,
28
+ } from '@gadmin2n/charts';
27
29
  import * as echarts from 'echarts';
28
30
  import { Form, Select, Input, DatePicker, Tag, Button, Space } from 'antd';
29
31
  import {
@@ -47,7 +49,7 @@ const SCOPE: Record<string, unknown> = {
47
49
  TreemapChart,
48
50
  Table,
49
51
  WorldMap,
50
- ChartViewer,
52
+ MultiChart,
51
53
  Section,
52
54
  echarts,
53
55
  Form,
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import ChartViewerConfigModal from './components/ChartViewerConfigModal';
2
+ import MultiChartConfigModal from './components/MultiChartConfigModal';
3
3
 
4
4
  // ─── 通用配置 Modal 接口 ──────────────────────────────────────────────────────
5
5
  //
@@ -21,5 +21,5 @@ export type ConfigModalComponent = React.FC<CanvasConfigModalProps>;
21
21
  // 只有在此注册的组件,右键菜单中才会显示"配置"选项。
22
22
 
23
23
  export const CANVAS_CONFIG_REGISTRY: Record<string, ConfigModalComponent> = {
24
- ChartViewer: ChartViewerConfigModal,
24
+ MultiChart: MultiChartConfigModal,
25
25
  };