@dimina-kit/devtools 0.4.0-dev.20260630123203 → 0.4.0-dev.20260701155140

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 (54) hide show
  1. package/dist/main/app/app.js +17 -0
  2. package/dist/main/app/max-listeners-diagnostic.d.ts +32 -0
  3. package/dist/main/app/max-listeners-diagnostic.js +59 -0
  4. package/dist/main/index.bundle.js +426 -220
  5. package/dist/main/ipc/bridge-router.d.ts +5 -4
  6. package/dist/main/ipc/bridge-router.js +25 -1
  7. package/dist/main/ipc/simulator.js +1 -5
  8. package/dist/main/ipc/views.js +8 -19
  9. package/dist/main/services/automation/wait-active-page.d.ts +4 -2
  10. package/dist/main/services/render-inspect/index.d.ts +9 -0
  11. package/dist/main/services/render-inspect/index.js +13 -1
  12. package/dist/main/services/simulator-storage/index.d.ts +9 -0
  13. package/dist/main/services/simulator-storage/index.js +26 -1
  14. package/dist/main/services/simulator-wxml/index.js +117 -11
  15. package/dist/main/services/views/apply-view-ops.d.ts +11 -0
  16. package/dist/main/services/views/apply-view-ops.js +22 -0
  17. package/dist/main/services/views/placement-test-driver.d.ts +25 -0
  18. package/dist/main/services/views/placement-test-driver.js +48 -0
  19. package/dist/main/services/views/view-manager.d.ts +9 -55
  20. package/dist/main/services/views/view-manager.js +264 -233
  21. package/dist/main/services/workbench-context.d.ts +10 -0
  22. package/dist/preload/windows/host-toolbar-runtime.cjs +6 -13
  23. package/dist/preload/windows/host-toolbar-runtime.cjs.map +2 -2
  24. package/dist/preload/windows/simulator.cjs +0 -3
  25. package/dist/preload/windows/simulator.cjs.map +2 -2
  26. package/dist/preload/windows/simulator.js +0 -3
  27. package/dist/render-host/render-inspect.js +35 -1
  28. package/dist/renderer/assets/index-jDrNHghH.js +49 -0
  29. package/dist/renderer/assets/{input-BbWPVJlM.js → input-Djg2NR4U.js} +2 -2
  30. package/dist/renderer/assets/{ipc-transport-DTT-j7AD.js → ipc-transport-Be-AzCub.js} +2 -2
  31. package/dist/renderer/assets/ipc-transport-C6-KPMqw.css +1 -0
  32. package/dist/renderer/assets/{popover-CjAdKdAo.js → popover-eDUh4NYe.js} +2 -2
  33. package/dist/renderer/assets/{select-RyHeTVsc.js → select-DesFfkVV.js} +2 -2
  34. package/dist/renderer/assets/{settings-DaR5vif_.js → settings-CRmO7zUG.js} +2 -2
  35. package/dist/renderer/assets/{settings-api-DXYCjMQY.js → settings-api-HQ7ZFPWi.js} +2 -2
  36. package/dist/renderer/assets/{workbenchSettings-CwW0JEe6.js → workbenchSettings-CZBWsliT.js} +2 -2
  37. package/dist/renderer/entries/main/index.html +6 -6
  38. package/dist/renderer/entries/popover/index.html +5 -5
  39. package/dist/renderer/entries/settings/index.html +5 -5
  40. package/dist/renderer/entries/workbench-settings/index.html +4 -4
  41. package/dist/service-host/sync-api-patch.js +33 -3
  42. package/dist/shared/ipc-channels.d.ts +28 -14
  43. package/dist/shared/ipc-channels.js +10 -17
  44. package/dist/shared/ipc-schemas.d.ts +21 -19
  45. package/dist/shared/ipc-schemas.js +32 -26
  46. package/dist/shared/view-ids.d.ts +19 -0
  47. package/dist/shared/view-ids.js +25 -0
  48. package/dist/simulator/assets/device-shell-CT3LRnTB.js +2 -0
  49. package/dist/simulator/assets/{simulator-CYPhufF2.js → simulator-BizhGGE3.js} +3 -3
  50. package/dist/simulator/simulator.html +1 -1
  51. package/package.json +5 -5
  52. package/dist/renderer/assets/index-BMwmmaSp.js +0 -46
  53. package/dist/renderer/assets/ipc-transport-BZ4gxQ4_.css +0 -1
  54. package/dist/simulator/assets/device-shell-H3Bq5NgA.js +0 -2
