vite-uni-dev-tool 0.0.11 → 0.0.13

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 (180) hide show
  1. package/README.md +55 -1
  2. package/dist/const.d.ts +133 -0
  3. package/dist/const.d.ts.map +1 -0
  4. package/dist/const.js +36 -0
  5. package/dist/core.d.ts +52 -0
  6. package/dist/core.d.ts.map +1 -0
  7. package/dist/core.js +80 -0
  8. package/dist/devConsole/index.d.ts +169 -0
  9. package/dist/devConsole/index.d.ts.map +1 -0
  10. package/dist/devConsole/index.js +270 -0
  11. package/dist/devEvent/index.d.ts +286 -0
  12. package/dist/devEvent/index.d.ts.map +1 -0
  13. package/dist/devEvent/index.js +435 -0
  14. package/dist/devEventBus/index.d.ts +42 -0
  15. package/dist/devEventBus/index.d.ts.map +1 -0
  16. package/dist/devEventBus/index.js +70 -0
  17. package/dist/devIntercept/index.d.ts +119 -0
  18. package/dist/devIntercept/index.d.ts.map +1 -0
  19. package/dist/devIntercept/index.js +582 -0
  20. package/dist/devRunJS/index.d.ts +67 -0
  21. package/dist/devRunJS/index.d.ts.map +1 -0
  22. package/dist/devStore/index.d.ts +178 -0
  23. package/dist/devStore/index.d.ts.map +1 -0
  24. package/dist/devStore/index.js +395 -0
  25. package/dist/devToolInfo/index.d.ts +17 -0
  26. package/dist/devToolInfo/index.d.ts.map +1 -0
  27. package/dist/devToolInfo/index.js +15 -0
  28. package/{dev → dist}/plugins/uniDevTool/uniDevTool.d.ts +15 -1
  29. package/dist/plugins/uniDevTool/uniDevTool.d.ts.map +1 -0
  30. package/dist/plugins/uniDevTool/uniDevTool.js +35 -0
  31. package/{dev → dist}/plugins/uniGlobalComponents/uniGlobalComponents.js +7 -7
  32. package/{dev → dist}/plugins/utils/index.d.ts +3 -0
  33. package/{dev → dist}/plugins/utils/index.d.ts.map +1 -1
  34. package/dist/plugins/utils/index.js +1 -0
  35. package/dist/type.d.ts +264 -0
  36. package/dist/type.d.ts.map +1 -0
  37. package/dist/utils/array.d.ts +2 -0
  38. package/dist/utils/array.d.ts.map +1 -0
  39. package/dist/utils/array.js +12 -0
  40. package/dist/utils/date.d.ts +19 -0
  41. package/dist/utils/date.d.ts.map +1 -0
  42. package/dist/utils/date.js +40 -0
  43. package/dist/utils/file.d.ts +11 -0
  44. package/dist/utils/file.d.ts.map +1 -0
  45. package/dist/utils/file.js +87 -0
  46. package/dist/utils/function.d.ts +28 -0
  47. package/dist/utils/function.d.ts.map +1 -0
  48. package/dist/utils/function.js +46 -0
  49. package/dist/utils/index.d.ts +11 -0
  50. package/dist/utils/index.d.ts.map +1 -0
  51. package/dist/utils/index.js +55 -0
  52. package/dist/utils/ip.d.ts +5 -0
  53. package/dist/utils/ip.d.ts.map +1 -0
  54. package/dist/utils/ip.js +21 -0
  55. package/dist/utils/language.d.ts +29 -0
  56. package/dist/utils/language.d.ts.map +1 -0
  57. package/dist/utils/language.js +50 -0
  58. package/dist/utils/object.d.ts +49 -0
  59. package/dist/utils/object.d.ts.map +1 -0
  60. package/dist/utils/object.js +118 -0
  61. package/dist/utils/page.d.ts +7 -0
  62. package/dist/utils/page.d.ts.map +1 -0
  63. package/dist/utils/page.js +7 -0
  64. package/dist/utils/platform.d.ts +4 -0
  65. package/dist/utils/platform.d.ts.map +1 -0
  66. package/dist/utils/platform.js +14 -0
  67. package/dist/utils/string.d.ts +45 -0
  68. package/dist/utils/string.d.ts.map +1 -0
  69. package/dist/utils/string.js +88 -0
  70. package/dist/utils/utils.d.ts +16 -0
  71. package/dist/utils/utils.d.ts.map +1 -0
  72. package/dist/v2/AutoSizer/utils.d.ts +5 -0
  73. package/dist/v2/AutoSizer/utils.d.ts.map +1 -0
  74. package/dist/v2/JsonPretty/hooks/useClipboard.d.ts +4 -0
  75. package/dist/v2/JsonPretty/hooks/useClipboard.d.ts.map +1 -0
  76. package/dist/v2/JsonPretty/hooks/useError.d.ts +8 -0
  77. package/dist/v2/JsonPretty/hooks/useError.d.ts.map +1 -0
  78. package/dist/v2/JsonPretty/type.d.ts +93 -0
  79. package/dist/v2/JsonPretty/type.d.ts.map +1 -0
  80. package/dist/v3/AutoSizer/utils.d.ts +5 -0
  81. package/dist/v3/AutoSizer/utils.d.ts.map +1 -0
  82. package/dist/v3/ConsoleList/staticTips.d.ts +13 -0
  83. package/dist/v3/ConsoleList/staticTips.d.ts.map +1 -0
  84. package/dist/v3/JsonPretty/hooks/useClipboard.d.ts +4 -0
  85. package/dist/v3/JsonPretty/hooks/useClipboard.d.ts.map +1 -0
  86. package/dist/v3/JsonPretty/hooks/useError.d.ts +8 -0
  87. package/dist/v3/JsonPretty/hooks/useError.d.ts.map +1 -0
  88. package/dist/v3/JsonPretty/type.d.ts +93 -0
  89. package/dist/v3/JsonPretty/type.d.ts.map +1 -0
  90. package/dist/v3/JsonPretty/utils/index.d.ts +10 -0
  91. package/dist/v3/JsonPretty/utils/index.d.ts.map +1 -0
  92. package/package.json +5 -5
  93. package/dev/components/AppInfo/index.vue +0 -36
  94. package/dev/components/AutoSizer/index.vue +0 -193
  95. package/dev/components/AutoSizer/index1.vue +0 -186
  96. package/dev/components/AutoSizer/utils.ts +0 -49
  97. package/dev/components/Button/index.vue +0 -34
  98. package/dev/components/CaptureScreen/index.vue +0 -62
  99. package/dev/components/Checkbox/index.vue +0 -40
  100. package/dev/components/CloseButton/index.vue +0 -26
  101. package/dev/components/Code/index.vue +0 -230
  102. package/dev/components/Connection/index.vue +0 -88
  103. package/dev/components/ConsoleList/Code.vue +0 -227
  104. package/dev/components/ConsoleList/ConsoleItem.vue +0 -186
  105. package/dev/components/ConsoleList/RunJSInput.vue +0 -235
  106. package/dev/components/ConsoleList/index.vue +0 -130
  107. package/dev/components/ConsoleList/staticTips.ts +0 -1145
  108. package/dev/components/DevTool/index.vue +0 -182
  109. package/dev/components/DevToolButton/index.vue +0 -213
  110. package/dev/components/DevToolTitle/index.vue +0 -21
  111. package/dev/components/DevToolWindow/index.vue +0 -1037
  112. package/dev/components/DeviceInfo/index.vue +0 -32
  113. package/dev/components/Empty/empty.png +0 -0
  114. package/dev/components/Empty/index.vue +0 -28
  115. package/dev/components/FilterInput/index.vue +0 -86
  116. package/dev/components/JsonPretty/components/Brackets/index.vue +0 -23
  117. package/dev/components/JsonPretty/components/Carets/index.vue +0 -59
  118. package/dev/components/JsonPretty/components/CheckController/index.vue +0 -125
  119. package/dev/components/JsonPretty/components/TreeNode/index.vue +0 -349
  120. package/dev/components/JsonPretty/hooks/useClipboard.ts +0 -21
  121. package/dev/components/JsonPretty/hooks/useError.ts +0 -21
  122. package/dev/components/JsonPretty/index.vue +0 -474
  123. package/dev/components/JsonPretty/type.ts +0 -125
  124. package/dev/components/JsonPretty/utils/index.ts +0 -172
  125. package/dev/components/NetworkList/NetworkDetail.vue +0 -197
  126. package/dev/components/NetworkList/NetworkItem.vue +0 -106
  127. package/dev/components/NetworkList/index.vue +0 -115
  128. package/dev/components/PiniaList/index.vue +0 -64
  129. package/dev/components/RouteList/index.vue +0 -110
  130. package/dev/components/RunJS/index.vue +0 -128
  131. package/dev/components/SettingList/index.vue +0 -225
  132. package/dev/components/StorageList/index.vue +0 -170
  133. package/dev/components/SystemInfo/index.vue +0 -34
  134. package/dev/components/Tabs/index.vue +0 -123
  135. package/dev/components/Tag/index.vue +0 -89
  136. package/dev/components/UniEvent/UniEventItem.vue +0 -124
  137. package/dev/components/UniEvent/index.vue +0 -94
  138. package/dev/components/UploadList/UploadDetail.vue +0 -208
  139. package/dev/components/UploadList/UploadItem.vue +0 -111
  140. package/dev/components/UploadList/index.vue +0 -104
  141. package/dev/components/VirtualList/index.vue +0 -112
  142. package/dev/components/VirtualListPro/AutoSize.vue +0 -43
  143. package/dev/components/VirtualListPro/index.vue +0 -175
  144. package/dev/components/VirtualListPro/readme.md +0 -40
  145. package/dev/components/VuexList/index.vue +0 -54
  146. package/dev/components/WebSocket/WebSocketItem.vue +0 -98
  147. package/dev/components/WebSocket/WebSocketList.vue +0 -176
  148. package/dev/components/WebSocket/index.vue +0 -111
  149. package/dev/components/WindowInfo/index.vue +0 -33
  150. package/dev/const.ts +0 -166
  151. package/dev/core.ts +0 -118
  152. package/dev/devConsole/index.ts +0 -350
  153. package/dev/devEvent/index.ts +0 -806
  154. package/dev/devEventBus/index.ts +0 -94
  155. package/dev/devIntercept/index.ts +0 -745
  156. package/dev/devRunJS/index.ts +0 -170
  157. package/dev/devStore/index.ts +0 -718
  158. package/dev/plugins/uniDevTool/uniDevTool.d.ts.map +0 -1
  159. package/dev/plugins/uniDevTool/uniDevTool.js +0 -36
  160. package/dev/plugins/utils/index.js +0 -1
  161. package/dev/shims-uni.d.ts +0 -43
  162. package/dev/type.ts +0 -264
  163. package/dev/utils/array.ts +0 -15
  164. package/dev/utils/date.ts +0 -75
  165. package/dev/utils/file.ts +0 -121
  166. package/dev/utils/function.ts +0 -192
  167. package/dev/utils/index.d.ts +0 -6
  168. package/dev/utils/index.ts +0 -46
  169. package/dev/utils/ip.ts +0 -79
  170. package/dev/utils/language.ts +0 -72
  171. package/dev/utils/object.ts +0 -298
  172. package/dev/utils/page.ts +0 -13
  173. package/dev/utils/platform.ts +0 -14
  174. package/dev/utils/string.ts +0 -133
  175. package/dev/utils/utils.ts +0 -198
  176. /package/{dev → dist}/index.d.ts +0 -0
  177. /package/{dev → dist}/index.d.ts.map +0 -0
  178. /package/{dev → dist}/index.js +0 -0
  179. /package/{dev → dist}/plugins/uniGlobalComponents/uniGlobalComponents.d.ts +0 -0
  180. /package/{dev → dist}/plugins/uniGlobalComponents/uniGlobalComponents.d.ts.map +0 -0
