vite-uni-dev-tool 1.0.0 → 1.1.0

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 (168) hide show
  1. package/README.md +46 -0
  2. package/dist/const.cjs +1 -1
  3. package/dist/const.d.ts +12 -0
  4. package/dist/const.d.ts.map +1 -1
  5. package/dist/const.js +1 -1
  6. package/dist/core-shared.d.ts +1 -1
  7. package/dist/core-shared.d.ts.map +1 -1
  8. package/dist/core-shared.js +1 -1
  9. package/dist/core.d.ts +10 -3
  10. package/dist/core.d.ts.map +1 -1
  11. package/dist/core.js +2 -2
  12. package/dist/i18n/locales/en.cjs +1 -1
  13. package/dist/i18n/locales/en.d.ts +81 -0
  14. package/dist/i18n/locales/en.d.ts.map +1 -1
  15. package/dist/i18n/locales/en.js +1 -1
  16. package/dist/i18n/locales/zh-Hans.cjs +1 -1
  17. package/dist/i18n/locales/zh-Hans.d.ts +82 -1
  18. package/dist/i18n/locales/zh-Hans.d.ts.map +1 -1
  19. package/dist/i18n/locales/zh-Hans.js +1 -1
  20. package/dist/modules/devConsole/index.cjs +1 -1
  21. package/dist/modules/devConsole/index.js +3 -3
  22. package/dist/modules/devEvent/index.cjs +3 -3
  23. package/dist/modules/devEvent/index.d.ts +1 -0
  24. package/dist/modules/devEvent/index.d.ts.map +1 -1
  25. package/dist/modules/devEvent/index.js +3 -3
  26. package/dist/modules/devIntercept/index.cjs +14 -13
  27. package/dist/modules/devIntercept/index.d.ts +19 -0
  28. package/dist/modules/devIntercept/index.d.ts.map +1 -1
  29. package/dist/modules/devIntercept/index.js +14 -13
  30. package/dist/modules/devStore/index.cjs +1 -1
  31. package/dist/modules/devStore/index.d.ts +21 -0
  32. package/dist/modules/devStore/index.d.ts.map +1 -1
  33. package/dist/modules/devStore/index.js +1 -1
  34. package/dist/plugins/uniDevTool/transform/transformMain.cjs +1 -1
  35. package/dist/plugins/uniDevTool/transform/transformMain.js +1 -1
  36. package/dist/type.d.ts +47 -2
  37. package/dist/type.d.ts.map +1 -1
  38. package/dist/utils/language.cjs +1 -1
  39. package/dist/utils/language.d.ts.map +1 -1
  40. package/dist/utils/language.js +1 -1
  41. package/dist/utils/object.cjs +1 -1
  42. package/dist/utils/object.d.ts.map +1 -1
  43. package/dist/utils/object.js +1 -1
  44. package/dist/v3/DevTool/components/BluetoothList/BluetoothItem.vue +199 -0
  45. package/dist/v3/DevTool/components/BluetoothList/BluetoothTool.vue +730 -0
  46. package/dist/v3/DevTool/components/BluetoothList/index.vue +167 -0
  47. package/dist/v3/{CaptureScreen → DevTool/components/CaptureScreen}/index.vue +109 -109
  48. package/dist/v3/{ConsoleList → DevTool/components/ConsoleList}/ConsoleItem.vue +225 -224
  49. package/dist/v3/{ConsoleList → DevTool/components/ConsoleList}/RunJSInput.vue +247 -249
  50. package/dist/v3/{ConsoleList → DevTool/components/ConsoleList}/index.vue +171 -160
  51. package/dist/v3/{ConsoleList → DevTool/components/ConsoleList}/staticTips.ts +1145 -1145
  52. package/dist/v3/{DevToolButton → DevTool/components/DevToolButton}/index.vue +7 -4
  53. package/dist/v3/{DevToolTitle → DevTool/components/DevToolTitle}/index.vue +24 -24
  54. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/DevToolOverlay.vue +197 -182
  55. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/const.ts +28 -5
  56. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/hooks/dataUtils.ts +48 -48
  57. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/hooks/useDevToolData.ts +387 -338
  58. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/hooks/useDevToolHandlers.ts +629 -549
  59. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/hooks/useDevToolOverlay.ts +197 -184
  60. package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/index.vue +67 -16
  61. package/dist/v3/{ElEvent → DevTool/components/ElEvent}/ElEventItem.vue +105 -105
  62. package/dist/v3/{ElEvent → DevTool/components/ElEvent}/index.vue +106 -109
  63. package/dist/v3/{Instance → DevTool/components/Instance}/components/InstanceTreeNode.vue +265 -265
  64. package/dist/v3/{Instance → DevTool/components/Instance}/flatten.ts +226 -226
  65. package/dist/v3/{Instance → DevTool/components/Instance}/index.vue +94 -94
  66. package/dist/v3/{Instance → DevTool/components/Instance}/registry.ts +49 -49
  67. package/dist/v3/{Instance → DevTool/components/Instance}/transformTree.ts +375 -375
  68. package/dist/v3/{Instance → DevTool/components/Instance}/transformTreeCtx.ts +268 -268
  69. package/dist/v3/{Instance → DevTool/components/Instance}/typing.d.ts +43 -43
  70. package/dist/v3/{InstanceDetail → DevTool/components/InstanceDetail}/index.vue +485 -485
  71. package/dist/v3/{JsonDetail → DevTool/components/JsonDetail}/index.vue +70 -70
  72. package/dist/v3/{NFCList → DevTool/components/NFCList}/NFCItem.vue +112 -113
  73. package/dist/v3/{NFCList → DevTool/components/NFCList}/NFCTool.vue +454 -478
  74. package/dist/v3/{NFCList → DevTool/components/NFCList}/const.ts +56 -56
  75. package/dist/v3/{NFCList → DevTool/components/NFCList}/index.vue +94 -98
  76. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/InterceptConfig.vue +624 -608
  77. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/InterceptItem.vue +140 -140
  78. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/NetworkDetail.vue +287 -296
  79. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/NetworkIntercept.vue +88 -93
  80. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/NetworkItem.vue +163 -167
  81. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/NetworkSend.vue +589 -556
  82. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/const.ts +4 -4
  83. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/hooks/useNetworkForm.ts +86 -86
  84. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/index.vue +160 -160
  85. package/dist/v3/{NetworkList → DevTool/components/NetworkList}/utils.ts +101 -101
  86. package/dist/v3/{Performance → DevTool/components/Performance}/index.vue +498 -495
  87. package/dist/v3/{Performance → DevTool/components/Performance}/modules/PerformanceMetrics.vue +153 -153
  88. package/dist/v3/{Performance → DevTool/components/Performance}/modules/PerformanceWidget.vue +12 -9
  89. package/dist/v3/{Performance → DevTool/components/Performance}/modules/usePerformanceChart.ts +460 -460
  90. package/dist/v3/{Performance → DevTool/components/Performance}/modules/usePerformanceData.ts +258 -258
  91. package/dist/v3/{PiniaList → DevTool/components/PiniaList}/index.vue +93 -94
  92. package/dist/v3/{RouteList → DevTool/components/RouteList}/index.vue +21 -24
  93. package/dist/v3/{RunJS → DevTool/components/RunJS}/index.vue +148 -148
  94. package/dist/v3/{ScanCodeList → DevTool/components/ScanCodeList}/ScanCodeItem.vue +97 -98
  95. package/dist/v3/{ScanCodeList → DevTool/components/ScanCodeList}/index.vue +100 -104
  96. package/dist/v3/{SettingButton → DevTool/components/SettingButton}/index.vue +45 -45
  97. package/dist/v3/{SettingList → DevTool/components/SettingList}/index.vue +218 -150
  98. package/dist/v3/DevTool/components/SettingList/modules/SettingBarrage.vue +304 -0
  99. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingDevTool.vue +212 -208
  100. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingInfo.vue +157 -119
  101. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingLanguage.vue +74 -74
  102. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingLog.vue +230 -230
  103. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingNetwork.vue +3 -3
  104. package/dist/v3/{SettingList → DevTool/components/SettingList}/modules/SettingTheme.vue +37 -7
  105. package/dist/v3/{SettingList → DevTool/components/SettingList}/typing.d.ts +2 -2
  106. package/dist/v3/{SourceCode → DevTool/components/SourceCode}/Line.vue +127 -116
  107. package/dist/v3/{SourceCode → DevTool/components/SourceCode}/index.vue +8 -8
  108. package/dist/v3/{SourceCode → DevTool/components/SourceCode}/parseCode.ts +609 -701
  109. package/dist/v3/{StorageList → DevTool/components/StorageList}/index.vue +174 -174
  110. package/dist/v3/{TransferList → DevTool/components/TransferList}/TransferDetail.vue +268 -268
  111. package/dist/v3/{TransferList → DevTool/components/TransferList}/TransferItem.vue +4 -4
  112. package/dist/v3/{TransferList → DevTool/components/TransferList}/index.vue +8 -8
  113. package/dist/v3/{UniEvent → DevTool/components/UniEvent}/UniEventItem.vue +6 -7
  114. package/dist/v3/{UniEvent → DevTool/components/UniEvent}/index.vue +6 -6
  115. package/dist/v3/{VuexList → DevTool/components/VuexList}/index.vue +84 -84
  116. package/dist/v3/{WebSocket → DevTool/components/WebSocket}/WebSocketDetail.vue +8 -8
  117. package/dist/v3/{WebSocket → DevTool/components/WebSocket}/WebSocketItem.vue +4 -4
  118. package/dist/v3/{WebSocket → DevTool/components/WebSocket}/index.vue +8 -8
  119. package/dist/v3/DevTool/index.vue +179 -5
  120. package/dist/v3/{AppTransition → components/AppTransition}/index.vue +176 -170
  121. package/dist/v3/{AutoSizer → components/AutoSizer}/index.vue +192 -192
  122. package/dist/v3/{AutoSizer → components/AutoSizer}/index1.vue +184 -184
  123. package/dist/v3/{AutoSizer → components/AutoSizer}/utils.ts +49 -49
  124. package/dist/v3/components/Barrage/BarrageItem.vue +137 -0
  125. package/dist/v3/components/Barrage/index.vue +202 -0
  126. package/dist/v3/{CircularButton → components/CircularButton}/index.vue +84 -84
  127. package/dist/v3/{CustomSwiper → components/CustomSwiper}/CustomSwiperItem.vue +49 -49
  128. package/dist/v3/{CustomSwiper → components/CustomSwiper}/index.vue +104 -104
  129. package/dist/v3/{DraggableContainer → components/DraggableContainer}/index.vue +1 -1
  130. package/dist/v3/{Empty → components/Empty}/index.vue +29 -29
  131. package/dist/v3/{FilterInput → components/FilterInput}/index.vue +1 -1
  132. package/dist/v3/{FilterSelect → components/FilterSelect}/index.vue +179 -179
  133. package/dist/v3/{JsonPretty → components/JsonPretty}/components/Brackets/index.vue +27 -27
  134. package/dist/v3/{JsonPretty → components/JsonPretty}/components/Carets/index.vue +59 -59
  135. package/dist/v3/{JsonPretty → components/JsonPretty}/components/CheckController/index.vue +136 -136
  136. package/dist/v3/{JsonPretty → components/JsonPretty}/components/TreeNode/index.vue +387 -381
  137. package/dist/v3/{JsonPretty → components/JsonPretty}/hooks/useClipboard.ts +21 -21
  138. package/dist/v3/{JsonPretty → components/JsonPretty}/hooks/useError.ts +21 -21
  139. package/dist/v3/{JsonPretty → components/JsonPretty}/index.vue +16 -13
  140. package/dist/v3/{JsonPretty → components/JsonPretty}/type.ts +127 -126
  141. package/dist/v3/{JsonPretty → components/JsonPretty}/utils/index.ts +169 -169
  142. package/dist/v3/{MovableContainer → components/MovableContainer}/index.vue +1 -1
  143. package/dist/v3/{Pick → components/Pick}/index.vue +322 -322
  144. package/dist/v3/{Tabs → components/Tabs}/index.vue +30 -4
  145. package/dist/v3/{Tag → components/Tag}/index.vue +113 -113
  146. package/dist/v3/{VirtualList → components/VirtualList}/AutoSize.vue +40 -40
  147. package/dist/v3/{VirtualList → components/VirtualList}/index.vue +416 -412
  148. package/dist/v3/hooks/useBluetooth/index.ts +561 -0
  149. package/dist/v3/hooks/useContainerStyle.ts +153 -153
  150. package/dist/v3/hooks/useNFC/index.ts +107 -107
  151. package/dist/v3/hooks/useNFC/typing.d.ts +396 -396
  152. package/dist/v3/hooks/useNFC/useNFCAndroid.ts +966 -966
  153. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.ts +812 -812
  154. package/dist/v3/hooks/useNFC/utils.ts +754 -754
  155. package/dist/v3/hooks/useRequest/index.ts +586 -573
  156. package/dist/v3/hooks/useRequest/utils.ts +267 -267
  157. package/dist/v3/hooks/useScanCode/index.ts +206 -206
  158. package/dist/v3/hooks/useWebsocket/README.md +79 -0
  159. package/dist/v3/hooks/useWebsocket/index.ts +253 -0
  160. package/dist/v3/styles/theme.css +17 -10
  161. package/dist/v3/styles/theme.ts +12 -12
  162. package/package.json +59 -64
  163. package/dist/plugins/uniParseStock/index.d.ts +0 -10
  164. package/dist/plugins/uniParseStock/index.d.ts.map +0 -1
  165. /package/dist/v3/{DevToolWindow → DevTool/components/DevToolWindow}/index.css +0 -0
  166. /package/dist/v3/{SettingList → DevTool/components/SettingList}/index.css +0 -0
  167. /package/dist/v3/{Empty → components/Empty}/empty.png +0 -0
  168. /package/dist/v3/{VirtualList → components/VirtualList}/readme.md +0 -0
