@dimina-kit/devtools 0.3.1-dev.20260518054451 → 0.3.1-dev.20260518114324

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 (77) hide show
  1. package/README.md +120 -0
  2. package/dist/main/app/app.js +8 -0
  3. package/dist/main/index.bundle.js +322 -85
  4. package/dist/main/ipc/projects.d.ts +3 -1
  5. package/dist/main/ipc/projects.js +88 -4
  6. package/dist/main/ipc/settings.js +8 -6
  7. package/dist/main/services/projects/builtin-templates.d.ts +3 -0
  8. package/dist/main/services/projects/builtin-templates.js +24 -0
  9. package/dist/main/services/projects/create-project-service.d.ts +7 -0
  10. package/dist/main/services/projects/create-project-service.js +84 -0
  11. package/dist/main/services/projects/index.d.ts +7 -0
  12. package/dist/main/services/projects/index.js +9 -0
  13. package/dist/main/services/projects/local-provider.d.ts +3 -0
  14. package/dist/main/services/projects/local-provider.js +25 -0
  15. package/dist/main/services/projects/templates.d.ts +21 -0
  16. package/dist/main/services/projects/templates.js +39 -0
  17. package/dist/main/services/projects/thumbnail.d.ts +6 -2
  18. package/dist/main/services/projects/thumbnail.js +13 -8
  19. package/dist/main/services/projects/types.d.ts +118 -0
  20. package/dist/main/services/projects/types.js +19 -0
  21. package/dist/main/services/settings/index.d.ts +7 -0
  22. package/dist/main/services/settings/index.js +4 -0
  23. package/dist/main/services/workbench-context.d.ts +35 -0
  24. package/dist/main/services/workbench-context.js +9 -0
  25. package/dist/main/services/workspace/workspace-service.d.ts +8 -8
  26. package/dist/main/services/workspace/workspace-service.js +65 -13
  27. package/dist/main/windows/main-window/create.js +1 -1
  28. package/dist/renderer/assets/index-Czz_bp6b.js +46 -0
  29. package/dist/renderer/assets/{input-AH9UDYmj.js → input-DqVQNCx_.js} +2 -2
  30. package/dist/renderer/assets/{ipc-transport-DNgBM6Qz.js → ipc-transport-CCHrCtDr.js} +2 -2
  31. package/dist/renderer/assets/ipc-transport-DqbRdZNO.css +1 -0
  32. package/dist/renderer/assets/{popover-D1hoVYiY.js → popover-BRg4XI_w.js} +2 -2
  33. package/dist/renderer/assets/{select-BgDHRj6r.js → select-CvILHHZU.js} +2 -2
  34. package/dist/renderer/assets/{settings-m-tcmZy_.js → settings-BFNfnYvU.js} +2 -2
  35. package/dist/renderer/assets/{settings-api-DBKlNKV3.js → settings-api-DOAgmBst.js} +2 -2
  36. package/dist/renderer/assets/{workbenchSettings-CGacu-pI.js → workbenchSettings-DjVMgMMH.js} +2 -2
  37. package/dist/renderer/entries/main/index.html +5 -5
  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/shared/ipc-channels.d.ts +14 -1
  42. package/dist/shared/ipc-channels.js +8 -0
  43. package/dist/shared/ipc-schemas.d.ts +1 -0
  44. package/dist/shared/ipc-schemas.js +1 -0
  45. package/dist/shared/types.d.ts +80 -0
  46. package/package.json +7 -2
  47. package/templates/blank/app.js +6 -0
  48. package/templates/blank/app.json +11 -0
  49. package/templates/blank/app.wxss +5 -0
  50. package/templates/blank/pages/index/index.js +6 -0
  51. package/templates/blank/pages/index/index.json +3 -0
  52. package/templates/blank/pages/index/index.wxml +3 -0
  53. package/templates/blank/pages/index/index.wxss +11 -0
  54. package/templates/blank/project.config.json +13 -0
  55. package/templates/blank/sitemap.json +9 -0
  56. package/templates/taro-todo/app.js +1 -0
  57. package/templates/taro-todo/app.json +1 -0
  58. package/templates/taro-todo/app.wxss +1 -0
  59. package/templates/taro-todo/base.wxml +851 -0
  60. package/templates/taro-todo/common.js +1 -0
  61. package/templates/taro-todo/comp.js +1 -0
  62. package/templates/taro-todo/comp.json +1 -0
  63. package/templates/taro-todo/comp.wxml +2 -0
  64. package/templates/taro-todo/custom-wrapper.js +1 -0
  65. package/templates/taro-todo/custom-wrapper.json +1 -0
  66. package/templates/taro-todo/custom-wrapper.wxml +4 -0
  67. package/templates/taro-todo/pages/index/index.js +2 -0
  68. package/templates/taro-todo/pages/index/index.json +1 -0
  69. package/templates/taro-todo/pages/index/index.wxml +2 -0
  70. package/templates/taro-todo/pages/index/index.wxss +1 -0
  71. package/templates/taro-todo/project.config.json +44 -0
  72. package/templates/taro-todo/runtime.js +1 -0
  73. package/templates/taro-todo/taro.js +2 -0
  74. package/templates/taro-todo/utils.wxs +39 -0
  75. package/templates/taro-todo/vendors.js +2 -0
  76. package/dist/renderer/assets/index-BFdItKBK.js +0 -46
  77. package/dist/renderer/assets/ipc-transport-Dvmd5JZj.css +0 -1