@@ -0,0 +1 @@
1
+ *,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-family);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-family-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (width>=640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (width>=768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (width>=1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (width>=1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (width>=1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1\.5{right:.375rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-28{height:7rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-\[10px\]{height:10px}.h-\[1px\]{height:1px}.h-\[30px\]{height:30px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:0}.min-h-\[188px\]{min-height:188px}.w-1\.5{width:.375rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[10px\]{width:10px}.w-\[1px\]{width:1px}.w-\[320px\]{width:320px}.w-\[340px\]{width:340px}.w-\[560px\]{width:560px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-2{min-width:.5rem}.max-w-16{max-width:4rem}.max-w-28{max-width:7rem}.max-w-\[180px\]{max-width:180px}.max-w-\[240px\]{max-width:240px}.max-w-\[280px\]{max-width:280px}.max-w-\[90vw\]{max-width:90vw}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.animate-\[pulse_1s_infinite\]{animation:1s infinite pulse}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:var(--radius)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-border-subtle{border-color:var(--color-border-subtle)}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-l-transparent{border-left-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-bg{background-color:var(--color-bg)}.bg-bg-panel{background-color:var(--color-bg-panel)}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-border{background-color:var(--color-border)}.bg-overlay{background-color:var(--color-overlay)}.bg-sim-bg{background-color:var(--color-sim-bg)}.bg-sim-bottom{background-color:var(--color-sim-bottom)}.bg-status-error{background-color:var(--color-status-error)}.bg-status-warn{background-color:var(--color-status-warn)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-surface-active{background-color:var(--color-surface-active)}.bg-surface-input{background-color:var(--color-surface-input)}.bg-surface-thumb{background-color:var(--color-surface-thumb)}.bg-transparent{background-color:#0000}.bg-warn-bg{background-color:var(--color-warn-bg)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-top{-o-object-position:top;object-position:top}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-px{padding-top:1px;padding-bottom:1px}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-family-mono)}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-\[18px\]{line-height:18px}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-\[var\(--color-code-blue\)\]{color:var(--color-code-blue)}.text-\[var\(--color-status-warn\)\]{color:var(--color-status-warn)}.text-accent{color:var(--color-accent)}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-border-subtle{color:var(--color-border-subtle)}.text-code-blue{color:var(--color-code-blue)}.text-code-keyword{color:var(--color-code-keyword)}.text-code-label{color:var(--color-code-label)}.text-code-orange{color:var(--color-code-orange)}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-status-error{color:var(--color-status-error)}.text-status-success{color:var(--color-status-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-muted{color:var(--color-text-muted)}.text-text-secondary{color:var(--color-text-secondary)}.text-transparent{color:#0000}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.placeholder-text-dim::placeholder{color:var(--color-text-dim)}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-\[0_8px_24px_var\(--color-overlay-heavy\)\]{--tw-shadow:0 8px 24px var(--color-overlay-heavy);--tw-shadow-colored:0 8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-offset-bg{--tw-ring-offset-color:var(--color-bg)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--color-accent:#7057ff;--color-accent-hover:#6c56eb;--color-bg:#1a1a1a;--color-bg-panel:#242424;--color-surface:#292929;--color-surface-2:#2c2e30;--color-surface-3:#36393a;--color-surface-active:#404244;--color-surface-input:#3d3d3d;--color-surface-selected:#333;--color-surface-thumb:#4a4a4a;--color-surface-splitter:#212121;--color-border:#3b3b3b;--color-border-subtle:#2e2e2e;--color-border-strong:#454545;--color-ring:var(--color-accent);--color-text:#e0e0e0;--color-text-secondary:#969696;--color-text-muted:#666;--color-text-dim:#545454;--color-text-white:#fff;--color-code-blue:#9adbfe;--color-code-orange:#ce9178;--color-code-label:#858585;--color-code-number:#b4cda7;--color-code-keyword:#579dd6;--color-status-warn:#f0a400;--color-status-error:#ff5768;--color-status-success:#21c45d;--color-status-ready:#7057ff;--color-danger-bg:#ff525226;--color-warn-bg:#f0a4001a;--color-warn-border:#f0a4004d;--color-overlay:#00000073;--color-overlay-heavy:#000000b3;--color-sim-bg:#121212;--color-sim-bottom:#171717;--color-sim-screen:#000;--color-phone-shell:#1c1c1c;--color-phone-border:#2d2d2e;--font-family:-apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--font-family-mono:"Menlo", "Consolas", monospace;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:13px;--font-size-md:14px;--font-size-lg:16px;--radius:4px;--radius-md:6px;--radius-lg:8px;--scrollbar-size:6px;--scrollbar-thumb:#454545;--header-h:40px;--splitter-w:4px}@media (prefers-color-scheme:light){:root{--color-accent:#7057ff;--color-accent-hover:#6c56eb;--color-bg:#fafafa;--color-bg-panel:#f0f0f0;--color-surface:#e8e8e8;--color-surface-2:#dfe0e2;--color-surface-3:#d8d9da;--color-surface-active:#caccce;--color-surface-input:#fff;--color-surface-selected:#dbdbdb;--color-surface-thumb:#b8b8b8;--color-surface-splitter:#e0e0e0;--color-border:#d1d1d1;--color-border-subtle:#dedede;--color-border-strong:#bdbdbd;--color-text:#1f1f1f;--color-text-secondary:#5c5c5c;--color-text-muted:#6b6b6b;--color-text-dim:gray;--color-text-white:#fff;--color-code-blue:#005499;--color-code-orange:#9a1919;--color-code-label:#6b6b6b;--color-code-number:#367c13;--color-code-keyword:#00c;--color-status-warn:#996900;--color-status-error:#cc0014;--color-status-success:#157a3a;--color-status-ready:#7057ff;--color-danger-bg:#ff52521f;--color-warn-bg:#f0a4001f;--color-warn-border:#f0a40059;--color-overlay:#0000004d;--color-overlay-heavy:#0009;--scrollbar-thumb:#b3b3b3;--color-sim-bg:#e8e8e8;--color-sim-bottom:#e0e0e0}}*,:before,:after{box-sizing:border-box}html,body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);height:100vh;margin:0;padding:0;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex;overflow:hidden}[role=separator]:focus,[role=separator]:focus-visible{outline:none}::-webkit-scrollbar{width:var(--scrollbar-size);height:var(--scrollbar-size)}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}[data-deck-group]>[role=tablist]{border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface-2);flex-shrink:0;align-items:center;gap:4px;height:32px;padding:0 8px;display:flex;overflow:auto hidden}[data-deck-group]>[role=tablist] [data-deck-tab]{height:24px;font-size:var(--font-size-sm);color:var(--color-text-muted);border-radius:var(--radius);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;gap:4px;padding:0 10px;line-height:1;transition:color .12s,background .12s;display:inline-flex}[data-deck-group]>[role=tablist] [data-deck-tab]:hover{color:var(--color-text);background:var(--color-surface)}[data-deck-group]>[role=tablist] [data-deck-tab][data-active=true]{color:var(--color-text);background:var(--color-surface-selected);box-shadow:0 1px 2px #0003}[data-deck-resize-handle]{z-index:1;background:0 0;flex-shrink:0;position:relative}[data-deck-resize-handle][aria-orientation=vertical]{cursor:col-resize;width:10px}[data-deck-resize-handle][aria-orientation=horizontal]{cursor:row-resize;height:10px}[data-deck-resize-handle]:before{content:"";background:var(--color-border);transition:background .12s;position:absolute}[data-deck-resize-handle][aria-orientation=vertical]:before{width:1px;top:0;bottom:0;left:50%;transform:translate(-.5px)}[data-deck-resize-handle][aria-orientation=horizontal]:before{height:1px;top:50%;left:0;right:0;transform:translateY(-.5px)}[data-deck-resize-handle]:hover:before,[data-deck-resize-handle][data-resize-handle-active]:before{background:var(--color-ring)}[data-deck-tab-close]{width:14px;height:14px;color:var(--color-text-muted);cursor:pointer;border-radius:3px;justify-content:center;align-items:center;margin-left:2px;font-size:12px;line-height:1;display:inline-flex}[data-deck-tab-close]:hover{color:var(--color-text);background:var(--color-surface-3)}.placeholder\:text-text-dim::placeholder{color:var(--color-text-dim)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-.125rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-border-subtle:hover{border-color:var(--color-border-subtle)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-danger-bg:hover{background-color:var(--color-danger-bg)}.hover\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\:bg-surface-active:hover{background-color:var(--color-surface-active)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-hover:hover{color:var(--color-accent-hover)}.hover\:text-status-error:hover{color:var(--color-status-error)}.hover\:text-text:hover{color:var(--color-text)}.hover\:text-text-muted:hover{color:var(--color-text-muted)}.hover\:opacity-100:hover{opacity:1}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-text-muted:focus{border-color:var(--color-text-muted)}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-accent:focus{--tw-ring-color:var(--color-accent)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-accent:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-bg:focus-visible{--tw-ring-offset-color:var(--color-bg)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-35:disabled{opacity:.35}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:bg-ring{background-color:var(--color-ring)}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[state\=checked\]\:translate-x-\[18px\][data-state=checked]{--tw-translate-x:18px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-\[3px\][data-state=unchecked]{--tw-translate-x:3px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[selected\=\'true\'\]\:bg-surface-active[data-selected=true]{background-color:var(--color-surface-active)}.data-\[state\=active\]\:bg-surface-selected[data-state=active]{background-color:var(--color-surface-selected)}.data-\[state\=checked\]\:bg-accent[data-state=checked]{background-color:var(--color-accent)}.data-\[state\=open\]\:bg-surface-3[data-state=open]{background-color:var(--color-surface-3)}.data-\[state\=open\]\:bg-surface-active[data-state=open],.data-\[state\=selected\]\:bg-surface-active[data-state=selected]{background-color:var(--color-surface-active)}.data-\[state\=unchecked\]\:bg-surface-3[data-state=unchecked]{background-color:var(--color-surface-3)}.data-\[selected\=true\]\:text-text[data-selected=true],.data-\[state\=active\]\:text-text[data-state=active]{color:var(--color-text)}.data-\[state\=open\]\:text-text-muted[data-state=open]{color:var(--color-text-muted)}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.group[data-resize-handle-active] .group-data-\[resize-handle-active\]\:bg-ring{background-color:var(--color-ring)}@media (width>=640px){.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:text-left{text-align:left}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.hover\:\[\&\>td\]\:bg-surface>td:hover{background-color:var(--color-surface)}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-text-muted [cmdk-group-heading]{color:var(--color-text-muted)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
@@ -1,2 +1,2 @@
1
- import{C as e,b as t,i as n,s as r,w as i,x as a}from"./ipc-transport-DTT-j7AD.js";import{t as o}from"./input-BbWPVJlM.js";import{b as s,i as c,s as l,t as u}from"./select-RyHeTVsc.js";import{n as d}from"./constants-EAMiwL9_.js";function f(e){n(r.Relaunch,e)}var p=i(a(),1),m=i(e(),1),h=t();function g(){let[e,t]=(0,m.useState)({top:0,left:0}),[n,r]=(0,m.useState)({startPage:``,scene:d,queryParams:[]}),[i,a]=(0,m.useState)([]);(0,m.useEffect)(()=>l(e=>{a(e.pages),r(e.config);let n=window.innerWidth-340-8;t({top:e.top,left:Math.min(e.left,n)})}),[]);function p(){c()}function g(){r(e=>({...e,queryParams:[...e.queryParams,{key:``,value:``}]}))}function _(e){r(t=>({...t,queryParams:t.queryParams.filter((t,n)=>n!==e)}))}function v(e,t,n){r(r=>{let i=[...r.queryParams];return i[e]={...i[e]??{key:``,value:``},[t]:n},{...r,queryParams:i}})}function y(){f(n)}return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`fixed inset-0`,onClick:p}),(0,h.jsxs)(`div`,{className:`fixed w-[340px] bg-surface border border-border-strong rounded-md p-3.5 shadow-[0_8px_24px_var(--color-overlay-heavy)] z-10`,style:{top:e.top,left:e.left},onClick:e=>e.stopPropagation(),children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px]`,children:`启动页面`}),(0,h.jsx)(u,{className:`flex-1 min-w-0 bg-surface-input border-text-dim text-text text-[12px] py-0.5`,value:n.startPage,onChange:e=>r(t=>({...t,startPage:e.target.value})),children:i.map(e=>(0,h.jsx)(`option`,{value:e,children:e},e))})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px]`,children:`scene 值`}),(0,h.jsx)(o,{type:`number`,className:`w-20 bg-surface-input border-text-dim text-text text-[12px]`,value:n.scene,onChange:e=>r(t=>({...t,scene:Number(e.target.value)||1001}))})]}),(0,h.jsxs)(`div`,{className:`flex items-start gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px] pt-1`,children:`启动参数`}),(0,h.jsxs)(`div`,{className:`flex flex-col gap-1.5 flex-1`,children:[n.queryParams.map((e,t)=>(0,h.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,h.jsx)(o,{className:`w-24 bg-surface-input border-text-dim text-text text-[12px]`,value:e.key,placeholder:`参数名`,onChange:e=>v(t,`key`,e.target.value)}),(0,h.jsx)(o,{className:`w-24 bg-surface-input border-text-dim text-text text-[12px]`,value:e.value,placeholder:`参数值`,onChange:e=>v(t,`value`,e.target.value)}),(0,h.jsx)(s,{variant:`ghost`,size:`icon-sm`,className:`text-text-secondary hover:text-status-error hover:bg-transparent`,onClick:()=>_(t),children:`×`})]},t)),(0,h.jsx)(s,{variant:`outline`,size:`xs`,className:`border-dashed border-text-dim text-text-secondary hover:border-accent hover:text-accent hover:bg-transparent`,onClick:g,children:`+ 添加参数`})]})]}),(0,h.jsx)(`div`,{className:`mt-3.5`,children:(0,h.jsx)(s,{onClick:y,children:`▶ 重新编译`})})]})]})}p.createRoot(document.getElementById(`root`)).render((0,h.jsx)(g,{}));
2
- //# sourceMappingURL=popover-CjAdKdAo.js.map
1
+ import{C as e,b as t,i as n,s as r,w as i,x as a}from"./ipc-transport-Be-AzCub.js";import{t as o}from"./input-Djg2NR4U.js";import{_ as s,i as c,s as l,t as u}from"./select-DesFfkVV.js";import{n as d}from"./constants-EAMiwL9_.js";function f(e){n(r.Relaunch,e)}var p=i(a(),1),m=i(e(),1),h=t();function g(){let[e,t]=(0,m.useState)({top:0,left:0}),[n,r]=(0,m.useState)({startPage:``,scene:d,queryParams:[]}),[i,a]=(0,m.useState)([]);(0,m.useEffect)(()=>l(e=>{a(e.pages),r(e.config);let n=window.innerWidth-340-8;t({top:e.top,left:Math.min(e.left,n)})}),[]);function p(){c()}function g(){r(e=>({...e,queryParams:[...e.queryParams,{key:``,value:``}]}))}function _(e){r(t=>({...t,queryParams:t.queryParams.filter((t,n)=>n!==e)}))}function v(e,t,n){r(r=>{let i=[...r.queryParams];return i[e]={...i[e]??{key:``,value:``},[t]:n},{...r,queryParams:i}})}function y(){f(n)}return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`fixed inset-0`,onClick:p}),(0,h.jsxs)(`div`,{className:`fixed w-[340px] bg-surface border border-border-strong rounded-md p-3.5 shadow-[0_8px_24px_var(--color-overlay-heavy)] z-10`,style:{top:e.top,left:e.left},onClick:e=>e.stopPropagation(),children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px]`,children:`启动页面`}),(0,h.jsx)(u,{className:`flex-1 min-w-0 bg-surface-input border-text-dim text-text text-[12px] py-0.5`,value:n.startPage,onChange:e=>r(t=>({...t,startPage:e.target.value})),children:i.map(e=>(0,h.jsx)(`option`,{value:e,children:e},e))})]}),(0,h.jsxs)(`div`,{className:`flex items-center gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px]`,children:`scene 值`}),(0,h.jsx)(o,{type:`number`,className:`w-20 bg-surface-input border-text-dim text-text text-[12px]`,value:n.scene,onChange:e=>r(t=>({...t,scene:Number(e.target.value)||1001}))})]}),(0,h.jsxs)(`div`,{className:`flex items-start gap-2.5 mb-3`,children:[(0,h.jsx)(`label`,{className:`w-16 shrink-0 text-code-label text-[12px] pt-1`,children:`启动参数`}),(0,h.jsxs)(`div`,{className:`flex flex-col gap-1.5 flex-1`,children:[n.queryParams.map((e,t)=>(0,h.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,h.jsx)(o,{className:`w-24 bg-surface-input border-text-dim text-text text-[12px]`,value:e.key,placeholder:`参数名`,onChange:e=>v(t,`key`,e.target.value)}),(0,h.jsx)(o,{className:`w-24 bg-surface-input border-text-dim text-text text-[12px]`,value:e.value,placeholder:`参数值`,onChange:e=>v(t,`value`,e.target.value)}),(0,h.jsx)(s,{variant:`ghost`,size:`icon-sm`,className:`text-text-secondary hover:text-status-error hover:bg-transparent`,onClick:()=>_(t),children:`×`})]},t)),(0,h.jsx)(s,{variant:`outline`,size:`xs`,className:`border-dashed border-text-dim text-text-secondary hover:border-accent hover:text-accent hover:bg-transparent`,onClick:g,children:`+ 添加参数`})]})]}),(0,h.jsx)(`div`,{className:`mt-3.5`,children:(0,h.jsx)(s,{onClick:y,children:`▶ 重新编译`})})]})]})}p.createRoot(document.getElementById(`root`)).render((0,h.jsx)(g,{}));
2
+ //# sourceMappingURL=popover-eDUh4NYe.js.map
@@ -1,2 +1,2 @@
1
- import{C as e,_ as t,b as n,f as r,r as i,s as a,t as o,v as s,w as c}from"./ipc-transport-DTT-j7AD.js";import{i as l,n as u}from"./input-BbWPVJlM.js";var d=c(e(),1),f=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,p=l,m=(e,t)=>n=>{if(t?.variants==null)return p(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=f(t)||f(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return p(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},h=n(),g=m(`inline-flex items-center justify-center gap-1.5 font-medium transition-colors focus:outline-none disabled:opacity-35 disabled:cursor-not-allowed whitespace-nowrap shrink-0`,{variants:{variant:{default:`bg-accent text-text-white hover:bg-accent-hover rounded`,ghost:`text-text-secondary hover:bg-surface-3 hover:text-text rounded`,outline:`border border-border text-text-muted hover:border-border-subtle hover:text-text rounded`,icon:`text-text-secondary hover:bg-surface-3 hover:text-text-muted rounded`,tab:`text-text-muted hover:text-text hover:bg-surface-3 rounded`,"tab-active":`text-text bg-surface-active rounded`,danger:`border border-transparent text-text-secondary hover:text-status-error hover:bg-danger-bg rounded-full`},size:{default:`h-7 px-4 text-[13px]`,sm:`h-6 px-3 text-[12px]`,xs:`h-5 px-2 text-[11px]`,icon:`h-7 w-7 p-0 text-[15px]`,"icon-sm":`h-6 w-6 p-0 text-[14px]`}},defaultVariants:{variant:`default`,size:`default`}}),_=d.forwardRef(({className:e,variant:t,size:n,...r},i)=>(0,h.jsx)(`button`,{ref:i,className:u(g({variant:t,size:n}),e),...r}));_.displayName=`Button`;var v=[{name:`iPhone SE`,width:375,height:667,pixelRatio:2,statusBarHeight:20,system:`iOS 15.0`,notchType:`none`,safeAreaInsets:{top:20,right:0,bottom:0,left:0}},{name:`iPhone X`,width:375,height:812,pixelRatio:3,statusBarHeight:44,system:`iOS 16.0`,notchType:`notch`,safeAreaInsets:{top:44,right:0,bottom:34,left:0}},{name:`iPhone 14`,width:390,height:844,pixelRatio:3,statusBarHeight:47,system:`iOS 16.0`,notchType:`notch`,safeAreaInsets:{top:47,right:0,bottom:34,left:0}},{name:`iPhone 14 Pro`,width:393,height:852,pixelRatio:3,statusBarHeight:54,system:`iOS 16.3`,notchType:`dynamic-island`,safeAreaInsets:{top:54,right:0,bottom:34,left:0}},{name:`iPhone 16 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 18.0`,notchType:`dynamic-island`,safeAreaInsets:{top:59,right:0,bottom:34,left:0}},{name:`iPhone 17 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 19.0`,notchType:`dynamic-island`,safeAreaInsets:{top:59,right:0,bottom:34,left:0}}],y=[100,85,75,50],b=1500;function x(e,t){return o(r.AttachNative,e,t)}function S(e){return o(r.SetNativeBounds,e)}function C(e){return o(r.SetDeviceInfo,e)}function w(e){return o(a.Show,e)}function T(){return o(a.Hide)}function E(e){return i(a.Closed,()=>e())}function D(e){return i(a.Init,t=>e(t))}function O(e){return i(a.Relaunch,t=>e(t))}function k(e){return i(s.NavigateBack,()=>e())}function A(e){return i(r.CurrentPage,t=>e(t))}function j(e){return o(t.SimulatorDevtoolsBounds,e)}function M(e){return o(t.WorkbenchBounds,e)}function N(e){return o(t.HostToolbarBounds,e)}function P(e){return i(t.HostToolbarHeightChanged,t=>e(t))}function F(){return o(t.HostToolbarGetHeight)}var I=d.forwardRef(({className:e,children:t,...n},r)=>(0,h.jsx)(`select`,{ref:r,className:u(`bg-surface border border-border text-text-secondary`,`px-1.5 py-0.5 rounded text-[11px] cursor-pointer`,`focus:outline-none focus:border-accent`,e),...n,children:t}));I.displayName=`Select`;export{b as _,P as a,_ as b,O as c,N as d,j as f,w as g,S as h,T as i,A as l,C as m,x as n,E as o,M as p,F as r,D as s,I as t,k as u,v,y};
2
- //# sourceMappingURL=select-RyHeTVsc.js.map
1
+ import{C as e,_ as t,b as n,f as r,r as i,s as a,t as o,v as s,w as c}from"./ipc-transport-Be-AzCub.js";import{i as l,n as u}from"./input-Djg2NR4U.js";var d=c(e(),1),f=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,p=l,m=(e,t)=>n=>{if(t?.variants==null)return p(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=f(t)||f(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return p(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},h=n(),g=m(`inline-flex items-center justify-center gap-1.5 font-medium transition-colors focus:outline-none disabled:opacity-35 disabled:cursor-not-allowed whitespace-nowrap shrink-0`,{variants:{variant:{default:`bg-accent text-text-white hover:bg-accent-hover rounded`,ghost:`text-text-secondary hover:bg-surface-3 hover:text-text rounded`,outline:`border border-border text-text-muted hover:border-border-subtle hover:text-text rounded`,icon:`text-text-secondary hover:bg-surface-3 hover:text-text-muted rounded`,tab:`text-text-muted hover:text-text hover:bg-surface-3 rounded`,"tab-active":`text-text bg-surface-active rounded`,danger:`border border-transparent text-text-secondary hover:text-status-error hover:bg-danger-bg rounded-full`},size:{default:`h-7 px-4 text-[13px]`,sm:`h-6 px-3 text-[12px]`,xs:`h-5 px-2 text-[11px]`,icon:`h-7 w-7 p-0 text-[15px]`,"icon-sm":`h-6 w-6 p-0 text-[14px]`}},defaultVariants:{variant:`default`,size:`default`}}),_=d.forwardRef(({className:e,variant:t,size:n,...r},i)=>(0,h.jsx)(`button`,{ref:i,className:u(g({variant:t,size:n}),e),...r}));_.displayName=`Button`;var v=[{name:`iPhone SE`,width:375,height:667,pixelRatio:2,statusBarHeight:20,system:`iOS 15.0`,notchType:`none`,safeAreaInsets:{top:20,right:0,bottom:0,left:0}},{name:`iPhone X`,width:375,height:812,pixelRatio:3,statusBarHeight:44,system:`iOS 16.0`,notchType:`notch`,safeAreaInsets:{top:44,right:0,bottom:34,left:0}},{name:`iPhone 14`,width:390,height:844,pixelRatio:3,statusBarHeight:47,system:`iOS 16.0`,notchType:`notch`,safeAreaInsets:{top:47,right:0,bottom:34,left:0}},{name:`iPhone 14 Pro`,width:393,height:852,pixelRatio:3,statusBarHeight:54,system:`iOS 16.3`,notchType:`dynamic-island`,safeAreaInsets:{top:54,right:0,bottom:34,left:0}},{name:`iPhone 16 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 18.0`,notchType:`dynamic-island`,safeAreaInsets:{top:59,right:0,bottom:34,left:0}},{name:`iPhone 17 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 19.0`,notchType:`dynamic-island`,safeAreaInsets:{top:59,right:0,bottom:34,left:0}}],y=[100,85,75,50],b=1500;function x(e,t){return o(r.AttachNative,e,t)}function S(e){return o(r.SetDeviceInfo,e)}function C(e){return o(a.Show,e)}function w(){return o(a.Hide)}function T(e){return i(a.Closed,()=>e())}function E(e){return i(a.Init,t=>e(t))}function D(e){return i(a.Relaunch,t=>e(t))}function O(e){return i(s.NavigateBack,()=>e())}function k(e){return i(r.CurrentPage,t=>e(t))}function A(e){return o(t.PlacementSnapshot,e)}function j(e){return i(t.HostToolbarHeightChanged,t=>e(t))}function M(){return o(t.HostToolbarGetHeight)}var N=d.forwardRef(({className:e,children:t,...n},r)=>(0,h.jsx)(`select`,{ref:r,className:u(`bg-surface border border-border text-text-secondary`,`px-1.5 py-0.5 rounded text-[11px] cursor-pointer`,`focus:outline-none focus:border-accent`,e),...n,children:t}));N.displayName=`Select`;export{_,j as a,D as c,A as d,S as f,y as g,v as h,w as i,k as l,b as m,x as n,T as o,C as p,M as r,E as s,N as t,O as u};
2
+ //# sourceMappingURL=select-DesFfkVV.js.map
@@ -1,2 +1,2 @@
1
- import{C as e,b as t,w as n,x as r}from"./ipc-transport-DTT-j7AD.js";import{t as i}from"./input-BbWPVJlM.js";import{l as a,n as o,o as s,t as c}from"./settings-api-DXYCjMQY.js";var l=n(r(),1),u=n(e(),1),d=t(),f=[{id:`local`,label:`本地设置`},{id:`project`,label:`项目配置`}];function p(){let[e,t]=(0,u.useState)(`local`),[n,r]=(0,u.useState)(``),[l,p]=(0,u.useState)({startPage:``,scene:1001,queryParams:[]}),[m,h]=(0,u.useState)({uploadWithSourceMap:!1});(0,u.useEffect)(()=>s(e=>{r(e.projectPath),p(e.config),h({uploadWithSourceMap:!!e.projectSettings?.uploadWithSourceMap})}),[]);function g(e){let t={...l,...e};p(t),o(t)}function _(e){let t={...m,...e};h(t),c(t)}function v(e,t,n){return(0,d.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-md border border-border bg-bg hover:bg-surface-3 transition-colors text-left`,children:[(0,d.jsx)(`span`,{className:`h-4 w-4 rounded-sm border flex items-center justify-center text-[11px] ${t?`bg-accent border-accent text-white`:`border-border bg-surface text-transparent`}`,children:`✓`}),(0,d.jsx)(`span`,{className:`text-[12px] text-text`,children:e})]})}return(0,d.jsx)(`div`,{"data-testid":`settings-backdrop`,className:`fixed inset-0`,onClick:()=>void a(!1),children:(0,d.jsxs)(`div`,{"data-testid":`settings-panel`,className:`fixed top-0 right-0 h-full w-[320px] flex flex-col bg-surface text-text border-l border-border shadow-[0_8px_24px_var(--color-overlay-heavy)]`,onClick:e=>e.stopPropagation(),children:[(0,d.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:f.map(n=>(0,d.jsx)(`button`,{className:`flex-1 py-2.5 text-[12px] text-center transition-colors ${e===n.id?`text-accent border-b-2 border-accent`:`text-text-secondary hover:text-text`}`,onClick:()=>t(n.id),children:n.label},n.id))}),(0,d.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[e===`local`&&(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(`div`,{className:`text-[12px] text-text-secondary`,children:`本地设置`}),v(`上传时启用 Sourcemap`,m.uploadWithSourceMap,e=>_({uploadWithSourceMap:e}))]}),e===`project`&&(0,d.jsxs)(`div`,{className:`space-y-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between py-2 border-b border-border`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`本地目录`}),(0,d.jsx)(`span`,{className:`text-[12px] text-text truncate ml-4 max-w-[180px]`,title:n,children:n})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`启动页面`}),(0,d.jsx)(i,{value:l.startPage,onChange:e=>g({startPage:e.target.value}),className:`w-full h-8 px-2 text-[12px]`})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`Scene`}),(0,d.jsx)(i,{type:`number`,value:l.scene,onChange:e=>g({scene:parseInt(e.target.value||`1001`,10)}),className:`w-full h-8 px-2 text-[12px]`})]})]})]})]})})}l.createRoot(document.getElementById(`root`)).render((0,d.jsx)(p,{}));
2
- //# sourceMappingURL=settings-DaR5vif_.js.map
1
+ import{C as e,b as t,w as n,x as r}from"./ipc-transport-Be-AzCub.js";import{t as i}from"./input-Djg2NR4U.js";import{l as a,n as o,o as s,t as c}from"./settings-api-HQ7ZFPWi.js";var l=n(r(),1),u=n(e(),1),d=t(),f=[{id:`local`,label:`本地设置`},{id:`project`,label:`项目配置`}];function p(){let[e,t]=(0,u.useState)(`local`),[n,r]=(0,u.useState)(``),[l,p]=(0,u.useState)({startPage:``,scene:1001,queryParams:[]}),[m,h]=(0,u.useState)({uploadWithSourceMap:!1});(0,u.useEffect)(()=>s(e=>{r(e.projectPath),p(e.config),h({uploadWithSourceMap:!!e.projectSettings?.uploadWithSourceMap})}),[]);function g(e){let t={...l,...e};p(t),o(t)}function _(e){let t={...m,...e};h(t),c(t)}function v(e,t,n){return(0,d.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-md border border-border bg-bg hover:bg-surface-3 transition-colors text-left`,children:[(0,d.jsx)(`span`,{className:`h-4 w-4 rounded-sm border flex items-center justify-center text-[11px] ${t?`bg-accent border-accent text-white`:`border-border bg-surface text-transparent`}`,children:`✓`}),(0,d.jsx)(`span`,{className:`text-[12px] text-text`,children:e})]})}return(0,d.jsx)(`div`,{"data-testid":`settings-backdrop`,className:`fixed inset-0`,onClick:()=>void a(!1),children:(0,d.jsxs)(`div`,{"data-testid":`settings-panel`,className:`fixed top-0 right-0 h-full w-[320px] flex flex-col bg-surface text-text border-l border-border shadow-[0_8px_24px_var(--color-overlay-heavy)]`,onClick:e=>e.stopPropagation(),children:[(0,d.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:f.map(n=>(0,d.jsx)(`button`,{className:`flex-1 py-2.5 text-[12px] text-center transition-colors ${e===n.id?`text-accent border-b-2 border-accent`:`text-text-secondary hover:text-text`}`,onClick:()=>t(n.id),children:n.label},n.id))}),(0,d.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[e===`local`&&(0,d.jsxs)(`div`,{className:`space-y-3`,children:[(0,d.jsx)(`div`,{className:`text-[12px] text-text-secondary`,children:`本地设置`}),v(`上传时启用 Sourcemap`,m.uploadWithSourceMap,e=>_({uploadWithSourceMap:e}))]}),e===`project`&&(0,d.jsxs)(`div`,{className:`space-y-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center justify-between py-2 border-b border-border`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`本地目录`}),(0,d.jsx)(`span`,{className:`text-[12px] text-text truncate ml-4 max-w-[180px]`,title:n,children:n})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`启动页面`}),(0,d.jsx)(i,{value:l.startPage,onChange:e=>g({startPage:e.target.value}),className:`w-full h-8 px-2 text-[12px]`})]}),(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`Scene`}),(0,d.jsx)(i,{type:`number`,value:l.scene,onChange:e=>g({scene:parseInt(e.target.value||`1001`,10)}),className:`w-full h-8 px-2 text-[12px]`})]})]})]})]})})}l.createRoot(document.getElementById(`root`)).render((0,d.jsx)(p,{}));
2
+ //# sourceMappingURL=settings-CRmO7zUG.js.map
@@ -1,2 +1,2 @@
1
- import{i as e,n as t,r as n,t as r,u as i,y as a}from"./ipc-transport-DTT-j7AD.js";function o(e){return r(i.SetVisible,e)}function s(t){e(i.ConfigChanged,t)}function c(t){e(i.ProjectSettingsChanged,t)}function l(e){return n(i.Init,t=>e(t))}function u(){return t(a.Get)}function d(e){return r(a.Save,e)}function f(e){return r(a.SetTheme,e)}function p(){return t(a.GetCdpStatus)}function m(){return t(a.GetMcpStatus)}function h(e){return n(a.Init,t=>e(t))}export{u as a,d as c,m as i,o as l,s as n,l as o,p as r,h as s,c as t,f as u};
2
- //# sourceMappingURL=settings-api-DXYCjMQY.js.map
1
+ import{i as e,n as t,r as n,t as r,u as i,y as a}from"./ipc-transport-Be-AzCub.js";function o(e){return r(i.SetVisible,e)}function s(t){e(i.ConfigChanged,t)}function c(t){e(i.ProjectSettingsChanged,t)}function l(e){return n(i.Init,t=>e(t))}function u(){return t(a.Get)}function d(e){return r(a.Save,e)}function f(e){return r(a.SetTheme,e)}function p(){return t(a.GetCdpStatus)}function m(){return t(a.GetMcpStatus)}function h(e){return n(a.Init,t=>e(t))}export{u as a,d as c,m as i,o as l,s as n,l as o,p as r,h as s,c as t,f as u};
2
+ //# sourceMappingURL=settings-api-HQ7ZFPWi.js.map
@@ -1,8 +1,8 @@
1
- import{C as e,b as t,w as n,x as r}from"./ipc-transport-DTT-j7AD.js";import{t as i}from"./constants-EAMiwL9_.js";import{a,c as o,i as s,r as c,s as l,u}from"./settings-api-DXYCjMQY.js";var d=n(r(),1),f=n(e(),1),p=t(),m=[{id:`general`,label:`通用`},{id:`debug`,label:`调试`},{id:`mcp`,label:`MCP`}];function h({checked:e,onClick:t}){return(0,p.jsx)(`button`,{type:`button`,onClick:t,className:`relative inline-flex h-5 w-9 shrink-0 rounded-full transition-colors`,style:{background:e?`var(--color-accent)`:`var(--color-surface-3)`},children:(0,p.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform`,style:{marginTop:3,transform:e?`translateX(18px)`:`translateX(3px)`}})})}function g(){let[e,t]=(0,f.useState)({cdp:{enabled:!1,port:i},mcp:{enabled:!1,port:7789},compile:{watch:!0},theme:`system`}),[n,r]=(0,f.useState)(null),[d,g]=(0,f.useState)(null),[_,v]=(0,f.useState)(`general`),[y,b]=(0,f.useState)(!1),[x,S]=(0,f.useState)(String(i)),[C,w]=(0,f.useState)(`7789`);(0,f.useEffect)(()=>{let e=l(e=>{t(e.settings),S(String(e.settings.cdp.port)),w(String(e.settings.mcp.port))});return a().then(e=>{t(e),S(String(e.cdp.port)),w(String(e.mcp.port))}),c().then(r),s().then(g),e},[]);function T(){b(!0),window.setTimeout(()=>b(!1),2e3)}function E(){t(e=>({...e,cdp:{...e.cdp,enabled:!e.cdp.enabled}}))}function D(){t(e=>({...e,mcp:{...e.mcp,enabled:!e.mcp.enabled}}))}function O(n){let r={...e,theme:n};t(r),u(n),o(r)}function k(n){let r={...e,compile:{...e.compile,watch:n}};t(r),o(r).then(T)}async function A(){let n=parseInt(x,10);if(Number.isNaN(n)||n<1024||n>65535)return;let i=parseInt(C,10);if(Number.isNaN(i)||i<1024||i>65535)return;let a={...e,cdp:{...e.cdp,port:n},mcp:{...e.mcp,port:i}};t(a),await o(a),r(await c()),g(await s()),T()}let j=n&&!n.implicitDevDefault&&(e.cdp.enabled!==n.active||e.cdp.enabled&&n.active&&e.cdp.port!==n.activePort);return(0,p.jsxs)(`div`,{className:`flex flex-col h-screen bg-surface text-text`,children:[(0,p.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:m.map(e=>(0,p.jsx)(`button`,{className:`flex-1 py-2.5 text-[12px] text-center transition-colors ${_===e.id?`text-accent border-b-2 border-accent`:`text-text-secondary hover:text-text`}`,onClick:()=>v(e.id),children:e.label},e.id))}),(0,p.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[_===`general`&&(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`编译`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后,打开项目时会监听源文件改动并自动重新编译。关闭则只在打开/手动重新编译时构建。配置在下次打开项目时生效。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`监听文件变化自动编译`}),(0,p.jsx)(h,{checked:e.compile.watch,onClick:()=>k(!e.compile.watch)})]})]}),(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-3 bg-bg`,children:[(0,p.jsx)(`div`,{children:(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`外观`})}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`颜色模式`}),(0,p.jsx)(`div`,{className:`flex rounded overflow-hidden border border-border text-[11px]`,children:[`system`,`dark`,`light`].map((t,n)=>{let r=t===`system`?`跟随系统`:t===`dark`?`深色`:`浅色`,i=e.theme===t;return(0,p.jsx)(`button`,{onClick:()=>O(t),className:[`px-3 py-1 transition-colors`,n>0?`border-l border-border`:``,i?`bg-accent text-white`:`text-text-secondary hover:text-text hover:bg-surface-3`].join(` `),children:r},t)})})]})]}),y&&(0,p.jsx)(`div`,{className:`text-[11px] text-status-success`,children:`已保存`})]}),_===`debug`&&(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`DevTools Protocol`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后可通过 DevTools Protocol 连接调试模拟器。配置变更需要重启应用后生效。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 DevTools Protocol`}),(0,p.jsx)(h,{checked:e.cdp.enabled,onClick:E})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`调试端口`}),(0,p.jsx)(`input`,{type:`number`,min:1024,max:65535,value:x,onChange:e=>S(e.target.value),disabled:!e.cdp.enabled,className:`w-24 h-7 px-2 rounded text-[12px] outline-none bg-surface border border-border text-text`,style:{opacity:e.cdp.enabled?1:.4}}),(0,p.jsxs)(`span`,{className:`text-[11px] text-text-dim`,children:[`默认 `,9222]})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 space-y-2 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium text-text-secondary`,children:`当前状态`}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:n?.active?`var(--color-status-success)`:`var(--color-text-dim)`}}),(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:n?.active?`CDP 已激活 - 端口 ${n.activePort}`:`CDP 未激活`})]}),n?.implicitDevDefault&&(0,p.jsx)(`div`,{className:`text-[11px] text-text-dim`,children:`当前为开发模式默认端口`}),n?.active&&(0,p.jsxs)(`div`,{className:`text-[11px] text-text-dim font-mono`,children:[`调试地址: http://localhost:`,n.activePort]})]}),j&&(0,p.jsx)(`div`,{className:`rounded px-3 py-2 text-[12px] border bg-warn-bg text-[var(--color-status-warn)]`,children:`配置已变更,需要重启应用后生效`}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`button`,{onClick:A,className:`h-7 px-4 rounded text-[13px] font-medium text-white bg-accent hover:bg-accent-hover`,children:`保存`}),y&&(0,p.jsx)(`span`,{className:`text-[11px] text-status-success`,children:`已保存`})]})]}),_===`mcp`&&(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`MCP 配置`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`AI 助手可以通过 MCP 连接当前开发工具,读取 console、截图、执行 JS、查看 DOM / Storage / 网络请求。启用后开发工具启动时会自动监听 SSE 端点,并自动启用 CDP。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 MCP 服务`}),(0,p.jsx)(h,{checked:e.mcp.enabled,onClick:D})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`SSE 端口`}),(0,p.jsx)(`input`,{type:`number`,min:1024,max:65535,value:C,onChange:e=>w(e.target.value),disabled:!e.mcp.enabled,className:`w-24 h-7 px-2 rounded text-[12px] outline-none bg-surface border border-border text-text`,style:{opacity:e.mcp.enabled?1:.4}}),(0,p.jsx)(`span`,{className:`text-[11px] text-text-dim`,children:`默认 7789`})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 space-y-2 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium text-text-secondary`,children:`当前状态`}),e.mcp.enabled?d?.running?(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-status-success)`}}),(0,p.jsxs)(`span`,{className:`text-[12px] text-text-secondary`,children:[`MCP 已运行 - 端口 `,d.activePort]})]}):(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-status-error, #e54d4d)`}}),(0,p.jsxs)(`span`,{className:`text-[12px] text-text-secondary`,children:[`MCP 未运行`,d?.error===`port-in-use`?`(端口 ${d.configuredPort} 已被占用)`:d?.error?`(${d.error})`:``]})]}):(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-text-dim)`}}),(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`MCP 未启用`})]})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium mb-2 text-text-secondary`,children:"`.mcp.json` 示例(SSE 传输)"}),(0,p.jsx)(`pre`,{className:`text-[11px] whitespace-pre-wrap leading-relaxed text-[var(--color-code-blue)] font-mono`,children:`{
1
+ import{C as e,b as t,w as n,x as r}from"./ipc-transport-Be-AzCub.js";import{t as i}from"./constants-EAMiwL9_.js";import{a,c as o,i as s,r as c,s as l,u}from"./settings-api-HQ7ZFPWi.js";var d=n(r(),1),f=n(e(),1),p=t(),m=[{id:`general`,label:`通用`},{id:`debug`,label:`调试`},{id:`mcp`,label:`MCP`}];function h({checked:e,onClick:t}){return(0,p.jsx)(`button`,{type:`button`,onClick:t,className:`relative inline-flex h-5 w-9 shrink-0 rounded-full transition-colors`,style:{background:e?`var(--color-accent)`:`var(--color-surface-3)`},children:(0,p.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform`,style:{marginTop:3,transform:e?`translateX(18px)`:`translateX(3px)`}})})}function g(){let[e,t]=(0,f.useState)({cdp:{enabled:!1,port:i},mcp:{enabled:!1,port:7789},compile:{watch:!0},theme:`system`}),[n,r]=(0,f.useState)(null),[d,g]=(0,f.useState)(null),[_,v]=(0,f.useState)(`general`),[y,b]=(0,f.useState)(!1),[x,S]=(0,f.useState)(String(i)),[C,w]=(0,f.useState)(`7789`);(0,f.useEffect)(()=>{let e=l(e=>{t(e.settings),S(String(e.settings.cdp.port)),w(String(e.settings.mcp.port))});return a().then(e=>{t(e),S(String(e.cdp.port)),w(String(e.mcp.port))}),c().then(r),s().then(g),e},[]);function T(){b(!0),window.setTimeout(()=>b(!1),2e3)}function E(){t(e=>({...e,cdp:{...e.cdp,enabled:!e.cdp.enabled}}))}function D(){t(e=>({...e,mcp:{...e.mcp,enabled:!e.mcp.enabled}}))}function O(n){let r={...e,theme:n};t(r),u(n),o(r)}function k(n){let r={...e,compile:{...e.compile,watch:n}};t(r),o(r).then(T)}async function A(){let n=parseInt(x,10);if(Number.isNaN(n)||n<1024||n>65535)return;let i=parseInt(C,10);if(Number.isNaN(i)||i<1024||i>65535)return;let a={...e,cdp:{...e.cdp,port:n},mcp:{...e.mcp,port:i}};t(a),await o(a),r(await c()),g(await s()),T()}let j=n&&!n.implicitDevDefault&&(e.cdp.enabled!==n.active||e.cdp.enabled&&n.active&&e.cdp.port!==n.activePort);return(0,p.jsxs)(`div`,{className:`flex flex-col h-screen bg-surface text-text`,children:[(0,p.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:m.map(e=>(0,p.jsx)(`button`,{className:`flex-1 py-2.5 text-[12px] text-center transition-colors ${_===e.id?`text-accent border-b-2 border-accent`:`text-text-secondary hover:text-text`}`,onClick:()=>v(e.id),children:e.label},e.id))}),(0,p.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[_===`general`&&(0,p.jsxs)(`div`,{className:`space-y-4`,children:[(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`编译`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后,打开项目时会监听源文件改动并自动重新编译。关闭则只在打开/手动重新编译时构建。配置在下次打开项目时生效。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`监听文件变化自动编译`}),(0,p.jsx)(h,{checked:e.compile.watch,onClick:()=>k(!e.compile.watch)})]})]}),(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-3 bg-bg`,children:[(0,p.jsx)(`div`,{children:(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`外观`})}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`颜色模式`}),(0,p.jsx)(`div`,{className:`flex rounded overflow-hidden border border-border text-[11px]`,children:[`system`,`dark`,`light`].map((t,n)=>{let r=t===`system`?`跟随系统`:t===`dark`?`深色`:`浅色`,i=e.theme===t;return(0,p.jsx)(`button`,{onClick:()=>O(t),className:[`px-3 py-1 transition-colors`,n>0?`border-l border-border`:``,i?`bg-accent text-white`:`text-text-secondary hover:text-text hover:bg-surface-3`].join(` `),children:r},t)})})]})]}),y&&(0,p.jsx)(`div`,{className:`text-[11px] text-status-success`,children:`已保存`})]}),_===`debug`&&(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`DevTools Protocol`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后可通过 DevTools Protocol 连接调试模拟器。配置变更需要重启应用后生效。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 DevTools Protocol`}),(0,p.jsx)(h,{checked:e.cdp.enabled,onClick:E})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`调试端口`}),(0,p.jsx)(`input`,{type:`number`,min:1024,max:65535,value:x,onChange:e=>S(e.target.value),disabled:!e.cdp.enabled,className:`w-24 h-7 px-2 rounded text-[12px] outline-none bg-surface border border-border text-text`,style:{opacity:e.cdp.enabled?1:.4}}),(0,p.jsxs)(`span`,{className:`text-[11px] text-text-dim`,children:[`默认 `,9222]})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 space-y-2 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium text-text-secondary`,children:`当前状态`}),(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:n?.active?`var(--color-status-success)`:`var(--color-text-dim)`}}),(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:n?.active?`CDP 已激活 - 端口 ${n.activePort}`:`CDP 未激活`})]}),n?.implicitDevDefault&&(0,p.jsx)(`div`,{className:`text-[11px] text-text-dim`,children:`当前为开发模式默认端口`}),n?.active&&(0,p.jsxs)(`div`,{className:`text-[11px] text-text-dim font-mono`,children:[`调试地址: http://localhost:`,n.activePort]})]}),j&&(0,p.jsx)(`div`,{className:`rounded px-3 py-2 text-[12px] border bg-warn-bg text-[var(--color-status-warn)]`,children:`配置已变更,需要重启应用后生效`}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`button`,{onClick:A,className:`h-7 px-4 rounded text-[13px] font-medium text-white bg-accent hover:bg-accent-hover`,children:`保存`}),y&&(0,p.jsx)(`span`,{className:`text-[11px] text-status-success`,children:`已保存`})]})]}),_===`mcp`&&(0,p.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`MCP 配置`}),(0,p.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`AI 助手可以通过 MCP 连接当前开发工具,读取 console、截图、执行 JS、查看 DOM / Storage / 网络请求。启用后开发工具启动时会自动监听 SSE 端点,并自动启用 CDP。`})]}),(0,p.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 MCP 服务`}),(0,p.jsx)(h,{checked:e.mcp.enabled,onClick:D})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`SSE 端口`}),(0,p.jsx)(`input`,{type:`number`,min:1024,max:65535,value:C,onChange:e=>w(e.target.value),disabled:!e.mcp.enabled,className:`w-24 h-7 px-2 rounded text-[12px] outline-none bg-surface border border-border text-text`,style:{opacity:e.mcp.enabled?1:.4}}),(0,p.jsx)(`span`,{className:`text-[11px] text-text-dim`,children:`默认 7789`})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 space-y-2 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium text-text-secondary`,children:`当前状态`}),e.mcp.enabled?d?.running?(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-status-success)`}}),(0,p.jsxs)(`span`,{className:`text-[12px] text-text-secondary`,children:[`MCP 已运行 - 端口 `,d.activePort]})]}):(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-status-error, #e54d4d)`}}),(0,p.jsxs)(`span`,{className:`text-[12px] text-text-secondary`,children:[`MCP 未运行`,d?.error===`port-in-use`?`(端口 ${d.configuredPort} 已被占用)`:d?.error?`(${d.error})`:``]})]}):(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:`var(--color-text-dim)`}}),(0,p.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`MCP 未启用`})]})]}),(0,p.jsxs)(`div`,{className:`rounded p-3 border border-border bg-surface`,children:[(0,p.jsx)(`div`,{className:`text-[11px] font-medium mb-2 text-text-secondary`,children:"`.mcp.json` 示例(SSE 传输)"}),(0,p.jsx)(`pre`,{className:`text-[11px] whitespace-pre-wrap leading-relaxed text-[var(--color-code-blue)] font-mono`,children:`{
2
2
  "mcpServers": {
3
3
  "dimina-devtools": {
4
4
  "url": "http://127.0.0.1:${e.mcp.port}/sse"
5
5
  }
6
6
  }
7
7
  }`})]}),(0,p.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,p.jsx)(`button`,{onClick:A,className:`h-7 px-4 rounded text-[13px] font-medium text-white bg-accent hover:bg-accent-hover`,children:`保存`}),y&&(0,p.jsx)(`span`,{className:`text-[11px] text-status-success`,children:`已保存`})]})]})]})]})}d.createRoot(document.getElementById(`root`)).render((0,p.jsx)(g,{}));
