@robot-admin/naive-ui-components 0.6.28 → 0.6.30

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 (142) hide show
  1. package/dist/C_Chat-CJ8KESTM.css.map +1 -0
  2. package/dist/C_Chat-DzV4AFLd.css.map +1 -0
  3. package/dist/C_Chat.css +14 -8
  4. package/dist/{C_CollapsePanel-CWkFCqNQ.css.map → C_CollapsePanel-BkOivqn3.css.map} +1 -1
  5. package/dist/{C_CollapsePanel-pcVJA_4z.css.map → C_CollapsePanel-CedsEM0N.css.map} +1 -1
  6. package/dist/C_CollapsePanel.css +35 -35
  7. package/dist/C_CollapsePanel.js.map +1 -1
  8. package/dist/C_CollapsePanel2.js +1 -1
  9. package/dist/C_CollapsePanel2.js.map +1 -1
  10. package/dist/C_Editor-C49qURgb.css.map +1 -0
  11. package/dist/C_Editor-DuxBD9Qg.css.map +1 -0
  12. package/dist/C_Editor.css +60 -29
  13. package/dist/C_Editor.js.map +1 -1
  14. package/dist/C_Editor2.js +1 -1
  15. package/dist/C_Editor2.js.map +1 -1
  16. package/dist/C_Guide.d.cts +2 -2
  17. package/dist/C_Guide.d.ts +2 -2
  18. package/dist/C_Guide.js.map +1 -1
  19. package/dist/C_Guide2.js +1 -1
  20. package/dist/C_Guide2.js.map +1 -1
  21. package/dist/C_Markdown-7J0uPEuk.css.map +1 -0
  22. package/dist/C_Markdown-C7Lg0_9z.css.map +1 -0
  23. package/dist/C_Markdown.css +16 -10
  24. package/dist/C_OrgChart-ChZu346B.css.map +1 -0
  25. package/dist/C_OrgChart-DqBufOv5.css.map +1 -0
  26. package/dist/C_OrgChart.cjs +1 -0
  27. package/dist/C_OrgChart.css +282 -0
  28. package/dist/C_OrgChart.d.cts +2 -0
  29. package/dist/C_OrgChart.d.ts +2 -0
  30. package/dist/C_OrgChart.js +1 -0
  31. package/dist/C_OrgChart.js.map +1 -0
  32. package/dist/C_OrgChart2.js +2 -0
  33. package/dist/C_OrgChart2.js.map +1 -0
  34. package/dist/C_Progress.d.cts +1 -1
  35. package/dist/C_Progress.d.ts +1 -1
  36. package/dist/C_Signature.js.map +1 -1
  37. package/dist/C_Signature2.js.map +1 -1
  38. package/dist/C_Skeleton-BNPbaut7.css.map +1 -0
  39. package/dist/C_Skeleton-Djsjw8XY.css.map +1 -0
  40. package/dist/C_Skeleton.cjs +1 -0
  41. package/dist/C_Skeleton.css +253 -0
  42. package/dist/C_Skeleton.d.cts +2 -0
  43. package/dist/C_Skeleton.d.ts +2 -0
  44. package/dist/C_Skeleton.js +1 -0
  45. package/dist/C_Skeleton.js.map +1 -0
  46. package/dist/C_Skeleton2.js +2 -0
  47. package/dist/C_Skeleton2.js.map +1 -0
  48. package/dist/C_Steps.d.cts +1 -1
  49. package/dist/C_Steps.d.ts +1 -1
  50. package/dist/C_Table-B8hpzOcR.css.map +1 -0
  51. package/dist/C_Table-CGP3n_u0.css.map +1 -0
  52. package/dist/C_Table.css +94 -69
  53. package/dist/C_Table.d.cts +2 -2
  54. package/dist/C_Table.d.ts +2 -2
  55. package/dist/C_Table.js.map +1 -1
  56. package/dist/C_Table2.js +1 -1
  57. package/dist/C_Table2.js.map +1 -1
  58. package/dist/C_TagsView.d.cts +1 -1
  59. package/dist/C_TagsView.d.ts +1 -1
  60. package/dist/C_Theme.d.cts +1 -1
  61. package/dist/C_Theme.d.ts +1 -1
  62. package/dist/{C_Timeline-BKkimrZx.css.map → C_Timeline-DG70WtJP.css.map} +1 -1
  63. package/dist/{C_Timeline-DTuSCX6p.css.map → C_Timeline-Dzxmmdjg.css.map} +1 -1
  64. package/dist/C_Timeline.css +45 -45
  65. package/dist/C_Timeline.d.cts +1 -1
  66. package/dist/C_Timeline.d.ts +1 -1
  67. package/dist/C_Timeline.js.map +1 -1
  68. package/dist/C_Timeline2.js +1 -1
  69. package/dist/C_Timeline2.js.map +1 -1
  70. package/dist/C_Transfer.d.cts +1 -1
  71. package/dist/C_Transfer.d.ts +1 -1
  72. package/dist/{C_Upload-S30RmC9t.css.map → C_Upload-CFAxVGVz.css.map} +1 -1
  73. package/dist/{C_Upload-i8LB_29U.css.map → C_Upload-D8_QeSV0.css.map} +1 -1
  74. package/dist/C_Upload.css +14 -9
  75. package/dist/C_Upload.js.map +1 -1
  76. package/dist/C_Upload2.js +1 -1
  77. package/dist/C_Upload2.js.map +1 -1
  78. package/dist/C_VtableGantt.d.cts +1 -1
  79. package/dist/C_VtableGantt.d.ts +1 -1
  80. package/dist/constants.d.ts +1 -1
  81. package/dist/constants2.d.ts +2 -2
  82. package/dist/constants3.d.ts +3 -3
  83. package/dist/constants4.d.ts +5 -5
  84. package/dist/constants5.d.ts +2 -2
  85. package/dist/data.d.ts +1 -1
  86. package/dist/index.cjs +1 -1
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.cts +22 -20
  89. package/dist/index.d.ts +22 -20
  90. package/dist/index.js +1 -1
  91. package/dist/index.js.map +1 -1
  92. package/dist/index.vue.d.ts +1 -1
  93. package/dist/index13.vue.d.ts +3 -3
  94. package/dist/index14.vue.d.ts +85 -7
  95. package/dist/index15.vue.d.ts +6 -6
  96. package/dist/index17.vue.d.ts +1 -1
  97. package/dist/index18.vue.d.ts +4 -4
  98. package/dist/index20.vue.d.ts +87 -40
  99. package/dist/index21.vue.d.ts +47 -27
  100. package/dist/index22.vue.d.ts +95 -79
  101. package/dist/index23.vue.d.ts +24 -7
  102. package/dist/index24.vue.d.ts +76 -100
  103. package/dist/index25.vue.d.ts +7 -70
  104. package/dist/index26.vue.d.ts +99 -649
  105. package/dist/index27.vue.d.ts +81 -0
  106. package/dist/index28.vue.d.ts +662 -0
  107. package/dist/index3.vue.d.ts +3 -3
  108. package/dist/index4.vue.d.ts +6 -6
  109. package/dist/index6.vue.d.ts +2 -2
  110. package/dist/index8.vue.d.ts +1 -1
  111. package/dist/resolver.cjs +1 -1
  112. package/dist/resolver.cjs.map +1 -1
  113. package/dist/resolver.d.cts +1 -1
  114. package/dist/resolver.d.ts +1 -1
  115. package/dist/resolver.js +1 -1
  116. package/dist/resolver.js.map +1 -1
  117. package/dist/style.css +832 -220
  118. package/dist/useCalendarEvents.d.ts +1 -1
  119. package/dist/useCollapsePanel.d.ts +8 -8
  120. package/dist/useCropperCore.d.ts +4 -4
  121. package/dist/useDraggableLayout.d.ts +8 -8
  122. package/dist/useDynamicFormState.d.ts +10 -10
  123. package/dist/useEdgeInteraction.d.ts +1 -1
  124. package/dist/useFullscreen.d.ts +2 -2
  125. package/dist/useInfiniteScroll.d.ts +2 -2
  126. package/dist/useModalEdit.d.ts +52 -6
  127. package/dist/useQRCode.d.ts +5 -5
  128. package/dist/useSearchState.d.ts +2 -2
  129. package/dist/useSignatureHistory.d.ts +3 -3
  130. package/dist/useSplitResize.d.ts +8 -8
  131. package/dist/useTimeSelection.d.ts +2 -2
  132. package/dist/useTreeOperations.d.ts +4 -4
  133. package/dist/useWorkflowValidation.d.ts +2 -2
  134. package/package.json +5 -1
  135. package/dist/C_Chat-CcdWgVE8.css.map +0 -1
  136. package/dist/C_Chat-Cx0woEEe.css.map +0 -1
  137. package/dist/C_Editor-D0_6UhIa.css.map +0 -1
  138. package/dist/C_Editor-OlxIF9-5.css.map +0 -1
  139. package/dist/C_Markdown-7iBnLDtL.css.map +0 -1
  140. package/dist/C_Markdown-BbTvdFCl.css.map +0 -1
  141. package/dist/C_Table-vZlcgH6x.css.map +0 -1
  142. package/dist/C_Table-wzAO43l0.css.map +0 -1
