@dimina-kit/devtools 0.4.0-dev.20260803105710 → 0.4.0-dev.20260824071518

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 (113) hide show
  1. package/dist/main/app/app.js +12 -1
  2. package/dist/main/index.bundle.js +584 -323
  3. package/dist/main/ipc/index.d.ts +1 -0
  4. package/dist/main/ipc/index.js +1 -0
  5. package/dist/main/ipc/session.js +11 -0
  6. package/dist/main/ipc/tooltip.d.ts +13 -0
  7. package/dist/main/ipc/tooltip.js +28 -0
  8. package/dist/main/services/layout/index.d.ts +11 -0
  9. package/dist/main/services/layout/index.js +23 -0
  10. package/dist/main/services/network-forward/frontend-dispatch.js +2 -1
  11. package/dist/main/services/notifications/renderer-notifier.d.ts +2 -0
  12. package/dist/main/services/notifications/renderer-notifier.js +7 -1
  13. package/dist/main/services/simulator-current-page/index.d.ts +5 -3
  14. package/dist/main/services/simulator-current-page/index.js +8 -1
  15. package/dist/main/services/views/clear-console-filter.d.ts +44 -0
  16. package/dist/main/services/views/clear-console-filter.js +86 -0
  17. package/dist/main/services/views/console-filter-test-fixtures.d.ts +94 -0
  18. package/dist/main/services/views/console-filter-test-fixtures.js +82 -0
  19. package/dist/main/services/views/console-filter.d.ts +79 -130
  20. package/dist/main/services/views/console-filter.js +140 -183
  21. package/dist/main/services/views/devtools-tabs.d.ts +24 -4
  22. package/dist/main/services/views/devtools-tabs.js +40 -21
  23. package/dist/main/services/views/host-toolbar-view.js +5 -18
  24. package/dist/main/services/views/native-simulator-devtools-host.js +64 -45
  25. package/dist/main/services/views/native-simulator-view.js +6 -24
  26. package/dist/main/services/views/native-view-tree.d.ts +25 -0
  27. package/dist/main/services/views/native-view-tree.js +69 -0
  28. package/dist/main/services/views/overlay-panels-view.d.ts +27 -4
  29. package/dist/main/services/views/overlay-panels-view.js +138 -109
  30. package/dist/main/services/views/placement-reconciler.d.ts +4 -16
  31. package/dist/main/services/views/placement-reconciler.js +64 -29
  32. package/dist/main/services/views/placement-test-driver.d.ts +26 -0
  33. package/dist/main/services/views/placement-test-driver.js +26 -0
  34. package/dist/main/services/views/view-manager.d.ts +5 -9
  35. package/dist/main/services/views/view-manager.js +7 -1
  36. package/dist/main/services/views/workbench-view.js +27 -20
  37. package/dist/main/services/workbench-coi-server.d.ts +11 -0
  38. package/dist/main/services/workbench-coi-server.js +32 -0
  39. package/dist/main/services/workspace/rebuild-status.d.ts +21 -8
  40. package/dist/main/services/workspace/rebuild-status.js +24 -8
  41. package/dist/main/utils/sender-policy.d.ts +1 -1
  42. package/dist/main/utils/sender-policy.js +6 -1
  43. package/dist/main/utils/theme.d.ts +7 -2
  44. package/dist/main/utils/theme.js +8 -3
  45. package/dist/native-host/container/pageFrame.css +1 -1
  46. package/dist/native-host/render/render.js +1966 -1816
  47. package/dist/native-host/service/service.js +1 -1
  48. package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
  49. package/dist/preload/windows/main.cjs +3176 -14
  50. package/dist/preload/windows/main.cjs.map +4 -4
  51. package/dist/preload/windows/main.css +428 -0
  52. package/dist/preload/windows/main.css.map +7 -0
  53. package/dist/preload/windows/simulator.cjs +5 -2
  54. package/dist/preload/windows/simulator.cjs.map +2 -2
  55. package/dist/preload/windows/simulator.js +5 -2
  56. package/dist/renderer/assets/constants-Bdz0LHdy.js +2 -0
  57. package/dist/renderer/assets/index-CtznrmHR.js +49 -0
  58. package/dist/renderer/assets/{input-xdmfv-eH.js → input-Dmm6nob5.js} +2 -2
  59. package/dist/renderer/assets/ipc-transport-BOg0gR9W.js +9 -0
  60. package/dist/renderer/assets/ipc-transport-DgQhZaE9.css +1 -0
  61. package/dist/renderer/assets/popover-Cd1FEGOX.js +2 -0
  62. package/dist/renderer/assets/select-BaYox7If.js +2 -0
  63. package/dist/renderer/assets/settings-BXvwuFaz.js +2 -0
  64. package/dist/renderer/assets/settings-api-Bo9GbYqs.js +2 -0
  65. package/dist/renderer/assets/settings-tab-bar-Beia6lMr.js +2 -0
  66. package/dist/renderer/assets/tooltip-DfQqK3Sk.js +2 -0
  67. package/dist/renderer/assets/view-api-nn69je7A.js +2 -0
  68. package/dist/renderer/assets/workbenchSettings-oq_EyfKf.js +8 -0
  69. package/dist/renderer/entries/main/index.html +8 -7
  70. package/dist/renderer/entries/popover/index.html +7 -6
  71. package/dist/renderer/entries/settings/index.html +7 -5
  72. package/dist/renderer/entries/tooltip/index.html +20 -0
  73. package/dist/renderer/entries/workbench-settings/index.html +7 -5
  74. package/dist/service-host/sync-impls/menu-button-geometry.js +1 -0
  75. package/dist/shared/ipc-channels.d.ts +11 -0
  76. package/dist/shared/ipc-channels.js +28 -2
  77. package/dist/shared/ipc-schemas.d.ts +19 -0
  78. package/dist/shared/ipc-schemas.js +23 -0
  79. package/dist/shared/simulator-route.d.ts +8 -0
  80. package/dist/shared/simulator-route.js +15 -0
  81. package/dist/shared/types.d.ts +7 -0
  82. package/dist/shared/view-ids.d.ts +2 -0
  83. package/dist/shared/view-ids.js +11 -0
  84. package/dist/simulator/assets/device-shell-CmtM1QxP.js +2 -0
  85. package/dist/simulator/assets/device-shell-iFZo1igL.css +1 -0
  86. package/dist/simulator/assets/{simulator-COIE6R49.js → simulator-CIobn3Mh.js} +6 -6
  87. package/dist/simulator/assets/{simulator-mini-app-BLn7XV8e.js → simulator-mini-app-CRe6n9br.js} +2 -2
  88. package/dist/simulator/assets/simulator-ui-BupATgKo.css +1 -0
  89. package/dist/simulator/assets/simulator-ui-C_cP602X.js +2 -0
  90. package/dist/simulator/simulator.html +3 -2
  91. package/dist/vscode-workbench/assets/__vite-browser-external-Bc1vizTf.js +1 -0
  92. package/dist/vscode-workbench/assets/{dist-oHcwN53f.js → dist-CMfmHflW.js} +3 -3
  93. package/dist/vscode-workbench/assets/{iconv-lite-umd-CLMLpdGm.js → iconv-lite-umd-Bx8CgaZq.js} +1 -1
  94. package/dist/vscode-workbench/assets/{index-BE3UJdoH.js → index-CdG6YWhW.js} +436 -436
  95. package/dist/vscode-workbench/assets/{jschardet-BICW8PLJ.js → jschardet-M0qgd2lN.js} +1 -1
  96. package/dist/vscode-workbench/index.html +21 -1
  97. package/package.json +7 -6
  98. package/dist/main/services/views/destroy-child-view.d.ts +0 -9
  99. package/dist/main/services/views/destroy-child-view.js +0 -23
  100. package/dist/renderer/assets/constants-EAMiwL9_.js +0 -2
  101. package/dist/renderer/assets/index-BBg3YI5b.js +0 -49
  102. package/dist/renderer/assets/ipc-transport-B3EpmfNS.js +0 -9
  103. package/dist/renderer/assets/ipc-transport-Blac3sOj.css +0 -1
  104. package/dist/renderer/assets/popover-B88e2hkg.js +0 -2
  105. package/dist/renderer/assets/select-CD9CJyhI.js +0 -2
  106. package/dist/renderer/assets/settings-44hf0QtO.js +0 -2
  107. package/dist/renderer/assets/settings-api-pJKPuP1M.js +0 -2
  108. package/dist/renderer/assets/workbenchSettings-DKD5U1Ql.js +0 -8
  109. package/dist/simulator/assets/device-shell-Cw7c-IkG.js +0 -2
  110. package/dist/simulator/assets/device-shell-DbC5ccs8.css +0 -1
  111. package/dist/simulator/assets/jsx-runtime-DkKmJyBb.js +0 -2
  112. package/dist/simulator/device-shell/menu-button-geometry.js +0 -18
  113. package/dist/vscode-workbench/assets/__vite-browser-external-BON7qP59.js +0 -1
