@dimina-kit/devtools 0.3.2-dev.20260525152421 → 0.3.2-dev.20260610082053

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 (295) hide show
  1. package/README.md +43 -40
  2. package/dist/main/api.d.ts +0 -1
  3. package/dist/main/api.js +5 -1
  4. package/dist/main/app/app.d.ts +15 -5
  5. package/dist/main/app/app.js +247 -110
  6. package/dist/main/app/bootstrap.d.ts +16 -0
  7. package/dist/main/app/bootstrap.js +20 -0
  8. package/dist/main/app/launch.d.ts +8 -4
  9. package/dist/main/app/launch.js +9 -4
  10. package/dist/main/index.bundle.js +6607 -2102
  11. package/dist/main/index.js +9 -1
  12. package/dist/main/ipc/app.d.ts +1 -1
  13. package/dist/main/ipc/bridge-router.d.ts +61 -0
  14. package/dist/main/ipc/bridge-router.js +1300 -0
  15. package/dist/main/ipc/panels.d.ts +1 -1
  16. package/dist/main/ipc/panels.js +6 -2
  17. package/dist/main/ipc/popover.d.ts +1 -1
  18. package/dist/main/ipc/project-fs.d.ts +57 -0
  19. package/dist/main/ipc/project-fs.js +448 -0
  20. package/dist/main/ipc/projects.d.ts +1 -1
  21. package/dist/main/ipc/session.d.ts +1 -1
  22. package/dist/main/ipc/settings.d.ts +1 -1
  23. package/dist/main/ipc/simulator-module.d.ts +6 -0
  24. package/dist/main/ipc/simulator-module.js +11 -1
  25. package/dist/main/ipc/simulator.d.ts +2 -2
  26. package/dist/main/ipc/simulator.js +49 -5
  27. package/dist/main/ipc/toolbar.d.ts +1 -1
  28. package/dist/main/ipc/views.d.ts +19 -0
  29. package/dist/main/ipc/views.js +65 -0
  30. package/dist/main/runtime/devtools-backend.d.ts +17 -0
  31. package/dist/main/runtime/devtools-backend.js +49 -0
  32. package/dist/main/runtime/miniapp-runtime.d.ts +39 -0
  33. package/dist/main/runtime/miniapp-runtime.js +17 -0
  34. package/dist/main/services/automation/exec.d.ts +27 -2
  35. package/dist/main/services/automation/exec.js +37 -3
  36. package/dist/main/services/automation/handlers/app.js +127 -11
  37. package/dist/main/services/automation/handlers/page.js +36 -19
  38. package/dist/main/services/automation/index.js +40 -13
  39. package/dist/main/services/automation/wait-active-page.d.ts +56 -0
  40. package/dist/main/services/automation/wait-active-page.js +71 -0
  41. package/dist/main/services/console-forward/index.d.ts +36 -0
  42. package/dist/main/services/console-forward/index.js +81 -0
  43. package/dist/main/services/dimina-resource-server.d.ts +7 -0
  44. package/dist/main/services/dimina-resource-server.js +99 -0
  45. package/dist/main/services/elements-forward/index.d.ts +66 -0
  46. package/dist/main/services/elements-forward/index.js +583 -0
  47. package/dist/main/services/layout/index.d.ts +23 -1
  48. package/dist/main/services/layout/index.js +28 -3
  49. package/dist/main/services/mcp/index.d.ts +1 -0
  50. package/dist/main/services/mcp/index.js +3 -0
  51. package/dist/main/services/mcp/server.d.ts +1 -1
  52. package/dist/main/services/mcp/server.js +1 -1
  53. package/dist/main/services/mcp/target-manager.d.ts +35 -0
  54. package/dist/main/services/mcp/target-manager.js +63 -1
  55. package/dist/main/services/mcp/tools/context-tools.js +15 -1
  56. package/dist/main/services/module.d.ts +1 -1
  57. package/dist/main/services/network-forward/index.d.ts +190 -0
  58. package/dist/main/services/network-forward/index.js +765 -0
  59. package/dist/main/services/notifications/renderer-notifier.d.ts +11 -0
  60. package/dist/main/services/notifications/renderer-notifier.js +7 -1
  61. package/dist/main/services/render-inspect/index.d.ts +41 -0
  62. package/dist/main/services/render-inspect/index.js +88 -0
  63. package/dist/main/services/safe-area/index.d.ts +17 -0
  64. package/dist/main/services/safe-area/index.js +59 -0
  65. package/dist/main/services/service-host-pool/pool.d.ts +197 -0
  66. package/dist/main/services/service-host-pool/pool.js +364 -0
  67. package/dist/main/services/simulator/custom-apis.d.ts +34 -0
  68. package/dist/main/services/simulator/custom-apis.js +22 -0
  69. package/dist/main/services/simulator-appdata/index.d.ts +35 -0
  70. package/dist/main/services/simulator-appdata/index.js +71 -0
  71. package/dist/main/services/simulator-current-page/index.d.ts +24 -0
  72. package/dist/main/services/simulator-current-page/index.js +19 -0
  73. package/dist/main/services/simulator-storage/index.d.ts +37 -2
  74. package/dist/main/services/simulator-storage/index.js +209 -32
  75. package/dist/main/services/simulator-storage/service-storage-ops.d.ts +40 -0
  76. package/dist/main/services/simulator-storage/service-storage-ops.js +67 -0
  77. package/dist/main/services/simulator-temp-files/fs-channels.js +1 -1
  78. package/dist/main/services/simulator-temp-files/index.d.ts +1 -1
  79. package/dist/main/services/simulator-temp-files/index.js +1 -1
  80. package/dist/main/services/simulator-temp-files/request-handler.js +1 -1
  81. package/dist/main/services/simulator-wxml/index.d.ts +29 -0
  82. package/dist/main/services/simulator-wxml/index.js +28 -0
  83. package/dist/main/services/update/update-manager.d.ts +10 -0
  84. package/dist/main/services/update/update-manager.js +16 -3
  85. package/dist/main/services/views/devtools-tabs.d.ts +47 -0
  86. package/dist/main/services/views/devtools-tabs.js +95 -0
  87. package/dist/main/services/views/view-manager.d.ts +142 -4
  88. package/dist/main/services/views/view-manager.js +909 -17
  89. package/dist/main/services/workbench-context.d.ts +66 -1
  90. package/dist/main/services/workbench-context.js +6 -1
  91. package/dist/main/services/workspace/workspace-service.d.ts +8 -0
  92. package/dist/main/services/workspace/workspace-service.js +12 -0
  93. package/dist/main/utils/ipc-registry.d.ts +11 -2
  94. package/dist/main/utils/ipc-registry.js +63 -3
  95. package/dist/main/utils/paths.d.ts +15 -0
  96. package/dist/main/utils/paths.js +19 -0
  97. package/dist/main/utils/sender-policy.d.ts +9 -3
  98. package/dist/main/utils/sender-policy.js +18 -4
  99. package/dist/main/utils/theme.d.ts +1 -1
  100. package/dist/main/utils/theme.js +1 -1
  101. package/dist/main/windows/main-window/create.d.ts +0 -6
  102. package/dist/main/windows/main-window/create.js +11 -59
  103. package/dist/main/windows/main-window/events.d.ts +1 -1
  104. package/dist/main/windows/main-window/events.js +1 -1
  105. package/dist/main/windows/service-host-window/create.d.ts +52 -0
  106. package/dist/main/windows/service-host-window/create.js +112 -0
  107. package/dist/native-host/common/common.js +368 -0
  108. package/dist/native-host/container/pageFrame.css +1 -0
  109. package/dist/native-host/render/render.js +9334 -0
  110. package/dist/native-host/service/service.js +6 -0
  111. package/dist/preload/index.d.ts +2 -0
  112. package/dist/preload/index.js +6 -0
  113. package/dist/preload/instrumentation/app-data.d.ts +18 -20
  114. package/dist/preload/instrumentation/app-data.js +23 -160
  115. package/dist/preload/instrumentation/wxml-extract.d.ts +1 -1
  116. package/dist/preload/instrumentation/wxml-extract.js +1 -1
  117. package/dist/preload/runtime/bridge.d.ts +3 -8
  118. package/dist/preload/runtime/bridge.js +2 -32
  119. package/dist/preload/runtime/custom-apis.js +20 -17
  120. package/dist/preload/runtime/host-toolbar-advertiser.d.ts +27 -0
  121. package/dist/preload/runtime/host-toolbar-advertiser.js +55 -0
  122. package/dist/preload/runtime/main-api-runner.d.ts +9 -0
  123. package/dist/preload/runtime/main-api-runner.js +85 -0
  124. package/dist/preload/runtime/native-host.d.ts +43 -0
  125. package/dist/preload/runtime/native-host.js +83 -0
  126. package/dist/preload/shared/expose.d.ts +10 -5
  127. package/dist/preload/shared/expose.js +29 -11
  128. package/dist/preload/shared/sid-registry.d.ts +11 -0
  129. package/dist/preload/shared/sid-registry.js +38 -0
  130. package/dist/preload/windows/host-toolbar.cjs +161 -0
  131. package/dist/preload/windows/host-toolbar.cjs.map +7 -0
  132. package/dist/preload/windows/host-toolbar.d.ts +2 -0
  133. package/dist/preload/windows/host-toolbar.js +12 -0
  134. package/dist/preload/windows/main.cjs +1939 -0
  135. package/dist/preload/windows/main.cjs.map +4 -4
  136. package/dist/preload/windows/simulator.cjs +925 -0
  137. package/dist/preload/windows/simulator.cjs.map +7 -0
  138. package/dist/preload/windows/simulator.js +243 -573
  139. package/dist/render-host/pageFrame.html +29 -0
  140. package/dist/render-host/preload.cjs +154 -0
  141. package/dist/render-host/render-inspect.js +295 -0
  142. package/dist/renderer/assets/abap-DiwvWnMr.js +2 -0
  143. package/dist/renderer/assets/apex-CmtZjKlf.js +2 -0
  144. package/dist/renderer/assets/azcli-DL2My_i-.js +2 -0
  145. package/dist/renderer/assets/bat-B-nC98wG.js +2 -0
  146. package/dist/renderer/assets/bicep-Ju5MwOgh.js +3 -0
  147. package/dist/renderer/assets/cameligo-8Eu1TyBr.js +2 -0
  148. package/dist/renderer/assets/chunk-DPI0Y_ll.js +1 -0
  149. package/dist/renderer/assets/clojure-u-RpMkH3.js +2 -0
  150. package/dist/renderer/assets/codicon-ngg6Pgfi.ttf +0 -0
  151. package/dist/renderer/assets/coffee-CdA7bbTe.js +2 -0
  152. package/dist/renderer/assets/constants-CLAQX6VZ.js +2 -0
  153. package/dist/renderer/assets/cpp-CzNFP8ks.js +2 -0
  154. package/dist/renderer/assets/csharp-j1LThmcE.js +2 -0
  155. package/dist/renderer/assets/csp-CLRC61y6.js +2 -0
  156. package/dist/renderer/assets/css-r6rC_7P2.js +4 -0
  157. package/dist/renderer/assets/css.worker-DyDu5ynT.js +90 -0
  158. package/dist/renderer/assets/cssMode-BCBgxrnA.js +2 -0
  159. package/dist/renderer/assets/cypher-CW08XVUh.js +2 -0
  160. package/dist/renderer/assets/dart-Cs9aL5T_.js +2 -0
  161. package/dist/renderer/assets/dockerfile-BWM0M184.js +2 -0
  162. package/dist/renderer/assets/ecl-MJJuer5P.js +2 -0
  163. package/dist/renderer/assets/editor-CWI9TnMM.css +1 -0
  164. package/dist/renderer/assets/editor.api2-BTaYmRq7.js +873 -0
  165. package/dist/renderer/assets/editor.worker-Dpt_xPrs.js +27 -0
  166. package/dist/renderer/assets/elixir-D2AIuXqn.js +2 -0
  167. package/dist/renderer/assets/flow9-B2H24giC.js +2 -0
  168. package/dist/renderer/assets/freemarker2-DGDGzimW.js +4 -0
  169. package/dist/renderer/assets/fsharp-CMk2OIJN.js +2 -0
  170. package/dist/renderer/assets/go-BrMkuJg0.js +2 -0
  171. package/dist/renderer/assets/graphql-PSR1UKGv.js +2 -0
  172. package/dist/renderer/assets/handlebars-bOHhw3EG.js +2 -0
  173. package/dist/renderer/assets/hcl-DAQrbDOW.js +2 -0
  174. package/dist/renderer/assets/html-BMyuX0_c.js +2 -0
  175. package/dist/renderer/assets/html.worker-IWNXhnIC.js +503 -0
  176. package/dist/renderer/assets/htmlMode-DR4kXJ7l.js +2 -0
  177. package/dist/renderer/assets/index-CcJKzatF.js +50 -0
  178. package/dist/renderer/assets/ini-0TG5BxW0.js +2 -0
  179. package/dist/renderer/assets/input-QGx6FFX1.js +2 -0
  180. package/dist/renderer/assets/ipc-transport-BT4QYQqu.css +1 -0
  181. package/dist/renderer/assets/{ipc-transport-BzPzxPwf.js → ipc-transport-DvZvwK-Z.js} +5 -5
  182. package/dist/renderer/assets/java-rgorz17v.js +2 -0
  183. package/dist/renderer/assets/javascript-Bu-tl1P7.js +2 -0
  184. package/dist/renderer/assets/json.worker-c4h5s80L.js +59 -0
  185. package/dist/renderer/assets/jsonMode-MQV_ffLR.js +8 -0
  186. package/dist/renderer/assets/julia-C8VMdHm8.js +2 -0
  187. package/dist/renderer/assets/kotlin-AhhC4Qhm.js +2 -0
  188. package/dist/renderer/assets/less-Cgca25AP.js +3 -0
  189. package/dist/renderer/assets/lexon-D0GHdBaw.js +2 -0
  190. package/dist/renderer/assets/liquid-ClkfOvhB.js +2 -0
  191. package/dist/renderer/assets/lspLanguageFeatures-Bke_4Ie9.js +5 -0
  192. package/dist/renderer/assets/lua-DmRsNG-P.js +2 -0
  193. package/dist/renderer/assets/m3-BgL5dNKT.js +2 -0
  194. package/dist/renderer/assets/markdown-BuJfycGS.js +2 -0
  195. package/dist/renderer/assets/mdx-RZdUskPu.js +2 -0
  196. package/dist/renderer/assets/mips-C9m_93PR.js +2 -0
  197. package/dist/renderer/assets/monaco.contribution-B7rUMaEv.js +3 -0
  198. package/dist/renderer/assets/msdax-CpFHC9OI.js +2 -0
  199. package/dist/renderer/assets/mysql-qFvltsqN.js +2 -0
  200. package/dist/renderer/assets/objective-c-Bnmr858J.js +2 -0
  201. package/dist/renderer/assets/pascal-WP0_D5AO.js +2 -0
  202. package/dist/renderer/assets/pascaligo-Blom4Rij.js +2 -0
  203. package/dist/renderer/assets/perl-B-vk8g64.js +2 -0
  204. package/dist/renderer/assets/pgsql-Cgvz6v67.js +2 -0
  205. package/dist/renderer/assets/php-8a3Lrw9m.js +2 -0
  206. package/dist/renderer/assets/pla-DuFqEZ8V.js +2 -0
  207. package/dist/renderer/assets/popover-BOH1If1J.js +2 -0
  208. package/dist/renderer/assets/postiats-DkLtSgkp.js +2 -0
  209. package/dist/renderer/assets/powerquery-BJ1aNepW.js +2 -0
  210. package/dist/renderer/assets/powershell-rE98k687.js +2 -0
  211. package/dist/renderer/assets/protobuf-CUheFacr.js +3 -0
  212. package/dist/renderer/assets/pug-LDcAMD8w.js +2 -0
  213. package/dist/renderer/assets/python-Cobrm_-8.js +2 -0
  214. package/dist/renderer/assets/qsharp-DUKSQoR1.js +2 -0
  215. package/dist/renderer/assets/r-D-QApv87.js +2 -0
  216. package/dist/renderer/assets/razor-BEUIQFNJ.js +2 -0
  217. package/dist/renderer/assets/redis-SXdDyWR9.js +2 -0
  218. package/dist/renderer/assets/redshift-Y6lsCryn.js +2 -0
  219. package/dist/renderer/assets/restructuredtext-edObr9a8.js +2 -0
  220. package/dist/renderer/assets/ruby-CNnUfF-8.js +2 -0
  221. package/dist/renderer/assets/rust-IHUZWzBr.js +2 -0
  222. package/dist/renderer/assets/sb-DrUvY44N.js +2 -0
  223. package/dist/renderer/assets/scala-B4hbXGLM.js +2 -0
  224. package/dist/renderer/assets/scheme-BGrd12j3.js +2 -0
  225. package/dist/renderer/assets/scss-x5G1ES4U.js +4 -0
  226. package/dist/renderer/assets/select-C7JQ8G5N.js +2 -0
  227. package/dist/renderer/assets/settings-DpAbTJyF.js +2 -0
  228. package/dist/renderer/assets/{settings-api-BXCw9vOZ.js → settings-api-RD2IZF53.js} +2 -2
  229. package/dist/renderer/assets/shell-DOehe2Y8.js +2 -0
  230. package/dist/renderer/assets/solidity-BeRvcwWV.js +2 -0
  231. package/dist/renderer/assets/sophia-DZbkUNjy.js +2 -0
  232. package/dist/renderer/assets/sparql-B7_oi5-h.js +2 -0
  233. package/dist/renderer/assets/sql-CTlsFWVE.js +2 -0
  234. package/dist/renderer/assets/st-DJVEJdPE.js +2 -0
  235. package/dist/renderer/assets/swift-CwhT3fYa.js +2 -0
  236. package/dist/renderer/assets/systemverilog-BQN63pkN.js +2 -0
  237. package/dist/renderer/assets/tcl-DqwfpskA.js +2 -0
  238. package/dist/renderer/assets/ts.worker-BwM5Ha3L.js +67720 -0
  239. package/dist/renderer/assets/tsMode-BHa7dl9v.js +12 -0
  240. package/dist/renderer/assets/twig-BiyenUgc.js +2 -0
  241. package/dist/renderer/assets/typescript-15aT0Yj8.js +2 -0
  242. package/dist/renderer/assets/typespec-CWOJribt.js +2 -0
  243. package/dist/renderer/assets/vb-Cq5F87m3.js +2 -0
  244. package/dist/renderer/assets/wgsl-BAvW2lVr.js +299 -0
  245. package/dist/renderer/assets/workbenchSettings-CNJX4Qna.js +8 -0
  246. package/dist/renderer/assets/workers-CRBS0W-v.js +2 -0
  247. package/dist/renderer/assets/xml-bR2Zh-HV.js +2 -0
  248. package/dist/renderer/assets/yaml-Bdk54Qrb.js +2 -0
  249. package/dist/renderer/entries/main/index.html +29 -6
  250. package/dist/renderer/entries/popover/index.html +7 -6
  251. package/dist/renderer/entries/settings/index.html +6 -5
  252. package/dist/renderer/entries/workbench-settings/index.html +6 -5
  253. package/dist/service-host/preload.cjs +254 -0
  254. package/dist/service-host/service.html +10 -0
  255. package/dist/service-host/sourcemap-rewrite.cjs +58 -0
  256. package/dist/service-host/sync-api-patch.js +20 -0
  257. package/dist/service-host/sync-impls/menu-button.js +16 -0
  258. package/dist/service-host/sync-impls/storage.js +50 -0
  259. package/dist/service-host/sync-impls/system-info.js +54 -0
  260. package/dist/shared/appdata-accumulator.d.ts +95 -0
  261. package/dist/shared/appdata-accumulator.js +213 -0
  262. package/dist/shared/bridge-channels.d.ts +364 -0
  263. package/dist/shared/bridge-channels.js +54 -0
  264. package/dist/shared/constants.d.ts +0 -4
  265. package/dist/shared/constants.js +0 -4
  266. package/dist/shared/ipc-channels.d.ts +108 -1
  267. package/dist/shared/ipc-channels.js +127 -10
  268. package/dist/shared/ipc-schemas.d.ts +65 -2
  269. package/dist/shared/ipc-schemas.js +79 -3
  270. package/dist/shared/open-in-editor.d.ts +71 -0
  271. package/dist/shared/open-in-editor.js +138 -0
  272. package/dist/shared/simulator-api-metadata.d.ts +21 -0
  273. package/dist/shared/simulator-api-metadata.js +23 -0
  274. package/dist/shared/types.d.ts +2 -2
  275. package/dist/shared/vpath.d.ts +42 -0
  276. package/dist/shared/vpath.js +105 -0
  277. package/dist/simulator/assets/device-shell-DsdcNEkt.css +1 -0
  278. package/dist/simulator/assets/device-shell-vwYSOVrh.js +2 -0
  279. package/dist/simulator/assets/jsx-runtime-P6ZegaOf.js +2 -0
  280. package/dist/simulator/assets/simulator-DddliUL5.js +10 -0
  281. package/dist/simulator/assets/simulator-mini-app-BDNu5n26.js +2 -0
  282. package/dist/simulator/device-shell/menu-button-geometry.js +8 -0
  283. package/dist/simulator/simulator.html +2 -112
  284. package/package.json +9 -9
  285. package/dist/main/utils/disposable.d.ts +0 -18
  286. package/dist/main/utils/disposable.js +0 -67
  287. package/dist/renderer/assets/constants-DI382mTP.js +0 -2
  288. package/dist/renderer/assets/index-4lkyF644.js +0 -46
  289. package/dist/renderer/assets/input-D4byFOLS.js +0 -2
  290. package/dist/renderer/assets/ipc-transport-DqbRdZNO.css +0 -1
  291. package/dist/renderer/assets/popover-cxKrg_os.js +0 -2
  292. package/dist/renderer/assets/select-BgSkkdHW.js +0 -2
  293. package/dist/renderer/assets/settings-oD2K1jdT.js +0 -2
  294. package/dist/renderer/assets/workbenchSettings-CTNBpTft.js +0 -8
  295. package/dist/simulator/assets/simulator-CVOFTpSj.js +0 -9