8
- //# sourceMappingURL=workbenchSettings-CwW0JEe6.js.map
8
+ //# sourceMappingURL=workbenchSettings-CZBWsliT.js.map
@@ -26,13 +26,13 @@
26
26
  overflow: hidden;
27
27
  }
28
28
  </style>
29
- <script type="module" crossorigin src="../../assets/index-BMwmmaSp.js"></script>
30
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DTT-j7AD.js">
31
- <link rel="modulepreload" crossorigin href="../../assets/input-BbWPVJlM.js">
32
- <link rel="modulepreload" crossorigin href="../../assets/select-RyHeTVsc.js">
33
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DXYCjMQY.js">
29
+ <script type="module" crossorigin src="../../assets/index-jDrNHghH.js"></script>
30
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Be-AzCub.js">
31
+ <link rel="modulepreload" crossorigin href="../../assets/input-Djg2NR4U.js">
32
+ <link rel="modulepreload" crossorigin href="../../assets/select-DesFfkVV.js">
33
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-HQ7ZFPWi.js">
34
34
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
35
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BZ4gxQ4_.css">
35
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-C6-KPMqw.css">
36
36
  </head>
37
37
  <body>
38
38
  <div id="root"></div>
@@ -8,12 +8,12 @@
8
8
  <style>