@@ -0,0 +1,428 @@
1
+ /* ../dimina-electron-runtime/dist/simulator-ui/menu-capsule.css */
2
+ .menu-capsule {
3
+ position: absolute;
4
+ display: flex;
5
+ align-items: center;
6
+ border-radius: 16px;
7
+ background: #ffffff;
8
+ box-sizing: border-box;
9
+ border: 0.5px solid #e5e5e5;
10
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
11
+ color: #1f1f1f;
12
+ overflow: hidden;
13
+ pointer-events: none;
14
+ }
15
+ .menu-capsule__more,
16
+ .menu-capsule__close {
17
+ flex: 1;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ }
22
+ .menu-capsule__more {
23
+ gap: 1px;
24
+ pointer-events: auto;
25
+ cursor: pointer;
26
+ border: 0;
27
+ padding: 0;
28
+ background: transparent;
29
+ color: inherit;
30
+ }
31
+ .menu-capsule__dot {
32
+ border-radius: 50%;
33
+ background: currentColor;
34
+ }
35
+ .menu-capsule__dot--side {
36
+ width: 4px;
37
+ height: 4px;
38
+ }
39
+ .menu-capsule__dot--mid {
40
+ width: 6.4px;
41
+ height: 6.4px;
42
+ }
43
+ .menu-capsule__divider {
44
+ width: 0.5px;
45
+ height: 16px;
46
+ background: #e9e9e9;
47
+ }
48
+ .menu-capsule__close svg {
49
+ color: currentColor;
50
+ }
51
+
52
+ /* ../dimina-electron-runtime/dist/simulator-ui/navigation-bar.css */
53
+ .nav-bar {
54
+ position: relative;
55
+ box-sizing: border-box;
56
+ display: flex;
57
+ flex-direction: column;
58
+ font-family:
59
+ -apple-system,
60
+ BlinkMacSystemFont,
61
+ "Segoe UI",
62
+ Roboto,
63
+ "PingFang SC",
64
+ sans-serif;
65
+ }
66
+ .nav-bar--custom {
67
+ position: absolute;
68
+ top: 0;
69
+ left: 0;
70
+ right: 0;
71
+ z-index: 200;
72
+ background-color: transparent !important;
73
+ pointer-events: none;
74
+ }
75
+ .nav-bar--custom .menu-capsule {
76
+ pointer-events: auto;
77
+ }
78
+ .nav-bar__row {
79
+ position: relative;
80
+ display: flex;
81
+ align-items: center;
82
+ padding: 0 12px;
83
+ }
84
+ .nav-bar__leading {
85
+ position: absolute;
86
+ left: 8px;
87
+ top: 0;
88
+ bottom: 0;
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 6px;
92
+ z-index: 1;
93
+ }
94
+ .nav-bar__back,
95
+ .nav-bar__home {
96
+ width: 32px;
97
+ height: 32px;
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ background: transparent;
102
+ border: 0;
103
+ cursor: pointer;
104
+ color: inherit;
105
+ padding: 0;
106
+ }
107
+ .nav-bar__title {
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 6px;
111
+ font-size: 17px;
112
+ font-weight: 500;
113
+ min-width: 0;
114
+ flex: 1;
115
+ }
116
+ .nav-bar__title--center {
117
+ justify-content: center;
118
+ }
119
+ .nav-bar__title--left {
120
+ justify-content: flex-start;
121
+ padding-left: 48px;
122
+ }
123
+ .nav-bar__title--leading-pair {
124
+ padding-left: 86px;
125
+ }
126
+ .nav-bar__title-text {
127
+ max-width: 60%;
128
+ overflow: hidden;
129
+ text-overflow: ellipsis;
130
+ white-space: nowrap;
131
+ }
132
+ .nav-bar__spinner {
133
+ width: 14px;
134
+ height: 14px;
135
+ border: 2px solid currentColor;
136
+ border-right-color: transparent;
137
+ border-radius: 50%;
138
+ animation: nav-bar-spin 0.8s linear infinite;
139
+ }
140
+ @keyframes nav-bar-spin {
141
+ to {
142
+ transform: rotate(360deg);
143
+ }
144
+ }
145
+
146
+ /* ../dimina-electron-runtime/dist/simulator-ui/tab-bar.css */
147
+ .dmb-tab-bar {
148
+ display: flex;
149
+ align-items: stretch;
150
+ justify-content: space-around;
151
+ width: 100%;
152
+ height: 50px;
153
+ border-top: 1px solid #e0e0e0;
154
+ box-sizing: content-box;
155
+ flex-shrink: 0;
156
+ z-index: 9;
157
+ }
158
+ .dmb-tab-bar__item {
159
+ display: flex;
160
+ flex-direction: column;
161
+ align-items: center;
162
+ justify-content: center;
163
+ flex: 1;
164
+ position: relative;
165
+ background: transparent;
166
+ border: 0;
167
+ padding: 4px 0 2px;
168
+ cursor: pointer;
169
+ font: inherit;
170
+ color: inherit;
171
+ outline: none;
172
+ }
173
+ .dmb-tab-bar__item:focus-visible {
174
+ outline: 2px solid #1890ff;
175
+ outline-offset: -2px;
176
+ }
177
+ .dmb-tab-bar__icon-slot {
178
+ width: 24px;
179
+ height: 24px;
180
+ display: flex;
181
+ align-items: center;
182
+ justify-content: center;
183
+ margin-bottom: 2px;
184
+ }
185
+ .dmb-tab-bar__icon {
186
+ max-width: 100%;
187
+ max-height: 100%;
188
+ object-fit: contain;
189
+ }
190
+ .dmb-tab-bar__text {
191
+ font-size: 11px;
192
+ line-height: 1;
193
+ user-select: none;
194
+ }
195
+ .dmb-tab-bar__badge {
196
+ position: absolute;
197
+ top: 0;
198
+ right: calc(50% - 22px);
199
+ min-width: 16px;
200
+ height: 16px;
201
+ padding: 0 4px;
202
+ background: #f43f5e;
203
+ color: #ffffff;
204
+ border-radius: 8px;
205
+ font-size: 10px;
206
+ line-height: 16px;
207
+ text-align: center;
208
+ }
209
+ .dmb-tab-bar__red-dot {
210
+ position: absolute;
211
+ top: 4px;
212
+ right: calc(50% - 16px);
213
+ width: 8px;
214
+ height: 8px;
215
+ background: #f43f5e;
216
+ border-radius: 50%;
217
+ }
218
+
219
+ /* ../dimina-electron-runtime/dist/simulator-ui/ui-overlay.css */
220
+ .dmui-overlay {
221
+ position: absolute;
222
+ inset: 0;
223
+ z-index: 300;
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ pointer-events: none;
228
+ }
229
+ .dmui-mask {
230
+ position: absolute;
231
+ inset: 0;
232
+ background: rgba(0, 0, 0, 0.5);
233
+ pointer-events: auto;
234
+ }
235
+ .dmui-mask--transparent {
236
+ background: transparent;
237
+ }
238
+ .dmui-toast {
239
+ position: relative;
240
+ display: flex;
241
+ flex-direction: column;
242
+ align-items: center;
243
+ justify-content: center;
244
+ gap: 12px;
245
+ min-width: 120px;
246
+ max-width: 70%;
247
+ padding: 20px;
248
+ border-radius: 10px;
249
+ background: rgba(0, 0, 0, 0.75);
250
+ color: #fff;
251
+ pointer-events: none;
252
+ box-sizing: border-box;
253
+ }
254
+ .dmui-toast--text {
255
+ min-width: 0;
256
+ padding: 12px 18px;
257
+ border-radius: 8px;
258
+ }
259
+ .dmui-toast__title {
260
+ font:
261
+ 400 14px/1.4 system-ui,
262
+ -apple-system,
263
+ BlinkMacSystemFont,
264
+ "Segoe UI",
265
+ sans-serif;
266
+ text-align: center;
267
+ word-break: break-word;
268
+ }
269
+ .dmui-toast__icon {
270
+ width: 40px;
271
+ height: 40px;
272
+ fill: none;
273
+ stroke: #fff;
274
+ stroke-width: 2.4;
275
+ stroke-linecap: round;
276
+ stroke-linejoin: round;
277
+ }
278
+ .dmui-toast__image {
279
+ width: 40px;
280
+ height: 40px;
281
+ object-fit: contain;
282
+ }
283
+ .dmui-toast__spinner {
284
+ width: 36px;
285
+ height: 36px;
286
+ border: 3px solid rgba(255, 255, 255, 0.3);
287
+ border-top-color: #fff;
288
+ border-radius: 50%;
289
+ animation: dmui-spin 0.8s linear infinite;
290
+ }
291
+ @keyframes dmui-spin {
292
+ to {
293
+ transform: rotate(360deg);
294
+ }
295
+ }
296
+ .dmui-modal {
297
+ position: relative;
298
+ width: 280px;
299
+ max-width: 80%;
300
+ padding-top: 24px;
301
+ border-radius: 12px;
302
+ background: #fff;
303
+ pointer-events: auto;
304
+ overflow: hidden;
305
+ box-sizing: border-box;
306
+ }
307
+ .dmui-modal__title {
308
+ padding: 0 24px;
309
+ font:
310
+ 600 17px/1.4 system-ui,
311
+ -apple-system,
312
+ BlinkMacSystemFont,
313
+ "Segoe UI",
314
+ sans-serif;
315
+ color: #111827;
316
+ text-align: center;
317
+ }
318
+ .dmui-modal__content {
319
+ padding: 8px 24px 20px;
320
+ font:
321
+ 400 15px/1.5 system-ui,
322
+ -apple-system,
323
+ BlinkMacSystemFont,
324
+ "Segoe UI",
325
+ sans-serif;
326
+ color: #6b7280;
327
+ text-align: center;
328
+ max-height: 200px;
329
+ overflow-y: auto;
330
+ }
331
+ .dmui-modal__input {
332
+ display: block;
333
+ width: calc(100% - 48px);
334
+ margin: 16px 24px 20px;
335
+ padding: 6px 8px;
336
+ border: 1px solid #e5e7eb;
337
+ border-radius: 4px;
338
+ font-size: 15px;
339
+ box-sizing: border-box;
340
+ }
341
+ .dmui-modal__actions {
342
+ display: flex;
343
+ border-top: 1px solid #e5e7eb;
344
+ }
345
+ .dmui-modal__button {
346
+ flex: 1;
347
+ padding: 14px 0;
348
+ border: 0;
349
+ background: transparent;
350
+ font:
351
+ 400 17px/1 system-ui,
352
+ -apple-system,
353
+ BlinkMacSystemFont,
354
+ "Segoe UI",
355
+ sans-serif;
356
+ cursor: pointer;
357
+ }
358
+ .dmui-modal__button + .dmui-modal__button {
359
+ border-left: 1px solid #e5e7eb;
360
+ }
361
+ .dmui-overlay:has(.dmui-action-sheet) {
362
+ align-items: flex-end;
363
+ }
364
+ .dmui-action-sheet {
365
+ position: relative;
366
+ width: 100%;
367
+ padding: 8px;
368
+ pointer-events: auto;
369
+ box-sizing: border-box;
370
+ }
371
+ .dmui-action-sheet__items {
372
+ border-radius: 12px;
373
+ background: #fff;
374
+ overflow: hidden;
375
+ }
376
+ .dmui-action-sheet__item {
377
+ display: block;
378
+ width: 100%;
379
+ padding: 16px 0;
380
+ border: 0;
381
+ background: transparent;
382
+ font:
383
+ 400 17px/1 system-ui,
384
+ -apple-system,
385
+ BlinkMacSystemFont,
386
+ "Segoe UI",
387
+ sans-serif;
388
+ text-align: center;
389
+ cursor: pointer;
390
+ }
391
+ .dmui-action-sheet__item + .dmui-action-sheet__item {
392
+ border-top: 1px solid #ececec;
393
+ }
394
+ .dmui-action-sheet__cancel {
395
+ display: block;
396
+ width: 100%;
397
+ margin-top: 8px;
398
+ padding: 16px 0;
399
+ border: 0;
400
+ border-radius: 12px;
401
+ background: #fff;
402
+ font:
403
+ 600 17px/1 system-ui,
404
+ -apple-system,
405
+ BlinkMacSystemFont,
406
+ "Segoe UI",
407
+ sans-serif;
408
+ color: #111827;
409
+ cursor: pointer;
410
+ }
411
+
412
+ /* ../dimina-electron-runtime/dist/simulator-ui/miniapp-frame.css */
413
+ .device-shell__viewport {
414
+ position: relative;
415
+ flex: 1 1 auto;
416
+ min-height: 0;
417
+ background: #ffffff;
418
+ }
419
+ .device-shell__webview {
420
+ position: absolute;
421
+ inset: 0;
422
+ display: block;
423
+ width: 100%;
424
+ height: 100%;
425
+ border: 0;
426
+ background: #ffffff;
427
+ }
428
+ /*# sourceMappingURL=main.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../dimina-electron-runtime/dist/simulator-ui/menu-capsule.css", "../../../../dimina-electron-runtime/dist/simulator-ui/navigation-bar.css", "../../../../dimina-electron-runtime/dist/simulator-ui/tab-bar.css", "../../../../dimina-electron-runtime/dist/simulator-ui/ui-overlay.css", "../../../../dimina-electron-runtime/dist/simulator-ui/miniapp-frame.css"],
4
+ "sourcesContent": ["/*\n * Matches dimina's native capsule (always an opaque white pill with dark\n * icons, independent of the nav bar's textStyle \u2014 see\n * DiminaActivity.kt#MiniProgramCapsuleButton / DMPPageController.swift#makeCapsuleButton).\n */\n.menu-capsule {\n position: absolute;\n display: flex;\n align-items: center;\n border-radius: 16px;\n background: #ffffff;\n box-sizing: border-box;\n border: 0.5px solid #e5e5e5;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);\n color: #1f1f1f;\n overflow: hidden;\n pointer-events: none; /* visual stand-in only */\n}\n\n.menu-capsule__more,\n.menu-capsule__close {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.menu-capsule__more {\n /* native packs the three dots almost touching (~0.8px edge gap) */\n gap: 1px;\n pointer-events: auto;\n cursor: pointer;\n border: 0;\n padding: 0;\n background: transparent;\n color: inherit;\n}\n\n.menu-capsule__dot {\n border-radius: 50%;\n background: currentColor;\n}\n\n.menu-capsule__dot--side {\n width: 4px;\n height: 4px;\n}\n\n.menu-capsule__dot--mid {\n width: 6.4px;\n height: 6.4px;\n}\n\n.menu-capsule__divider {\n width: 0.5px;\n height: 16px;\n background: #e9e9e9;\n}\n\n.menu-capsule__close svg {\n color: currentColor;\n}\n", ".nav-bar {\n /*\n * Default nav is IN-FLOW: the flex column reserves its real rendered height\n * (status bar + 44pt nav row) so the page viewport/webview sits below it\n * with no magic-number padding. box-sizing:border-box makes the inline\n * height (statusBarHeight + navBarHeight) the TOTAL \u2014 without it the\n * paddingTop:statusBarHeight is added on top (content-box), inflating the\n * bar (e.g. 88 \u2192 132) and pushing content too far down.\n */\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', sans-serif;\n}\n\n.nav-bar--custom {\n /*\n * Custom nav overlays the page (which renders full-bleed underneath). Take\n * it out of flow and stack it above the page webview (z-index:100).\n */\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 200;\n background-color: transparent !important;\n pointer-events: none;\n}\n\n.nav-bar--custom .menu-capsule {\n pointer-events: auto;\n}\n\n.nav-bar__row {\n position: relative;\n display: flex;\n align-items: center;\n padding: 0 12px;\n}\n\n.nav-bar__leading {\n position: absolute;\n left: 8px;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n z-index: 1;\n}\n\n.nav-bar__back,\n.nav-bar__home {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 0;\n cursor: pointer;\n color: inherit;\n padding: 0;\n}\n\n.nav-bar__title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 17px;\n font-weight: 500;\n min-width: 0;\n flex: 1;\n}\n\n.nav-bar__title--center {\n justify-content: center;\n}\n\n.nav-bar__title--left {\n justify-content: flex-start;\n padding-left: 48px; /* leave room for back arrow */\n}\n\n.nav-bar__title--leading-pair {\n padding-left: 86px; /* 8px offset + two 32px buttons + 6px gap */\n}\n\n.nav-bar__title-text {\n max-width: 60%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.nav-bar__spinner {\n width: 14px;\n height: 14px;\n border: 2px solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: nav-bar-spin 0.8s linear infinite;\n}\n\n@keyframes nav-bar-spin {\n to { transform: rotate(360deg); }\n}\n", ".dmb-tab-bar {\n display: flex;\n align-items: stretch;\n justify-content: space-around;\n width: 100%;\n height: 50px;\n /* padding-bottom is set inline from the device bottom inset (tab-bar.tsx) so\n the tabBar background fills the home-indicator safe area (WeChat parity).\n content-box keeps the 50px item row above that padded strip. */\n border-top: 1px solid #e0e0e0;\n box-sizing: content-box;\n flex-shrink: 0;\n z-index: 9;\n}\n\n.dmb-tab-bar__item {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n position: relative;\n background: transparent;\n border: 0;\n padding: 4px 0 2px;\n cursor: pointer;\n font: inherit;\n color: inherit;\n outline: none;\n}\n\n.dmb-tab-bar__item:focus-visible {\n outline: 2px solid #1890ff;\n outline-offset: -2px;\n}\n\n.dmb-tab-bar__icon-slot {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2px;\n}\n\n.dmb-tab-bar__icon {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n\n.dmb-tab-bar__text {\n font-size: 11px;\n line-height: 1;\n user-select: none;\n}\n\n.dmb-tab-bar__badge {\n position: absolute;\n top: 0;\n right: calc(50% - 22px);\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n background: #f43f5e;\n color: #ffffff;\n border-radius: 8px;\n font-size: 10px;\n line-height: 16px;\n text-align: center;\n}\n\n.dmb-tab-bar__red-dot {\n position: absolute;\n top: 4px;\n right: calc(50% - 16px);\n width: 8px;\n height: 8px;\n background: #f43f5e;\n border-radius: 50%;\n}\n", "/*\n * Native interaction overlays (toast / loading / modal / action sheet).\n * `.dmui-overlay` fills the nearest positioned ancestor \u2014 the box the host\n * draws around the mini-app \u2014 and sits above the page <webview> (z 100) and the\n * tabBar, matching WeChat's chrome.\n */\n.dmui-overlay {\n position: absolute;\n inset: 0;\n z-index: 300;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n}\n\n.dmui-mask {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n}\n\n/* Toast `mask:true` blocks touches but stays visually transparent (parity with\n WeChat \u2014 the dimmed backdrop is reserved for modal/action sheet). */\n.dmui-mask--transparent {\n background: transparent;\n}\n\n/* \u2500\u2500 Toast / loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.dmui-toast {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n min-width: 120px;\n max-width: 70%;\n padding: 20px;\n border-radius: 10px;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n pointer-events: none;\n box-sizing: border-box;\n}\n\n/* Text-only toast (icon:none, no image) is a compact pill, not a square. */\n.dmui-toast--text {\n min-width: 0;\n padding: 12px 18px;\n border-radius: 8px;\n}\n\n.dmui-toast__title {\n font: 400 14px/1.4 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n text-align: center;\n word-break: break-word;\n}\n\n.dmui-toast__icon {\n width: 40px;\n height: 40px;\n fill: none;\n stroke: #fff;\n stroke-width: 2.4;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.dmui-toast__image {\n width: 40px;\n height: 40px;\n object-fit: contain;\n}\n\n.dmui-toast__spinner {\n width: 36px;\n height: 36px;\n border: 3px solid rgba(255, 255, 255, 0.3);\n border-top-color: #fff;\n border-radius: 50%;\n animation: dmui-spin 0.8s linear infinite;\n}\n\n@keyframes dmui-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* \u2500\u2500 Modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.dmui-modal {\n position: relative;\n width: 280px;\n max-width: 80%;\n padding-top: 24px;\n border-radius: 12px;\n background: #fff;\n pointer-events: auto;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n.dmui-modal__title {\n padding: 0 24px;\n font: 600 17px/1.4 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n color: #111827;\n text-align: center;\n}\n\n.dmui-modal__content {\n padding: 8px 24px 20px;\n font: 400 15px/1.5 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n color: #6b7280;\n text-align: center;\n max-height: 200px;\n overflow-y: auto;\n}\n\n.dmui-modal__input {\n display: block;\n width: calc(100% - 48px);\n margin: 16px 24px 20px;\n padding: 6px 8px;\n border: 1px solid #e5e7eb;\n border-radius: 4px;\n font-size: 15px;\n box-sizing: border-box;\n}\n\n.dmui-modal__actions {\n display: flex;\n border-top: 1px solid #e5e7eb;\n}\n\n.dmui-modal__button {\n flex: 1;\n padding: 14px 0;\n border: 0;\n background: transparent;\n font: 400 17px/1 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n cursor: pointer;\n}\n\n.dmui-modal__button + .dmui-modal__button {\n border-left: 1px solid #e5e7eb;\n}\n\n/* \u2500\u2500 Action sheet \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.dmui-overlay:has(.dmui-action-sheet) {\n align-items: flex-end;\n}\n\n.dmui-action-sheet {\n position: relative;\n width: 100%;\n padding: 8px;\n pointer-events: auto;\n box-sizing: border-box;\n}\n\n.dmui-action-sheet__items {\n border-radius: 12px;\n background: #fff;\n overflow: hidden;\n}\n\n.dmui-action-sheet__item {\n display: block;\n width: 100%;\n padding: 16px 0;\n border: 0;\n background: transparent;\n font: 400 17px/1 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n text-align: center;\n cursor: pointer;\n}\n\n.dmui-action-sheet__item + .dmui-action-sheet__item {\n border-top: 1px solid #ececec;\n}\n\n.dmui-action-sheet__cancel {\n display: block;\n width: 100%;\n margin-top: 8px;\n padding: 16px 0;\n border: 0;\n border-radius: 12px;\n background: #fff;\n font: 600 17px/1 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n color: #111827;\n cursor: pointer;\n}\n", "/*\n * The page area of a mini-app: a positioning context filled by the render-host\n * guests, of which exactly one is visible at a time.\n *\n * The `device-shell__` prefix is kept deliberately. These two class names are a\n * live contract with things outside this package \u2014 the e2e suites and main's\n * CDP queries count `.device-shell__webview` to learn how many pages are\n * mounted and which one is on screen. Renaming them here would silently break\n * readers this package cannot see.\n */\n.device-shell__viewport {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n background: #ffffff;\n}\n\n.device-shell__webview {\n position: absolute;\n inset: 0;\n display: block;\n width: 100%;\n height: 100%;\n border: 0;\n background: #ffffff;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -426,8 +426,11 @@ var SimulatorChannel = {
426
426
  Detach: "simulator:detach",
427
427
  Console: "simulator:console",
428
428
  // Main → renderer push of the visible top-of-stack page route whenever the
429
- // mini-app navigates (navigateTo / switchTab / back). Payload: the page path
430
- // string (same bare format as `getCurrentPagePath`), or '' when unknown.
429
+ // mini-app navigates (navigateTo / switchTab / back). Payload: the page
430
+ // route string (`pagePath` + `?k=v&…` query, same format as
431
+ // `encodePageSpec`/`decodePageSpec`), or '' when unknown. The query lets the
432
+ // page-path bar show params (WeChat DevTools parity) and a recompile restore
433
+ // the current page's params.
431
434
  CurrentPage: "simulator:current-page"
432
435
  };
433
436