@@ -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{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{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-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-\[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-\[188px\]{min-height:188px}.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-\[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-\[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-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-end{justify-content:flex-end}.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-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-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{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.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-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))}.object-cover{-o-object-fit:cover;object-fit:cover}.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}.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}.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{C as e,D as t,E as n,i as r,l as i,w as a}from"./ipc-transport-DNgBM6Qz.js";import{t as o}from"./input-AH9UDYmj.js";import{a as s,l as c,n as l,t as u,x as d}from"./select-BgDHRj6r.js";function f(e){r(i.Relaunch,e)}var p=t(a(),1),m=t(n(),1),h=e();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-D1hoVYiY.js.map
1
+ import{C as e,D as t,E as n,i as r,l as i,w as a}from"./ipc-transport-CCHrCtDr.js";import{t as o}from"./input-DqVQNCx_.js";import{a as s,l as c,n as l,t as u,x as d}from"./select-CvILHHZU.js";function f(e){r(i.Relaunch,e)}var p=t(a(),1),m=t(n(),1),h=e();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-BRg4XI_w.js.map
@@ -1,2 +1,2 @@
1
- import{C as e,D as t,E as n,b as r,c as i,l as a,n as o,p as s,r as c,t as l,v as u,x as d}from"./ipc-transport-DNgBM6Qz.js";import{i as f,n as p}from"./input-AH9UDYmj.js";var m=t(n(),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=e(),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 l(s.Attach,e,t)}function T(e){return l(s.Resize,e)}function E(e,t){return l(s.SetVisible,e,t)}function D(){return o(i.List)}function O(){return l(i.SelectSimulator)}function k(){return o(u.GetActions)}function A(e){return l(`${u.ActionPrefix}${e}`)}function j(e){return l(a.Show,e)}function M(){return l(a.Hide)}function N(e){return c(d.Reset,()=>e())}function P(e){return c(u.ActionsChanged,()=>e())}function F(e){return c(a.Closed,()=>e())}function I(e){return c(a.Init,t=>e(t))}function L(e){return c(a.Relaunch,t=>e(t))}function R(e){return c(r.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-BgDHRj6r.js.map
1
+ import{C as e,D as t,E as n,b as r,c as i,l as a,n as o,p as s,r as c,t as l,v as u,x as d}from"./ipc-transport-CCHrCtDr.js";import{i as f,n as p}from"./input-DqVQNCx_.js";var m=t(n(),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=e(),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 l(s.Attach,e,t)}function T(e){return l(s.Resize,e)}function E(e,t){return l(s.SetVisible,e,t)}function D(){return o(i.List)}function O(){return l(i.SelectSimulator)}function k(){return o(u.GetActions)}function A(e){return l(`${u.ActionPrefix}${e}`)}function j(e){return l(a.Show,e)}function M(){return l(a.Hide)}function N(e){return c(d.Reset,()=>e())}function P(e){return c(u.ActionsChanged,()=>e())}function F(e){return c(a.Closed,()=>e())}function I(e){return c(a.Init,t=>e(t))}function L(e){return c(a.Relaunch,t=>e(t))}function R(e){return c(r.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-CvILHHZU.js.map
@@ -1,2 +1,2 @@
1
- import{C as e,D as t,E as n,w as r}from"./ipc-transport-DNgBM6Qz.js";import{t as i}from"./input-AH9UDYmj.js";import{a,n as o,t as s}from"./settings-api-DBKlNKV3.js";var c=t(r(),1),l=t(n(),1),u=e(),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-m-tcmZy_.js.map
1
+ import{C as e,D as t,E as n,w as r}from"./ipc-transport-CCHrCtDr.js";import{t as i}from"./input-DqVQNCx_.js";import{a,n as o,t as s}from"./settings-api-DOAgmBst.js";var c=t(r(),1),l=t(n(),1),u=e(),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-BFNfnYvU.js.map
@@ -1,2 +1,2 @@
1
- import{S as e,f as t,i as n,n as r,r as i,t as a}from"./ipc-transport-DNgBM6Qz.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-DBKlNKV3.js.map
1
+ import{S as e,f as t,i as n,n as r,r as i,t as a}from"./ipc-transport-CCHrCtDr.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-DOAgmBst.js.map
@@ -1,8 +1,8 @@
1
- import{C as e,D as t,E as n,w as r}from"./ipc-transport-DNgBM6Qz.js";import{c as i,i as a,o,r as s,s as c}from"./settings-api-DBKlNKV3.js";var l=t(r(),1),u=t(n(),1),d=e(),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:`{
1
+ import{C as e,D as t,E as n,w as r}from"./ipc-transport-CCHrCtDr.js";import{c as i,i as a,o,r as s,s as c}from"./settings-api-DOAgmBst.js";var l=t(r(),1),u=t(n(),1),d=e(),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
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,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-CGacu-pI.js.map
8
+ //# sourceMappingURL=workbenchSettings-DjVMgMMH.js.map
@@ -10,11 +10,11 @@
10
10
  -->
11
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:;" />
12
12
  <title>Dimina DevTools</title>
13
- <script type="module" crossorigin src="../../assets/index-BFdItKBK.js"></script>
14
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DNgBM6Qz.js">
15
- <link rel="modulepreload" crossorigin href="../../assets/input-AH9UDYmj.js">
16
- <link rel="modulepreload" crossorigin href="../../assets/select-BgDHRj6r.js">
17
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Dvmd5JZj.css">
13
+ <script type="module" crossorigin src="../../assets/index-Czz_bp6b.js"></script>
14
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CCHrCtDr.js">
15
+ <link rel="modulepreload" crossorigin href="../../assets/input-DqVQNCx_.js">
16
+ <link rel="modulepreload" crossorigin href="../../assets/select-CvILHHZU.js">
17
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-DqbRdZNO.css">
18
18
  </head>
19
19
  <body>
20
20
  <div id="root"></div>
@@ -8,11 +8,11 @@
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-D1hoVYiY.js"></script>
12
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DNgBM6Qz.js">
13
- <link rel="modulepreload" crossorigin href="../../assets/input-AH9UDYmj.js">
14
- <link rel="modulepreload" crossorigin href="../../assets/select-BgDHRj6r.js">
15
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Dvmd5JZj.css">
11
+ <script type="module" crossorigin src="../../assets/popover-BRg4XI_w.js"></script>
12
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CCHrCtDr.js">
13
+ <link rel="modulepreload" crossorigin href="../../assets/input-DqVQNCx_.js">
14
+ <link rel="modulepreload" crossorigin href="../../assets/select-CvILHHZU.js">
15
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-DqbRdZNO.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
@@ -5,11 +5,11 @@
5
5
  <!-- See main/index.html for CSP rationale. -->
6
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:;" />
7
7
  <title>Settings</title>
8
- <script type="module" crossorigin src="../../assets/settings-m-tcmZy_.js"></script>
9
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DNgBM6Qz.js">
10
- <link rel="modulepreload" crossorigin href="../../assets/input-AH9UDYmj.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DBKlNKV3.js">
12
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Dvmd5JZj.css">
8
+ <script type="module" crossorigin src="../../assets/settings-BFNfnYvU.js"></script>
9
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CCHrCtDr.js">
10
+ <link rel="modulepreload" crossorigin href="../../assets/input-DqVQNCx_.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-DOAgmBst.js">
12
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-DqbRdZNO.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -6,10 +6,10 @@
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-CGacu-pI.js"></script>
10
- <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-DNgBM6Qz.js">
11
- <link rel="modulepreload" crossorigin href="../../assets/settings-api-DBKlNKV3.js">
12
- <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-Dvmd5JZj.css">
9
+ <script type="module" crossorigin src="../../assets/workbenchSettings-DjVMgMMH.js"></script>
10
+ <link rel="modulepreload" crossorigin href="../../assets/ipc-transport-CCHrCtDr.js">
11
+ <link rel="modulepreload" crossorigin href="../../assets/settings-api-DOAgmBst.js">
12
+ <link rel="stylesheet" crossorigin href="../../assets/ipc-transport-DqbRdZNO.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -107,7 +107,20 @@ export declare const ProjectsChannel: {
107
107
  readonly List: "projects:list";
108
108
  readonly Add: "projects:add";
109
109
  readonly Remove: "projects:remove";
110
- };
110
+ /** Phase 3: merged + sanitized template catalog for the create-project dialog. */
111
+ readonly ListTemplates: "projects:listTemplates";
112
+ /** Phase 3: host-supplied create-project dialog hook (returns input or null). */
113
+ readonly OpenCreateDialog: "projects:openCreateDialog";
114
+ /** Phase 3: server-side scaffold + register (delegates to create-project-service). */
115
+ readonly Create: "projects:create";
116
+ /** Default values used to pre-fill the create-project dialog (baseDir). */
117
+ readonly GetCreateDefaults: "projects:getCreateDefaults";
118
+ };
119
+ /** Renderer-facing payload for `projects:getCreateDefaults`. */
120
+ export interface ProjectCreateDefaults {
121
+ /** Absolute directory used as the parent for new projects. */
122
+ baseDir: string;
123
+ }
111
124
  export declare const DialogChannel: {
112
125
  readonly OpenDirectory: "dialog:openDirectory";
113
126
  };
@@ -87,6 +87,14 @@ export const ProjectsChannel = {
87
87
  List: 'projects:list',
88
88
  Add: 'projects:add',
89
89
  Remove: 'projects:remove',
90
+ /** Phase 3: merged + sanitized template catalog for the create-project dialog. */
91
+ ListTemplates: 'projects:listTemplates',
92
+ /** Phase 3: host-supplied create-project dialog hook (returns input or null). */
93
+ OpenCreateDialog: 'projects:openCreateDialog',
94
+ /** Phase 3: server-side scaffold + register (delegates to create-project-service). */
95
+ Create: 'projects:create',
96
+ /** Default values used to pre-fill the create-project dialog (baseDir). */
97
+ GetCreateDefaults: 'projects:getCreateDefaults',
90
98
  };
91
99
  // ── Dialog ───────────────────────────────────────────────────────────────
92
100
  export const DialogChannel = {
@@ -69,6 +69,7 @@ export declare const WorkbenchSettingsSaveSchema: z.ZodTuple<[z.ZodObject<{
69
69
  dark: "dark";
70
70
  light: "light";
71
71
  }>;
72
+ lastCreateBaseDir: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
72
73
  }, z.core.$loose>], null>;
73
74
  /** workbenchSettings:setTheme — fixed enum of supported theme sources. */
74
75
  export declare const WorkbenchSettingsSetThemeSchema: z.ZodTuple<[z.ZodEnum<{
@@ -97,6 +97,7 @@ export const WorkbenchSettingsSaveSchema = z.tuple([
97
97
  watch: z.boolean(),
98
98
  }),
99
99
  theme: z.enum(['system', 'light', 'dark']),
100
+ lastCreateBaseDir: z.union([z.string(), z.null()]),
100
101
  }),
101
102
  ]);
102
103
  /** workbenchSettings:setTheme — fixed enum of supported theme sources. */
@@ -88,6 +88,43 @@ export interface WorkbenchHostInstance {
88
88
  mainWindow: import('electron').BrowserWindow;
89
89
  context: import('../main/services/workbench-context.js').WorkbenchContext;
90
90
  }
91
+ /**
92
+ * Pluggable backend for the project-list panel. Hosts may supply this to
93
+ * take over project storage from the default `<userData>/dimina-projects.json`.
94
+ *
95
+ * Detailed contract lives in
96
+ * `@dimina-kit/devtools/projects-provider` (the runtime exports it).
97
+ * Repeated here as a structural type so `WorkbenchAppConfig` can reference
98
+ * it without a circular import from the main-process tree.
99
+ */
100
+ export interface ProjectsProvider {
101
+ listProjects(): unknown[] | Promise<unknown[]>;
102
+ validateProjectDir?(dirPath: string): string | null;
103
+ addProject(dirPath: string): unknown;
104
+ removeProject(dirPath: string): void | Promise<void>;
105
+ updateLastOpened?(dirPath: string): void | Promise<void>;
106
+ getCompileConfig?(dirPath: string): unknown;
107
+ saveCompileConfig?(dirPath: string, cfg: unknown): void | Promise<void>;
108
+ }
109
+ export interface ProjectTemplate {
110
+ id: string;
111
+ name: string;
112
+ description?: string;
113
+ icon?: string;
114
+ source?: {
115
+ type: 'directory';
116
+ path: string;
117
+ };
118
+ generate?: (target: string, opts: {
119
+ name: string;
120
+ }) => Promise<void>;
121
+ }
122
+ export interface CreateProjectInput {
123
+ name: string;
124
+ path: string;
125
+ templateId?: string;
126
+ extra?: Record<string, unknown>;
127
+ }
91
128
  export interface WorkbenchAppConfig extends WorkbenchConfig {
92
129
  /** Absolute path to the renderer dist directory. Defaults to dimina-devtools' built-in renderer. */
93
130
  rendererDir?: string;
@@ -114,5 +151,48 @@ export interface WorkbenchAppConfig extends WorkbenchConfig {
114
151
  /** Override the version string passed to the checker. Default: app.getVersion() */
115
152
  getCurrentVersion?: () => string;
116
153
  };
154
+ /** Override the default `<userData>/dimina-projects.json` backend. */
155
+ projectsProvider?: ProjectsProvider;
156
+ /** Templates injected at the head of the list; same-id overrides a built-in. */
157
+ projectTemplates?: ProjectTemplate[];
158
+ /** Built-in policy: 'all' (default), 'none', or an allowlist of ids. */
159
+ builtinTemplates?: 'all' | 'none' | string[];
160
+ /**
161
+ * Host-supplied "新建项目" dialog. When provided, the renderer routes the
162
+ * "+" card click through IPC into this main-process hook instead of
163
+ * showing the built-in dialog. Receives the parent window for native
164
+ * dialog parenting and the merged + sanitized template list (no
165
+ * `generate` functions cross the IPC boundary).
166
+ *
167
+ * Return either:
168
+ * - `null` — user cancelled.
169
+ * - a `CreateProjectInput` — devtools runs its built-in scaffold
170
+ * (copy template → write project.config.json → provider.addProject)
171
+ * on the host's behalf.
172
+ * - `{ ready: Project }` — the host has ALREADY created the project
173
+ * (typically via its own backend). devtools skips the scaffold and
174
+ * just refreshes the list. Use this when materialization is remote
175
+ * or already done.
176
+ */
177
+ customCreateProjectDialog?: (ctx: {
178
+ parentWindow: import('electron').BrowserWindow;
179
+ templates: ProjectTemplate[];
180
+ }) => Promise<CustomCreateProjectDialogResult>;
117
181
  }
182
+ /**
183
+ * Discriminated return of `customCreateProjectDialog`. `null` = cancelled.
184
+ * `{ ready }` = host created the project itself; devtools just refreshes.
185
+ * Otherwise treated as `CreateProjectInput` and devtools materializes the
186
+ * template locally.
187
+ *
188
+ * The `ready.Project` shape is the structural minimum devtools needs to
189
+ * render the card (mirrors `Project` in `./projects-provider`).
190
+ */
191
+ export type CustomCreateProjectDialogResult = null | {
192
+ ready: {
193
+ name: string;
194
+ path: string;
195
+ lastOpened?: string | null;
196
+ };
197
+ } | CreateProjectInput;
118
198
  //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dimina-kit/devtools",
3
- "version": "0.3.1-dev.20260518054451",
3
+ "version": "0.3.1-dev.20260518114324",
4
4
  "description": "Dimina DevTools - modular developer tools for mini app debugging",
5
5
  "keywords": [
6
6
  "dimina",
@@ -27,6 +27,7 @@
27
27
  "dist",
28
28
  "!dist/**/*.js.map",
29
29
  "!dist/**/*.d.ts.map",
30
+ "templates",
30
31
  "README.md",
31
32
  "LICENSE"
32
33
  ],
@@ -38,6 +39,7 @@
38
39
  "./launch": "./dist/main/app/launch.js",
39
40
  "./types": "./dist/shared/types.js",
40
41
  "./context": "./dist/main/services/workbench-context.js",
42
+ "./projects-provider": "./dist/main/services/projects/index.js",
41
43
  "./create-window": "./dist/main/windows/main-window/index.js",
42
44
  "./ipc-simulator": "./dist/main/ipc/simulator.js",
43
45
  "./ipc-panels": "./dist/main/ipc/panels.js",
@@ -104,6 +106,9 @@
104
106
  ],
105
107
  "simulator-apis": [
106
108
  "dist/main/simulator-apis.d.ts"
109
+ ],
110
+ "projects-provider": [
111
+ "dist/main/services/projects/index.d.ts"
107
112
  ]
108
113
  }
109
114
  },
@@ -116,7 +121,7 @@
116
121
  "chrome-remote-interface": "^0.34.0",
117
122
  "ws": "^8.20.0",
118
123
  "zod": "^4.3.6",
119
- "@dimina-kit/devkit": "0.1.1-dev.20260518054451"
124
+ "@dimina-kit/devkit": "0.1.1-dev.20260518114324"
120
125
  },
121
126
  "devDependencies": {
122
127
  "@playwright/test": "^1.59.1",
@@ -0,0 +1,6 @@
1
+ App({
2
+ onLaunch() {},
3
+ onShow() {},
4
+ onHide() {},
5
+ globalData: {}
6
+ })
@@ -0,0 +1,11 @@
1
+ {
2
+ "pages": [
3
+ "pages/index/index"
4
+ ],
5
+ "window": {
6
+ "backgroundTextStyle": "light",
7
+ "navigationBarBackgroundColor": "#fff",
8
+ "navigationBarTitleText": "Blank",
9
+ "navigationBarTextStyle": "black"
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ page {
2
+ background: #f7f7f7;
3
+ font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
4
+ color: #1f1f1f;
5
+ }
@@ -0,0 +1,6 @@
1
+ Page({
2
+ data: {
3
+ message: 'Hello, Dimina'
4
+ },
5
+ onLoad() {}
6
+ })
@@ -0,0 +1,3 @@
1
+ {
2
+ "usingComponents": {}
3
+ }
@@ -0,0 +1,3 @@
1
+ <view class="page">
2
+ <text class="title">{{message}}</text>
3
+ </view>
@@ -0,0 +1,11 @@
1
+ .page {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ height: 100vh;
6
+ }
7
+
8
+ .title {
9
+ font-size: 36rpx;
10
+ color: #1f1f1f;
11
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "miniprogramRoot": "",
3
+ "projectname": "Blank",
4
+ "description": "Dimina blank mini-program template",
5
+ "appid": "wxblank0000000000",
6
+ "setting": {
7
+ "es6": false,
8
+ "postcss": false,
9
+ "minified": false
10
+ },
11
+ "compileType": "miniprogram",
12
+ "libVersion": "3.8.7"
13
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/sitemap.html",
3
+ "rules": [
4
+ {
5
+ "action": "allow",
6
+ "page": "*"
7
+ }
8
+ ]
9
+ }
@@ -0,0 +1 @@
1
+ require("./runtime"),require("./common"),require("./vendors"),require("./taro"),(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[4],{47:function(e,t,r){"use strict";(function(e){var n=r(17).compose;t.__esModule=!0,t.composeWithDevTools="undefined"!==typeof e&&e.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?e.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"===typeof arguments[0]?n:n.apply(null,arguments)},t.devToolsEnhancer="undefined"!==typeof e&&e.__REDUX_DEVTOOLS_EXTENSION__?e.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}}}).call(this,r(2)["window"])},60:function(e,t,r){},71:function(e,t,r){"use strict";r.r(t);r(50);var n=r(2),o=r(42),i=r(26),c=r(5),u=r(6),a=r(8),p=r(9),d=r(1),s=r.n(d),f=r(18),l=r(17),O=r(47),b=r(3);function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(Object(r),!0).forEach((function(t){Object(b["a"])(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var j=r(15),h=r(13),y=[{text:"Use Redux",completed:!1,id:0}];function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case h["a"]:return[].concat(Object(j["a"])(e),[{id:e.reduce((function(e,t){return Math.max(t.id,e)}),-1)+1,completed:!1,text:t.text}]);case h["e"]:return e.filter((function(e){return e.id!==t.id}));case h["f"]:return e.map((function(e){return e.id===t.id?v(v({},e),{},{text:t.text}):e}));case h["d"]:return e.map((function(e){return e.id===t.id?v(v({},e),{},{completed:!e.completed}):e}));case h["c"]:var r=e.every((function(e){return e.completed}));return e.map((function(e){return v(v({},e),{},{completed:!r})}));case h["b"]:return e.filter((function(e){return!1===e.completed}));default:return e}}var m=r(14),E=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m["b"],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case h["g"]:return t.filter;default:return e}},w=E,x=Object(l["combineReducers"])({todos:g,visibilityFilter:w}),T=x,S=(r(60),r(7)),D=Object(l["createStore"])(T,Object(O["composeWithDevTools"])(Object(l["applyMiddleware"])())),P=function(e){Object(a["a"])(r,e);var t=Object(p["a"])(r);function r(){return Object(c["a"])(this,r),t.apply(this,arguments)}return Object(u["a"])(r,[{key:"render",value:function(){return Object(S["jsx"])(f["a"],{store:D,children:this.props.children})}}]),r}(s.a.Component),N=P,X=r(27),k={pages:["pages/index/index"],window:{backgroundTextStyle:"light",navigationBarBackgroundColor:"#fff",navigationBarTitleText:"WeChat",navigationBarTextStyle:"black"}};n["window"].__taroAppConfig=k;App(Object(o["a"])(N,d,X["a"],k));Object(i["initPxTransform"])({designWidth:750,deviceRatio:{750:1}})}},[[71,0,1,2,3]]]);
@@ -0,0 +1 @@
1
+ {"pages":["pages/index/index"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#fff","navigationBarTitleText":"WeChat","navigationBarTextStyle":"black"}}
@@ -0,0 +1 @@
1
+ html{margin:0}body,button,html{padding:0}button{margin:0;border:0;vertical-align:baseline;font-family:inherit;font-weight:inherit;color:inherit}body,page{font:28rpx "Helvetica Neue",Helvetica,Arial,sans-serif;background:#f5f5f5;color:#4d4d4d;margin:0 auto;font-weight:300}:focus{outline:0}.hidden{display:none}.todoapp{background:#fff;margin:210rpx 0 40rpx;position:relative}input::-webkit-input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}input::-moz-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.info{margin:130rpx auto 0;color:#bfbfbf;text-shadow:0 2rpx 0 rgba(255,255,255,.5)}.info p{line-height:1}.info a{color:inherit;text-decoration:none;font-weight:400}.info a:hover{text-decoration:underline}.weui-cells_checkbox{margin-right:10rpx}