9
9
  html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: transparent !important; }
10
10
  </style>
11
- <script type="module" crossorigin src="../../assets/popover-CjAdKdAo.js"></script>
12
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DTT-j7AD.js">
13
- <link rel="modulepreload" crossorigin href="../../assets/input-BbWPVJlM.js">
14
- <link rel="modulepreload" crossorigin href="../../assets/select-RyHeTVsc.js">
11
+ <script type="module" crossorigin src="../../assets/popover-eDUh4NYe.js"></script>
12
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Be-AzCub.js">
13
+ <link rel="modulepreload" crossorigin href="../../assets/input-Djg2NR4U.js">
14
+ <link rel="modulepreload" crossorigin href="../../assets/select-DesFfkVV.js">
15
15
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
16
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BZ4gxQ4_.css">
16
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-C6-KPMqw.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root"></div>
@@ -11,11 +11,11 @@
11
11
  closes the overlay — mirrors the popover entry. */
12
12
  html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: transparent !important; }
13
13
  </style>
14
- <script type="module" crossorigin src="../../assets/settings-DaR5vif_.js"></script>
15
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DTT-j7AD.js">
16
- <link rel="modulepreload" crossorigin href="../../assets/input-BbWPVJlM.js">
17
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DXYCjMQY.js">
18
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BZ4gxQ4_.css">
14
+ <script type="module" crossorigin src="../../assets/settings-CRmO7zUG.js"></script>
15
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Be-AzCub.js">
16
+ <link rel="modulepreload" crossorigin href="../../assets/input-Djg2NR4U.js">
17
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-HQ7ZFPWi.js">
18
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-C6-KPMqw.css">
19
19
  </head>