@@ -0,0 +1,112 @@
1
+ import { app, BrowserWindow } from 'electron';
2
+ import path from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { devtoolsPackageRoot } from '../../utils/paths.js';
5
+ /** Session partition the service host shares with the simulator `<webview>`. */
6
+ export const SERVICE_HOST_PARTITION = 'persist:simulator';
7
+ /** Absolute path to the service-host preload (loaded at runtime by path). */
8
+ export const serviceHostPreloadPath = path.join(devtoolsPackageRoot, 'dist/service-host/preload.cjs');
9
+ const serviceHostHtmlPath = path.join(devtoolsPackageRoot, 'dist/service-host/service.html');
10
+ /**
11
+ * Construct an (un-navigated) service-host BrowserWindow. Split out from
12
+ * `createServiceHostWindow` so a pre-warm pool can build the window once and
13
+ * navigate it per spawn (the spawn context lives in the URL — see
14
+ * `buildServiceHostSpawnUrl`). The process-model flags here are the contract
15
+ * the service-host preload depends on (it `require('electron')` and writes
16
+ * globals onto the page realm).
17
+ */
18
+ export function constructServiceHostWindow(opts = {}) {
19
+ return new BrowserWindow({
20
+ width: 980,
21
+ height: 720,
22
+ show: false,
23
+ title: opts.appId ? `Dimina Service Host: ${opts.appId}` : 'Dimina Service Host',
24
+ webPreferences: {
25
+ partition: opts.partition ?? SERVICE_HOST_PARTITION,
26
+ nodeIntegration: false,
27
+ contextIsolation: false,
28
+ sandbox: false,
29
+ preload: serviceHostPreloadPath,
30
+ devTools: true,
31
+ },
32
+ });
33
+ }
34
+ /**
35
+ * Build the file:// spawn URL carrying the per-spawn context the preload reads
36
+ * from `location.search` at eval time (bridgeId/appId/pagePath/pkgRoot/
37
+ * resourceBaseUrl/hostEnv).
38
+ */
39
+ export function buildServiceHostSpawnUrl(opts) {
40
+ const url = new URL(pathToFileURL(serviceHostHtmlPath).toString());
41
+ url.searchParams.set('bridgeId', opts.bridgeId);
42
+ url.searchParams.set('appId', opts.appId);
43
+ url.searchParams.set('pagePath', opts.pagePath);
44
+ url.searchParams.set('pkgRoot', opts.pkgRoot);
45
+ url.searchParams.set('resourceBaseUrl', opts.resourceBaseUrl);
46
+ if (opts.hostEnvSnapshot) {
47
+ // Encode the resolved host-env so preload can hydrate
48
+ // `__diminaSpawnContext.hostEnvSnapshot` before service.js loads.
49
+ // Without this, sync-impls/system-info.ts falls back to generic defaults.
50
+ url.searchParams.set('hostEnv', encodeURIComponent(JSON.stringify(opts.hostEnvSnapshot)));
51
+ }
52
+ return url.toString();
53
+ }
54
+ /**
55
+ * Navigate a (constructed or pooled) service-host window to its spawn URL. The
56
+ * preload re-evaluates on this navigation, rebuilding `__diminaSpawnContext`.
57
+ * Returns the load promise (resolves on did-finish-load). Attaches the dev-only
58
+ * detached-DevTools hook, matching the original behavior.
59
+ */
60
+ export function navigateServiceHost(win, url) {
61
+ const loaded = Promise.resolve(win.loadURL(url)).then(() => undefined, () => undefined);
62
+ if (!app.isPackaged && process.env.NODE_ENV !== 'test') {
63
+ // Recycled pooled windows get navigated repeatedly. A `once` hook that never
64
+ // fires (the spawn was disposed before its service.html settled) stays on the
65
+ // reused webContents and the next spawn's hook fires alongside it → DevTools
66
+ // can open twice and stale hooks accumulate. Remove the prior hook before
67
+ // attaching a fresh one. (Audit A6; dev-only.)
68
+ const w = win;
69
+ if (w.__diminaDevToolsHook) {
70
+ try {
71
+ win.webContents.removeListener('did-finish-load', w.__diminaDevToolsHook);
72
+ }
73
+ catch { /* wc gone */ }
74
+ }
75
+ const hook = () => {
76
+ // URL-guard so a reset's about:blank load doesn't pop DevTools.
77
+ if (!win.isDestroyed() && win.webContents.getURL().includes('service.html')) {
78
+ win.webContents.openDevTools({ mode: 'detach' });
79
+ }
80
+ };
81
+ w.__diminaDevToolsHook = hook;
82
+ win.webContents.once('did-finish-load', hook);
83
+ }
84
+ return loaded;
85
+ }
86
+ /**
87
+ * The spec a `ServiceHostPool` uses to pre-warm service-host windows. Keeps the
88
+ * pooled window byte-equivalent to `constructServiceHostWindow`'s output, and
89
+ * opts out of the reset storage-clear because the service host shares the
90
+ * `persist:simulator` session with live projects (see ServiceHostSpec docs).
91
+ */
92
+ export function serviceHostSpec() {
93
+ return {
94
+ partition: SERVICE_HOST_PARTITION,
95
+ preloadPath: serviceHostPreloadPath,
96
+ size: { width: 980, height: 720 },
97
+ contextIsolation: false,
98
+ sandbox: false,
99
+ nodeIntegration: false,
100
+ clearStorageOnReset: false,
101
+ };
102
+ }
103
+ /**
104
+ * Construct + navigate a fresh service-host window (the non-pool path).
105
+ * Behavior-identical to the pre-refactor implementation.
106
+ */
107
+ export function createServiceHostWindow(opts) {
108
+ const win = constructServiceHostWindow({ appId: opts.appId });
109
+ void navigateServiceHost(win, buildServiceHostSpawnUrl(opts));
110
+ return win;
111
+ }
112
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1,368 @@
1
+ //#region src/core/utils.js
2
+ function e(e) {
3
+ return typeof e == "function";
4
+ }
5
+ function t(e) {
6
+ return typeof e == "string";
7
+ }
8
+ function n(e) {
9
+ return e == null;
10
+ }
11
+ function r(e, t) {
12
+ if (e === t) return !0;
13
+ if (typeof e != "object" || typeof t != "object" || e == null || t == null) return !1;
14
+ let n = Object.keys(e), i = Object.keys(t);
15
+ return n.length === i.length ? n.every((n) => r(e[n], t[n])) : !1;
16
+ }
17
+ function i(e, t) {
18
+ return Object.prototype.hasOwnProperty.call(e, t);
19
+ }
20
+ function a(e) {
21
+ return e === "__proto__";
22
+ }
23
+ function o(e) {
24
+ switch (typeof e) {
25
+ case "number":
26
+ case "symbol": return !1;
27
+ case "string": return e.includes(".") || e.includes("[") || e.includes("]");
28
+ }
29
+ }
30
+ function s(e, t = 2 ** 53 - 1) {
31
+ switch (typeof e) {
32
+ case "number": return Number.isInteger(e) && e >= 0 && e < t;
33
+ case "symbol": return !1;
34
+ case "string": return /^(?:0|[1-9]\d*)$/.test(e);
35
+ }
36
+ }
37
+ function c(e) {
38
+ return e !== null && (typeof e == "object" || typeof e == "function");
39
+ }
40
+ function l(e) {
41
+ return typeof e == "symbol" || Object.prototype.toString.call(e) === "[object Symbol]";
42
+ }
43
+ function u(e, t) {
44
+ return e === t || Number.isNaN(e) && Number.isNaN(t);
45
+ }
46
+ function d(e) {
47
+ return typeof e == "string" || typeof e == "symbol" ? e : Object.is(e?.valueOf?.(), -0) ? "-0" : String(e);
48
+ }
49
+ function f(e) {
50
+ if (Array.isArray(e)) return e.map(d);
51
+ if (typeof e == "symbol") return [e];
52
+ e = p(e);
53
+ let t = [], n = e.length;
54
+ if (n === 0) return t;
55
+ let r = 0, i = "", a = "", o = !1;
56
+ for (e.charCodeAt(0) === 46 && (t.push(""), r++); r < n;) {
57
+ let s = e[r];
58
+ a ? s === "\\" && r + 1 < n ? (r++, i += e[r]) : s === a ? a = "" : i += s : o ? s === "\"" || s === "'" ? a = s : s === "]" ? (o = !1, t.push(i), i = "") : i += s : s === "[" ? (o = !0, i &&= (t.push(i), "")) : s === "." ? i &&= (t.push(i), "") : i += s, r++;
59
+ }
60
+ return i && t.push(i), t;
61
+ }
62
+ function p(e) {
63
+ if (e == null) return "";
64
+ if (typeof e == "string") return e;
65
+ if (Array.isArray(e)) return e.map(p).join(",");
66
+ let t = String(e);
67
+ return t === "0" && Object.is(Number(e), -0) ? "-0" : t;
68
+ }
69
+ function m(e, t) {
70
+ return Array.isArray(e) ? !1 : typeof e == "number" || typeof e == "boolean" || e == null || l(e) ? !0 : typeof e == "string" && (/^\w*$/.test(e) || !/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/.test(e)) || t != null && i(t, e);
71
+ }
72
+ function h(e, t, n) {
73
+ if (t.length === 0) return n;
74
+ let r = e;
75
+ for (let e = 0; e < t.length; e++) {
76
+ if (r == null || a(t[e])) return n;
77
+ r = r[t[e]];
78
+ }
79
+ return r === void 0 ? n : r;
80
+ }
81
+ function g(e, t) {
82
+ if (e != null) switch (typeof t) {
83
+ case "string": {
84
+ if (a(t)) return;
85
+ let n = e[t];
86
+ return n === void 0 ? o(t) ? g(e, f(t)) : void 0 : n;
87
+ }
88
+ case "number":
89
+ case "symbol": {
90
+ typeof t == "number" && (t = d(t));
91
+ let n = e[t];
92
+ return n === void 0 ? void 0 : n;
93
+ }
94
+ default: {
95
+ if (Array.isArray(t)) return h(e, t);
96
+ if (t = Object.is(t?.valueOf(), -0) ? "-0" : String(t), a(t)) return;
97
+ let n = e[t];
98
+ return n === void 0 ? void 0 : n;
99
+ }
100
+ }
101
+ }
102
+ function _(e, t, n) {
103
+ v(e, t, () => n, () => void 0);
104
+ }
105
+ function v(e, t, n, r) {
106
+ if (e == null && !c(e)) return e;
107
+ let i;
108
+ i = m(t, e) ? [t] : Array.isArray(t) ? t : f(t);
109
+ let o = n(g(e, i)), l = e;
110
+ for (let t = 0; t < i.length && l != null; t++) {
111
+ let n = d(i[t]);
112
+ if (a(n)) continue;
113
+ let u;
114
+ if (t === i.length - 1) u = o;
115
+ else {
116
+ let a = l[n], o = r?.(a, n, e);
117
+ u = o === void 0 ? c(a) ? a : s(i[t + 1]) ? [] : {} : o;
118
+ }
119
+ y(l, n, u), l = l[n];
120
+ }
121
+ return e;
122
+ }
123
+ function y(e, t, n) {
124
+ let r = e[t];
125
+ (!(i(e, t) && u(r, n)) || n === void 0 && !(t in e)) && (e[t] = n);
126
+ }
127
+ function b() {
128
+ return Math.random().toString(36).slice(2, 7);
129
+ }
130
+ function x(e) {
131
+ return new Promise((t) => {
132
+ setTimeout(() => {
133
+ t();
134
+ }, e);
135
+ });
136
+ }
137
+ function S(e) {
138
+ return e.toLowerCase().replace(/-(.)/g, (e, t) => t.toUpperCase());
139
+ }
140
+ function C(e) {
141
+ return e.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
142
+ }
143
+ function w(e, t) {
144
+ if (!e) return;
145
+ let n = {};
146
+ for (let r in e) {
147
+ if (!r.startsWith("data-")) continue;
148
+ let i = S(r.replace(/^data-/, ""));
149
+ n[i] = t(e[r]);
150
+ }
151
+ return n;
152
+ }
153
+ var T = typeof window < "u" && typeof navigator < "u", E = T && /Android/i.test(navigator.userAgent), D = T && /iPad|iPhone|iPod/.test(navigator.userAgent), O = T && /OpenHarmony|harmony/.test(navigator.userAgent), k = T && !/Android|iPad|iPhone|iPod|OpenHarmony|harmony|Mobile/.test(navigator.userAgent), A = typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
154
+ function j(e, t) {
155
+ if (t.startsWith("/")) return t.slice(1);
156
+ let n = e.split("/"), r = t.split("/");
157
+ for (let e of r) {
158
+ let t = e;
159
+ t === ".." ? n.length > 0 && n.pop() : t !== "." && t !== "" && n.push(t);
160
+ }
161
+ return n.join("/");
162
+ }
163
+ function M(e, t) {
164
+ let n = e.split("/").slice(0, -1).join("/"), r = t.split("?"), i = r[0], a = r[1], o = j(n, i);
165
+ return a && (o += `?${a}`), o;
166
+ }
167
+ var N = /([+-]?\d+(?:\.\d+)?)rpx/g;
168
+ function P(e) {
169
+ return t(e) ? e.replace(N, (e, t) => `${Number(t)}rem`) : e;
170
+ }
171
+ function F(e) {
172
+ return typeof e == "number" && Number.isFinite(e) && !Number.isNaN(e) ? `${e}px` : e;
173
+ }
174
+ function I(e) {
175
+ return `${e}deg`;
176
+ }
177
+ var L = {
178
+ matrix(e) {
179
+ return `matrix(${e.join(", ")})`;
180
+ },
181
+ matrix3d(e) {
182
+ return `matrix3d(${e.join(", ")})`;
183
+ },
184
+ rotate(e) {
185
+ let [t] = e.map(I);
186
+ return `rotate(${t})`;
187
+ },
188
+ rotate3d(e) {
189
+ return e[3] = I(e[3]), `rotate3d(${e.join(", ")})`;
190
+ },
191
+ rotateX(e) {
192
+ let [t] = e.map(I);
193
+ return `rotateX(${t})`;
194
+ },
195
+ rotateY(e) {
196
+ let [t] = e.map(I);
197
+ return `rotateY(${t})`;
198
+ },
199
+ rotateZ(e) {
200
+ let [t] = e.map(I);
201
+ return `rotateZ(${t})`;
202
+ },
203
+ scale(e) {
204
+ return `scale(${e.join(", ")})`;
205
+ },
206
+ scale3d(e) {
207
+ return `scale3d(${e.join(", ")})`;
208
+ },
209
+ scaleX(e) {
210
+ return `scaleX(${e[0]})`;
211
+ },
212
+ scaleY(e) {
213
+ return `scaleY(${e[0]})`;
214
+ },
215
+ scaleZ(e) {
216
+ return `scaleZ(${e[0]})`;
217
+ },
218
+ skew(e) {
219
+ return `skew(${e.map(I).join(", ")})`;
220
+ },
221
+ skewX(e) {
222
+ let [t] = e.map(I);
223
+ return `skewX(${t})`;
224
+ },
225
+ skewY(e) {
226
+ let [t] = e.map(I);
227
+ return `skewY(${t})`;
228
+ },
229
+ translate(e) {
230
+ return `translate(${e.map(F).join(", ")})`;
231
+ },
232
+ translate3d(e) {
233
+ return `translate3d(${e.map(F).join(", ")})`;
234
+ },
235
+ translateX(e) {
236
+ let [t] = e.map(F);
237
+ return `translateX(${t})`;
238
+ },
239
+ translateY(e) {
240
+ let [t] = e.map(F);
241
+ return `translateY(${t})`;
242
+ },
243
+ translateZ(e) {
244
+ let [t] = e.map(F);
245
+ return `translateZ(${t})`;
246
+ }
247
+ };
248
+ function R(t) {
249
+ let { animates: n, option: r } = t, i = r.transformOrigin, a = r.transition;
250
+ if (i === void 0 || a === void 0) return {
251
+ transformOrigin: "",
252
+ transform: "",
253
+ transition: ""
254
+ };
255
+ let o = [], s = {};
256
+ for (let t = 0; t < n.length; t++) {
257
+ let r = n[t];
258
+ if (r.type === "style") {
259
+ let [e, t] = r.args;
260
+ s[e] = t;
261
+ } else {
262
+ let { type: t, args: n } = r;
263
+ e(L[t]) ? o.push(L[t](n)) : console.warn(`[Common] SDK inner warning (Transform Handler not found animation type: ${t})`);
264
+ }
265
+ }
266
+ return {
267
+ keyframes: [{
268
+ transform: o.join(" "),
269
+ transformOrigin: i,
270
+ ...s
271
+ }],
272
+ options: {
273
+ duration: a.duration,
274
+ easing: a.timingFunction,
275
+ delay: a.delay,
276
+ fill: "forwards"
277
+ }
278
+ };
279
+ }
280
+ function z(e) {
281
+ if (typeof e != "object" || !e) return e;
282
+ let t = /* @__PURE__ */ new WeakMap();
283
+ function n(e) {
284
+ if (typeof e != "object" || !e) return e;
285
+ if (e instanceof Date) return new Date(e);
286
+ if (e instanceof RegExp) return new RegExp(e.source, e.flags);
287
+ if (Array.isArray(e)) {
288
+ if (t.has(e)) return t.get(e);
289
+ let r = [];
290
+ return t.set(e, r), r.push(...e.map(n)), r;
291
+ }
292
+ if (t.has(e)) return t.get(e);
293
+ let r = Object.create(Object.getPrototypeOf(e));
294
+ return t.set(e, r), Object.assign(r, ...Object.keys(e).map((t) => ({ [t]: n(e[t]) })));
295
+ }
296
+ return n(e);
297
+ }
298
+ //#endregion
299
+ //#region src/core/amd.js
300
+ var B = {}, V = 1, H = 2;
301
+ function U(e, t) {
302
+ B[e] || (B[e] = {
303
+ factory: t,
304
+ status: V,
305
+ exports: void 0
306
+ });
307
+ }
308
+ function W(t, n, r) {
309
+ if (typeof t != "string") throw TypeError("require args must be a string");
310
+ let i = B[t];
311
+ if (!i) throw Error(`module ${t} not found`);
312
+ if (i.status === V) {
313
+ i.status = H;
314
+ let n = { exports: {} }, a;
315
+ try {
316
+ i.factory && (a = i.factory.call(null, W, n, n.exports));
317
+ } catch (n) {
318
+ i.status = V;
319
+ let a = `
320
+ name: ${n.name}
321
+ msg: ${n.message}
322
+ stack:
323
+ ${n.stack}
324
+ `;
325
+ console.error(`require ${t} error: ${a}`), e(r) && r({
326
+ mod: t,
327
+ errMsg: n.message
328
+ });
329
+ }
330
+ i.exports = n.exports === void 0 ? a : n.exports;
331
+ }
332
+ return e(n) && n(i.exports), i.exports;
333
+ }
334
+ W.async = async (e) => new Promise((t, n) => {
335
+ try {
336
+ t(W(e));
337
+ } catch (t) {
338
+ n(/* @__PURE__ */ Error(`${t.message}: Failed to initialize asynchronous loading for module '${e}'`));
339
+ }
340
+ });
341
+ var G = new class {
342
+ constructor() {
343
+ this.callbacks = {};
344
+ }
345
+ store(e, t, n = b()) {
346
+ if (t) {
347
+ for (let [t, n] of Object.entries(this.callbacks)) if (n.callback === e) return t;
348
+ }
349
+ return this.callbacks[n] = {
350
+ callback: e,
351
+ keep: t
352
+ }, n;
353
+ }
354
+ invoke(t, n) {
355
+ if (t === void 0) return;
356
+ let r = this.callbacks[t];
357
+ r && e(r.callback) && (r.callback(n), r.keep || delete this.callbacks[t]);
358
+ }
359
+ remove(e) {
360
+ e ? Object.keys(this.callbacks).forEach((t) => {
361
+ e === t && delete this.callbacks[t];
362
+ }) : Object.entries(this.callbacks).forEach(([e, t]) => {
363
+ t.keep && delete this.callbacks[e];
364
+ });
365
+ }
366
+ }();
367
+ //#endregion
368
+ export { R as animationToStyle, G as callback, C as camelCaseToUnderscore, z as cloneDeep, r as deepEqual, g as get, w as getDataAttributes, E as isAndroid, k as isDesktop, e as isFunction, O as isHarmonyOS, D as isIOS, n as isNil, t as isString, A as isWebWorker, U as modDefine, W as modRequire, M as parsePath, _ as set, x as sleep, F as suffixPixel, S as toCamelCase, P as transformRpx, b as uuid };
@@ -0,0 +1 @@
1
+ :root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-size:clamp(.4px,.13333vw,2px)}*{-webkit-tap-highlight-color:transparent;vertical-align:baseline;scrollbar-width:none;outline:none;margin:0;padding:0}::-webkit-scrollbar{width:0;height:0;display:none}img{vertical-align:top;border:none}em,i{font-style:normal}ol,ul{list-style:none}button,h1,h2,h3,h4,h5,h6,input,select{font-family:inherit;font-size:100%}table{border-collapse:collapse;border-spacing:0}a,a:visited{text-decoration:none}body{-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;font-family:HarmonyOSHans-Light,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:normal;overflow:hidden auto}.dd-page{box-sizing:border-box}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url(data:application/octet-stream;base64,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)format("truetype")}.dd-button{box-sizing:border-box;text-align:center;-webkit-tap-highlight-color:transparent;color:#000;background-color:#f8f8f8;border-radius:5px;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;font-size:18px;line-height:2.55556;text-decoration:none;display:block;position:relative;overflow:hidden}.dd-button[hidden]{display:none}.dd-button:after{content:" ";transform-origin:0 0;box-sizing:border-box;border:1px solid #0003;border-radius:10px;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.dd-button[native]{padding-left:0;padding-right:0}.dd-button[native] .dd-button-cover-view-wrapper{border:inherit;border-color:inherit;border-radius:inherit;background-color:inherit}.dd-button[native] .dd-button-cover-view-inner{padding-left:14px;padding-right:14px}.dd-button .dd-cover-view{line-height:inherit;white-space:inherit}.dd-button[type=default]{color:#000;background-color:#f8f8f8}.dd-button[type=primary]{color:#fff;background-color:#1aad19}.dd-button[type=warn]{color:#fff;background-color:#e64340}.dd-button[disabled]{color:#fff9}.dd-button[disabled][type=default],.dd-button[disabled]:not([type]){color:#0000004d;background-color:#f7f7f7}.dd-button[disabled][type=primary]{background-color:#9ed99d}.dd-button[disabled][type=warn]{background-color:#ec8b89}.dd-button[type=primary][plain]{color:#1aad19;background-color:#0000;border:1px solid #1aad19}.dd-button[type=primary][plain][disabled]{color:#0003;border-color:#0003}.dd-button[type=primary][plain]:after{border-width:0}.dd-button[type=default][plain]{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button[type=default][plain][disabled]{color:#0003;border-color:#0003}.dd-button[type=default][plain]:after{border-width:0}.dd-button[plain]{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button[plain][disabled]{color:#0003;border-color:#0003}.dd-button[plain]:after{border-width:0}.dd-button[plain][native] .dd-button-cover-view-inner{padding:0}.dd-button[type=warn][plain]{color:#e64340;background-color:#0000;border:1px solid #e64340}.dd-button[type=warn][plain][disabled]{color:#0003;border-color:#0003}.dd-button[type=warn][plain]:after{border-width:0}.dd-button[size=mini]{padding:0 1.34em;font-size:13px;line-height:2.3;display:inline-block}.dd-button[size=mini][native]{padding:0}.dd-button[size=mini][native] .dd-button-cover-view-inner{padding:0 1.34em}.dd-button[loading]:before{content:" ";vertical-align:middle;background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) 0 0/100% no-repeat;width:18px;height:18px;animation:1s steps(12,end) infinite dd-button-loading-animate;display:inline-block}.dd-button[loading][type=primary]{color:#fff9;background-color:#179b16}.dd-button[loading][type=primary][plain]{color:#1aad19;background-color:#0000}.dd-button[loading][type=default]{color:#0009;background-color:#dedede}.dd-button[loading][type=default][plain]{color:#353535;background-color:#0000}.dd-button[loading][type=warn]{color:#fff9;background-color:#ce3c39}.dd-button[loading][type=warn][plain]{color:#e64340;background-color:#0000}.dd-button[loading][native]:before{content:none}@keyframes dd-button-loading-animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-hover{color:#0009;background-color:#dedede}.button-hover[plain]{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover[type=primary]{color:#fff9;background-color:#179b16}.button-hover[type=primary][plain]{color:#1aad1999;background-color:#0000;border-color:#1aad1999}.button-hover[type=default]{color:#0009;background-color:#dedede}.button-hover[type=default][plain]{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover[type=warn]{color:#fff9;background-color:#ce3c39}.button-hover[type=warn][plain]{color:#e6434099;background-color:#0000;border-color:#e6434099}.dd-camera{width:inherit;height:inherit}.dd-camera[hidden]{display:none}.dd-camera .dd-camera-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-camera-desktop{color:#fff;background-color:gray;align-items:center;display:flex}.dd-checkbox{display:inline-block}.dd-checkbox[hidden]{display:none}.dd-checkbox-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-checkbox-input{appearance:none;text-indent:0;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-checkbox-input-checked{color:#09bb07}.dd-checkbox-input-checked:before{content:"";font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-group{display:block}.dd-checkbox-group[hidden]{display:none}.dd-image{width:inherit;height:inherit;display:inline-block;overflow:hidden}.dd-image img{width:inherit;height:inherit;pointer-events:none}.dd-image img[src=""],.dd-image img:not([src]){opacity:0}.dd-image[hidden]{display:none}.dd-image-scale{object-fit:fill;width:100%;height:100%}.dd-image-aspect{object-fit:contain;width:100%;height:100%}.dd-image-fill{object-fit:cover;width:100%;height:100%}.dd-image-width{width:100%;height:auto}.dd-image-height{width:auto;height:100%}.dd-image-top{object-fit:none;object-position:top;width:100%;height:100%}.dd-image-bottom{object-fit:none;object-position:bottom;width:100%;height:100%}.dd-image-center{object-fit:none;object-position:center;width:100%;height:100%}.dd-image-left{object-fit:none;object-position:left;width:100%;height:100%}.dd-image-right{object-fit:none;object-position:right;width:100%;height:100%}.dd-image-top-left{object-fit:none;object-position:top left;width:100%;height:100%}.dd-image-top-right{object-fit:none;object-position:top right;width:100%;height:100%}.dd-image-bottom-left{object-fit:none;object-position:bottom left;width:100%;height:100%}.dd-image-bottom-right{object-fit:none;object-position:bottom right;width:100%;height:100%}.dd-view{display:block}.dd-view[hidden]{display:none}.dd-icon{font:14px/1 weui;font-size:var(--ca781606);color:var(--v86488c32) .dd-icon [hidden];color-display:none;display:inline-block}[class^=dd-icon-]:before,[class*=dd-icon-]:before{margin:0}.dd-icon-success{color:#09bb07}.dd-icon-success:before{content:""}.dd-icon-info{color:#10aeff}.dd-icon-info:before{content:""}.dd-icon-warn{color:#f76260}.dd-icon-warn:before{content:""}.dd-icon-waiting{color:#10aeff}.dd-icon-waiting:before{content:""}.dd-icon-safe_success{color:#09bb07}.dd-icon-safe_success:before{content:""}.dd-icon-safe_warn{color:#ffbe00}.dd-icon-safe_warn:before{content:""}.dd-icon-success_circle{color:#09bb07}.dd-icon-success_circle:before{content:""}.dd-icon-success_no_circle{color:#09bb07}.dd-icon-success_no_circle:before{content:""}.dd-icon-waiting_circle{color:#10aeff}.dd-icon-waiting_circle:before{content:""}.dd-icon-circle{color:#c9c9c9}.dd-icon-circle:before{content:""}.dd-icon-download{color:#09bb07}.dd-icon-download:before{content:""}.dd-icon-info_circle{color:#09bb07}.dd-icon-info_circle:before{content:""}.dd-icon-cancel{color:#f43530}.dd-icon-cancel:before{content:""}.dd-icon-search{color:#b2b2b2}.dd-icon-search:before{content:""}.dd-icon-clear{color:#b2b2b2}.dd-icon-clear:before{content:""}[class^=dd-icon-]:before,[class*=dd-icon-]:before{box-sizing:border-box}.dd-input-wrapper{width:100%;height:100%;position:relative}.dd-input{appearance:none;width:100%;font-family:inherit;font-size:inherit;color:inherit;height:inherit;text-align:inherit;overflow:inherit;white-space:inherit;text-overflow:inherit;background-color:#0000;border:none;outline:0;margin:0;padding:0;display:block}.dd-input::-webkit-outer-spin-button{appearance:none;margin:0}.dd-input::-webkit-inner-spin-button{appearance:none;margin:0}.dd-input-placeholder{pointer-events:none;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0}.dd-input-placeholder.input-placeholder{color:#0000004d}.dd-input-disabled{opacity:.5}.dd-map{width:inherit;height:inherit}.dd-map[hidden]{display:none}.dd-map .dd-map-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-map-desktop{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-movable-area{width:10px;height:10px;display:block;position:relative}.dd-movable-area[hidden]{display:none}.dd-movable-view{visibility:hidden;cursor:grab;width:10px;height:10px;display:inline-block;position:absolute;top:0;left:0}.dd-movable-view.direction-horizontal{touch-action:pan-y}.dd-movable-view.direction-vertical{touch-action:pan-x}.dd-movable-view.direction-all{touch-action:none}.dd-movable-view.direction-none{touch-action:auto}.dd-movable-view .dd-movable-view-content{all:inherit;visibility:visible;-webkit-overflow-scrolling:touch;transition-property:transform;transition-duration:var(--duration);transform-origin:50%;will-change:transform;backface-visibility:hidden;transition-timing-function:ease-out;top:0;left:0}.dd-movable-view[hidden]{display:none}.dd-navigator{width:auto;height:auto;display:block}.dd-navigator.navigator-hover{opacity:.7;background-color:#0000001a}.dd-navigator[hidden]{display:none}.dd-picker-column[data-v-61501610]{flex:1;height:220px;position:relative;overflow:hidden}.dd-picker-column .dd-picker-column-mask[data-v-61501610]{pointer-events:none;z-index:2;background:linear-gradient(#ffffffe6 0%,#fff6 40%,#fff0 50%,#fff6 60%,#ffffffe6 100%);position:absolute;inset:0}.dd-picker-column .dd-picker-column-indicator[data-v-61501610]{pointer-events:none;z-index:1;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;height:44px;margin-top:-22px;position:absolute;top:50%;left:0;right:0}.dd-picker-column .dd-picker-column-content[data-v-61501610]{cursor:grab;padding-top:88px;padding-bottom:88px;position:relative}.dd-picker-column .dd-picker-column-content[data-v-61501610]:active{cursor:grabbing}.dd-picker-column .dd-picker-column-item[data-v-61501610]{text-align:center;color:#333;height:44px;font-size:16px;line-height:44px;transition:color .3s}.dd-picker-column .dd-picker-column-item.dd-picker-column-item-selected[data-v-61501610]{color:#000;font-weight:500}.dd-picker{cursor:pointer;display:block}.dd-picker[hidden]{display:none}.dd-picker-overlay{z-index:1000;background-color:#0009;align-items:flex-end;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.dd-picker-container{background-color:#fff;border-radius:12px 12px 0 0;width:100%;max-height:80vh;animation:.3s slideUp}.dd-picker-header{background-color:#fafafa;border-bottom:1px solid #e5e5e5;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dd-picker-action{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:16px;transition:background-color .2s}.dd-picker-action:hover{background-color:#0000000d}.dd-picker-cancel{color:#999}.dd-picker-confirm{color:#09bb07;font-weight:500}.dd-picker-title{color:#333;font-size:16px;font-weight:500}.dd-picker-body{background-color:#fff;padding:20px 0}.dd-picker-columns{align-items:center;gap:0;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dd-picker-view{display:flex;position:relative;overflow:hidden}.dd-picker-view[hidden]{display:none}.dd-picker-view-column{z-index:0;flex:1;height:100%;position:relative;overflow:hidden}.dd-picker-view-column .dd-picker__mask{transform:translateZ(0)}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__mask{background-color:#0000;background-image:linear-gradient(#fffffff2,#fff9),linear-gradient(#fff9,#fffffff2);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 102px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;height:100%;margin:0 auto;top:0}.dd-picker-view-column .dd-picker__indicator{top:102px}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;pointer-events:none;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__content{width:100%;transition:transform var(--duration) ease-out 0s;cursor:grab;position:absolute;top:0;left:0}.dd-picker-view-column .dd-picker__indicator:before{transform-origin:0 0;border-top:1px solid #e5e5e5;top:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after{transform-origin:0 100%;border-bottom:1px solid #e5e5e5;bottom:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after,.dd-picker-view-column .dd-picker__indicator:before{content:" ";color:#e5e5e5;height:1px;position:absolute;left:0;right:0}.dd-progress{align-items:center;display:flex}.dd-progress[hidden]{display:none}.dd-progress .dd-progress-bar{flex:1;overflow:hidden}.dd-progress .dd-progress-inner-bar{--percent:0;--duration:0s;width:var(--percent);height:100%;transition-duration:var(--duration);transition-property:width}.dd-progress .dd-progress-info{min-width:2em;margin-top:0;margin-bottom:0;margin-left:15px;font-size:16px}.dd-radio{display:inline-block}.dd-radio[hidden]{display:none}.dd-radio-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-radio-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:50%;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-radio-input-checked{background-color:#09bb07;border-color:#09bb07}.dd-radio-input-checked:before{content:"";color:#fff;font:18px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-radio-input-disabled{background-color:#e1e1e1;border-color:#d1d1d1}.dd-radio-input-disabled:before{color:#adadad}.dd-radio-group{display:block}.dd-radio-group[hidden]{display:none}.dd-rich-text{-webkit-user-select:text;user-select:text}.dd-rich-text[hidden]{display:none}.dd-root-portal{z-index:1000;width:100%;height:100%;position:fixed;top:0;left:0}.dd-root-portal-disabled{display:block}.dd-scroll-view{width:100%;height:inherit;-webkit-overflow-scrolling:touch;max-height:inherit;position:relative;overflow:auto}.dd-scroll-view[hidden]{display:none}.dd-scroll-view.scroll-x{overflow:auto hidden!important}.dd-scroll-view.scroll-y{overflow:hidden auto!important}.dd-scroll-view.scroll-x.scroll-y{overflow:auto}.dd-scroll-view.hide-scrollbar{scroll-behavior:smooth;position:relative}.dd-scroll-view.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.dd-slider{margin:10px 18px;padding:0;display:block}.dd-slider[hidden]{display:block}.dd-slider-wrapper{align-items:center;min-height:16px;display:flex}.dd-slider-tap-area{flex:1;padding:8px 0}.dd-slider-handle-wrapper{z-index:0;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:#e9e9e9;border-radius:5px;height:2px;transition:background-color .3s;position:relative}.dd-slider-track{background-color:#1aad19;border-radius:6px;height:100%;transition:background-color .3s}.dd-slider-handle,.dd-slider-thumb{cursor:grab;border-radius:50%;transition:border-color .3s;position:absolute;top:50%;left:0%}.dd-slider-handle{z-index:3;background-color:#0000;width:28px;height:28px;margin-top:-14px;margin-left:-14px}.dd-slider-thumb{z-index:2;background-color:#fff;width:28px;height:28px;margin-top:-14px;margin-left:-14px;box-shadow:0 0 4px #0003}.dd-slider-step{z-index:1;background:0 0;width:100%;height:2px;position:absolute}.dd-slider-value{color:#888;text-align:center;margin-left:1em;font-size:14px}.dd-slider-disabled .dd-slider-track{background-color:#ccc}.dd-slider-disabled .dd-slider-thumb{background-color:#fff;border-color:#ccc}.dd-swiper{height:150px;display:block}.dd-swiper[hidden]{display:none}.dd-swiper .dd-swiper-wrapper{cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}.dd-swiper .dd-swiper-slides{position:absolute;inset:0}.dd-swiper .dd-swiper-slide-frame{will-change:transform;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.dd-swiper .dd-swiper-dots{font-size:0;position:absolute}.dd-swiper .dd-swiper-dots-horizontal{text-align:center;white-space:nowrap;bottom:10px;left:50%;transform:translate(-50%)}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot{margin-right:8px}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot:last-child{margin-right:0}.dd-swiper .dd-swiper-dots-vertical{text-align:right;top:50%;right:10px;transform:translateY(-50%)}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot{margin-bottom:9px;display:block}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot:last-child{margin-bottom:0}.dd-swiper .dd-swiper-dot{background:#0000004d;border-radius:50%;width:8px;height:8px;transition-property:background-color;transition-timing-function:ease;display:inline-block}.dd-swiper .dd-swiper-dot-active{background-color:#000}.dd-swiper-item{will-change:transform;flex:0 0 100%;width:100%;display:block}.dd-swiper-item[hidden]{display:none}.dd-switch-input{appearance:none;box-sizing:border-box;background-color:#dfdfdf;border:1px solid #dfdfdf;border-radius:16px;outline:0;width:52px;height:32px;margin-right:5px;transition:background-color .1s,border .1s;display:inline-block;position:relative}.dd-switch-input:before{content:" ";background-color:#fdfdfd;border-radius:15px;width:50px;height:30px;transition:transform .3s;position:absolute;top:0;left:0}.dd-switch-input:after{content:" ";background-color:#fff;border-radius:15px;width:30px;height:30px;transition:transform .3s;position:absolute;top:0;left:0;box-shadow:0 1px 3px #0006}.dd-switch-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-switch-input-checked:before{transform:scale(0)}.dd-switch-input-checked:after{transform:translate(20px)}.dd-checkbox-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;display:inline-block;position:relative}.dd-checkbox-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-checkbox-input-checked .dd-checkbox-input-inner:before{content:"";color:inherit;font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-input-disabled{background-color:#e1e1e1}.dd-checkbox-input-disabled:before{color:#adadad}.dd-text{-webkit-user-select:none;user-select:none;display:inline}.dd-text[hidden]{display:none}.dd-text-selectable{cursor:auto;-webkit-user-select:text;user-select:text;display:inline-block}.dd-textarea-wrapper{width:100%;height:100%;position:relative}.dd-textarea{resize:none;width:100%;height:100%;font-family:inherit;line-height:1.2;font-size:inherit;color:inherit;background-color:#0000;border:none;outline:none;padding:0;display:block;position:relative}.dd-textarea::-webkit-scrollbar{display:none}.dd-textarea[hidden]{display:none}.dd-textarea-placeholder{padding:inherit;pointer-events:none;position:absolute;top:0;left:0}.dd-textarea-placeholder.textarea-placeholder{color:#0000004d}.dd-textarea-disabled{opacity:.5}.dd-video{z-index:0;width:300px;height:225px;line-height:0;display:inline-block;position:relative;overflow:hidden}.dd-video[hidden]{display:none}.dd-video .dd-video-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-video[data-dimina-native-type=native\/video]{opacity:0;background:0 0!important}.dd-video-placeholder{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-web-view{width:100vw;height:100vh}.dd-web-view-pc{border:0;width:100%;height:100%;position:absolute;top:0;left:0}