@@ -0,0 +1,282 @@
1
+ /* unplugin-vue-components disabled *//* C_OrgChart 组织架构图组件样式 */
2
+ .c-orgchart {
3
+ --c-orgchart-line-color: #d1d5db;
4
+ --c-orgchart-line-width: 2px;
5
+ --c-orgchart-node-spacing: 24px;
6
+ --c-orgchart-level-spacing: 48px;
7
+ --c-orgchart-node-bg: var(--card-color, #ffffff);
8
+ --c-orgchart-node-border: var(--border-color, #e5e7eb);
9
+ --c-orgchart-node-shadow: rgba(0, 0, 0, 0.06);
10
+ --c-orgchart-node-hover-shadow: rgba(0, 0, 0, 0.12);
11
+ --c-orgchart-label-color: var(--text-color-1, #262626);
12
+ --c-orgchart-subtitle-color: var(--text-color-3, #999999);
13
+ --c-orgchart-toggle-bg: var(--card-color, #ffffff);
14
+ --c-orgchart-toggle-color: var(--text-color-2, #666666);
15
+ --c-orgchart-avatar-size: 36px;
16
+ --c-orgchart-controls-bg: var(--card-color, #ffffff);
17
+ --c-orgchart-controls-shadow: rgba(0, 0, 0, 0.1);
18
+ position: relative;
19
+ width: 100%;
20
+ height: 100%;
21
+ min-height: 300px;
22
+ overflow: hidden;
23
+ cursor: grab;
24
+ user-select: none;
25
+ }
26
+ .c-orgchart:active {
27
+ cursor: grabbing;
28
+ }
29
+ .c-orgchart__viewport {
30
+ display: inline-flex;
31
+ justify-content: center;
32
+ width: 100%;
33
+ padding: 32px;
34
+ transition: transform 0.15s ease;
35
+ }
36
+
37
+ /* ─── 节点包裹器(垂直布局) ─── */
38
+ .c-orgchart--vertical .c-orgchart__node-wrapper {
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: center;
42
+ }
43
+ .c-orgchart--vertical .c-orgchart__children {
44
+ display: flex;
45
+ justify-content: center;
46
+ padding-top: var(--c-orgchart-level-spacing);
47
+ gap: var(--c-orgchart-node-spacing);
48
+ position: relative;
49
+ /* 垂直连线:父→子 */
50
+ /* 横连线:兄弟节点 */
51
+ /* 兄弟之间的水平线 */
52
+ }
53
+ .c-orgchart--vertical .c-orgchart__children::before {
54
+ content: "";
55
+ position: absolute;
56
+ top: 0;
57
+ left: 50%;
58
+ width: var(--c-orgchart-line-width);
59
+ height: calc(var(--c-orgchart-level-spacing) / 2);
60
+ background: var(--c-orgchart-line-color);
61
+ transform: translateX(-50%);
62
+ }
63
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper {
64
+ position: relative;
65
+ }
66
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper::before {
67
+ content: "";
68
+ position: absolute;
69
+ top: calc(var(--c-orgchart-level-spacing) / -2);
70
+ left: 50%;
71
+ width: var(--c-orgchart-line-width);
72
+ height: calc(var(--c-orgchart-level-spacing) / 2);
73
+ background: var(--c-orgchart-line-color);
74
+ transform: translateX(-50%);
75
+ }
76
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child)::after {
77
+ content: "";
78
+ position: absolute;
79
+ top: calc(var(--c-orgchart-level-spacing) / -2);
80
+ height: var(--c-orgchart-line-width);
81
+ background: var(--c-orgchart-line-color);
82
+ }
83
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):first-child::after {
84
+ left: 50%;
85
+ right: calc(-1 * var(--c-orgchart-node-spacing) / 2);
86
+ }
87
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):last-child::after {
88
+ left: calc(-1 * var(--c-orgchart-node-spacing) / 2);
89
+ right: 50%;
90
+ }
91
+ .c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):not(:first-child):not(:last-child)::after {
92
+ left: calc(-1 * var(--c-orgchart-node-spacing) / 2);
93
+ right: calc(-1 * var(--c-orgchart-node-spacing) / 2);
94
+ }
95
+
96
+ /* ─── 水平布局 ─── */
97
+ .c-orgchart--horizontal .c-orgchart__node-wrapper {
98
+ display: flex;
99
+ align-items: center;
100
+ }
101
+ .c-orgchart--horizontal .c-orgchart__children {
102
+ display: flex;
103
+ flex-direction: column;
104
+ justify-content: center;
105
+ padding-left: var(--c-orgchart-level-spacing);
106
+ gap: var(--c-orgchart-node-spacing);
107
+ position: relative;
108
+ }
109
+ .c-orgchart--horizontal .c-orgchart__children::before {
110
+ content: "";
111
+ position: absolute;
112
+ left: 0;
113
+ top: 50%;
114
+ height: var(--c-orgchart-line-width);
115
+ width: calc(var(--c-orgchart-level-spacing) / 2);
116
+ background: var(--c-orgchart-line-color);
117
+ transform: translateY(-50%);
118
+ }
119
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper {
120
+ position: relative;
121
+ }
122
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper::before {
123
+ content: "";
124
+ position: absolute;
125
+ left: calc(var(--c-orgchart-level-spacing) / -2);
126
+ top: 50%;
127
+ width: calc(var(--c-orgchart-level-spacing) / 2);
128
+ height: var(--c-orgchart-line-width);
129
+ background: var(--c-orgchart-line-color);
130
+ transform: translateY(-50%);
131
+ }
132
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child)::after {
133
+ content: "";
134
+ position: absolute;
135
+ left: calc(var(--c-orgchart-level-spacing) / -2);
136
+ width: var(--c-orgchart-line-width);
137
+ background: var(--c-orgchart-line-color);
138
+ }
139
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):first-child::after {
140
+ top: 50%;
141
+ bottom: calc(-1 * var(--c-orgchart-node-spacing) / 2);
142
+ }
143
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):last-child::after {
144
+ top: calc(-1 * var(--c-orgchart-node-spacing) / 2);
145
+ bottom: 50%;
146
+ }
147
+ .c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):not(:first-child):not(:last-child)::after {
148
+ top: calc(-1 * var(--c-orgchart-node-spacing) / 2);
149
+ bottom: calc(-1 * var(--c-orgchart-node-spacing) / 2);
150
+ }
151
+
152
+ /* ─── 圆角连线 ─── */
153
+ .c-orgchart--line-rounded .c-orgchart__children::before,
154
+ .c-orgchart--line-rounded .c-orgchart__node-wrapper::before,
155
+ .c-orgchart--line-rounded .c-orgchart__node-wrapper::after {
156
+ border-radius: 4px;
157
+ }
158
+
159
+ /* ─── 节点卡片 ─── */
160
+ .c-orgchart__node {
161
+ position: relative;
162
+ background: var(--c-orgchart-node-bg);
163
+ border: 1px solid var(--c-orgchart-node-border);
164
+ border-radius: 8px;
165
+ padding: 12px 16px;
166
+ cursor: pointer;
167
+ box-shadow: 0 2px 8px var(--c-orgchart-node-shadow);
168
+ transition: box-shadow 0.2s ease, transform 0.2s ease;
169
+ white-space: nowrap;
170
+ }
171
+ .c-orgchart__node:hover {
172
+ box-shadow: 0 4px 16px var(--c-orgchart-node-hover-shadow);
173
+ transform: translateY(-2px);
174
+ }
175
+ .c-orgchart__node--leaf {
176
+ opacity: 0.9;
177
+ }
178
+
179
+ /* ─── 默认节点布局 ─── */
180
+ .c-orgchart__node-default {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 10px;
184
+ }
185
+ .c-orgchart__avatar {
186
+ width: var(--c-orgchart-avatar-size);
187
+ height: var(--c-orgchart-avatar-size);
188
+ border-radius: 50%;
189
+ overflow: hidden;
190
+ flex-shrink: 0;
191
+ }
192
+ .c-orgchart__avatar img {
193
+ width: 100%;
194
+ height: 100%;
195
+ object-fit: cover;
196
+ }
197
+ .c-orgchart__info {
198
+ display: flex;
199
+ flex-direction: column;
200
+ gap: 2px;
201
+ }
202
+ .c-orgchart__label {
203
+ font-size: 14px;
204
+ font-weight: 600;
205
+ color: var(--c-orgchart-label-color);
206
+ }
207
+ .c-orgchart__subtitle {
208
+ font-size: 12px;
209
+ color: var(--c-orgchart-subtitle-color);
210
+ }
211
+
212
+ /* ─── 折叠按钮 ─── */
213
+ .c-orgchart__toggle {
214
+ position: absolute;
215
+ bottom: -12px;
216
+ left: 50%;
217
+ transform: translateX(-50%);
218
+ width: 24px;
219
+ height: 24px;
220
+ border-radius: 50%;
221
+ border: 1px solid var(--c-orgchart-node-border);
222
+ background: var(--c-orgchart-toggle-bg);
223
+ color: var(--c-orgchart-toggle-color);
224
+ font-size: 14px;
225
+ font-weight: 600;
226
+ cursor: pointer;
227
+ display: flex;
228
+ align-items: center;
229
+ justify-content: center;
230
+ z-index: 1;
231
+ transition: background 0.2s ease;
232
+ }
233
+ .c-orgchart__toggle:hover {
234
+ background: color-mix(in srgb, var(--c-orgchart-node-border) 20%, var(--c-orgchart-toggle-bg));
235
+ }
236
+ .c-orgchart--horizontal .c-orgchart__toggle {
237
+ bottom: auto;
238
+ left: auto;
239
+ right: -12px;
240
+ top: 50%;
241
+ transform: translateY(-50%);
242
+ }
243
+
244
+ /* ─── 缩放控制 ─── */
245
+ .c-orgchart__controls {
246
+ position: absolute;
247
+ bottom: 16px;
248
+ right: 16px;
249
+ display: flex;
250
+ align-items: center;
251
+ gap: 4px;
252
+ background: var(--c-orgchart-controls-bg);
253
+ border-radius: 8px;
254
+ padding: 4px;
255
+ box-shadow: 0 2px 8px var(--c-orgchart-controls-shadow);
256
+ z-index: 10;
257
+ }
258
+ .c-orgchart__control-btn {
259
+ width: 32px;
260
+ height: 32px;
261
+ border: none;
262
+ border-radius: 6px;
263
+ background: transparent;
264
+ color: var(--c-orgchart-label-color);
265
+ font-size: 16px;
266
+ cursor: pointer;
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: center;
270
+ transition: background 0.2s ease;
271
+ }
272
+ .c-orgchart__control-btn:hover {
273
+ background: color-mix(in srgb, var(--c-orgchart-node-border) 30%, transparent);
274
+ }
275
+ .c-orgchart__zoom-level {
276
+ font-size: 12px;
277
+ color: var(--c-orgchart-subtitle-color);
278
+ min-width: 40px;
279
+ text-align: center;
280
+ }
281
+
282
+ /*# sourceMappingURL=C_OrgChart-ChZu346B.css.map*/
@@ -0,0 +1,2 @@
1
+ import { a as OrgChartProps, i as OrgChartNode, n as OrgChartDirection, r as OrgChartLineStyle, t as _default } from "./index20.vue.js";
2
+ export { _default as C_OrgChart, type OrgChartDirection, type OrgChartLineStyle, type OrgChartNode, type OrgChartProps };
@@ -0,0 +1,2 @@
1
+ import { a as OrgChartProps, i as OrgChartNode, n as OrgChartDirection, r as OrgChartLineStyle, t as _default } from "./index20.vue.js";
2
+ export { _default as C_OrgChart, type OrgChartDirection, type OrgChartLineStyle, type OrgChartNode, type OrgChartProps };
@@ -0,0 +1 @@
1
+ import{t as e}from"./C_OrgChart2.js";export{e as C_OrgChart};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_OrgChart.js","names":["node","$emit","collapsible","$slots"],"sources":["../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createSlots as o,createVNode as s,defineComponent as c,guardReactiveProps as l,normalizeClass as u,normalizeProps as d,normalizeStyle as f,openBlock as p,ref as m,renderList as h,renderSlot as g,resolveComponent as _,toDisplayString as v,withCtx as y,withModifiers as b}from"vue";const x={class:`c-orgchart__node-wrapper`},S={class:`c-orgchart__node-default`},C={key:0,class:`c-orgchart__avatar`},w=[`src`,`alt`],T={class:`c-orgchart__info`},E={class:`c-orgchart__label`},D={key:0,class:`c-orgchart__subtitle`},O={key:0,class:`c-orgchart__children`};var k=c({name:`OrgNode`,__name:`OrgNode`,props:{node:{},collapsible:{type:Boolean}},emits:[`node-click`,`node-expand`,`node-collapse`],setup(o){let s=o,c=m(!s.node.collapsed),l=t(()=>s.node.children&&s.node.children.length>0),d=t(()=>!l.value),f=()=>{c.value=!c.value};return(t,o)=>{let s=_(`OrgNode`,!0);return p(),i(`div`,x,[r(` 节点卡片 `),a(`div`,{class:u([`c-orgchart__node`,[t.node.className,{"c-orgchart__node--leaf":d.value}]]),onClick:o[0]||=b(e=>t.$emit(`node-click`,t.node),[`stop`])},[g(t.$slots,`node`,{node:t.node,isLeaf:d.value,isExpanded:c.value},()=>[r(` 默认节点渲染 `),a(`div`,S,[t.node.avatar?(p(),i(`div`,C,[a(`img`,{src:t.node.avatar,alt:t.node.label},null,8,w)])):r(`v-if`,!0),a(`div`,T,[a(`div`,E,v(t.node.label),1),t.node.subtitle?(p(),i(`div`,D,v(t.node.subtitle),1)):r(`v-if`,!0)])])]),r(` 折叠/展开按钮 `),t.collapsible&&!d.value?(p(),i(`button`,{key:0,class:`c-orgchart__toggle`,onClick:b(f,[`stop`])},v(c.value?`−`:`+`),1)):r(`v-if`,!0)],2),r(` 子节点容器 `),l.value&&c.value?(p(),i(`div`,O,[(p(!0),i(e,null,h(t.node.children,e=>(p(),n(s,{key:e.id,node:e,collapsible:t.collapsible,onNodeClick:o[1]||=e=>t.$emit(`node-click`,e),onNodeExpand:o[2]||=e=>t.$emit(`node-expand`,e),onNodeCollapse:o[3]||=e=>t.$emit(`node-collapse`,e)},null,8,[`node`,`collapsible`]))),128))])):r(`v-if`,!0)])}}});const A={key:0,class:`c-orgchart__controls`},j={class:`c-orgchart__zoom-level`};var M=c({name:`C_OrgChart`,__name:`index`,props:{data:{},direction:{default:`vertical`},lineStyle:{default:`rounded`},lineColor:{default:`#d1d5db`},lineWidth:{default:2},nodeSpacing:{default:24},levelSpacing:{default:48},zoomable:{type:Boolean,default:!0},pannable:{type:Boolean,default:!0},initialZoom:{default:1},minZoom:{default:.3},maxZoom:{default:2},collapsible:{type:Boolean,default:!0}},emits:[`node-click`,`node-expand`,`node-collapse`],setup(e,{expose:n,emit:c}){let h=e,_=c,x=m(null),S=m(h.initialZoom),C=m(0),w=m(0),T=m(!1),E=m(0),D=m(0),O=t(()=>Math.round(S.value*100)),M=t(()=>({"--c-orgchart-line-color":h.lineColor,"--c-orgchart-line-width":`${h.lineWidth}px`,"--c-orgchart-node-spacing":`${h.nodeSpacing}px`,"--c-orgchart-level-spacing":`${h.levelSpacing}px`})),N=t(()=>({transform:`translate(${C.value}px, ${w.value}px) scale(${S.value})`,transformOrigin:`center top`})),P=e=>{if(!h.zoomable)return;let t=e.deltaY>0?-.1:.1,n=Math.max(h.minZoom,Math.min(h.maxZoom,S.value+t));S.value=Math.round(n*100)/100},F=e=>{h.pannable&&(T.value=!0,E.value=e.clientX-C.value,D.value=e.clientY-w.value)},I=e=>{T.value&&(C.value=e.clientX-E.value,w.value=e.clientY-D.value)},L=()=>{T.value=!1},R=()=>{S.value=Math.min(h.maxZoom,S.value+.1)},z=()=>{S.value=Math.max(h.minZoom,S.value-.1)},B=()=>{S.value=h.initialZoom,C.value=0,w.value=0},V=e=>_(`node-click`,e),H=e=>_(`node-expand`,e),U=e=>_(`node-collapse`,e);return n({zoomIn:R,zoomOut:z,resetView:B,zoom:S}),(e,t)=>(p(),i(`div`,{ref_key:`containerRef`,ref:x,class:u([`c-orgchart`,[`c-orgchart--${h.direction}`,`c-orgchart--line-${h.lineStyle}`]]),style:f(M.value),onWheel:b(P,[`prevent`]),onMousedown:F,onMousemove:I,onMouseup:L,onMouseleave:L},[a(`div`,{class:`c-orgchart__viewport`,style:f(N.value)},[s(k,{node:h.data,collapsible:h.collapsible,onNodeClick:V,onNodeExpand:H,onNodeCollapse:U},o({_:2},[e.$slots.node?{name:`node`,fn:y(t=>[g(e.$slots,`node`,d(l(t)))]),key:`0`}:void 0]),1032,[`node`,`collapsible`])],4),r(` 缩放控制 `),h.zoomable?(p(),i(`div`,A,[a(`button`,{class:`c-orgchart__control-btn`,title:`放大`,onClick:R},` + `),a(`span`,j,v(O.value)+`%`,1),a(`button`,{class:`c-orgchart__control-btn`,title:`缩小`,onClick:z},` − `),a(`button`,{class:`c-orgchart__control-btn`,title:`重置`,onClick:B},` ⟳ `)])):r(`v-if`,!0)],38))}});export{M as t};
2
+ //# sourceMappingURL=C_OrgChart2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_OrgChart2.js","names":["node","$emit","collapsible","$slots"],"sources":["../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./index20.vue.js";
1
+ import { t as _default } from "./index21.vue.js";
2
2
  export { _default as C_Progress };
@@ -1,2 +1,2 @@
1
- import { t as _default } from "./index20.vue.js";
1
+ import { t as _default } from "./index21.vue.js";
2
2
  export { _default as C_Progress };