@@ -16,7 +16,10 @@
16
16
  :class="`tabs-item ${idx === modelValue ? 'tabs-item-active' : ''} `"
17
17
  :id="`tabs-item-${idx}`"
18
18
  @click="onChangeTabs(idx)">
19
- {{ item.label }}
19
+ <view class="tabs-item-content">
20
+ <text v-if="item.icon" class="tabs-item-icon">{{ item.icon }}</text>
21
+ <text>{{ item.label }}</text>
22
+ </view>
20
23
  </view>
21
24
  </scroll-view>
22
25
  <view class="tabs-extra">
@@ -31,7 +34,13 @@ import { computed, ref, onMounted } from 'vue';
31
34
  import CircularButton from '../CircularButton/index.vue';
32
35
 
33
36
  defineProps<{
34
- items: { label: string; key: string; value: any; index: number }[];
37
+ items: {
38
+ label: string;
39
+ key: string;
40
+ value: any;
41
+ index: number;
42
+ icon?: string;
43
+ }[];
35
44
  scrollLeft?: number;
36
45
  }>();
37
46
 
@@ -104,18 +113,35 @@ function onScroll(e: any) {
104
113
 
105
114
  .tabs-item {
106
115
  display: inline-block;
107
- padding: 0 16px;
116
+ padding: 0 12px;
108
117
  height: 32px;
109
118
  line-height: 32px;
110
- border-bottom: 1px solid transparent;
119
+ border-bottom: 2px solid transparent;
111
120
  box-sizing: border-box;
112
121
  transition: all 0.3s;
113
122
  cursor: pointer;
123
+ color: var(--dev-tool-text-color-secondary);
124
+ }
125
+
126
+ .tabs-item-content {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 4px;
130
+ }
131
+
132
+ .tabs-item-icon {
133
+ font-size: 14px;
134
+ opacity: 0.8;
114
135
  }
115
136
 
116
137
  .tabs-item-active {
117
138
  color: var(--dev-tool-main-color);
118
139
  border-color: var(--dev-tool-main-color);
140
+ background: rgb(var(--dev-tool-main-color-rgb), 0.05);
141
+ }
142
+
143
+ .tabs-item-active .tabs-item-icon {
144
+ opacity: 1;
119
145
  }
120
146
 
121
147
  .tabs-extra {
@@ -1,113 +1,113 @@
1
- <template>
2
- <view
3
- :class="['tag', `tag-${mode}`, active ? 'tag-active' : '']"
4
- :style="customStyle"
5
- @click="onClick">
6
- <slot></slot>
7
- </view>
8
- </template>
9
- <script setup lang="ts">
10
- defineProps<{
11
- mode:
12
- | 'primary'
13
- | 'warn'
14
- | 'success'
15
- | 'error'
16
- | 'info'
17
- | 'log'
18
- | 'main'
19
- | 'clear'
20
- | string;
21
- active?: boolean;
22
- customStyle?: string | Record<string, any>;
23
- }>();
24
- const emit = defineEmits<{ (e: 'click', event: MouseEvent): void }>();
25
- function onClick(event: MouseEvent) {
26
- emit('click', event);
27
- }
28
- </script>
29
- <style scoped>
30
- .tag {
31
- display: flex;
32
- align-items: center;
33
- padding: 0 6px;
34
- width: min-content;
35
- height: 22px;
36
- color: var(--dev-tool-text-color);
37
- border-radius: 4px;
38
- white-space: nowrap;
39
- box-sizing: border-box;
40
- font-size: var(--dev-tool-tag-font-size);
41
- cursor: pointer;
42
- user-select: none;
43
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
44
- border: 1px solid transparent;
45
- }
46
-
47
- .tag:hover {
48
- opacity: 0.85;
49
- filter: brightness(1.1);
50
- }
51
-
52
- .tag:active {
53
- transform: scale(0.92);
54
- }
55
-
56
- .tag-log {
57
- background-color: var(--dev-tool-active-bg-color);
58
- border-color: var(--dev-tool-border-color);
59
- }
60
-
61
- .tag-info {
62
- background-color: var(--dev-tool-active-bg-color);
63
- border-color: var(--dev-tool-border-color);
64
- }
65
-
66
- .tag-warn {
67
- color: #fff;
68
- background-color: var(--dev-tool-warn-color);
69
- border-color: var(--dev-tool-warn-color);
70
- }
71
-
72
- .tag-success {
73
- color: #fff;
74
- background-color: var(--dev-tool-success-color);
75
- border-color: var(--dev-tool-success-color);
76
- }
77
-
78
- .tag-error {
79
- color: #fff;
80
- background-color: var(--dev-tool-error-color);
81
- border-color: var(--dev-tool-error-color);
82
- }
83
-
84
- .tag-main {
85
- background-color: var(--dev-tool-main-color);
86
- color: #fff;
87
- border-color: var(--dev-tool-main-color);
88
- }
89
-
90
- .tag-primary {
91
- background-color: var(--dev-tool-main-color);
92
- color: #fff;
93
- border-color: var(--dev-tool-main-color);
94
- }
95
-
96
- .tag-clear {
97
- color: var(--dev-tool-main-color);
98
- border-color: var(--dev-tool-main-color);
99
- background-color: transparent;
100
- }
101
-
102
- .tag-all {
103
- color: var(--dev-tool-text-color);
104
- border-color: var(--dev-tool-border-color);
105
- background-color: var(--dev-tool-active-bg-color);
106
- }
107
-
108
- .tag-active {
109
- border-color: var(--dev-tool-main-color);
110
- color: var(--dev-tool-main-color);
111
- background-color: var(--dev-tool-active-bg-color);
112
- }
113
- </style>
1
+ <template>
2
+ <view
3
+ :class="['tag', `tag-${mode}`, active ? 'tag-active' : '']"
4
+ :style="customStyle"
5
+ @click="onClick">
6
+ <slot></slot>
7
+ </view>
8
+ </template>
9
+ <script setup lang="ts">
10
+ defineProps<{
11
+ mode:
12
+ | 'primary'
13
+ | 'warn'
14
+ | 'success'
15
+ | 'error'
16
+ | 'info'
17
+ | 'log'
18
+ | 'main'
19
+ | 'clear'
20
+ | string;
21
+ active?: boolean;
22
+ customStyle?: string | Record<string, any>;
23
+ }>();
24
+ const emit = defineEmits<{ (e: 'click', event: MouseEvent): void }>();
25
+ function onClick(event: MouseEvent) {
26
+ emit('click', event);
27
+ }
28
+ </script>
29
+ <style scoped>
30
+ .tag {
31
+ display: flex;
32
+ align-items: center;
33
+ padding: 0 6px;
34
+ width: min-content;
35
+ height: 22px;
36
+ color: var(--dev-tool-text-color);
37
+ border-radius: 4px;
38
+ white-space: nowrap;
39
+ box-sizing: border-box;
40
+ font-size: var(--dev-tool-tag-font-size);
41
+ cursor: pointer;
42
+ user-select: none;
43
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
44
+ border: 1px solid transparent;
45
+ }
46
+
47
+ .tag:hover {
48
+ opacity: 0.85;
49
+ filter: brightness(1.1);
50
+ }
51
+
52
+ .tag:active {
53
+ transform: scale(0.92);
54
+ }
55
+
56
+ .tag-log {
57
+ background-color: var(--dev-tool-active-bg-color);
58
+ border-color: var(--dev-tool-border-color);
59
+ }
60
+
61
+ .tag-info {
62
+ background-color: var(--dev-tool-active-bg-color);
63
+ border-color: var(--dev-tool-border-color);
64
+ }
65
+
66
+ .tag-warn {
67
+ color: #fff;
68
+ background-color: var(--dev-tool-warn-color);
69
+ border-color: var(--dev-tool-warn-color);
70
+ }
71
+
72
+ .tag-success {
73
+ color: #fff;
74
+ background-color: var(--dev-tool-success-color);
75
+ border-color: var(--dev-tool-success-color);
76
+ }
77
+
78
+ .tag-error {
79
+ color: #fff;
80
+ background-color: var(--dev-tool-error-color);
81
+ border-color: var(--dev-tool-error-color);
82
+ }
83
+
84
+ .tag-main {
85
+ background-color: var(--dev-tool-main-color);
86
+ color: #fff;
87
+ border-color: var(--dev-tool-main-color);
88
+ }
89
+
90
+ .tag-primary {
91
+ background-color: var(--dev-tool-main-color);
92
+ color: #fff;
93
+ border-color: var(--dev-tool-main-color);
94
+ }
95
+
96
+ .tag-clear {
97
+ color: var(--dev-tool-main-color);
98
+ border-color: var(--dev-tool-main-color);
99
+ background-color: transparent;
100
+ }
101
+
102
+ .tag-all {
103
+ color: var(--dev-tool-text-color);
104
+ border-color: var(--dev-tool-border-color);
105
+ background-color: var(--dev-tool-active-bg-color);
106
+ }
107
+
108
+ .tag-active {
109
+ border-color: var(--dev-tool-main-color);
110
+ color: var(--dev-tool-main-color);
111
+ background-color: var(--dev-tool-active-bg-color);
112
+ }
113
+ </style>
@@ -1,40 +1,40 @@
1
- <template>
2
- <view :class="className" :style="customStyle">
3
- <slot></slot>
4
- </view>
5
- </template>
6
- <script lang="ts" setup>
7
- import { getCurrentInstance, onMounted, nextTick } from 'vue';
8
- import { uniqueId } from '../../utils';
9
-
10
- const props = defineProps<{
11
- index: number;
12
- customStyle?: string | Record<string, any>;
13
- itemsHeight: number[] | Record<number, number>;
14
- onSizeChange: (index: number, height: number) => void;
15
- }>();
16
-
17
- const className = uniqueId('virtual-');
18
-
19
- onMounted(() => {
20
- // TODO 可能会存在异步高度的问题
21
- // TODO image 加载完成之后获取高度
22
-
23
- const onSizeChange = props?.onSizeChange ?? (() => {});
24
- const itemsHeight = props?.itemsHeight ?? [];
25
- if (itemsHeight?.[props.index]) return;
26
- const instance = getCurrentInstance();
27
- nextTick(() => {
28
- const query = uni.createSelectorQuery().in(instance);
29
- query
30
- .select('.' + className)
31
- .boundingClientRect((rect) => {
32
- if (Array.isArray(rect) || !rect) return;
33
- onSizeChange?.(props.index, rect?.height ?? 0);
34
- })
35
- .exec();
36
- });
37
- });
38
- </script>
39
-
40
- <style scoped></style>
1
+ <template>
2
+ <view :class="className" :style="customStyle">
3
+ <slot></slot>
4
+ </view>
5
+ </template>
6
+ <script lang="ts" setup>
7
+ import { uniqueId } from '../../../utils';
8
+ import { getCurrentInstance, onMounted, nextTick } from 'vue';
9
+
10
+ const props = defineProps<{
11
+ index: number;
12
+ customStyle?: string | Record<string, any>;
13
+ itemsHeight: number[] | Record<number, number>;
14
+ onSizeChange: (index: number, height: number) => void;
15
+ }>();
16
+
17
+ const className = uniqueId('virtual-');
18
+
19
+ onMounted(() => {
20
+ // TODO 可能会存在异步高度的问题
21
+ // TODO image 加载完成之后获取高度
22
+
23
+ const onSizeChange = props?.onSizeChange ?? (() => {});
24
+ const itemsHeight = props?.itemsHeight ?? [];
25
+ if (itemsHeight?.[props.index]) return;
26
+ const instance = getCurrentInstance();
27
+ nextTick(() => {
28
+ const query = uni.createSelectorQuery().in(instance);
29
+ query
30
+ .select('.' + className)
31
+ .boundingClientRect((rect) => {
32
+ if (Array.isArray(rect) || !rect) return;
33
+ onSizeChange?.(props.index, rect?.height ?? 0);
34
+ })
35
+ .exec();
36
+ });
37
+ });
38
+ </script>
39
+
40
+ <style scoped></style>