@@ -1,21 +0,0 @@
1
- import { ref } from "vue";
2
-
3
- export function useClipboard() {
4
- const copied = ref(false);
5
-
6
- const copy = async (source: string) => {
7
- try {
8
- await navigator.clipboard.writeText(source);
9
- copied.value = true;
10
- setTimeout(() => {
11
- copied.value = false;
12
- }, 300);
13
- } catch (err) {
14
- console.error("[json-pretty] Copy failed: ", err);
15
- }
16
- };
17
-
18
- return {
19
- copy
20
- };
21
- }
@@ -1,21 +0,0 @@
1
- import { watchEffect } from "vue";
2
-
3
- type UseErrorOptions = {
4
- emitListener: boolean;
5
- };
6
-
7
- export function useError(message: string, { emitListener }: UseErrorOptions) {
8
- const emit = () => {
9
- throw new Error(`[VueJsonPretty] ${message}`);
10
- };
11
-
12
- watchEffect(() => {
13
- if (emitListener) {
14
- emit();
15
- }
16
- });
17
-
18
- return {
19
- emit
20
- };
21
- }
@@ -1,474 +0,0 @@
1
- <template>
2
- <view
3
- :class="{
4
- 'json-pretty-tree': true,
5
- 'is-virtual': virtual,
6
- dark: theme === 'dark',
7
- }"
8
- :style="
9
- showLineNumber
10
- ? {
11
- paddingLeft: `${
12
- Number(originFlatData.length.toString().length) * 12
13
- }px`,
14
- ...style,
15
- }
16
- : style
17
- "
18
- >
19
- <VirtualListPro
20
- v-if="autoVirtual"
21
- :height="state.height"
22
- :pageSize="pageSize"
23
- :data="flatData"
24
- >
25
- <template v-slot="{ list, start }">
26
- <AutoSize
27
- v-for="(item, index) in list"
28
- :index="start + index"
29
- :key="start + index"
30
- >
31
- <TreeNode
32
- :data="data"
33
- :rootPath="rootPath"
34
- :indent="indent"
35
- :node="item"
36
- :collapsed="!!state.hiddenPaths[item.path]"
37
- :theme="theme"
38
- :showDoubleQuotes="showDoubleQuotes"
39
- :showLength="showLength"
40
- :checked="selectedPaths.includes(item.path)"
41
- :selectableType="selectableType"
42
- :showLine="showLine"
43
- :showLineNumber="showLineNumber"
44
- :showSelectController="showSelectController"
45
- :selectOnClickNode="selectOnClickNode"
46
- :nodeSelectable="nodeSelectable"
47
- :highlightSelectedNode="highlightSelectedNode"
48
- :editable="editable"
49
- :editableTrigger="editableTrigger"
50
- :showIcon="showIcon"
51
- :showKeyValueSpace="showKeyValueSpace"
52
- :showNodeActions="showNodeActions"
53
- @nodeClick="handleNodeClick"
54
- @nodeMouseover="handleNodeMouseover"
55
- @bracketsClick="handleBracketsClick"
56
- @iconClick="handleIconClick"
57
- @selectedChange="handleSelectedChange"
58
- @valueChange="handleValueChange"
59
- :style="
60
- itemHeight && itemHeight !== 20
61
- ? { lineHeight: `${itemHeight}px` }
62
- : {}
63
- "
64
- />
65
- </AutoSize>
66
- </template>
67
- </VirtualListPro>
68
- <template v-else>
69
- <TreeNode
70
- v-for="item in state?.visibleData"
71
- :key="item.id"
72
- :data="data"
73
- :rootPath="rootPath"
74
- :indent="indent"
75
- :node="item"
76
- :collapsed="!!state.hiddenPaths[item.path]"
77
- :theme="theme"
78
- :showDoubleQuotes="showDoubleQuotes"
79
- :showLength="showLength"
80
- :checked="selectedPaths.includes(item.path)"
81
- :selectableType="selectableType"
82
- :showLine="showLine"
83
- :showLineNumber="showLineNumber"
84
- :showSelectController="showSelectController"
85
- :selectOnClickNode="selectOnClickNode"
86
- :nodeSelectable="nodeSelectable"
87
- :highlightSelectedNode="highlightSelectedNode"
88
- :editable="editable"
89
- :editableTrigger="editableTrigger"
90
- :showIcon="showIcon"
91
- :showKeyValueSpace="showKeyValueSpace"
92
- :showNodeActions="showNodeActions"
93
- @nodeClick="handleNodeClick"
94
- @nodeMouseover="handleNodeMouseover"
95
- @bracketsClick="handleBracketsClick"
96
- @iconClick="handleIconClick"
97
- @selectedChange="handleSelectedChange"
98
- @valueChange="handleValueChange"
99
- :style="
100
- itemHeight && itemHeight !== 20
101
- ? { lineHeight: `${itemHeight}px` }
102
- : {}
103
- "
104
- />
105
- </template>
106
- </view>
107
- </template>
108
-
109
- <script setup lang="ts">
110
- import {
111
- reactive,
112
- computed,
113
- watchEffect,
114
- watch,
115
- defineEmits,
116
- onMounted,
117
- onUpdated,
118
- onUnmounted,
119
- } from 'vue';
120
- import TreeNode from './components/TreeNode/index.vue';
121
-
122
- import VirtualListPro from '../VirtualListPro/index.vue';
123
- import AutoSize from '../VirtualListPro/AutoSize.vue';
124
-
125
- import { emitError, jsonFlatten, cloneDeep, isFunction } from './utils';
126
-
127
- import type { NodeDataType, ScrollEvent, Tree } from './type';
128
- import { setValueByPath } from '../../utils';
129
-
130
- // 定义 emits 类型
131
- type Emits = {
132
- (event: 'nodeClick', node: NodeDataType): void;
133
- (event: 'nodeMouseover', node: NodeDataType): void;
134
- (event: 'bracketsClick', collapsed: boolean, node: NodeDataType): void;
135
- (event: 'iconClick', collapsed: boolean, node: NodeDataType): void;
136
- (
137
- event: 'selectedChange',
138
- newVal: string | string[],
139
- oldVal: string | string[],
140
- ): void;
141
- (event: 'update:selectedValue', value: string | string[]): void;
142
- (event: 'update:data', data: any): void;
143
- };
144
-
145
- // 定义 props 和 emits
146
- const props = withDefaults(defineProps<Tree>(), {
147
- fontSize: '12px',
148
- itemHeight: 20,
149
- height: 400,
150
- deep: Infinity,
151
- collapsedNodeLength: Infinity,
152
- collapsedOnClickBrackets: true,
153
- pathCollapsible: () => false,
154
- nodeSelectable: () => false,
155
-
156
- rootPath: 'root',
157
- indent: 2,
158
- showDoubleQuotes: true,
159
- showLine: true,
160
- selectOnClickNode: true,
161
- highlightSelectedNode: true,
162
- theme: 'light',
163
- showKeyValueSpace: true,
164
- editableTrigger: 'click',
165
- });
166
- const emits = defineEmits<Emits>();
167
-
168
- const originFlatData = computed(() => jsonFlatten(props.data, props.rootPath));
169
-
170
- const pageSize = computed(() => {
171
- return Math.ceil(props.height / props.itemHeight) + 5;
172
- });
173
-
174
- // 初始化折叠路径
175
- const initHiddenPaths = (
176
- deep: number,
177
- collapsedNodeLength: number,
178
- ): Record<string, 1> => {
179
- return originFlatData.value.reduce((acc, item) => {
180
- const doCollapse = item.level >= deep || item.length >= collapsedNodeLength;
181
- const pathComparison =
182
- isFunction(props?.pathCollapsible) &&
183
- props?.pathCollapsible?.(item as NodeDataType);
184
- if (
185
- (item.type === 'objectStart' || item.type === 'arrayStart') &&
186
- (doCollapse || pathComparison)
187
- ) {
188
- return {
189
- ...acc,
190
- [item.path]: 1,
191
- };
192
- }
193
- return acc;
194
- }, {});
195
- };
196
-
197
- // 响应式状态
198
- interface State {
199
- translateY: number;
200
- visibleData: NodeDataType[] | null;
201
- hiddenPaths: Record<string, 1>;
202
- height: number;
203
- }
204
-
205
- const state = reactive<State>({
206
- translateY: 0,
207
- visibleData: [],
208
- hiddenPaths: initHiddenPaths(props.deep, props.collapsedNodeLength),
209
- height: props.height ?? 400,
210
- });
211
-
212
- // 计算属性
213
- const flatData = computed(() => {
214
- let startHiddenItem: null | NodeDataType = null;
215
- const data: NodeDataType[] = [];
216
- const length = originFlatData.value.length;
217
- for (let i = 0; i < length; i++) {
218
- const cur = originFlatData.value[i];
219
- const item: NodeDataType = {
220
- ...cur,
221
- id: i,
222
- };
223
- const isHidden = state.hiddenPaths[item.path];
224
- if (startHiddenItem && startHiddenItem.path === item.path) {
225
- const isObject = startHiddenItem.type === 'objectStart';
226
- const mergeItem: NodeDataType = {
227
- ...item,
228
- ...startHiddenItem,
229
- showComma: item.showComma,
230
- content: isObject ? '{...}' : '[...]',
231
- type: isObject ? 'objectCollapsed' : 'arrayCollapsed',
232
- };
233
- startHiddenItem = null;
234
- data.push(mergeItem);
235
- } else if (isHidden && !startHiddenItem) {
236
- startHiddenItem = item;
237
- continue;
238
- } else {
239
- if (startHiddenItem) continue;
240
- else data.push(item);
241
- }
242
- }
243
- return data;
244
- });
245
-
246
- const selectedPaths = computed(() => {
247
- const value = props.selectedValue;
248
- if (value && props.selectableType === 'multiple' && Array.isArray(value)) {
249
- return value;
250
- }
251
- return [value];
252
- });
253
-
254
- const propsErrorMessage = computed(() => {
255
- const error =
256
- props.selectableType &&
257
- !props.selectOnClickNode &&
258
- !props.showSelectController;
259
- return error
260
- ? 'When selectableType is not null, selectOnClickNode and showSelectController cannot be false at the same time, because this will cause the selection to fail.'
261
- : '';
262
- });
263
-
264
- const autoVirtual = computed(() => {
265
- if (props.virtual) return true;
266
- if (typeof props.autoVirtualRow === 'number') {
267
- if (flatData.value.length > props.autoVirtualRow) {
268
- return true;
269
- }
270
- }
271
- return false;
272
- });
273
-
274
- // 更新可见数据
275
- // 优化 虚拟列表,每项高度自适应
276
- const updateVisibleData = (scrollTop: number = 0) => {
277
- const flatDataValue = flatData.value ?? [];
278
- if (autoVirtual.value) {
279
- const visibleCount = props.height / props.itemHeight;
280
- const scrollCount = Math.floor(scrollTop / props.itemHeight);
281
- let start =
282
- scrollCount < 0
283
- ? 0
284
- : scrollCount + visibleCount > flatDataValue.length
285
- ? flatDataValue.length - visibleCount
286
- : scrollCount;
287
- if (start < 0) {
288
- start = 0;
289
- }
290
- const end = start + visibleCount;
291
- state.translateY = start * props.itemHeight;
292
- state.visibleData = flatDataValue.filter(
293
- (item, index) => index >= start && index < end,
294
- );
295
- } else {
296
- state.visibleData = flatDataValue;
297
- }
298
- };
299
-
300
- // 事件处理
301
- const handleTreeScroll = (e: ScrollEvent) => {
302
- updateVisibleData(e?.detail?.scrollTop ?? 0);
303
- };
304
-
305
- const handleSelectedChange = ({ path }: NodeDataType) => {
306
- const type = props.selectableType;
307
- if (type === 'multiple') {
308
- const index = selectedPaths.value.findIndex((item) => item === path);
309
- const newVal = [...selectedPaths.value];
310
- if (index !== -1) {
311
- newVal.splice(index, 1);
312
- } else {
313
- newVal.push(path);
314
- }
315
- emits('update:selectedValue', newVal);
316
-
317
- emits('selectedChange', newVal, [...selectedPaths.value]);
318
- } else if (type === 'single') {
319
- if (selectedPaths.value[0] !== path) {
320
- const [oldVal] = selectedPaths.value;
321
- const newVal = path;
322
- emits('update:selectedValue', newVal);
323
- emits('selectedChange', newVal, oldVal);
324
- }
325
- }
326
- };
327
-
328
- const handleNodeClick = (node: NodeDataType) => {
329
- emits('nodeClick', node);
330
- };
331
-
332
- const handleNodeMouseover = (node: NodeDataType) => {
333
- emits('nodeMouseover', node);
334
- };
335
-
336
- const updateCollapsedPaths = (collapsed: boolean, path: string) => {
337
- if (collapsed) {
338
- state.hiddenPaths = {
339
- ...state.hiddenPaths,
340
- [path]: 1,
341
- };
342
- } else {
343
- const newPaths = { ...state.hiddenPaths };
344
- delete newPaths[path];
345
- state.hiddenPaths = newPaths;
346
- }
347
-
348
- if (path === props.rootPath) {
349
- state.height = collapsed ? props.itemHeight : props.height;
350
- }
351
- };
352
-
353
- const handleBracketsClick = (collapsed: boolean, node: NodeDataType) => {
354
- if (props.collapsedOnClickBrackets) {
355
- updateCollapsedPaths(collapsed, node.path);
356
- }
357
- emits('bracketsClick', collapsed, node);
358
- };
359
-
360
- const handleIconClick = (collapsed: boolean, node: NodeDataType) => {
361
- updateCollapsedPaths(collapsed, node.path);
362
- emits('iconClick', collapsed, node);
363
- };
364
-
365
- const handleValueChange = (value: unknown, path: string) => {
366
- const newData = cloneDeep(props.data);
367
- const rootPath = props.rootPath;
368
- const key = path.slice(rootPath.length);
369
- setValueByPath(newData, key, value);
370
- emits('update:data', newData);
371
- };
372
-
373
- // 监听和副作用
374
- watchEffect(() => {
375
- if (propsErrorMessage.value) {
376
- emitError(propsErrorMessage.value);
377
- }
378
- });
379
-
380
- watchEffect(() => {
381
- if (flatData.value) {
382
- updateVisibleData();
383
- }
384
- });
385
-
386
- watch(
387
- () => props.deep,
388
- (val) => {
389
- if (val)
390
- state.hiddenPaths = initHiddenPaths(val, props.collapsedNodeLength);
391
- },
392
- );
393
-
394
- watch(
395
- () => props.collapsedNodeLength,
396
- (val) => {
397
- if (val) state.hiddenPaths = initHiddenPaths(props.deep, val);
398
- },
399
- );
400
-
401
- // 监听是否折叠,默认不折叠
402
- watch(
403
- () => props.collapsed,
404
- (val) => {
405
- if (val) {
406
- updateCollapsedPaths(true, props.rootPath);
407
- }
408
- },
409
- {
410
- immediate: true,
411
- },
412
- );
413
-
414
- // 生命周期钩子
415
- onMounted(() => {
416
- updateVisibleData();
417
- });
418
-
419
- onUpdated(() => {
420
- // 可选的更新后操作
421
- });
422
-
423
- onUnmounted(() => {
424
- // 清理操作
425
- });
426
- </script>
427
-
428
- <style>
429
- .json-pretty-tree {
430
- /* theme color */
431
- --json-pretty-color-primary: #9254de;
432
- --json-pretty-color-info: #1d8ce0;
433
- --json-pretty-color-error: #ff4d4f;
434
- --json-pretty-color-success: #888888;
435
- --json-pretty-color-nil: #020201;
436
-
437
- /* field values color */
438
- --json-pretty-color-string: var(--json-pretty-color-success);
439
- --json-pretty-color-number: var(--json-pretty-color-info);
440
- --json-pretty-color-boolean: var(--json-pretty-color-info);
441
- --json-pretty-color-null: var(--json-pretty-color-nil);
442
- --json-pretty-color-undefined: var(--json-pretty-color-nil);
443
-
444
- /* highlight */
445
- --json-pretty-highlight-bg-color: rgba(146, 84, 222, 0.1);
446
- --json-pretty-highlight-bg-color-dark: #2e4558;
447
-
448
- /* comment */
449
- --json-pretty-comment-color: #bfcbd9;
450
-
451
- /* common border-color */
452
- --json-pretty-border-color: #bfcbd9;
453
-
454
- font-family:
455
- 'Monaco', 'Menlo', 'Consolas', 'Bitstream Vera Sans Mono', monospace;
456
- font-size: v-bind(fontSize);
457
- text-align: left;
458
- overflow: auto;
459
- position: relative;
460
- width: 100%;
461
- }
462
-
463
- .json-pretty-tree.is-virtual {
464
- overflow: auto;
465
- }
466
-
467
- .json-pretty-tree-node {
468
- white-space: nowrap;
469
- }
470
-
471
- .dark {
472
- /* 深色主题样式 */
473
- }
474
- </style>
@@ -1,125 +0,0 @@
1
- import type { CSSProperties } from 'vue';
2
-
3
- export type JsonPrettyNodeProps = {
4
- data: any;
5
- rootPath: string;
6
- indent: number;
7
- showLength: boolean;
8
- showDoubleQuotes: boolean;
9
- renderNodeKey: any;
10
- renderNodeValue: any;
11
- };
12
- export interface NodeDataType extends JSONFlattenReturnType {
13
- id: number;
14
- }
15
-
16
- export interface JSONFlattenOptions {
17
- key?: string;
18
- index?: number;
19
- showComma: boolean;
20
- length: number;
21
- type:
22
- | 'content'
23
- | 'objectStart'
24
- | 'objectEnd'
25
- | 'objectCollapsed'
26
- | 'arrayStart'
27
- | 'arrayEnd'
28
- | 'arrayCollapsed';
29
- }
30
-
31
- export type JSONDataType =
32
- | string
33
- | number
34
- | boolean
35
- | unknown[]
36
- | Record<string, unknown>
37
- | null;
38
-
39
- export interface JSONFlattenReturnType extends JSONFlattenOptions {
40
- content: string | number | null | boolean;
41
- level: number;
42
- path: string;
43
- }
44
-
45
- export type StyleValue =
46
- | false
47
- | null
48
- | undefined
49
- | string
50
- | CSSProperties
51
- | Array<StyleValue>;
52
-
53
- // 定义 Props 类型
54
- type SelectableType = 'single' | 'multiple' | null;
55
-
56
- export type TreeNodeProps = Partial<{
57
- data: any;
58
- indent: number;
59
- showLength: boolean;
60
- showDoubleQuotes: boolean;
61
- selectableType: SelectableType;
62
- showSelectController: boolean;
63
- showLine: boolean;
64
- showLineNumber: boolean;
65
- showNodeActions: boolean;
66
- selectOnClickNode: boolean;
67
- highlightSelectedNode: boolean;
68
- showIcon: boolean;
69
- theme: string;
70
- showKeyValueSpace: boolean;
71
- editable: boolean;
72
- editableTrigger: string;
73
- node: NodeDataType;
74
- checked: boolean;
75
- collapsed: boolean;
76
- style: CSSProperties;
77
- fontSize: string;
78
- onNodeClick: (node: NodeDataType) => void;
79
- onNodeMouseover: (node: NodeDataType) => void;
80
- onBracketsClick: (collapsed: boolean, node: NodeDataType) => void;
81
- onIconClick: (collapsed: boolean, node: NodeDataType) => void;
82
- onValueChange: (value: boolean, path: string) => void;
83
- onSelectedChange: (node: NodeDataType) => void;
84
- }> &
85
- TreeNodeRequiredProps;
86
-
87
- export type TreeNodeRequiredProps = {
88
- node: NodeDataType;
89
- rootPath: string;
90
- nodeSelectable: (node: NodeDataType) => boolean;
91
- };
92
-
93
- export type TreeRequired = TreeNodeRequiredProps & {};
94
-
95
- export type Tree = Partial<TreeNodeProps> &
96
- Partial<
97
- {
98
- deep: number;
99
- collapsedNodeLength: number;
100
- virtual: boolean;
101
- itemHeight: number;
102
- height: number;
103
- selectedValue: string | Array<any>;
104
- collapsedOnClickBrackets: boolean;
105
- style: CSSProperties;
106
- pathCollapsible: (node: NodeDataType) => boolean;
107
- /** 超过行数将会自动启用虚拟列表 */
108
- autoVirtualRow: number;
109
- } & TreeRequired
110
- >;
111
-
112
- export interface ScrollEvent {
113
- detail: {
114
- scrollLeft: number; // 横向滚动距离
115
- scrollTop: number; // 纵向滚动距离
116
- scrollHeight: number; // 可滚动区域的高度
117
- scrollWidth: number; // 可滚动区域的宽度
118
- deltaX: number; // 横向滚动增量
119
- deltaY: number; // 纵向滚动增量
120
- };
121
- target: EventTarget; // 事件源组件
122
- currentTarget: EventTarget; // 当前组件
123
- timeStamp: number; // 事件触发时间戳
124
- type: string; // 事件类型,这里是 'scroll'
125
- }