vite-uni-dev-tool 1.1.0 → 1.2.1

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 (195) hide show
  1. package/README.md +21 -1
  2. package/dist/const.cjs +1 -1
  3. package/dist/const.d.ts +2 -1
  4. package/dist/const.js +1 -1
  5. package/dist/core-shared.d.ts +2 -3
  6. package/dist/core.d.ts +8 -8
  7. package/dist/core.js +2 -2
  8. package/dist/i18n/index.d.ts +0 -1
  9. package/dist/i18n/instance.d.ts +0 -1
  10. package/dist/i18n/locales/en.cjs +1 -1
  11. package/dist/i18n/locales/en.d.ts +6 -1
  12. package/dist/i18n/locales/en.js +1 -1
  13. package/dist/i18n/locales/zh-Hans.cjs +1 -1
  14. package/dist/i18n/locales/zh-Hans.d.ts +6 -1
  15. package/dist/i18n/locales/zh-Hans.js +1 -1
  16. package/dist/index.d.ts +0 -1
  17. package/dist/modules/devConsole/index.cjs +4 -4
  18. package/dist/modules/devConsole/index.d.ts +6 -107
  19. package/dist/modules/devConsole/index.js +4 -4
  20. package/dist/modules/devEvent/index.cjs +3 -3
  21. package/dist/modules/devEvent/index.d.ts +2 -3
  22. package/dist/modules/devEvent/index.js +3 -3
  23. package/dist/modules/devIntercept/index.cjs +14 -14
  24. package/dist/modules/devIntercept/index.d.ts +34 -6
  25. package/dist/modules/devIntercept/index.js +14 -14
  26. package/dist/modules/devStore/index.cjs +1 -1
  27. package/dist/modules/devStore/index.d.ts +48 -40
  28. package/dist/modules/devStore/index.js +1 -1
  29. package/dist/modules/devToolInfo/index.cjs +1 -1
  30. package/dist/modules/devToolInfo/index.d.ts +6 -25
  31. package/dist/modules/devToolInfo/index.js +1 -1
  32. package/dist/plugins/uniDevTool/transform/transformApp.d.ts +0 -1
  33. package/dist/plugins/uniDevTool/transform/transformMain.cjs +3 -3
  34. package/dist/plugins/uniDevTool/transform/transformMain.d.ts +2 -2
  35. package/dist/plugins/uniDevTool/transform/transformMain.js +3 -3
  36. package/dist/plugins/uniDevTool/transform/transformVue.cjs +31 -25
  37. package/dist/plugins/uniDevTool/transform/transformVue.d.ts +2 -2
  38. package/dist/plugins/uniDevTool/transform/transformVue.js +30 -24
  39. package/dist/plugins/uniDevTool/uniDevTool.cjs +3 -3
  40. package/dist/plugins/uniDevTool/uniDevTool.d.ts +3 -2
  41. package/dist/plugins/uniDevTool/uniDevTool.js +3 -3
  42. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.d.ts +0 -1
  43. package/dist/plugins/utils/index.d.ts +0 -1
  44. package/dist/shims-uni.d.ts +26 -22
  45. package/dist/type.d.ts +47 -43
  46. package/dist/utils/array.d.ts +0 -1
  47. package/dist/utils/date.d.ts +0 -1
  48. package/dist/utils/file.d.ts +0 -1
  49. package/dist/utils/function.d.ts +0 -1
  50. package/dist/utils/index.d.ts +0 -1
  51. package/dist/utils/ip.d.ts +0 -1
  52. package/dist/utils/language.d.ts +14 -15
  53. package/dist/utils/object.cjs +1 -1
  54. package/dist/utils/object.d.ts +7 -8
  55. package/dist/utils/object.js +1 -1
  56. package/dist/utils/openLink.d.ts +0 -1
  57. package/dist/utils/page.d.ts +0 -1
  58. package/dist/utils/platform.d.ts +0 -1
  59. package/dist/utils/string.d.ts +0 -1
  60. package/dist/utils/utils.d.ts +0 -1
  61. package/dist/v3/DevTool/components/BluetoothList/BluetoothItem.vue +199 -199
  62. package/dist/v3/DevTool/components/BluetoothList/BluetoothTool.vue +730 -730
  63. package/dist/v3/DevTool/components/BluetoothList/index.vue +167 -167
  64. package/dist/v3/DevTool/components/CaptureScreen/index.vue +109 -109
  65. package/dist/v3/DevTool/components/ConsoleList/ConsoleItem.vue +230 -225
  66. package/dist/v3/DevTool/components/ConsoleList/RunJSInput.vue +247 -247
  67. package/dist/v3/DevTool/components/ConsoleList/index.vue +171 -171
  68. package/dist/v3/DevTool/components/ConsoleList/staticTips.ts +1145 -1145
  69. package/dist/v3/DevTool/components/DevToolButton/index.vue +42 -6
  70. package/dist/v3/DevTool/components/DevToolTitle/index.vue +24 -24
  71. package/dist/v3/DevTool/components/DevToolWindow/DevToolOverlay.vue +197 -197
  72. package/dist/v3/DevTool/components/DevToolWindow/hooks/dataUtils.ts +48 -48
  73. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolData.ts +411 -387
  74. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolHandlers.ts +644 -629
  75. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolOverlay.ts +201 -197
  76. package/dist/v3/DevTool/components/DevToolWindow/index.vue +27 -64
  77. package/dist/v3/DevTool/components/ElEvent/ElEventItem.vue +105 -105
  78. package/dist/v3/DevTool/components/ElEvent/index.vue +106 -106
  79. package/dist/v3/DevTool/components/Instance/components/InstanceTreeNode.vue +265 -265
  80. package/dist/v3/DevTool/components/Instance/flatten.ts +226 -226
  81. package/dist/v3/DevTool/components/Instance/index.vue +94 -94
  82. package/dist/v3/DevTool/components/Instance/registry.ts +49 -49
  83. package/dist/v3/DevTool/components/Instance/transformTree.ts +393 -375
  84. package/dist/v3/DevTool/components/Instance/transformTreeCtx.ts +268 -268
  85. package/dist/v3/DevTool/components/Instance/typing.d.ts +43 -43
  86. package/dist/v3/DevTool/components/InstanceDetail/index.vue +485 -485
  87. package/dist/v3/DevTool/components/JsonDetail/index.vue +70 -70
  88. package/dist/v3/DevTool/components/NFCList/NFCItem.vue +112 -112
  89. package/dist/v3/DevTool/components/NFCList/NFCTool.vue +454 -454
  90. package/dist/v3/DevTool/components/NFCList/const.ts +56 -56
  91. package/dist/v3/DevTool/components/NFCList/index.vue +94 -94
  92. package/dist/v3/DevTool/components/NetworkList/InterceptConfig.vue +624 -624
  93. package/dist/v3/DevTool/components/NetworkList/InterceptItem.vue +140 -140
  94. package/dist/v3/DevTool/components/NetworkList/NetworkDetail.vue +287 -287
  95. package/dist/v3/DevTool/components/NetworkList/NetworkIntercept.vue +88 -88
  96. package/dist/v3/DevTool/components/NetworkList/NetworkItem.vue +163 -163
  97. package/dist/v3/DevTool/components/NetworkList/NetworkSend.vue +589 -589
  98. package/dist/v3/DevTool/components/NetworkList/const.ts +4 -4
  99. package/dist/v3/DevTool/components/NetworkList/hooks/useNetworkForm.ts +86 -86
  100. package/dist/v3/DevTool/components/NetworkList/index.vue +160 -160
  101. package/dist/v3/DevTool/components/NetworkList/utils.ts +101 -101
  102. package/dist/v3/DevTool/components/Performance/index.vue +498 -498
  103. package/dist/v3/DevTool/components/Performance/modules/PerformanceMetrics.vue +153 -153
  104. package/dist/v3/DevTool/components/Performance/modules/usePerformanceChart.ts +460 -460
  105. package/dist/v3/DevTool/components/Performance/modules/usePerformanceData.ts +258 -258
  106. package/dist/v3/DevTool/components/PiniaList/index.vue +93 -93
  107. package/dist/v3/DevTool/components/RunJS/index.vue +148 -148
  108. package/dist/v3/DevTool/components/ScanCodeList/ScanCodeItem.vue +97 -97
  109. package/dist/v3/DevTool/components/ScanCodeList/index.vue +100 -100
  110. package/dist/v3/DevTool/components/SettingButton/index.vue +45 -45
  111. package/dist/v3/DevTool/components/SettingList/index.vue +226 -218
  112. package/dist/v3/DevTool/components/SettingList/modules/SettingBarrage.vue +320 -304
  113. package/dist/v3/DevTool/components/SettingList/modules/SettingDevTool.vue +212 -212
  114. package/dist/v3/DevTool/components/SettingList/modules/SettingInfo.vue +157 -157
  115. package/dist/v3/DevTool/components/SettingList/modules/SettingLanguage.vue +74 -74
  116. package/dist/v3/DevTool/components/SettingList/modules/SettingLog.vue +230 -230
  117. package/dist/v3/DevTool/components/SettingList/typing.d.ts +2 -2
  118. package/dist/v3/DevTool/components/SourceCode/Line.vue +127 -127
  119. package/dist/v3/DevTool/components/SourceCode/parseCode.ts +609 -609
  120. package/dist/v3/DevTool/components/StorageList/index.vue +174 -174
  121. package/dist/v3/DevTool/components/TransferList/TransferDetail.vue +268 -268
  122. package/dist/v3/DevTool/components/VuexList/index.vue +84 -84
  123. package/dist/v3/DevTool/index.vue +85 -138
  124. package/dist/v3/components/AppTransition/index.vue +156 -176
  125. package/dist/v3/components/AutoSizer/index.vue +192 -192
  126. package/dist/v3/components/AutoSizer/index1.vue +184 -184
  127. package/dist/v3/components/AutoSizer/utils.ts +49 -49
  128. package/dist/v3/components/Barrage/BarrageItem.vue +194 -137
  129. package/dist/v3/components/Barrage/index.vue +205 -202
  130. package/dist/v3/components/CircularButton/index.vue +84 -84
  131. package/dist/v3/components/CustomSwiper/CustomSwiperItem.vue +49 -49
  132. package/dist/v3/components/CustomSwiper/index.vue +104 -104
  133. package/dist/v3/components/DevErrorBoundary/index.vue +388 -0
  134. package/dist/v3/components/DraggableContainer/index.vue +186 -73
  135. package/dist/v3/components/Empty/index.vue +29 -29
  136. package/dist/v3/components/FilterSelect/index.vue +179 -179
  137. package/dist/v3/components/JsonPretty/components/Brackets/index.vue +27 -27
  138. package/dist/v3/components/JsonPretty/components/Carets/index.vue +59 -59
  139. package/dist/v3/components/JsonPretty/components/CheckController/index.vue +136 -136
  140. package/dist/v3/components/JsonPretty/components/TreeNode/index.vue +387 -387
  141. package/dist/v3/components/JsonPretty/hooks/useClipboard.ts +21 -21
  142. package/dist/v3/components/JsonPretty/hooks/useError.ts +21 -21
  143. package/dist/v3/components/JsonPretty/type.ts +127 -127
  144. package/dist/v3/components/JsonPretty/utils/index.ts +169 -169
  145. package/dist/v3/components/MovableContainer/index.vue +10 -4
  146. package/dist/v3/components/Pick/index.vue +321 -322
  147. package/dist/v3/components/Tag/index.vue +113 -113
  148. package/dist/v3/components/VirtualList/AutoSize.vue +40 -40
  149. package/dist/v3/components/VirtualList/index.vue +416 -416
  150. package/dist/v3/hooks/useBluetooth/index.ts +561 -561
  151. package/dist/v3/hooks/useContainerStyle.ts +95 -153
  152. package/dist/v3/hooks/useNFC/index.ts +107 -107
  153. package/dist/v3/hooks/useNFC/typing.d.ts +396 -396
  154. package/dist/v3/hooks/useNFC/useNFCAndroid.ts +966 -966
  155. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.ts +812 -812
  156. package/dist/v3/hooks/useNFC/utils.ts +754 -754
  157. package/dist/v3/hooks/useRequest/index.ts +586 -586
  158. package/dist/v3/hooks/useRequest/utils.ts +267 -267
  159. package/dist/v3/hooks/useScanCode/index.ts +206 -206
  160. package/dist/v3/hooks/useWebsocket/index.ts +253 -253
  161. package/dist/v3/styles/theme.ts +12 -12
  162. package/package.json +70 -59
  163. package/dist/const.d.ts.map +0 -1
  164. package/dist/core-shared.d.ts.map +0 -1
  165. package/dist/core.d.ts.map +0 -1
  166. package/dist/i18n/index.d.ts.map +0 -1
  167. package/dist/i18n/instance.d.ts.map +0 -1
  168. package/dist/i18n/locales/en.d.ts.map +0 -1
  169. package/dist/i18n/locales/zh-Hans.d.ts.map +0 -1
  170. package/dist/index.d.ts.map +0 -1
  171. package/dist/modules/devConsole/index.d.ts.map +0 -1
  172. package/dist/modules/devEvent/index.d.ts.map +0 -1
  173. package/dist/modules/devIntercept/index.d.ts.map +0 -1
  174. package/dist/modules/devStore/index.d.ts.map +0 -1
  175. package/dist/modules/devToolInfo/index.d.ts.map +0 -1
  176. package/dist/plugins/uniDevTool/transform/transformApp.d.ts.map +0 -1
  177. package/dist/plugins/uniDevTool/transform/transformMain.d.ts.map +0 -1
  178. package/dist/plugins/uniDevTool/transform/transformVue.d.ts.map +0 -1
  179. package/dist/plugins/uniDevTool/uniDevTool.d.ts.map +0 -1
  180. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.d.ts.map +0 -1
  181. package/dist/plugins/utils/index.d.ts.map +0 -1
  182. package/dist/type.d.ts.map +0 -1
  183. package/dist/utils/array.d.ts.map +0 -1
  184. package/dist/utils/date.d.ts.map +0 -1
  185. package/dist/utils/file.d.ts.map +0 -1
  186. package/dist/utils/function.d.ts.map +0 -1
  187. package/dist/utils/index.d.ts.map +0 -1
  188. package/dist/utils/ip.d.ts.map +0 -1
  189. package/dist/utils/language.d.ts.map +0 -1
  190. package/dist/utils/object.d.ts.map +0 -1
  191. package/dist/utils/openLink.d.ts.map +0 -1
  192. package/dist/utils/page.d.ts.map +0 -1
  193. package/dist/utils/platform.d.ts.map +0 -1
  194. package/dist/utils/string.d.ts.map +0 -1
  195. package/dist/utils/utils.d.ts.map +0 -1