20
20
  <body>
21
21
  <div id="root"></div>
@@ -6,11 +6,11 @@
6
6
  <!-- See entries/main/index.html for CSP rationale. -->
7
7
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: http: https:; font-src 'self' data:; media-src 'self' blob: http: https:; connect-src 'self' http: https: ws: wss:;" />
8
8
  <title>开发工具设置</title>
9
- <script type="module" crossorigin src="../../assets/workbenchSettings-CwW0JEe6.js"></script>
10
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DTT-j7AD.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DXYCjMQY.js">
9
+ <script type="module" crossorigin src="../../assets/workbenchSettings-CZBWsliT.js"></script>
10
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-Be-AzCub.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-HQ7ZFPWi.js">
12
12
  <link rel="modulepreload" crossorigin href="../../assets/constants-EAMiwL9_.js">
13
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-BZ4gxQ4_.css">
13
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-C6-KPMqw.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -2,13 +2,43 @@ import { getAccountInfoSync, getSystemInfoSync } from './sync-impls/system-info.
2
2
  import { clearStorageSync, getStorageInfoSync, getStorageSync, removeStorageSync, setStorageSync, } from './sync-impls/storage.js';
3
3
  import { getMenuButtonBoundingClientRect } from './sync-impls/menu-button.js';
4
4
  const spawnContext = (globalThis.__diminaSpawnContext ?? {});
