@dimina-kit/devtools 0.3.0 → 0.3.1-dev.20260515105504
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.
- package/README.md +103 -41
- package/dist/main/api.d.ts +6 -2
- package/dist/main/api.js +5 -2
- package/dist/main/app/app.d.ts +1 -1
- package/dist/main/app/app.js +71 -36
- package/dist/main/app/launch.d.ts +2 -2
- package/dist/main/app/launch.js +6 -3
- package/dist/main/index.bundle.js +1134 -300
- package/dist/main/ipc/app.d.ts +2 -1
- package/dist/main/ipc/app.js +5 -4
- package/dist/main/ipc/index.d.ts +5 -4
- package/dist/main/ipc/index.js +5 -4
- package/dist/main/ipc/panels.d.ts +2 -1
- package/dist/main/ipc/panels.js +14 -9
- package/dist/main/ipc/popover.d.ts +4 -1
- package/dist/main/ipc/popover.js +15 -5
- package/dist/main/ipc/projects.d.ts +4 -1
- package/dist/main/ipc/projects.js +42 -5
- package/dist/main/ipc/session.d.ts +4 -1
- package/dist/main/ipc/session.js +26 -6
- package/dist/main/ipc/settings.d.ts +4 -1
- package/dist/main/ipc/settings.js +30 -17
- package/dist/main/ipc/simulator-module.d.ts +8 -0
- package/dist/main/ipc/simulator-module.js +19 -0
- package/dist/main/ipc/simulator.d.ts +2 -1
- package/dist/main/ipc/simulator.js +29 -15
- package/dist/main/ipc/toolbar.d.ts +2 -1
- package/dist/main/ipc/toolbar.js +3 -2
- package/dist/main/services/automation/index.js +88 -13
- package/dist/main/services/default-adapter.js +1 -3
- package/dist/main/services/mcp/server.d.ts +2 -1
- package/dist/main/services/mcp/server.js +5 -0
- package/dist/main/services/module.d.ts +18 -0
- package/dist/main/services/module.js +2 -0
- package/dist/main/services/notifications/renderer-notifier.d.ts +2 -0
- package/dist/main/services/projects/project-repository.d.ts +1 -0
- package/dist/main/services/projects/project-repository.js +3 -0
- package/dist/main/services/settings/index.d.ts +4 -0
- package/dist/main/services/settings/index.js +12 -1
- package/dist/main/services/simulator/custom-apis.d.ts +10 -0
- package/dist/main/services/simulator/custom-apis.js +26 -0
- package/dist/main/services/simulator/dir.d.ts +1 -1
- package/dist/main/services/simulator/dir.js +1 -4
- package/dist/main/services/simulator-storage/index.d.ts +22 -1
- package/dist/main/services/simulator-storage/index.js +390 -84
- package/dist/main/services/update/update-manager.d.ts +16 -1
- package/dist/main/services/update/update-manager.js +18 -15
- package/dist/main/services/views/view-manager.d.ts +4 -0
- package/dist/main/services/views/view-manager.js +33 -2
- package/dist/main/services/window-service.d.ts +24 -0
- package/dist/main/services/window-service.js +26 -0
- package/dist/main/services/workbench-context.d.ts +15 -0
- package/dist/main/services/workbench-context.js +6 -0
- package/dist/main/services/workspace/workspace-service.d.ts +1 -0
- package/dist/main/services/workspace/workspace-service.js +7 -3
- package/dist/main/simulator-apis.d.ts +23 -0
- package/dist/main/simulator-apis.js +24 -0
- package/dist/main/utils/disposable.d.ts +13 -0
- package/dist/main/utils/disposable.js +60 -0
- package/dist/main/utils/ipc-registry.d.ts +39 -0
- package/dist/main/utils/ipc-registry.js +109 -0
- package/dist/main/utils/ipc-schema.d.ts +28 -0
- package/dist/main/utils/ipc-schema.js +38 -0
- package/dist/main/utils/paths.d.ts +8 -0
- package/dist/main/utils/paths.js +33 -4
- package/dist/main/utils/sender-policy.d.ts +23 -0
- package/dist/main/utils/sender-policy.js +42 -0
- package/dist/main/windows/main-window/create.d.ts +6 -0
- package/dist/main/windows/main-window/create.js +65 -9
- package/dist/main/windows/main-window/events.d.ts +2 -1
- package/dist/main/windows/main-window/events.js +25 -2
- package/dist/main/windows/navigation-hardening.d.ts +24 -0
- package/dist/main/windows/navigation-hardening.js +55 -0
- package/dist/main/windows/settings-window/create.js +11 -1
- package/dist/preload/index.d.ts +17 -0
- package/dist/preload/index.js +17 -0
- package/dist/preload/instrumentation/app-data.js +178 -19
- package/dist/preload/instrumentation/wxml-extract.js +134 -3
- package/dist/preload/runtime/bridge.d.ts +3 -1
- package/dist/preload/runtime/bridge.js +55 -4
- package/dist/preload/runtime/custom-apis.d.ts +6 -0
- package/dist/preload/runtime/custom-apis.js +18 -0
- package/dist/preload/runtime/host.d.ts +1 -0
- package/dist/preload/runtime/host.js +13 -0
- package/dist/preload/shared/types.d.ts +2 -1
- package/dist/preload/windows/main.cjs +47 -0
- package/dist/preload/windows/main.cjs.map +7 -0
- package/dist/preload/windows/simulator.js +274 -25
- package/dist/renderer/assets/index-DW_0thr-.js +46 -0
- package/dist/renderer/assets/{input-VLotwer2.js → input-C5M5Wxn6.js} +2 -2
- package/dist/renderer/assets/{ipc-transport-COKIC6Ny.js → ipc-transport-CUsl-fS2.js} +6 -6
- package/dist/renderer/assets/ipc-transport-CltRuvhi.css +1 -0
- package/dist/renderer/assets/{popover-Dn0RwMLI.js → popover-BSBPVO0o.js} +2 -2
- package/dist/renderer/assets/{select-DzIsLaKX.js → select-B1tF3UAc.js} +2 -2
- package/dist/renderer/assets/{settings-CD-dacWB.js → settings-7w54H6p-.js} +2 -2
- package/dist/renderer/assets/settings-api-BjJalghB.js +2 -0
- package/dist/renderer/assets/workbenchSettings-q2_-nc8t.js +8 -0
- package/dist/renderer/entries/main/index.html +12 -5
- package/dist/renderer/entries/popover/index.html +7 -5
- package/dist/renderer/entries/settings/index.html +7 -5
- package/dist/renderer/entries/workbench-settings/index.html +6 -4
- package/dist/shared/ipc-channels.d.ts +45 -0
- package/dist/shared/ipc-channels.js +28 -0
- package/dist/shared/ipc-schemas.d.ts +113 -0
- package/dist/shared/ipc-schemas.js +128 -0
- package/dist/shared/types.d.ts +2 -0
- package/dist/simulator/assets/simulator-DL6kOCq-.js +9 -0
- package/dist/simulator/simulator.html +1 -1
- package/package.json +11 -27
- package/dist/preload/windows/main.d.ts +0 -6
- package/dist/preload/windows/main.js +0 -6
- package/dist/renderer/assets/index-D_HFRqZA.js +0 -46
- package/dist/renderer/assets/ipc-transport-6Gy3FXIL.css +0 -1
- package/dist/renderer/assets/settings-api-BV9MPckG.js +0 -2
- package/dist/renderer/assets/workbenchSettings-ClwgsvJL.js +0 -8
- package/dist/simulator/assets/simulator-C1eHXnuq.js +0 -9
|
@@ -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%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.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}.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-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\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.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{height:.25rem}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.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-\[1px\]{height:1px}.h-\[30px\]{height:30px}.h-auto{height:auto}.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-48{min-height:12rem}.w-1{width:.25rem}.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-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[1px\]{width:1px}.w-\[340px\]{width:340px}.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-\[280px\]{max-width:280px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.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}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.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}.gap-6{gap:1.5rem}.gap-px{gap:1px}.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-visible{overflow:visible}.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-\[36px\]{border-radius:36px}.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-none{border-radius:0}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.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{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.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-splitter{background-color:var(--color-surface-splitter)}.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))}.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-5{padding:1.25rem}.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}.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-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}.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-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-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-offset-bg{--tw-ring-offset-color:var(--color-bg)}.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-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}}*,: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}::-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}.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{background-color:var(--color-accent)}.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\: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)}.active\:bg-accent:active{background-color:var(--color-accent)}.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}.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-none[data-state=active]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.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}@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{
|
|
2
|
-
//# sourceMappingURL=popover-
|
|
1
|
+
import{S as e,T as t,i as n,l as r,w as i,x as a}from"./ipc-transport-CUsl-fS2.js";import{t as o}from"./input-C5M5Wxn6.js";import{a as s,l as c,n as l,t as u,x as d}from"./select-B1tF3UAc.js";function f(e){n(r.Relaunch,e)}var p=t(e(),1),m=t(i(),1),h=a();function g(){let[e,t]=(0,m.useState)({top:0,left:0}),[n,r]=(0,m.useState)({startPage:``,scene:l,queryParams:[]}),[i,a]=(0,m.useState)([]);(0,m.useEffect)(()=>c(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(){s()}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)(d,{variant:`ghost`,size:`icon-sm`,className:`text-text-secondary hover:text-status-error hover:bg-transparent`,onClick:()=>_(t),children:`×`})]},t)),(0,h.jsx)(d,{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)(d,{onClick:y,children:`▶ 重新编译`})})]})]})}p.createRoot(document.getElementById(`root`)).render((0,h.jsx)(g,{}));
|
|
2
|
+
//# sourceMappingURL=popover-BSBPVO0o.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=select-
|
|
1
|
+
import{T as e,c as t,g as n,l as r,n as i,p as a,r as o,t as s,v as c,w as l,x as u,y as d}from"./ipc-transport-CUsl-fS2.js";import{i as f,n as p}from"./input-C5M5Wxn6.js";var m=e(l(),1),h=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,g=f,_=(e,t)=>n=>{if(t?.variants==null)return g(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=h(t)||h(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 g(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)},v=u(),y=_(`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`}}),b=m.forwardRef(({className:e,variant:t,size:n,...r},i)=>(0,v.jsx)(`button`,{ref:i,className:p(y({variant:t,size:n}),e),...r}));b.displayName=`Button`;var x=[{name:`iPhone SE`,width:375,height:667,pixelRatio:2,statusBarHeight:20,system:`iOS 15.0`,safeAreaBottom:0},{name:`iPhone X`,width:375,height:812,pixelRatio:3,statusBarHeight:44,system:`iOS 16.0`,safeAreaBottom:34},{name:`iPhone 14`,width:390,height:844,pixelRatio:3,statusBarHeight:47,system:`iOS 16.0`,safeAreaBottom:34},{name:`iPhone 14 Pro`,width:393,height:852,pixelRatio:3,statusBarHeight:54,system:`iOS 16.3`,safeAreaBottom:34},{name:`iPhone 16 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 18.0`,safeAreaBottom:34},{name:`iPhone 17 Pro`,width:402,height:874,pixelRatio:3,statusBarHeight:59,system:`iOS 19.0`,safeAreaBottom:34}],S=[25,50,75,100],C=1500;function w(e,t){return s(a.Attach,e,t)}function T(e){return s(a.Resize,e)}function E(e,t){return s(a.SetVisible,e,t)}function D(){return i(t.List)}function O(){return s(t.SelectSimulator)}function k(){return i(n.GetActions)}function A(e){return s(`${n.ActionPrefix}${e}`)}function j(e){return s(r.Show,e)}function M(){return s(r.Hide)}function N(e){return o(d.Reset,()=>e())}function P(e){return o(n.ActionsChanged,()=>e())}function F(e){return o(r.Closed,()=>e())}function I(e){return o(r.Init,t=>e(t))}function L(e){return o(r.Relaunch,t=>e(t))}function R(e){return o(c.NavigateBack,()=>e())}var z=1001,B=m.forwardRef(({className:e,children:t,...n},r)=>(0,v.jsx)(`select`,{ref:r,className:p(`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}));B.displayName=`Select`;export{j as _,M as a,S as b,F as c,P as d,R as f,E as g,O as h,k as i,I as l,T as m,z as n,A as o,N as p,w as r,D as s,B as t,L as u,C as v,b as x,x as y};
|
|
2
|
+
//# sourceMappingURL=select-B1tF3UAc.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=settings-
|
|
1
|
+
import{S as e,T as t,w as n,x as r}from"./ipc-transport-CUsl-fS2.js";import{t as i}from"./input-C5M5Wxn6.js";import{a,n as o,t as s}from"./settings-api-BjJalghB.js";var c=t(e(),1),l=t(n(),1),u=r(),d=[{id:`local`,label:`本地设置`},{id:`project`,label:`项目配置`}];function f(){let[e,t]=(0,l.useState)(`local`),[n,r]=(0,l.useState)(``),[c,f]=(0,l.useState)({startPage:``,scene:1001,queryParams:[]}),[p,m]=(0,l.useState)({uploadWithSourceMap:!1});(0,l.useEffect)(()=>a(e=>{r(e.projectPath),f(e.config),m({uploadWithSourceMap:!!e.projectSettings?.uploadWithSourceMap})}),[]);function h(e){let t={...c,...e};f(t),o(t)}function g(e){let t={...p,...e};m(t),s(t)}function _(e,t,n){return(0,u.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,u.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,u.jsx)(`span`,{className:`text-[12px] text-text`,children:e})]})}return(0,u.jsxs)(`div`,{className:`flex flex-col h-screen bg-surface text-text`,children:[(0,u.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:d.map(n=>(0,u.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,u.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[e===`local`&&(0,u.jsxs)(`div`,{className:`space-y-3`,children:[(0,u.jsx)(`div`,{className:`text-[12px] text-text-secondary`,children:`本地设置`}),_(`上传时启用 Sourcemap`,p.uploadWithSourceMap,e=>g({uploadWithSourceMap:e}))]}),e===`project`&&(0,u.jsxs)(`div`,{className:`space-y-4`,children:[(0,u.jsxs)(`div`,{className:`flex items-center justify-between py-2 border-b border-border`,children:[(0,u.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`本地目录`}),(0,u.jsx)(`span`,{className:`text-[12px] text-text truncate ml-4 max-w-[180px]`,title:n,children:n})]}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`启动页面`}),(0,u.jsx)(i,{value:c.startPage,onChange:e=>h({startPage:e.target.value}),className:`w-full h-8 px-2 text-[12px]`})]}),(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`label`,{className:`block text-[12px] text-text-secondary mb-1`,children:`Scene`}),(0,u.jsx)(i,{type:`number`,value:c.scene,onChange:e=>h({scene:parseInt(e.target.value||`1001`,10)}),className:`w-full h-8 px-2 text-[12px]`})]})]})]})]})}c.createRoot(document.getElementById(`root`)).render((0,u.jsx)(f,{}));
|
|
2
|
+
//# sourceMappingURL=settings-7w54H6p-.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as e,f as t,i as n,n as r,r as i,t as a}from"./ipc-transport-CUsl-fS2.js";function o(e){n(t.ConfigChanged,e)}function s(e){n(t.ProjectSettingsChanged,e)}function c(e){return i(t.Init,t=>e(t))}function l(){return r(e.Get)}function u(t){return a(e.Save,t)}function d(t){return a(e.SetTheme,t)}function f(){return r(e.GetCdpStatus)}function p(t){return i(e.Init,e=>t(e))}export{c as a,d as c,l as i,o as n,p as o,f as r,u as s,s as t};
|
|
2
|
+
//# sourceMappingURL=settings-api-BjJalghB.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{S as e,T as t,w as n,x as r}from"./ipc-transport-CUsl-fS2.js";import{c as i,i as a,o,r as s,s as c}from"./settings-api-BjJalghB.js";var l=t(e(),1),u=t(n(),1),d=r(),f=[{id:`general`,label:`通用`},{id:`debug`,label:`调试`},{id:`mcp`,label:`MCP`}];function p({checked:e,onClick:t}){return(0,d.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,d.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 m(){let[e,t]=(0,u.useState)({cdp:{enabled:!1,port:9222},mcp:{enabled:!1,port:7789},compile:{watch:!0},theme:`system`}),[n,r]=(0,u.useState)(null),[l,m]=(0,u.useState)(`general`),[h,g]=(0,u.useState)(!1),[_,v]=(0,u.useState)(`9222`),[y,b]=(0,u.useState)(`7789`);(0,u.useEffect)(()=>{let e=o(e=>{t(e.settings),v(String(e.settings.cdp.port)),b(String(e.settings.mcp.port))});return a().then(e=>{t(e),v(String(e.cdp.port)),b(String(e.mcp.port))}),s().then(r),e},[]);function x(){g(!0),window.setTimeout(()=>g(!1),2e3)}function S(){t(e=>({...e,cdp:{...e.cdp,enabled:!e.cdp.enabled}}))}function C(){t(e=>({...e,mcp:{...e.mcp,enabled:!e.mcp.enabled}}))}function w(n){let r={...e,theme:n};t(r),i(n),c(r)}function T(n){let r={...e,compile:{...e.compile,watch:n}};t(r),c(r).then(x)}async function E(){let n=parseInt(_,10);if(Number.isNaN(n)||n<1024||n>65535)return;let i=parseInt(y,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 c(a),r(await s()),x()}let D=n&&!n.implicitDevDefault&&(e.cdp.enabled!==n.active||e.cdp.enabled&&n.active&&e.cdp.port!==n.activePort);return(0,d.jsxs)(`div`,{className:`flex flex-col h-screen bg-surface text-text`,children:[(0,d.jsx)(`div`,{className:`flex items-center border-b border-border shrink-0`,children:f.map(e=>(0,d.jsx)(`button`,{className:`flex-1 py-2.5 text-[12px] text-center transition-colors ${l===e.id?`text-accent border-b-2 border-accent`:`text-text-secondary hover:text-text`}`,onClick:()=>m(e.id),children:e.label},e.id))}),(0,d.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:[l===`general`&&(0,d.jsxs)(`div`,{className:`space-y-4`,children:[(0,d.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`编译`}),(0,d.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后,打开项目时会监听源文件改动并自动重新编译。关闭则只在打开/手动重新编译时构建。配置在下次打开项目时生效。`})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`监听文件变化自动编译`}),(0,d.jsx)(p,{checked:e.compile.watch,onClick:()=>T(!e.compile.watch)})]})]}),(0,d.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-3 bg-bg`,children:[(0,d.jsx)(`div`,{children:(0,d.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`外观`})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`颜色模式`}),(0,d.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,d.jsx)(`button`,{onClick:()=>w(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)})})]})]}),h&&(0,d.jsx)(`div`,{className:`text-[11px] text-status-success`,children:`已保存`})]}),l===`debug`&&(0,d.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`DevTools Protocol`}),(0,d.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`开启后可通过 DevTools Protocol 连接调试模拟器。配置变更需要重启应用后生效。`})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 DevTools Protocol`}),(0,d.jsx)(p,{checked:e.cdp.enabled,onClick:S})]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,d.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`调试端口`}),(0,d.jsx)(`input`,{type:`number`,min:1024,max:65535,value:_,onChange:e=>v(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,d.jsx)(`span`,{className:`text-[11px] text-text-dim`,children:`默认 9222`})]}),(0,d.jsxs)(`div`,{className:`rounded p-3 space-y-2 border border-border bg-surface`,children:[(0,d.jsx)(`div`,{className:`text-[11px] font-medium text-text-secondary`,children:`当前状态`}),(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,d.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:n?.active?`var(--color-status-success)`:`var(--color-text-dim)`}}),(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:n?.active?`CDP 已激活 - 端口 ${n.activePort}`:`CDP 未激活`})]}),n?.implicitDevDefault&&(0,d.jsx)(`div`,{className:`text-[11px] text-text-dim`,children:`当前为开发模式默认端口`}),n?.active&&(0,d.jsxs)(`div`,{className:`text-[11px] text-text-dim font-mono`,children:[`调试地址: http://localhost:`,n.activePort]})]}),D&&(0,d.jsx)(`div`,{className:`rounded px-3 py-2 text-[12px] border bg-warn-bg text-[var(--color-status-warn)]`,children:`配置已变更,需要重启应用后生效`}),(0,d.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,d.jsx)(`button`,{onClick:E,className:`h-7 px-4 rounded text-[13px] font-medium text-white bg-accent hover:bg-accent-hover`,children:`保存`}),h&&(0,d.jsx)(`span`,{className:`text-[11px] text-status-success`,children:`已保存`})]})]}),l===`mcp`&&(0,d.jsxs)(`section`,{className:`rounded-lg border border-border p-4 space-y-4 bg-bg`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h2`,{className:`text-[13px] font-medium mb-1`,children:`MCP 配置`}),(0,d.jsx)(`p`,{className:`text-[11px] leading-relaxed text-text-secondary`,children:`AI 助手可以通过 MCP 连接当前开发工具,读取 console、截图、执行 JS、查看 DOM / Storage / 网络请求。启用后开发工具启动时会自动监听 SSE 端点,并自动启用 CDP。`})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,d.jsx)(`span`,{className:`text-[12px] text-text-secondary`,children:`启用 MCP 服务`}),(0,d.jsx)(p,{checked:e.mcp.enabled,onClick:C})]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,d.jsx)(`label`,{className:`text-[12px] shrink-0 w-16 text-text-secondary`,children:`SSE 端口`}),(0,d.jsx)(`input`,{type:`number`,min:1024,max:65535,value:y,onChange:e=>b(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,d.jsx)(`span`,{className:`text-[11px] text-text-dim`,children:`默认 7789`})]}),(0,d.jsxs)(`div`,{className:`rounded p-3 border border-border bg-surface`,children:[(0,d.jsx)(`div`,{className:`text-[11px] font-medium mb-2 text-text-secondary`,children:"`.mcp.json` 示例(SSE 传输)"}),(0,d.jsx)(`pre`,{className:`text-[11px] whitespace-pre-wrap leading-relaxed text-[var(--color-code-blue)] font-mono`,children:`{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"dimina-devtools": {
|
|
4
|
+
"url": "http://127.0.0.1:${e.mcp.port}/sse"
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
}`})]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,d.jsx)(`button`,{onClick:E,className:`h-7 px-4 rounded text-[13px] font-medium text-white bg-accent hover:bg-accent-hover`,children:`保存`}),h&&(0,d.jsx)(`span`,{className:`text-[11px] text-status-success`,children:`已保存`})]})]})]})]})}l.createRoot(document.getElementById(`root`)).render((0,d.jsx)(m,{}));
|
|
8
|
+
//# sourceMappingURL=workbenchSettings-q2_-nc8t.js.map
|
|
@@ -2,12 +2,19 @@
|
|
|
2
2
|
<html lang="zh-CN">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
+
<!--
|
|
6
|
+
CSP: deliberately permissive (B5 phase). Inline JS/CSS + eval are kept for
|
|
7
|
+
dev tooling / nodeIntegration:true; connect-src spans http/ws because
|
|
8
|
+
automation, MCP, and the simulator dev server all open sockets. Tighten in
|
|
9
|
+
C-phase once the preload bridge removes the need for `unsafe-*`.
|
|
10
|
+
-->
|
|
11
|
+
<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:;" />
|
|
5
12
|
<title>Dimina DevTools</title>
|
|
6
|
-
<script type="module" crossorigin src="../../assets/index-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="../../assets/input-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="../../assets/select-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-
|
|
13
|
+
<script type="module" crossorigin src="../../assets/index-DW_0thr-.js"></script>
|
|
14
|
+
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CUsl-fS2.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="../../assets/input-C5M5Wxn6.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="../../assets/select-B1tF3UAc.js">
|
|
17
|
+
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-CltRuvhi.css">
|
|
11
18
|
</head>
|
|
12
19
|
<body>
|
|
13
20
|
<div id="root"></div>
|
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
<html lang="zh-CN">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
+
<!-- See main/index.html for CSP rationale. -->
|
|
6
|
+
<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:;" />
|
|
5
7
|
<title>Compile Config</title>
|
|
6
8
|
<style>
|
|
7
9
|
html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: transparent !important; }
|
|
8
10
|
</style>
|
|
9
|
-
<script type="module" crossorigin src="../../assets/popover-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="../../assets/input-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="../../assets/select-
|
|
13
|
-
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-
|
|
11
|
+
<script type="module" crossorigin src="../../assets/popover-BSBPVO0o.js"></script>
|
|
12
|
+
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CUsl-fS2.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="../../assets/input-C5M5Wxn6.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="../../assets/select-B1tF3UAc.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-CltRuvhi.css">
|
|
14
16
|
</head>
|
|
15
17
|
<body>
|
|
16
18
|
<div id="root"></div>
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
<html lang="zh-CN">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
+
<!-- See main/index.html for CSP rationale. -->
|
|
6
|
+
<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:;" />
|
|
5
7
|
<title>Settings</title>
|
|
6
|
-
<script type="module" crossorigin src="../../assets/settings-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="../../assets/input-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="../../assets/settings-api-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-
|
|
8
|
+
<script type="module" crossorigin src="../../assets/settings-7w54H6p-.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CUsl-fS2.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="../../assets/input-C5M5Wxn6.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="../../assets/settings-api-BjJalghB.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-CltRuvhi.css">
|
|
11
13
|
</head>
|
|
12
14
|
<body>
|
|
13
15
|
<div id="root"></div>
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<!-- See entries/main/index.html for CSP rationale. -->
|
|
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:;" />
|
|
6
8
|
<title>开发工具设置</title>
|
|
7
|
-
<script type="module" crossorigin src="../../assets/workbenchSettings-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="../../assets/settings-api-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-
|
|
9
|
+
<script type="module" crossorigin src="../../assets/workbenchSettings-q2_-nc8t.js"></script>
|
|
10
|
+
<link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CUsl-fS2.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="../../assets/settings-api-BjJalghB.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="../../assets/ipc-transport-CltRuvhi.css">
|
|
11
13
|
</head>
|
|
12
14
|
<body>
|
|
13
15
|
<div id="root"></div>
|
|
@@ -15,8 +15,17 @@ export declare const SimulatorChannel: {
|
|
|
15
15
|
readonly AppData: "simulator:appdata";
|
|
16
16
|
readonly AppDataAll: "simulator:appdata-all";
|
|
17
17
|
};
|
|
18
|
+
export declare const SimulatorCustomApiChannel: {
|
|
19
|
+
readonly List: "simulator:custom-apis:list";
|
|
20
|
+
readonly Invoke: "simulator:custom-apis:invoke";
|
|
21
|
+
};
|
|
18
22
|
export declare const SimulatorStorageChannel: {
|
|
19
23
|
readonly GetSnapshot: "simulator:storage:snapshot";
|
|
24
|
+
readonly GetActivePrefix: "simulator:storage:activePrefix";
|
|
25
|
+
readonly Set: "simulator:storage:set";
|
|
26
|
+
readonly Remove: "simulator:storage:remove";
|
|
27
|
+
readonly Clear: "simulator:storage:clear";
|
|
28
|
+
readonly ClearAll: "simulator:storage:clearAll";
|
|
20
29
|
readonly Event: "simulator:storage:event";
|
|
21
30
|
};
|
|
22
31
|
export interface StorageItem {
|
|
@@ -38,6 +47,35 @@ export type StorageEvent = {
|
|
|
38
47
|
} | {
|
|
39
48
|
type: 'cleared';
|
|
40
49
|
};
|
|
50
|
+
export type StorageWriteResult = {
|
|
51
|
+
ok: true;
|
|
52
|
+
} | {
|
|
53
|
+
ok: false;
|
|
54
|
+
error: string;
|
|
55
|
+
};
|
|
56
|
+
export declare const SimulatorElementChannel: {
|
|
57
|
+
readonly Inspect: "simulator:element:inspect";
|
|
58
|
+
readonly Clear: "simulator:element:clear";
|
|
59
|
+
};
|
|
60
|
+
export interface ElementInspection {
|
|
61
|
+
sid: string;
|
|
62
|
+
rect: {
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
};
|
|
68
|
+
style: {
|
|
69
|
+
display: string;
|
|
70
|
+
position: string;
|
|
71
|
+
boxSizing: string;
|
|
72
|
+
margin: string;
|
|
73
|
+
padding: string;
|
|
74
|
+
color: string;
|
|
75
|
+
backgroundColor: string;
|
|
76
|
+
fontSize: string;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
41
79
|
export declare const WorkbenchChannel: {
|
|
42
80
|
readonly GetPanelConfig: "workbench:getPanelConfig";
|
|
43
81
|
readonly GetApiNamespaces: "workbench:getApiNamespaces";
|
|
@@ -109,4 +147,11 @@ export declare const SettingsChannel: {
|
|
|
109
147
|
readonly Closed: "settings:closed";
|
|
110
148
|
readonly Changed: "settings:changed";
|
|
111
149
|
};
|
|
150
|
+
export declare const UpdateChannel: {
|
|
151
|
+
readonly Check: "updates:check";
|
|
152
|
+
readonly Download: "updates:download";
|
|
153
|
+
readonly Install: "updates:install";
|
|
154
|
+
readonly DownloadProgress: "updates:downloadProgress";
|
|
155
|
+
readonly Available: "updates:available";
|
|
156
|
+
};
|
|
112
157
|
//# sourceMappingURL=ipc-channels.d.ts.map
|
|
@@ -16,12 +16,29 @@ export const SimulatorChannel = {
|
|
|
16
16
|
AppData: 'simulator:appdata',
|
|
17
17
|
AppDataAll: 'simulator:appdata-all',
|
|
18
18
|
};
|
|
19
|
+
// ── Custom simulator APIs (downstream-registered, main-process handlers) ──
|
|
20
|
+
// list: simulator queries the names registered via @dimina-kit/devtools/simulator-apis.
|
|
21
|
+
// invoke: simulator forwards an API call to the registry; result/reject propagates.
|
|
22
|
+
export const SimulatorCustomApiChannel = {
|
|
23
|
+
List: 'simulator:custom-apis:list',
|
|
24
|
+
Invoke: 'simulator:custom-apis:invoke',
|
|
25
|
+
};
|
|
19
26
|
// ── Storage (CDP-backed; main process attaches the debugger to the
|
|
20
27
|
// simulator <webview> and forwards DOMStorage events to the renderer) ──
|
|
21
28
|
export const SimulatorStorageChannel = {
|
|
22
29
|
GetSnapshot: 'simulator:storage:snapshot',
|
|
30
|
+
GetActivePrefix: 'simulator:storage:activePrefix',
|
|
31
|
+
Set: 'simulator:storage:set',
|
|
32
|
+
Remove: 'simulator:storage:remove',
|
|
33
|
+
Clear: 'simulator:storage:clear',
|
|
34
|
+
ClearAll: 'simulator:storage:clearAll',
|
|
23
35
|
Event: 'simulator:storage:event',
|
|
24
36
|
};
|
|
37
|
+
// ── Element inspection (CDP-backed; WXML tree nodes map to real DOM by sid) ──
|
|
38
|
+
export const SimulatorElementChannel = {
|
|
39
|
+
Inspect: 'simulator:element:inspect',
|
|
40
|
+
Clear: 'simulator:element:clear',
|
|
41
|
+
};
|
|
25
42
|
// ── Workbench ────────────────────────────────────────────────────────────
|
|
26
43
|
export const WorkbenchChannel = {
|
|
27
44
|
GetPanelConfig: 'workbench:getPanelConfig',
|
|
@@ -106,4 +123,15 @@ export const SettingsChannel = {
|
|
|
106
123
|
Closed: 'settings:closed',
|
|
107
124
|
Changed: 'settings:changed',
|
|
108
125
|
};
|
|
126
|
+
// ── Updates (UpdateManager) ──────────────────────────────────────────────
|
|
127
|
+
//
|
|
128
|
+
// String values are FROZEN: shipped builds key off them. Add new entries
|
|
129
|
+
// here, never rename existing ones.
|
|
130
|
+
export const UpdateChannel = {
|
|
131
|
+
Check: 'updates:check',
|
|
132
|
+
Download: 'updates:download',
|
|
133
|
+
Install: 'updates:install',
|
|
134
|
+
DownloadProgress: 'updates:downloadProgress',
|
|
135
|
+
Available: 'updates:available',
|
|
136
|
+
};
|
|
109
137
|
//# sourceMappingURL=ipc-channels.js.map
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralised zod schemas for IPC handler argument validation.
|
|
3
|
+
*
|
|
4
|
+
* Only the highest-risk handlers are validated here. Each schema is shaped as a
|
|
5
|
+
* `z.tuple([...])` matching the `(event, ...args)` argument list that an
|
|
6
|
+
* `ipcMain.handle` callback receives (event is stripped before validation).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/** panel:eval — single JS expression string. Cap at 50_000 chars to avoid DoS. */
|
|
10
|
+
export declare const PanelEvalSchema: z.ZodTuple<[z.ZodString], null>;
|
|
11
|
+
/** projects:add — absolute directory path. */
|
|
12
|
+
export declare const ProjectsAddSchema: z.ZodTuple<[z.ZodString], null>;
|
|
13
|
+
/** project:open — absolute project path. */
|
|
14
|
+
export declare const ProjectOpenSchema: z.ZodTuple<[z.ZodString], null>;
|
|
15
|
+
/**
|
|
16
|
+
* project:saveCompileConfig — absolute project path + CompileConfig.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ProjectSaveCompileConfigSchema: z.ZodTuple<[z.ZodString, z.ZodObject<{
|
|
19
|
+
startPage: z.ZodOptional<z.ZodString>;
|
|
20
|
+
scene: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
queryParams: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
22
|
+
key: z.ZodString;
|
|
23
|
+
value: z.ZodString;
|
|
24
|
+
}, z.core.$loose>>>;
|
|
25
|
+
}, z.core.$loose>], null>;
|
|
26
|
+
/** popover:show — must be an object (not undefined/null/string). */
|
|
27
|
+
export declare const PopoverShowSchema: z.ZodTuple<[z.ZodObject<{}, z.core.$loose>], null>;
|
|
28
|
+
/** simulator:attach — webContents id (positive int) + simulator width. */
|
|
29
|
+
export declare const SimulatorAttachSchema: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
30
|
+
/** simulator:resize — simulator width. */
|
|
31
|
+
export declare const SimulatorResizeSchema: z.ZodTuple<[z.ZodNumber], null>;
|
|
32
|
+
/** simulator:setVisible — visible flag + simulator width. */
|
|
33
|
+
export declare const SimulatorSetVisibleSchema: z.ZodTuple<[z.ZodBoolean, z.ZodNumber], null>;
|
|
34
|
+
/**
|
|
35
|
+
* simulator:custom-apis:invoke — API name + arbitrary JSON-serialisable params.
|
|
36
|
+
*
|
|
37
|
+
* Params shape is owned by the downstream handler, so we only enforce that the
|
|
38
|
+
* name is a non-empty bounded string (cheap DoS guard) and accept any payload.
|
|
39
|
+
*/
|
|
40
|
+
export declare const SimulatorCustomApiInvokeSchema: z.ZodTuple<[z.ZodString, z.ZodUnknown], null>;
|
|
41
|
+
/** project:getPages — absolute project path. */
|
|
42
|
+
export declare const ProjectGetPagesSchema: z.ZodTuple<[z.ZodString], null>;
|
|
43
|
+
/** project:getCompileConfig — absolute project path. */
|
|
44
|
+
export declare const ProjectGetCompileConfigSchema: z.ZodTuple<[z.ZodString], null>;
|
|
45
|
+
/** projects:remove — absolute project directory path. */
|
|
46
|
+
export declare const ProjectsRemoveSchema: z.ZodTuple<[z.ZodString], null>;
|
|
47
|
+
/**
|
|
48
|
+
* workbenchSettings:save — full WorkbenchSettings object.
|
|
49
|
+
*
|
|
50
|
+
* `saveWorkbenchSettings()` overwrites the whole settings file (no merge),
|
|
51
|
+
* so a partial payload would silently reset whatever fields it omits to
|
|
52
|
+
* defaults. Require every top-level slice so the renderer can't accidentally
|
|
53
|
+
* (or maliciously) wipe configuration by sending `{}`.
|
|
54
|
+
*/
|
|
55
|
+
export declare const WorkbenchSettingsSaveSchema: z.ZodTuple<[z.ZodObject<{
|
|
56
|
+
cdp: z.ZodObject<{
|
|
57
|
+
enabled: z.ZodBoolean;
|
|
58
|
+
port: z.ZodNumber;
|
|
59
|
+
}, z.core.$loose>;
|
|
60
|
+
mcp: z.ZodObject<{
|
|
61
|
+
enabled: z.ZodBoolean;
|
|
62
|
+
port: z.ZodNumber;
|
|
63
|
+
}, z.core.$loose>;
|
|
64
|
+
compile: z.ZodObject<{
|
|
65
|
+
watch: z.ZodBoolean;
|
|
66
|
+
}, z.core.$loose>;
|
|
67
|
+
theme: z.ZodEnum<{
|
|
68
|
+
system: "system";
|
|
69
|
+
dark: "dark";
|
|
70
|
+
light: "light";
|
|
71
|
+
}>;
|
|
72
|
+
}, z.core.$loose>], null>;
|
|
73
|
+
/** workbenchSettings:setTheme — fixed enum of supported theme sources. */
|
|
74
|
+
export declare const WorkbenchSettingsSetThemeSchema: z.ZodTuple<[z.ZodEnum<{
|
|
75
|
+
system: "system";
|
|
76
|
+
dark: "dark";
|
|
77
|
+
light: "light";
|
|
78
|
+
}>], null>;
|
|
79
|
+
/** workbenchSettings:setVisible — boolean. */
|
|
80
|
+
export declare const WorkbenchSettingsSetVisibleSchema: z.ZodTuple<[z.ZodBoolean], null>;
|
|
81
|
+
/** settings:setVisible — boolean. */
|
|
82
|
+
export declare const SettingsSetVisibleSchema: z.ZodTuple<[z.ZodBoolean], null>;
|
|
83
|
+
/** settings:configChanged — full CompileConfig object (see shared/types.ts). */
|
|
84
|
+
export declare const SettingsConfigChangedSchema: z.ZodTuple<[z.ZodObject<{
|
|
85
|
+
startPage: z.ZodOptional<z.ZodString>;
|
|
86
|
+
scene: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
queryParams: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
88
|
+
key: z.ZodString;
|
|
89
|
+
value: z.ZodString;
|
|
90
|
+
}, z.core.$loose>>>;
|
|
91
|
+
}, z.core.$loose>], null>;
|
|
92
|
+
/** popover:relaunch — full CompileConfig object pushed back to main on relaunch. */
|
|
93
|
+
export declare const PopoverRelaunchSchema: z.ZodTuple<[z.ZodObject<{
|
|
94
|
+
startPage: z.ZodOptional<z.ZodString>;
|
|
95
|
+
scene: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
queryParams: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
97
|
+
key: z.ZodString;
|
|
98
|
+
value: z.ZodString;
|
|
99
|
+
}, z.core.$loose>>>;
|
|
100
|
+
}, z.core.$loose>], null>;
|
|
101
|
+
/**
|
|
102
|
+
* settings:projectSettingsChanged — Partial<ProjectSettings>.
|
|
103
|
+
*
|
|
104
|
+
* ProjectSettings currently has a single boolean field
|
|
105
|
+
* (`uploadWithSourceMap`); validated permissively to remain forward-
|
|
106
|
+
* compatible while still rejecting non-object payloads.
|
|
107
|
+
*/
|
|
108
|
+
export declare const SettingsProjectSettingsChangedSchema: z.ZodTuple<[z.ZodObject<{
|
|
109
|
+
uploadWithSourceMap: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
}, z.core.$loose>], null>;
|
|
111
|
+
/** panel:select — single panel id string. */
|
|
112
|
+
export declare const PanelSelectSchema: z.ZodTuple<[z.ZodString], null>;
|
|
113
|
+
//# sourceMappingURL=ipc-schemas.d.ts.map
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralised zod schemas for IPC handler argument validation.
|
|
3
|
+
*
|
|
4
|
+
* Only the highest-risk handlers are validated here. Each schema is shaped as a
|
|
5
|
+
* `z.tuple([...])` matching the `(event, ...args)` argument list that an
|
|
6
|
+
* `ipcMain.handle` callback receives (event is stripped before validation).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* Conservative absolute-path matcher.
|
|
11
|
+
* Accepts:
|
|
12
|
+
* - POSIX absolute paths (start with `/`)
|
|
13
|
+
* - Windows absolute paths (e.g. `C:\foo`, `C:/foo`)
|
|
14
|
+
* Rejects empty strings, relative paths and other shapes.
|
|
15
|
+
*/
|
|
16
|
+
const AbsolutePath = z
|
|
17
|
+
.string()
|
|
18
|
+
.min(1)
|
|
19
|
+
.refine((p) => p.startsWith('/') || /^[a-zA-Z]:\\/.test(p) || /^[a-zA-Z]:\//.test(p), 'must be an absolute path');
|
|
20
|
+
/** panel:eval — single JS expression string. Cap at 50_000 chars to avoid DoS. */
|
|
21
|
+
export const PanelEvalSchema = z.tuple([z.string().min(1).max(50_000)]);
|
|
22
|
+
/** projects:add — absolute directory path. */
|
|
23
|
+
export const ProjectsAddSchema = z.tuple([AbsolutePath]);
|
|
24
|
+
/** project:open — absolute project path. */
|
|
25
|
+
export const ProjectOpenSchema = z.tuple([AbsolutePath]);
|
|
26
|
+
/**
|
|
27
|
+
* Shared shape for CompileConfig payloads (used by saveCompileConfig,
|
|
28
|
+
* settings:configChanged, and popover:relaunch). Permissive on the outer
|
|
29
|
+
* object so we stay forward-compatible with new fields; the known top-level
|
|
30
|
+
* keys are validated to catch wrong types early.
|
|
31
|
+
*/
|
|
32
|
+
const CompileConfigShape = z.looseObject({
|
|
33
|
+
startPage: z.string().optional(),
|
|
34
|
+
scene: z.number().optional(),
|
|
35
|
+
queryParams: z
|
|
36
|
+
.array(z.looseObject({ key: z.string(), value: z.string() }))
|
|
37
|
+
.optional(),
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* project:saveCompileConfig — absolute project path + CompileConfig.
|
|
41
|
+
*/
|
|
42
|
+
export const ProjectSaveCompileConfigSchema = z.tuple([
|
|
43
|
+
AbsolutePath,
|
|
44
|
+
CompileConfigShape,
|
|
45
|
+
]);
|
|
46
|
+
/** popover:show — must be an object (not undefined/null/string). */
|
|
47
|
+
export const PopoverShowSchema = z.tuple([z.looseObject({})]);
|
|
48
|
+
/**
|
|
49
|
+
* Reasonable simulator width range. Window width is clamped UI-side, but
|
|
50
|
+
* we still reject obvious garbage (negative, zero, absurdly large).
|
|
51
|
+
*/
|
|
52
|
+
const SimWidth = z.number().int().min(100).max(2000);
|
|
53
|
+
/** simulator:attach — webContents id (positive int) + simulator width. */
|
|
54
|
+
export const SimulatorAttachSchema = z.tuple([
|
|
55
|
+
z.number().int().positive(),
|
|
56
|
+
SimWidth,
|
|
57
|
+
]);
|
|
58
|
+
/** simulator:resize — simulator width. */
|
|
59
|
+
export const SimulatorResizeSchema = z.tuple([SimWidth]);
|
|
60
|
+
/** simulator:setVisible — visible flag + simulator width. */
|
|
61
|
+
export const SimulatorSetVisibleSchema = z.tuple([z.boolean(), SimWidth]);
|
|
62
|
+
/**
|
|
63
|
+
* simulator:custom-apis:invoke — API name + arbitrary JSON-serialisable params.
|
|
64
|
+
*
|
|
65
|
+
* Params shape is owned by the downstream handler, so we only enforce that the
|
|
66
|
+
* name is a non-empty bounded string (cheap DoS guard) and accept any payload.
|
|
67
|
+
*/
|
|
68
|
+
export const SimulatorCustomApiInvokeSchema = z.tuple([
|
|
69
|
+
z.string().min(1).max(256),
|
|
70
|
+
z.unknown(),
|
|
71
|
+
]);
|
|
72
|
+
/** project:getPages — absolute project path. */
|
|
73
|
+
export const ProjectGetPagesSchema = z.tuple([AbsolutePath]);
|
|
74
|
+
/** project:getCompileConfig — absolute project path. */
|
|
75
|
+
export const ProjectGetCompileConfigSchema = z.tuple([AbsolutePath]);
|
|
76
|
+
/** projects:remove — absolute project directory path. */
|
|
77
|
+
export const ProjectsRemoveSchema = z.tuple([AbsolutePath]);
|
|
78
|
+
/**
|
|
79
|
+
* workbenchSettings:save — full WorkbenchSettings object.
|
|
80
|
+
*
|
|
81
|
+
* `saveWorkbenchSettings()` overwrites the whole settings file (no merge),
|
|
82
|
+
* so a partial payload would silently reset whatever fields it omits to
|
|
83
|
+
* defaults. Require every top-level slice so the renderer can't accidentally
|
|
84
|
+
* (or maliciously) wipe configuration by sending `{}`.
|
|
85
|
+
*/
|
|
86
|
+
export const WorkbenchSettingsSaveSchema = z.tuple([
|
|
87
|
+
z.looseObject({
|
|
88
|
+
cdp: z.looseObject({
|
|
89
|
+
enabled: z.boolean(),
|
|
90
|
+
port: z.number().int().min(0).max(65535),
|
|
91
|
+
}),
|
|
92
|
+
mcp: z.looseObject({
|
|
93
|
+
enabled: z.boolean(),
|
|
94
|
+
port: z.number().int().min(0).max(65535),
|
|
95
|
+
}),
|
|
96
|
+
compile: z.looseObject({
|
|
97
|
+
watch: z.boolean(),
|
|
98
|
+
}),
|
|
99
|
+
theme: z.enum(['system', 'light', 'dark']),
|
|
100
|
+
}),
|
|
101
|
+
]);
|
|
102
|
+
/** workbenchSettings:setTheme — fixed enum of supported theme sources. */
|
|
103
|
+
export const WorkbenchSettingsSetThemeSchema = z.tuple([
|
|
104
|
+
z.enum(['system', 'light', 'dark']),
|
|
105
|
+
]);
|
|
106
|
+
/** workbenchSettings:setVisible — boolean. */
|
|
107
|
+
export const WorkbenchSettingsSetVisibleSchema = z.tuple([z.boolean()]);
|
|
108
|
+
/** settings:setVisible — boolean. */
|
|
109
|
+
export const SettingsSetVisibleSchema = z.tuple([z.boolean()]);
|
|
110
|
+
/** settings:configChanged — full CompileConfig object (see shared/types.ts). */
|
|
111
|
+
export const SettingsConfigChangedSchema = z.tuple([CompileConfigShape]);
|
|
112
|
+
/** popover:relaunch — full CompileConfig object pushed back to main on relaunch. */
|
|
113
|
+
export const PopoverRelaunchSchema = z.tuple([CompileConfigShape]);
|
|
114
|
+
/**
|
|
115
|
+
* settings:projectSettingsChanged — Partial<ProjectSettings>.
|
|
116
|
+
*
|
|
117
|
+
* ProjectSettings currently has a single boolean field
|
|
118
|
+
* (`uploadWithSourceMap`); validated permissively to remain forward-
|
|
119
|
+
* compatible while still rejecting non-object payloads.
|
|
120
|
+
*/
|
|
121
|
+
export const SettingsProjectSettingsChangedSchema = z.tuple([
|
|
122
|
+
z.looseObject({
|
|
123
|
+
uploadWithSourceMap: z.boolean().optional(),
|
|
124
|
+
}),
|
|
125
|
+
]);
|
|
126
|
+
/** panel:select — single panel id string. */
|
|
127
|
+
export const PanelSelectSchema = z.tuple([z.string().min(1).max(200)]);
|
|
128
|
+
//# sourceMappingURL=ipc-schemas.js.map
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface CompilationAdapter {
|
|
|
13
13
|
port?: number;
|
|
14
14
|
sourcemap?: boolean;
|
|
15
15
|
simulatorDir?: string;
|
|
16
|
+
/** When false, skip the file-watcher / auto-recompile loop. Default true. */
|
|
17
|
+
watch?: boolean;
|
|
16
18
|
onRebuild?: () => void;
|
|
17
19
|
onBuildError?: (err: unknown) => void;
|
|
18
20
|
}): Promise<ProjectSession>;
|