@@ -1,304 +1,320 @@
1
- <template>
2
- <view class="setting-item" :class="theme">
3
- <DevToolTitle>{{ t('common.barrage') }}</DevToolTitle>
4
- <view class="setting-item-content">
5
- <!-- 开启弹幕 -->
6
- <view class="setting-row">
7
- <view class="setting-label">{{ t('common.enableBarrage') }}</view>
8
- <switch
9
- :checked="barrageVisible"
10
- @change="onBarrageChange"
11
- color="var(--dev-tool-main-color)"
12
- style="transform: scale(0.7)" />
13
- </view>
14
-
15
- <!-- 主窗口打开时显示 -->
16
- <view v-if="barrageVisible" class="setting-row">
17
- <view class="setting-label">{{ t('common.barrageShowWhenOpen') }}</view>
18
- <switch
19
- :checked="barrageShowWhenOpen"
20
- @change="onBarrageShowWhenOpenChange"
21
- color="var(--dev-tool-main-color)"
22
- style="transform: scale(0.7)" />
23
- </view>
24
-
25
- <view v-if="barrageVisible" class="barrage-advanced">
26
- <!-- 轨道数量 -->
27
- <view class="setting-row-group">
28
- <view class="setting-row-header">
29
- <view class="setting-label">
30
- {{ t('common.barrageMaxTracks') }}
31
- </view>
32
- <view class="setting-value">{{ barrageMaxTracks }}</view>
33
- </view>
34
- <slider
35
- class="barrage-slider"
36
- :value="barrageMaxTracks"
37
- min="1"
38
- max="20"
39
- step="1"
40
- activeColor="var(--dev-tool-main-color)"
41
- backgroundColor="var(--dev-tool-border-color)"
42
- block-size="16"
43
- @change="onMaxTracksChange" />
44
- </view>
45
-
46
- <!-- 轨道高度 -->
47
- <view class="setting-row-group">
48
- <view class="setting-row-header">
49
- <view class="setting-label">
50
- {{ t('common.barrageTrackHeight') }}
51
- </view>
52
- <view class="setting-value">{{ barrageTrackHeight }}px</view>
53
- </view>
54
- <slider
55
- class="barrage-slider"
56
- :value="barrageTrackHeight"
57
- min="20"
58
- max="60"
59
- step="2"
60
- activeColor="var(--dev-tool-main-color)"
61
- backgroundColor="var(--dev-tool-border-color)"
62
- block-size="16"
63
- @change="onTrackHeightChange" />
64
- </view>
65
-
66
- <!-- 起始高度 -->
67
- <view class="setting-row-group">
68
- <view class="setting-row-header">
69
- <view class="setting-label">{{ t('common.barrageStartTop') }}</view>
70
- <view class="setting-value">{{ barrageStartTop }}px</view>
71
- </view>
72
- <slider
73
- class="barrage-slider"
74
- :value="barrageStartTop"
75
- min="0"
76
- max="200"
77
- step="5"
78
- activeColor="var(--dev-tool-main-color)"
79
- backgroundColor="var(--dev-tool-border-color)"
80
- block-size="16"
81
- @change="onStartTopChange" />
82
- </view>
83
-
84
- <!-- 弹幕停留时长 -->
85
- <view class="setting-row-group">
86
- <view class="setting-row-header">
87
- <view class="setting-label">{{ t('common.barrageDuration') }}</view>
88
- <view class="setting-value">{{ barrageDuration }}s</view>
89
- </view>
90
- <slider
91
- class="barrage-slider"
92
- :value="barrageDuration"
93
- min="3"
94
- max="20"
95
- step="1"
96
- activeColor="var(--dev-tool-main-color)"
97
- backgroundColor="var(--dev-tool-border-color)"
98
- block-size="16"
99
- @change="onDurationChange" />
100
- </view>
101
-
102
- <!-- 弹幕文字截断长度 -->
103
- <view class="setting-row-group">
104
- <view class="setting-row-header">
105
- <view class="setting-label">
106
- {{ t('common.barrageMaxLength') }}
107
- </view>
108
- <view class="setting-value">{{ barrageMaxLength }}</view>
109
- </view>
110
- <slider
111
- class="barrage-slider"
112
- :value="barrageMaxLength"
113
- min="10"
114
- max="500"
115
- step="10"
116
- activeColor="var(--dev-tool-main-color)"
117
- backgroundColor="var(--dev-tool-border-color)"
118
- block-size="16"
119
- @change="onMaxLengthChange" />
120
- </view>
121
-
122
- <!-- 显示类型 -->
123
- <view class="setting-row-group">
124
- <view class="setting-row-header">
125
- <view class="setting-label">{{ t('common.barrageTypes') }}</view>
126
- </view>
127
- <checkbox-group class="type-checkbox-group" @change="onTypesChange">
128
- <label
129
- v-for="item in allTypes"
130
- :key="item"
131
- class="type-checkbox-item">
132
- <checkbox
133
- :value="item"
134
- :checked="(barrageTypes || []).includes(item)"
135
- color="var(--dev-tool-main-color)"
136
- style="transform: scale(0.8)" />
137
- <text class="type-checkbox-label">{{ item }}</text>
138
- </label>
139
- </checkbox-group>
140
- </view>
141
- </view>
142
- </view>
143
- </view>
144
- </template>
145
-
146
- <script lang="ts" setup>
147
- import { useI18n } from '../../../../../i18n';
148
- import DevToolTitle from '../../DevToolTitle/index.vue';
149
-
150
- const { t } = useI18n();
151
-
152
- const props = defineProps<{
153
- theme?: string;
154
- barrageVisible?: boolean;
155
- barrageMaxTracks?: number;
156
- barrageTrackHeight?: number;
157
- barrageStartTop?: number;
158
- barrageDuration?: number;
159
- barrageMaxLength?: number;
160
- barrageTypes?: string[];
161
- barrageShowWhenOpen?: boolean;
162
- }>();
163
-
164
- const emit = defineEmits<{
165
- (e: 'change-barrage', value: boolean): void;
166
- (e: 'change-barrage-max-tracks', value: number): void;
167
- (e: 'change-barrage-track-height', value: number): void;
168
- (e: 'change-barrage-start-top', value: number): void;
169
- (e: 'change-barrage-duration', value: number): void;
170
- (e: 'change-barrage-max-length', value: number): void;
171
- (e: 'change-barrage-types', value: string[]): void;
172
- (e: 'change-barrage-show-when-open', value: boolean): void;
173
- }>();
174
-
175
- const allTypes = [
176
- 'log',
177
- 'info',
178
- 'warn',
179
- 'error',
180
- 'network',
181
- 'transfer',
182
- 'websocket',
183
- ];
184
-
185
- function onBarrageChange(e: any) {
186
- emit('change-barrage', e.detail.value);
187
- }
188
-
189
- function onBarrageShowWhenOpenChange(e: any) {
190
- emit('change-barrage-show-when-open', !!e.detail.value);
191
- }
192
-
193
- function onMaxTracksChange(e: any) {
194
- emit('change-barrage-max-tracks', e.detail.value);
195
- }
196
-
197
- function onTrackHeightChange(e: any) {
198
- emit('change-barrage-track-height', e.detail.value);
199
- }
200
-
201
- function onStartTopChange(e: any) {
202
- emit('change-barrage-start-top', e.detail.value);
203
- }
204
-
205
- function onDurationChange(e: any) {
206
- emit('change-barrage-duration', e.detail.value);
207
- }
208
-
209
- function onMaxLengthChange(e: any) {
210
- emit('change-barrage-max-length', e.detail.value);
211
- }
212
-
213
- function onTypesChange(e: any) {
214
- let values = e.detail.value;
215
- // 如果全部取消,至少保留一个之前的
216
- if (
217
- values.length === 0 &&
218
- props.barrageTypes &&
219
- props.barrageTypes.length > 0
220
- ) {
221
- // 这里可以根据需求决定是否强制保留,暂时跟随用户操作
222
- }
223
- emit('change-barrage-types', values);
224
- }
225
- </script>
226
-
227
- <style scoped>
228
- .setting-item {
229
- padding: 12px 16px;
230
- border-bottom: 1px solid var(--dev-tool-border-color);
231
- }
232
-
233
- .setting-item-header {
234
- margin-bottom: 12px;
235
- }
236
-
237
- .setting-item-title {
238
- font-size: 14px;
239
- font-weight: bold;
240
- color: var(--dev-tool-text-color);
241
- }
242
-
243
- .barrage-advanced {
244
- margin-top: 8px;
245
- padding-top: 8px;
246
- border-top: 1px dashed var(--dev-tool-border-color);
247
- }
248
-
249
- .setting-row {
250
- display: flex;
251
- justify-content: space-between;
252
- align-items: center;
253
- height: 36px;
254
- }
255
-
256
- .setting-row-group {
257
- margin-top: 12px;
258
- }
259
-
260
- .setting-row-header {
261
- display: flex;
262
- justify-content: space-between;
263
- align-items: center;
264
- margin-bottom: 4px;
265
- }
266
-
267
- .setting-label {
268
- font-size: 12px;
269
- color: var(--dev-tool-text-color-secondary);
270
- }
271
-
272
- .setting-value {
273
- font-size: 12px;
274
- font-weight: 500;
275
- color: var(--dev-tool-main-color);
276
- background: rgb(0 122 255 / 10%);
277
- padding: 2px 6px;
278
- border-radius: 4px;
279
- }
280
-
281
- .barrage-slider {
282
- margin: 0;
283
- padding: 8px 0;
284
- }
285
-
286
- .type-checkbox-group {
287
- display: flex;
288
- flex-wrap: wrap;
289
- gap: 12px;
290
- margin-top: 8px;
291
- }
292
-
293
- .type-checkbox-item {
294
- display: flex;
295
- align-items: center;
296
- margin-right: 4px;
297
- }
298
-
299
- .type-checkbox-label {
300
- font-size: 12px;
301
- color: var(--dev-tool-text-color);
302
- margin-left: -4px;
303
- }
304
- </style>
1
+ <template>
2
+ <view class="setting-item" :class="theme">
3
+ <DevToolTitle>{{ t('common.barrage') }}</DevToolTitle>
4
+ <view class="setting-item-content">
5
+ <!-- 开启弹幕 -->
6
+ <view class="setting-row">
7
+ <view class="setting-label">{{ t('common.enableBarrage') }}</view>
8
+ <switch
9
+ :checked="barrageVisible"
10
+ @change="onBarrageChange"
11
+ color="var(--dev-tool-main-color)"
12
+ style="transform: scale(0.7)" />
13
+ </view>
14
+
15
+ <!-- 主窗口打开时显示 -->
16
+ <view v-if="barrageVisible" class="setting-row">
17
+ <view class="setting-label">{{ t('common.barrageShowWhenOpen') }}</view>
18
+ <switch
19
+ :checked="barrageShowWhenOpen"
20
+ @change="onBarrageShowWhenOpenChange"
21
+ color="var(--dev-tool-main-color)"
22
+ style="transform: scale(0.7)" />
23
+ </view>
24
+
25
+ <view v-if="barrageVisible" class="barrage-advanced">
26
+ <!-- 是否允许拖动 -->
27
+ <view class="setting-row">
28
+ <view class="setting-label">{{ t('common.barrageAllowDrag') }}</view>
29
+ <switch
30
+ :checked="barrageAllowDrag"
31
+ @change="onBarrageAllowDragChange"
32
+ color="var(--dev-tool-main-color)"
33
+ style="transform: scale(0.7)" />
34
+ </view>
35
+
36
+ <!-- 轨道数量 -->
37
+ <view class="setting-row-group">
38
+ <view class="setting-row-header">
39
+ <view class="setting-label">
40
+ {{ t('common.barrageMaxTracks') }}
41
+ </view>
42
+ <view class="setting-value">{{ barrageMaxTracks }}</view>
43
+ </view>
44
+ <slider
45
+ class="barrage-slider"
46
+ :value="barrageMaxTracks"
47
+ min="1"
48
+ max="20"
49
+ step="1"
50
+ activeColor="var(--dev-tool-main-color)"
51
+ backgroundColor="var(--dev-tool-border-color)"
52
+ block-size="16"
53
+ @change="onMaxTracksChange" />
54
+ </view>
55
+
56
+ <!-- 轨道高度 -->
57
+ <view class="setting-row-group">
58
+ <view class="setting-row-header">
59
+ <view class="setting-label">
60
+ {{ t('common.barrageTrackHeight') }}
61
+ </view>
62
+ <view class="setting-value">{{ barrageTrackHeight }}px</view>
63
+ </view>
64
+ <slider
65
+ class="barrage-slider"
66
+ :value="barrageTrackHeight"
67
+ min="20"
68
+ max="60"
69
+ step="2"
70
+ activeColor="var(--dev-tool-main-color)"
71
+ backgroundColor="var(--dev-tool-border-color)"
72
+ block-size="16"
73
+ @change="onTrackHeightChange" />
74
+ </view>
75
+
76
+ <!-- 起始高度 -->
77
+ <view class="setting-row-group">
78
+ <view class="setting-row-header">
79
+ <view class="setting-label">{{ t('common.barrageStartTop') }}</view>
80
+ <view class="setting-value">{{ barrageStartTop }}px</view>
81
+ </view>
82
+ <slider
83
+ class="barrage-slider"
84
+ :value="barrageStartTop"
85
+ min="0"
86
+ max="200"
87
+ step="5"
88
+ activeColor="var(--dev-tool-main-color)"
89
+ backgroundColor="var(--dev-tool-border-color)"
90
+ block-size="16"
91
+ @change="onStartTopChange" />
92
+ </view>
93
+
94
+ <!-- 弹幕停留时长 -->
95
+ <view class="setting-row-group">
96
+ <view class="setting-row-header">
97
+ <view class="setting-label">{{ t('common.barrageDuration') }}</view>
98
+ <view class="setting-value">{{ barrageDuration }}s</view>
99
+ </view>
100
+ <slider
101
+ class="barrage-slider"
102
+ :value="barrageDuration"
103
+ min="3"
104
+ max="20"
105
+ step="1"
106
+ activeColor="var(--dev-tool-main-color)"
107
+ backgroundColor="var(--dev-tool-border-color)"
108
+ block-size="16"
109
+ @change="onDurationChange" />
110
+ </view>
111
+
112
+ <!-- 弹幕文字截断长度 -->
113
+ <view class="setting-row-group">
114
+ <view class="setting-row-header">
115
+ <view class="setting-label">
116
+ {{ t('common.barrageMaxLength') }}
117
+ </view>
118
+ <view class="setting-value">{{ barrageMaxLength }}</view>
119
+ </view>
120
+ <slider
121
+ class="barrage-slider"
122
+ :value="barrageMaxLength"
123
+ min="10"
124
+ max="500"
125
+ step="10"
126
+ activeColor="var(--dev-tool-main-color)"
127
+ backgroundColor="var(--dev-tool-border-color)"
128
+ block-size="16"
129
+ @change="onMaxLengthChange" />
130
+ </view>
131
+
132
+ <!-- 显示类型 -->
133
+ <view class="setting-row-group">
134
+ <view class="setting-row-header">
135
+ <view class="setting-label">{{ t('common.barrageTypes') }}</view>
136
+ </view>
137
+ <checkbox-group class="type-checkbox-group" @change="onTypesChange">
138
+ <label
139
+ v-for="item in allTypes"
140
+ :key="item"
141
+ class="type-checkbox-item">
142
+ <checkbox
143
+ :value="item"
144
+ :checked="(barrageTypes || []).includes(item)"
145
+ color="var(--dev-tool-main-color)"
146
+ style="transform: scale(0.8)" />
147
+ <text class="type-checkbox-label">{{ item }}</text>
148
+ </label>
149
+ </checkbox-group>
150
+ </view>
151
+ </view>
152
+ </view>
153
+ </view>
154
+ </template>
155
+
156
+ <script lang="ts" setup>
157
+ import { useI18n } from '../../../../../i18n';
158
+ import DevToolTitle from '../../DevToolTitle/index.vue';
159
+
160
+ const { t } = useI18n();
161
+
162
+ const props = defineProps<{
163
+ theme?: string;
164
+ barrageVisible?: boolean;
165
+ barrageMaxTracks?: number;
166
+ barrageTrackHeight?: number;
167
+ barrageStartTop?: number;
168
+ barrageDuration?: number;
169
+ barrageMaxLength?: number;
170
+ barrageAllowDrag?: boolean;
171
+ barrageTypes?: string[];
172
+ barrageShowWhenOpen?: boolean;
173
+ }>();
174
+
175
+ const emit = defineEmits<{
176
+ (e: 'change-barrage', value: boolean): void;
177
+ (e: 'change-barrage-max-tracks', value: number): void;
178
+ (e: 'change-barrage-track-height', value: number): void;
179
+ (e: 'change-barrage-start-top', value: number): void;
180
+ (e: 'change-barrage-duration', value: number): void;
181
+ (e: 'change-barrage-max-length', value: number): void;
182
+ (e: 'change-barrage-allow-drag', value: boolean): void;
183
+ (e: 'change-barrage-types', value: string[]): void;
184
+ (e: 'change-barrage-show-when-open', value: boolean): void;
185
+ }>();
186
+
187
+ const allTypes = [
188
+ 'log',
189
+ 'info',
190
+ 'warn',
191
+ 'error',
192
+ 'network',
193
+ 'transfer',
194
+ 'websocket',
195
+ ];
196
+
197
+ function onBarrageChange(e: any) {
198
+ emit('change-barrage', e.detail.value);
199
+ }
200
+
201
+ function onBarrageShowWhenOpenChange(e: any) {
202
+ emit('change-barrage-show-when-open', !!e.detail.value);
203
+ }
204
+
205
+ function onMaxTracksChange(e: any) {
206
+ emit('change-barrage-max-tracks', e.detail.value);
207
+ }
208
+
209
+ function onTrackHeightChange(e: any) {
210
+ emit('change-barrage-track-height', e.detail.value);
211
+ }
212
+
213
+ function onStartTopChange(e: any) {
214
+ emit('change-barrage-start-top', e.detail.value);
215
+ }
216
+
217
+ function onDurationChange(e: any) {
218
+ emit('change-barrage-duration', e.detail.value);
219
+ }
220
+
221
+ function onMaxLengthChange(e: any) {
222
+ emit('change-barrage-max-length', e.detail.value);
223
+ }
224
+
225
+ function onBarrageAllowDragChange(e: any) {
226
+ emit('change-barrage-allow-drag', !!e.detail.value);
227
+ }
228
+
229
+ function onTypesChange(e: any) {
230
+ let values = e.detail.value;
231
+ // 如果全部取消,至少保留一个之前的
232
+ if (
233
+ values.length === 0 &&
234
+ props.barrageTypes &&
235
+ props.barrageTypes.length > 0
236
+ ) {
237
+ // 这里可以根据需求决定是否强制保留,暂时跟随用户操作
238
+ }
239
+ emit('change-barrage-types', values);
240
+ }
241
+ </script>
242
+
243
+ <style scoped>
244
+ .setting-item {
245
+ padding: 12px 16px;
246
+ border-bottom: 1px solid var(--dev-tool-border-color);
247
+ }
248
+
249
+ .setting-item-header {
250
+ margin-bottom: 12px;
251
+ }
252
+
253
+ .setting-item-title {
254
+ font-size: 14px;
255
+ font-weight: bold;
256
+ color: var(--dev-tool-text-color);
257
+ }
258
+
259
+ .barrage-advanced {
260
+ margin-top: 8px;
261
+ padding-top: 8px;
262
+ border-top: 1px dashed var(--dev-tool-border-color);
263
+ }
264
+
265
+ .setting-row {
266
+ display: flex;
267
+ justify-content: space-between;
268
+ align-items: center;
269
+ height: 36px;
270
+ }
271
+
272
+ .setting-row-group {
273
+ margin-top: 12px;
274
+ }
275
+
276
+ .setting-row-header {
277
+ display: flex;
278
+ justify-content: space-between;
279
+ align-items: center;
280
+ margin-bottom: 4px;
281
+ }
282
+
283
+ .setting-label {
284
+ font-size: 12px;
285
+ color: var(--dev-tool-text-color-secondary);
286
+ }
287
+
288
+ .setting-value {
289
+ font-size: 12px;
290
+ font-weight: 500;
291
+ color: var(--dev-tool-main-color);
292
+ background: rgb(0 122 255 / 10%);
293
+ padding: 2px 6px;
294
+ border-radius: 4px;
295
+ }
296
+
297
+ .barrage-slider {
298
+ margin: 0;
299
+ padding: 8px 0;
300
+ }
301
+
302
+ .type-checkbox-group {
303
+ display: flex;
304
+ flex-wrap: wrap;
305
+ gap: 12px;
306
+ margin-top: 8px;
307
+ }
308
+
309
+ .type-checkbox-item {
310
+ display: flex;
311
+ align-items: center;
312
+ margin-right: 4px;
313
+ }
314
+
315
+ .type-checkbox-label {
316
+ font-size: 12px;
317
+ color: var(--dev-tool-text-color);
318
+ margin-left: -4px;
319
+ }
320
+ </style>