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,199 +1,199 @@
1
- <template>
2
- <view class="bluetooth-item">
3
- <view class="bluetooth-item-header">
4
- <view class="bluetooth-name">
5
- {{
6
- bluetoothItem.name ||
7
- bluetoothItem.localName ||
8
- t('bluetooth.unknownDevice')
9
- }}
10
- <text
11
- class="status-connected"
12
- v-if="(bluetoothItem as any)._isConnected">
13
- {{ t('bluetooth.connected') }}
14
- </text>
15
- <text class="status-paired" v-if="(bluetoothItem as any).isPaired">
16
- {{ t('bluetooth.paired') }}
17
- </text>
18
- </view>
19
- <view class="item-actions">
20
- <view class="bluetooth-rssi">
21
- {{ t('bluetooth.rssi') }}: {{ bluetoothItem.RSSI }}dBm
22
- </view>
23
- </view>
24
- </view>
25
- <view class="bluetooth-item-detail">
26
- <view class="detail-row" v-if="(bluetoothItem as any)._guessType">
27
- <text class="label">{{ t('bluetooth.tip') }}:</text>
28
- <text class="value type-value">
29
- {{ (bluetoothItem as any)._guessType }}
30
- </text>
31
- </view>
32
- <view class="detail-row">
33
- <text class="label">{{ t('bluetooth.id') }}:</text>
34
- <text class="value">{{ bluetoothItem.deviceId }}</text>
35
- </view>
36
- <view
37
- v-if="
38
- bluetoothItem.advertisServiceUUIDs &&
39
- bluetoothItem.advertisServiceUUIDs.length
40
- "
41
- class="detail-row">
42
- <text class="label">{{ t('bluetooth.uuids') }}:</text>
43
- <text class="value">
44
- {{ bluetoothItem.advertisServiceUUIDs.join(', ') }}
45
- </text>
46
- </view>
47
- </view>
48
- <view class="bluetooth-item-footer">
49
- <text
50
- v-if="!(bluetoothItem as any).isPaired"
51
- class="action-btn"
52
- @click.stop="() => emits('pair', bluetoothItem.deviceId)">
53
- {{ t('bluetooth.pair') }}
54
- </text>
55
- <text
56
- v-if="(bluetoothItem as any)._isConnected"
57
- class="action-btn tool-btn"
58
- @click.stop="() => emits('tool', bluetoothItem)">
59
- {{ t('bluetooth.tool') }}
60
- </text>
61
- <text class="action-btn" @click.stop="handleAction">
62
- {{
63
- (bluetoothItem as any)._isConnected
64
- ? t('bluetooth.disconnect')
65
- : t('bluetooth.connect')
66
- }}
67
- </text>
68
- </view>
69
- </view>
70
- </template>
71
-
72
- <script setup lang="ts">
73
- import type { DevTool } from '../../../../type';
74
- import { useI18n } from '../../../../i18n';
75
-
76
- const { t } = useI18n();
77
-
78
- const props = defineProps<{
79
- bluetoothItem: DevTool.BluetoothItem;
80
- }>();
81
-
82
- const emits = defineEmits<{
83
- (e: 'pair', deviceId: string): void;
84
- (e: 'connect', deviceId: string): void;
85
- (e: 'disconnect', deviceId: string): void;
86
- (e: 'tool', device: DevTool.BluetoothItem): void;
87
- }>();
88
-
89
- const handleAction = () => {
90
- const isConnected = (props.bluetoothItem as Record<string, unknown>)
91
- ._isConnected;
92
- if (isConnected) {
93
- emits('disconnect', props.bluetoothItem.deviceId);
94
- } else {
95
- emits('connect', props.bluetoothItem.deviceId);
96
- }
97
- };
98
- </script>
99
-
100
- <style scoped>
101
- .bluetooth-item {
102
- padding: 12px 16px;
103
- border-bottom: 1px solid var(--dev-tool-border-color);
104
- background: var(--dev-tool-bg-color);
105
- }
106
-
107
- .bluetooth-item-header {
108
- display: flex;
109
- justify-content: space-between;
110
- align-items: center;
111
- margin-bottom: 8px;
112
- }
113
-
114
- .bluetooth-name {
115
- font-weight: bold;
116
- font-size: 14px;
117
- color: var(--dev-tool-text-color);
118
- display: flex;
119
- align-items: center;
120
- }
121
-
122
- .status-connected {
123
- font-size: 10px;
124
- color: #4cd964;
125
- margin-left: 6px;
126
- border: 1px solid #4cd964;
127
- padding: 0 4px;
128
- border-radius: 4px;
129
- font-weight: normal;
130
- }
131
-
132
- .status-paired {
133
- font-size: 10px;
134
- color: #f0ad4e;
135
- margin-left: 6px;
136
- border: 1px solid #f0ad4e;
137
- padding: 0 4px;
138
- border-radius: 4px;
139
- font-weight: normal;
140
- }
141
-
142
- .bluetooth-rssi {
143
- font-size: 12px;
144
- color: var(--dev-tool-text-color-tips);
145
- }
146
-
147
- .item-actions {
148
- display: flex;
149
- align-items: center;
150
- gap: 8px;
151
- }
152
-
153
- .action-btn {
154
- font-size: 12px;
155
- padding: 2px 8px;
156
- border-radius: 4px;
157
- border: 1px solid var(--dev-tool-primary-color, #007aff);
158
- color: var(--dev-tool-primary-color, #007aff);
159
- cursor: pointer;
160
- }
161
-
162
- .action-btn:active {
163
- opacity: 0.7;
164
- }
165
-
166
- .bluetooth-item-detail {
167
- font-size: 12px;
168
- }
169
-
170
- .detail-row {
171
- display: flex;
172
- margin-bottom: 4px;
173
- }
174
-
175
- .label {
176
- color: var(--dev-tool-text-color-tips);
177
- width: 60px;
178
- flex-shrink: 0;
179
- }
180
-
181
- .value {
182
- color: var(--dev-tool-text-color);
183
- word-break: break-all;
184
- }
185
-
186
- .type-value {
187
- color: var(--dev-tool-primary-color, #007aff);
188
- }
189
-
190
- .bluetooth-item-footer {
191
- display: flex;
192
- justify-content: flex-end;
193
- align-items: center;
194
- gap: 8px;
195
- margin-top: 8px;
196
- padding-top: 8px;
197
- border-top: 1px dashed var(--dev-tool-border-color);
198
- }
199
- </style>
1
+ <template>
2
+ <view class="bluetooth-item">
3
+ <view class="bluetooth-item-header">
4
+ <view class="bluetooth-name">
5
+ {{
6
+ bluetoothItem.name ||
7
+ bluetoothItem.localName ||
8
+ t('bluetooth.unknownDevice')
9
+ }}
10
+ <text
11
+ class="status-connected"
12
+ v-if="(bluetoothItem as any)._isConnected">
13
+ {{ t('bluetooth.connected') }}
14
+ </text>
15
+ <text class="status-paired" v-if="(bluetoothItem as any).isPaired">
16
+ {{ t('bluetooth.paired') }}
17
+ </text>
18
+ </view>
19
+ <view class="item-actions">
20
+ <view class="bluetooth-rssi">
21
+ {{ t('bluetooth.rssi') }}: {{ bluetoothItem.RSSI }}dBm
22
+ </view>
23
+ </view>
24
+ </view>
25
+ <view class="bluetooth-item-detail">
26
+ <view class="detail-row" v-if="(bluetoothItem as any)._guessType">
27
+ <text class="label">{{ t('bluetooth.tip') }}:</text>
28
+ <text class="value type-value">
29
+ {{ (bluetoothItem as any)._guessType }}
30
+ </text>
31
+ </view>
32
+ <view class="detail-row">
33
+ <text class="label">{{ t('bluetooth.id') }}:</text>
34
+ <text class="value">{{ bluetoothItem.deviceId }}</text>
35
+ </view>
36
+ <view
37
+ v-if="
38
+ bluetoothItem.advertisServiceUUIDs &&
39
+ bluetoothItem.advertisServiceUUIDs.length
40
+ "
41
+ class="detail-row">
42
+ <text class="label">{{ t('bluetooth.uuids') }}:</text>
43
+ <text class="value">
44
+ {{ bluetoothItem.advertisServiceUUIDs.join(', ') }}
45
+ </text>
46
+ </view>
47
+ </view>
48
+ <view class="bluetooth-item-footer">
49
+ <text
50
+ v-if="!(bluetoothItem as any).isPaired"
51
+ class="action-btn"
52
+ @click.stop="() => emits('pair', bluetoothItem.deviceId)">
53
+ {{ t('bluetooth.pair') }}
54
+ </text>
55
+ <text
56
+ v-if="(bluetoothItem as any)._isConnected"
57
+ class="action-btn tool-btn"
58
+ @click.stop="() => emits('tool', bluetoothItem)">
59
+ {{ t('bluetooth.tool') }}
60
+ </text>
61
+ <text class="action-btn" @click.stop="handleAction">
62
+ {{
63
+ (bluetoothItem as any)._isConnected
64
+ ? t('bluetooth.disconnect')
65
+ : t('bluetooth.connect')
66
+ }}
67
+ </text>
68
+ </view>
69
+ </view>
70
+ </template>
71
+
72
+ <script setup lang="ts">
73
+ import type { DevTool } from '../../../../type';
74
+ import { useI18n } from '../../../../i18n';
75
+
76
+ const { t } = useI18n();
77
+
78
+ const props = defineProps<{
79
+ bluetoothItem: DevTool.BluetoothItem;
80
+ }>();
81
+
82
+ const emits = defineEmits<{
83
+ (e: 'pair', deviceId: string): void;
84
+ (e: 'connect', deviceId: string): void;
85
+ (e: 'disconnect', deviceId: string): void;
86
+ (e: 'tool', device: DevTool.BluetoothItem): void;
87
+ }>();
88
+
89
+ const handleAction = () => {
90
+ const isConnected = (props.bluetoothItem as Record<string, unknown>)
91
+ ._isConnected;
92
+ if (isConnected) {
93
+ emits('disconnect', props.bluetoothItem.deviceId);
94
+ } else {
95
+ emits('connect', props.bluetoothItem.deviceId);
96
+ }
97
+ };
98
+ </script>
99
+
100
+ <style scoped>
101
+ .bluetooth-item {
102
+ padding: 12px 16px;
103
+ border-bottom: 1px solid var(--dev-tool-border-color);
104
+ background: var(--dev-tool-bg-color);
105
+ }
106
+
107
+ .bluetooth-item-header {
108
+ display: flex;
109
+ justify-content: space-between;
110
+ align-items: center;
111
+ margin-bottom: 8px;
112
+ }
113
+
114
+ .bluetooth-name {
115
+ font-weight: bold;
116
+ font-size: 14px;
117
+ color: var(--dev-tool-text-color);
118
+ display: flex;
119
+ align-items: center;
120
+ }
121
+
122
+ .status-connected {
123
+ font-size: 10px;
124
+ color: #4cd964;
125
+ margin-left: 6px;
126
+ border: 1px solid #4cd964;
127
+ padding: 0 4px;
128
+ border-radius: 4px;
129
+ font-weight: normal;
130
+ }
131
+
132
+ .status-paired {
133
+ font-size: 10px;
134
+ color: #f0ad4e;
135
+ margin-left: 6px;
136
+ border: 1px solid #f0ad4e;
137
+ padding: 0 4px;
138
+ border-radius: 4px;
139
+ font-weight: normal;
140
+ }
141
+
142
+ .bluetooth-rssi {
143
+ font-size: 12px;
144
+ color: var(--dev-tool-text-color-tips);
145
+ }
146
+
147
+ .item-actions {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 8px;
151
+ }
152
+
153
+ .action-btn {
154
+ font-size: 12px;
155
+ padding: 2px 8px;
156
+ border-radius: 4px;
157
+ border: 1px solid var(--dev-tool-primary-color, #007aff);
158
+ color: var(--dev-tool-primary-color, #007aff);
159
+ cursor: pointer;
160
+ }
161
+
162
+ .action-btn:active {
163
+ opacity: 0.7;
164
+ }
165
+
166
+ .bluetooth-item-detail {
167
+ font-size: 12px;
168
+ }
169
+
170
+ .detail-row {
171
+ display: flex;
172
+ margin-bottom: 4px;
173
+ }
174
+
175
+ .label {
176
+ color: var(--dev-tool-text-color-tips);
177
+ width: 60px;
178
+ flex-shrink: 0;
179
+ }
180
+
181
+ .value {
182
+ color: var(--dev-tool-text-color);
183
+ word-break: break-all;
184
+ }
185
+
186
+ .type-value {
187
+ color: var(--dev-tool-primary-color, #007aff);
188
+ }
189
+
190
+ .bluetooth-item-footer {
191
+ display: flex;
192
+ justify-content: flex-end;
193
+ align-items: center;
194
+ gap: 8px;
195
+ margin-top: 8px;
196
+ padding-top: 8px;
197
+ border-top: 1px dashed var(--dev-tool-border-color);
198
+ }
199
+ </style>