5
+ /**
6
+ * Notify main that a SYNC storage API just mutated the service-host store, so the
7
+ * Storage panel updates live. Sync APIs write `localStorage` directly here and
8
+ * never round-trip through main (the async path already does), so without this
9
+ * the panel would only reflect sync writes on a manual reload. Best-effort: no
10
+ * bridge (pool-warming stub, or non-native runtime) → silently skip.
11
+ */
12
+ function notifyStorageChange(change) {
13
+ const bridge = globalThis.DiminaServiceBridge;
14
+ if (!bridge || typeof bridge.invoke !== 'function')
15
+ return;
16
+ bridge.invoke({ type: 'storageChanged', target: 'container', body: change });
17
+ }
18
+ /** Full storage key with the active appId namespace prefix (matches sync-impls). */
19
+ function fullKey(key) {
20
+ return `${spawnContext.appId ?? ''}_${key}`;
21
+ }
22
+ /** localStorage string form of a wx storage value (matches sync-impls/storage.ts). */
23
+ function encode(data) {
24
+ return typeof data === 'object' ? JSON.stringify(data) : String(data);
25
+ }
5
26
  function patchNamespace(ns) {
6
27
  if (!ns)
7
28
  return;
8
29
  ns.getStorageSync = (key) => getStorageSync.call(spawnContext, { key }).data ?? '';
9
- ns.setStorageSync = (key, data) => setStorageSync.call(spawnContext, { key, data });
10
- ns.removeStorageSync = (key) => removeStorageSync.call(spawnContext, { key });
11
- ns.clearStorageSync = () => clearStorageSync.call(spawnContext);
30
+ ns.setStorageSync = (key, data) => {
31
+ setStorageSync.call(spawnContext, { key, data });
32
+ notifyStorageChange({ op: 'set', key: fullKey(key), value: encode(data) });
33
+ };
34
+ ns.removeStorageSync = (key) => {
35
+ removeStorageSync.call(spawnContext, { key });
36
+ notifyStorageChange({ op: 'remove', key: fullKey(key) });
37
+ };
38
+ ns.clearStorageSync = () => {
39
+ clearStorageSync.call(spawnContext);
40
+ notifyStorageChange({ op: 'clear' });
41
+ };
12
42
  ns.getStorageInfoSync = () => getStorageInfoSync.call(spawnContext);
13
43
  ns.getSystemInfoSync = () => getSystemInfoSync.call(spawnContext);
14
44
  ns.getAccountInfoSync = () => getAccountInfoSync.call(spawnContext);
@@ -7,7 +7,6 @@
7
7
  */
8
8
  export declare const SimulatorChannel: {
9
9
  readonly AttachNative: "simulator:attach-native";
10
- readonly SetNativeBounds: "simulator:set-native-bounds";
11
10
  readonly SetDeviceInfo: "simulator:set-device-info";
12
11
  readonly Detach: "simulator:detach";
13
12
  readonly Console: "simulator:console";
@@ -92,6 +91,27 @@ export type StorageWriteResult = {
92
91
  ok: false;
93
92
  error: string;
94
93
  };
94
+ /**
95
+ * A storage mutation reported by the service-host's SYNC wx storage APIs
96
+ * (`setStorageSync`/`removeStorageSync`/`clearStorageSync`). Those run inside the
97
+ * service-host window and write `localStorage` directly, so — unlike the async
98
+ * path (`runtimeInvoke`) and the panel's own writes — they never pass through
99
+ * main and would otherwise leave the Storage panel stale until a manual reload.
100
+ * The service-host posts this over `DiminaServiceBridge` as a `storageChanged`
101
+ * container message; bridge-router hands it to `onServiceStorageChanged`, which
102
+ * pushes the matching `StorageEvent` to the panel. `key` carries the full
103
+ * `${appId}_` prefix (same wire shape as the CDP / async paths).
104
+ */
105
+ export type SyncStorageChange = {
106
+ op: 'set';
107
+ key: string;
108
+ value: string;
109
+ } | {
110
+ op: 'remove';
111
+ key: string;
112
+ } | {
113
+ op: 'clear';
114
+ };
95
115
  export declare const SimulatorElementChannel: {
96
116
  readonly Inspect: "simulator:element:inspect";
97
117
  readonly Clear: "simulator:element:clear";
@@ -99,6 +119,7 @@ export declare const SimulatorElementChannel: {
99
119
  export declare const SimulatorWxmlChannel: {
100
120
  readonly GetSnapshot: "simulator:wxml:snapshot";
101
121
  readonly Event: "simulator:wxml:event";
122
+ readonly SetActive: "simulator:wxml:setActive";
102
123
  };
103
124
  export declare const SimulatorAppDataChannel: {
104
125
  readonly GetSnapshot: "simulator:appdata:snapshot";
@@ -192,14 +213,6 @@ export declare const DialogChannel: {
192
213
  readonly OpenDirectory: "dialog:openDirectory";
193
214
  };
194
215
  export declare const ViewChannel: {
195
- /** Update the simulator DevTools view's bounds (or hide if w/h = 0). */
196
- readonly SimulatorDevtoolsBounds: "view:simulator:devtools-bounds";
197
- /**
198
- * Host-controllable toolbar WebContentsView (sits ABOVE the devtools built-in
199
- * header). Forward anchor: the main renderer reports the toolbar placeholder's
200
- * bounds (or w/h=0 to hide). invoke.
201
- */
202
- readonly HostToolbarBounds: "view:host-toolbar:bounds";
203
216
  /**
204
217
  * Reverse size-advertiser: the host-toolbar WCV's OWN renderer advertises its
205
218
  * intrinsic content height so main reserves exactly that much. Payload
@@ -232,12 +245,13 @@ export declare const ViewChannel: {
232
245
  */
233
246
  readonly HostToolbarGetHeight: "view:host-toolbar:get-height";
234
247
  /**
235
- * Update the embedded workbench editor view's bounds (or hide if w/h=0).
236
- * Forward anchor mirroring `SimulatorDevtoolsBounds`: the main renderer
237
- * measures the 'editor' dock slot's placeholder rect and publishes it so
238
- * main overlays the workbench WebContentsView precisely.
248
+ * Renderer main: the window-level placement snapshot (one monotonic epoch
249
+ * per commit tick, one generation per renderer lifetime) that drives the view
250
+ * reconciler. The single source of truth for every managed native view's
251
+ * bounds/visibility/z-order supersedes the per-view bounds channels above.
252
+ * invoke.
239
253
  */
240
- readonly WorkbenchBounds: "view:workbench-bounds";
254
+ readonly PlacementSnapshot: "view:placement-snapshot";
241
255
  };
242
256
  export interface ViewBounds {
243
257
  x: number;
@@ -10,9 +10,6 @@ export const SimulatorChannel = {
10
10
  // Ask main to create the simulator as a top-level WebContentsView (so nested
11
11
  // render-host <webview>s can attach). Native-host is the sole runtime.
12
12
  AttachNative: 'simulator:attach-native',
13
- // Renderer reports the device-bezel inner-screen rect (CSS px from content
14
- // top-left) + zoom so main can overlay the simulator WCV on it.
15
- SetNativeBounds: 'simulator:set-native-bounds',
16
13
  // Renderer pushes the selected device's LOGICAL metrics (screen size,
17
14
  // pixelRatio, statusBarHeight, …) when the device dropdown changes. Main
18
15
  // maps it to a HostEnvSnapshot and live-updates the running service-host
@@ -84,6 +81,10 @@ export const SimulatorElementChannel = {
84
81
  export const SimulatorWxmlChannel = {
85
82
  GetSnapshot: 'simulator:wxml:snapshot',
86
83
  Event: 'simulator:wxml:event',
84
+ // renderer→main: whether the WXML panel is currently visible/active. Main
85
+ // only installs the render-guest DOM MutationObserver + pushes live tree
86
+ // updates while active, so an unseen panel never drives a full Vue-tree walk.
87
+ SetActive: 'simulator:wxml:setActive',
87
88
  };
88
89
  // ── AppData (native-host: main taps the service→render setData stream in
89
90
  // bridge-router and pushes the cumulative snapshot here — the service logic runs
@@ -187,14 +188,6 @@ export const DialogChannel = {
187
188
  // pixels relative to the window's content area (origin = top-left,
188
189
  // not including the OS chrome).
189
190
  export const ViewChannel = {
190
- /** Update the simulator DevTools view's bounds (or hide if w/h = 0). */
191
- SimulatorDevtoolsBounds: 'view:simulator:devtools-bounds',
192
- /**
193
- * Host-controllable toolbar WebContentsView (sits ABOVE the devtools built-in
194
- * header). Forward anchor: the main renderer reports the toolbar placeholder's
195
- * bounds (or w/h=0 to hide). invoke.
196
- */
197
- HostToolbarBounds: 'view:host-toolbar:bounds',
198
191
  /**
199
192
  * Reverse size-advertiser: the host-toolbar WCV's OWN renderer advertises its
200
193
  * intrinsic content height so main reserves exactly that much. Payload
@@ -227,12 +220,13 @@ export const ViewChannel = {
227
220
  */
228
221
  HostToolbarGetHeight: 'view:host-toolbar:get-height',
229
222
  /**
230
- * Update the embedded workbench editor view's bounds (or hide if w/h=0).
231
- * Forward anchor mirroring `SimulatorDevtoolsBounds`: the main renderer
232
- * measures the 'editor' dock slot's placeholder rect and publishes it so
233
- * main overlays the workbench WebContentsView precisely.
223
+ * Renderer main: the window-level placement snapshot (one monotonic epoch
224
+ * per commit tick, one generation per renderer lifetime) that drives the view
225
+ * reconciler. The single source of truth for every managed native view's
226
+ * bounds/visibility/z-order supersedes the per-view bounds channels above.
227
+ * invoke.
234
228
  */
235
- WorkbenchBounds: 'view:workbench-bounds',
229
+ PlacementSnapshot: 'view:placement-snapshot',
236
230
  };
237
231
  // ── Popover ──────────────────────────────────────────────────────────────
238
232
  export const PopoverChannel = {
@@ -282,4 +276,3 @@ export const UpdateChannel = {
282
276
  DownloadProgress: 'updates:downloadProgress',
283
277
  Available: 'updates:available',
284
278
  };
285
- //# sourceMappingURL=ipc-channels.js.map
@@ -31,20 +31,6 @@ export declare const PopoverShowSchema: z.ZodTuple<[z.ZodObject<{}, z.core.$loos
31
31
  * arbitrary origins (will-navigate hardening re-checks at navigation time).
32
32
  */
33
33
  export declare const SimulatorAttachNativeSchema: z.ZodTuple<[z.ZodString, z.ZodNumber], null>;
34
- /**
35
- * simulator:set-native-bounds (native-host only) — the renderer-measured
36
- * device-bezel inner-screen rect (CSS px, from `getBoundingClientRect()`, may
37
- * be fractional/zero) plus the device zoom percent. Positioned 1:1 as the
38
- * simulator WCV overlay bounds. Coordinates are plain finite numbers (x/y may
39
- * be negative when scrolled off-screen); zoom is the ZOOM_OPTIONS percent.
40
- */
41
- export declare const SimulatorSetNativeBoundsSchema: z.ZodTuple<[z.ZodObject<{
42
- x: z.ZodNumber;
43
- y: z.ZodNumber;
44
- width: z.ZodNumber;
45
- height: z.ZodNumber;
46
- zoom: z.ZodNumber;
47
- }, z.core.$strip>], null>;
48
34
  /**
49
35
  * simulator:set-device-info (native-host only) — the selected device's logical
50
36
  * metrics, mapped by main into the service-host window's HostEnvSnapshot. Sizes
@@ -72,11 +58,27 @@ export declare const SimulatorSetDeviceInfoSchema: z.ZodTuple<[z.ZodObject<{
72
58
  left: z.ZodNumber;
73
59
  }, z.core.$strip>;
74
60
  }, z.core.$strip>], null>;
75
- export declare const ViewBoundsSchema: z.ZodTuple<[z.ZodObject<{
76
- x: z.ZodNumber;
77
- y: z.ZodNumber;
78
- width: z.ZodNumber;
79
- height: z.ZodNumber;
61
+ export declare const PlacementSnapshotSchema: z.ZodTuple<[z.ZodObject<{
62
+ generation: z.ZodNumber;
63
+ epoch: z.ZodNumber;
64
+ views: z.ZodArray<z.ZodObject<{
65
+ viewId: z.ZodString;
66
+ placement: z.ZodUnion<readonly [z.ZodObject<{
67
+ visible: z.ZodLiteral<true>;
68
+ bounds: z.ZodObject<{
69
+ x: z.ZodNumber;
70
+ y: z.ZodNumber;
71
+ width: z.ZodNumber;
72
+ height: z.ZodNumber;
73
+ }, z.core.$strip>;
74
+ }, z.core.$strip>, z.ZodObject<{
75
+ visible: z.ZodLiteral<false>;
76
+ }, z.core.$strip>]>;
77
+ layer: z.ZodNumber;
78
+ extra: z.ZodOptional<z.ZodObject<{
79
+ zoom: z.ZodOptional<z.ZodNumber>;
80
+ }, z.core.$strip>>;
81
+ }, z.core.$strip>>;
80
82
  }, z.core.$strip>], null>;
81
83
  /**
82
84
  * host-toolbar reverse size-advertiser payload — the toolbar WCV renderer
@@ -61,22 +61,6 @@ export const SimulatorAttachNativeSchema = z.tuple([
61
61
  }),
62
62
  SimWidth,
63
63
  ]);
64
- /**
65
- * simulator:set-native-bounds (native-host only) — the renderer-measured
66
- * device-bezel inner-screen rect (CSS px, from `getBoundingClientRect()`, may
67
- * be fractional/zero) plus the device zoom percent. Positioned 1:1 as the
68
- * simulator WCV overlay bounds. Coordinates are plain finite numbers (x/y may
69
- * be negative when scrolled off-screen); zoom is the ZOOM_OPTIONS percent.
70
- */
71
- export const SimulatorSetNativeBoundsSchema = z.tuple([
72
- z.object({
73
- x: z.number().finite(),
74
- y: z.number().finite(),
75
- width: z.number().finite(),
76
- height: z.number().finite(),
77
- zoom: z.number().finite().positive(),
78
- }),
79
- ]);
80
64
  /**
81
65
  * simulator:set-device-info (native-host only) — the selected device's logical
82
66
  * metrics, mapped by main into the service-host window's HostEnvSnapshot. Sizes
@@ -102,19 +86,41 @@ export const SimulatorSetDeviceInfoSchema = z.tuple([
102
86
  }),
103
87
  }),
104
88
  ]);
89
+ // Non-negative bounded integer used by the reverse height-advertise payload.
90
+ const NonNegInt = z.number().int().min(0).max(100_000);
105
91
  /**
106
- * view:*:boundsrenderer-measured CSS pixel rectangle in window content
107
- * coordinates. Width/height = 0 is the canonical "overlay hidden" signal.
108
- * No upper bound is enforced (window can be very large); we only refuse
109
- * negative/NaN values that would break setBounds.
92
+ * view:placement-snapshotthe window-level desired-placement table driving
93
+ * the reconciler. `generation`/`epoch` are non-negative monotonic counters.
94
+ * Each view carries an opaque string id, a discriminated placement (visible +
95
+ * bounds, or hidden — bounds are plain finite numbers: x/y may be negative when
96
+ * scrolled off-screen, w/h may be 0 for a visible-but-empty view), a z-order
97
+ * layer, and optional host extras (the simulator's zoom).
110
98
  */
111
- const NonNegInt = z.number().int().min(0).max(100_000);
112
- export const ViewBoundsSchema = z.tuple([
99
+ const FiniteNum = z.number().finite();
100
+ const PlacementSchema = z.union([
101
+ z.object({
102
+ visible: z.literal(true),
103
+ bounds: z.object({
104
+ x: FiniteNum,
105
+ y: FiniteNum,
106
+ width: FiniteNum,
107
+ height: FiniteNum,
108
+ }),
109
+ }),
110
+ z.object({ visible: z.literal(false) }),
111
+ ]);
112
+ export const PlacementSnapshotSchema = z.tuple([
113
113
  z.object({
114
- x: NonNegInt,
115
- y: NonNegInt,
116
- width: NonNegInt,
117
- height: NonNegInt,
114
+ generation: z.number().int().min(0),
115
+ epoch: z.number().int().min(0),
116
+ views: z.array(z.object({
117
+ viewId: z.string().min(1).max(64),
118
+ placement: PlacementSchema,
119
+ layer: z.number().int(),
120
+ extra: z
121
+ .object({ zoom: z.number().finite().positive().optional() })
122
+ .optional(),
123
+ })).max(64),
118
124
  }),
119
125
  ]);
120
126
  /**
@@ -0,0 +1,19 @@
1
+ export declare const VIEW_ID: {
2
+ readonly simulator: "simulator";
3
+ readonly simulatorDevtools: "simulator-devtools";
4
+ readonly workbench: "workbench";
5
+ readonly hostToolbar: "host-toolbar";
6
+ readonly settings: "settings";
7
+ readonly popover: "popover";
8
+ };
9
+ export type DevtoolsViewId = (typeof VIEW_ID)[keyof typeof VIEW_ID];
10
+ export interface DevtoolsExtra {
11
+ zoom?: number;
12
+ }
13
+ export declare const VIEW_LAYER: {
14
+ readonly base: 0;
15
+ readonly hostToolbar: 5;
16
+ readonly settings: 10;
17
+ readonly popover: 20;
18
+ };
19
+ //# sourceMappingURL=view-ids.d.ts.map