@ttmg/cli 0.3.8 → 0.3.9-beta.2

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 (114) hide show
  1. package/dist/index.js +2155 -1293
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +7 -2
  4. package/dist/public/assets/Card-CTv745_w.js +1 -0
  5. package/dist/public/assets/Detail-DgPwDVds.js +1 -0
  6. package/dist/public/assets/Detail-DgPwDVds.js.br +0 -0
  7. package/dist/public/assets/MonetizationMode-CqG7VmZX.js +1 -0
  8. package/dist/public/assets/MonetizationModeSummary-BSmi2Vjs.js +1 -0
  9. package/dist/public/assets/SectionHeader-BFCjOsAZ.js +1 -0
  10. package/dist/public/assets/Tag-Cwc1Bal2.js +1 -0
  11. package/dist/public/assets/arrow-left-DrT44p81.js +1 -0
  12. package/dist/public/assets/baseForm-DY0XNYDE.js +10 -0
  13. package/dist/public/assets/baseForm-DY0XNYDE.js.br +0 -0
  14. package/dist/public/assets/baseForm-Dl4zA6hU.css +1 -0
  15. package/dist/public/assets/baseForm-Dl4zA6hU.css.br +0 -0
  16. package/dist/public/assets/chevron-right-DzleLIdl.js +1 -0
  17. package/dist/public/assets/compass-BW4vGO0x.js +1 -0
  18. package/dist/public/assets/index-4NS2mMuQ.css +1 -0
  19. package/dist/public/assets/index-B-AeuNlL.css +1 -0
  20. package/dist/public/assets/index-B-AeuNlL.css.br +0 -0
  21. package/dist/public/assets/index-B3e59WZW.js +1 -0
  22. package/dist/public/assets/{index-tOg_vZEc.js → index-B6NHbQwP.js} +1 -1
  23. package/dist/public/assets/index-B6RZ7AdI.js +1 -0
  24. package/dist/public/assets/index-B6RZ7AdI.js.br +0 -0
  25. package/dist/public/assets/index-BAud2cRu.css +1 -0
  26. package/dist/public/assets/index-BBuCNszs.js +1 -0
  27. package/dist/public/assets/index-BJ1WI0xW.js +14 -0
  28. package/dist/public/assets/index-BJ1WI0xW.js.br +0 -0
  29. package/dist/public/assets/index-BOl1-Siv.css +1 -0
  30. package/dist/public/assets/index-BOl1-Siv.css.br +0 -0
  31. package/dist/public/assets/index-BQiwR45B.js +1 -0
  32. package/dist/public/assets/index-BR2iFF5J.js +1 -0
  33. package/dist/public/assets/index-BR2iFF5J.js.br +0 -0
  34. package/dist/public/assets/index-BbSY5AoV.js +1 -0
  35. package/dist/public/assets/index-BmP2LC8F.js +1 -0
  36. package/dist/public/assets/index-Bmw61rl1.css +1 -0
  37. package/dist/public/assets/index-Bmw61rl1.css.br +0 -0
  38. package/dist/public/assets/index-BqUsIqrD.js +1 -0
  39. package/dist/public/assets/index-BqUsIqrD.js.br +0 -0
  40. package/dist/public/assets/index-BrC0aWmM.js +1 -0
  41. package/dist/public/assets/index-BsEJ06u7.js +1 -0
  42. package/dist/public/assets/index-C-tTmNa4.css +1 -0
  43. package/dist/public/assets/index-C0slAX90.js +1 -0
  44. package/dist/public/assets/index-C0slAX90.js.br +0 -0
  45. package/dist/public/assets/index-CBlaFQAe.js +1 -0
  46. package/dist/public/assets/index-CBlaFQAe.js.br +0 -0
  47. package/dist/public/assets/index-CCIR5x04.js +1 -0
  48. package/dist/public/assets/index-CVrG-aCP.js +1 -0
  49. package/dist/public/assets/index-CYONSh3E.js +1 -0
  50. package/dist/public/assets/index-Cc1ilXmc.css +1 -0
  51. package/dist/public/assets/index-CmVUh50W.css +1 -0
  52. package/dist/public/assets/index-Crx61Qjc.css +1 -0
  53. package/dist/public/assets/index-D-GbEkoB.css +1 -0
  54. package/dist/public/assets/index-DYNaiQIB.js +1 -0
  55. package/dist/public/assets/index-Dvg_oNs7.css +1 -0
  56. package/dist/public/assets/{index-D2LsTDVa.css → index-ROKxx4f7.css} +1 -1
  57. package/dist/public/assets/index-ROKxx4f7.css.br +0 -0
  58. package/dist/public/assets/index-RYY-l6Oq.css +1 -0
  59. package/dist/public/assets/index-TElbHITb.js +1 -0
  60. package/dist/public/assets/index-Yv0czelv.js +1 -0
  61. package/dist/public/assets/index-ZYC8SS17.js +1 -0
  62. package/dist/public/assets/index-faRHENEQ.css +1 -0
  63. package/dist/public/assets/sparkles-KMi7bfJ3.js +1 -0
  64. package/dist/public/assets/zap-BlvSLoGD.js +1 -0
  65. package/dist/public/index.html +13 -3
  66. package/dist/scripts/dev-debug.js +191 -0
  67. package/package.json +7 -2
  68. package/CHANGELOG.md +0 -228
  69. package/dist/public/assets/Detail-DuoflIDB.js +0 -1
  70. package/dist/public/assets/Detail-DuoflIDB.js.br +0 -0
  71. package/dist/public/assets/MonetizationMode-C6-xgErM.js +0 -1
  72. package/dist/public/assets/MonetizationModeSummary-v1a9_YaN.js +0 -1
  73. package/dist/public/assets/baseForm-CB6KCNqW.css +0 -1
  74. package/dist/public/assets/baseForm-CB6KCNqW.css.br +0 -0
  75. package/dist/public/assets/baseForm-DqyLTNAx.js +0 -10
  76. package/dist/public/assets/baseForm-DqyLTNAx.js.br +0 -0
  77. package/dist/public/assets/index-88dZ53Te.css +0 -1
  78. package/dist/public/assets/index-88dZ53Te.css.br +0 -0
  79. package/dist/public/assets/index-Bf6aJOeV.css +0 -1
  80. package/dist/public/assets/index-Bf85t01Q.css +0 -1
  81. package/dist/public/assets/index-Bf85t01Q.css.br +0 -0
  82. package/dist/public/assets/index-BmcEpXdh.js +0 -1
  83. package/dist/public/assets/index-BmcEpXdh.js.br +0 -0
  84. package/dist/public/assets/index-BnU4EHWL.css +0 -1
  85. package/dist/public/assets/index-BnU4EHWL.css.br +0 -0
  86. package/dist/public/assets/index-Bpba_DWs.js +0 -1
  87. package/dist/public/assets/index-C06KDNuj.css +0 -1
  88. package/dist/public/assets/index-CH7igbHY.css +0 -1
  89. package/dist/public/assets/index-CLgcHgzd.css +0 -1
  90. package/dist/public/assets/index-CPJp_0l2.js +0 -1
  91. package/dist/public/assets/index-ClpFHzCy.js +0 -1
  92. package/dist/public/assets/index-Crf11eTs.js +0 -1
  93. package/dist/public/assets/index-Crf11eTs.js.br +0 -0
  94. package/dist/public/assets/index-CwihbwhD.js +0 -1
  95. package/dist/public/assets/index-D2LsTDVa.css.br +0 -0
  96. package/dist/public/assets/index-DJTcocTh.js +0 -1
  97. package/dist/public/assets/index-DNsJSSmy.css +0 -1
  98. package/dist/public/assets/index-DO22Abni.js +0 -1
  99. package/dist/public/assets/index-DPSts5Re.css +0 -1
  100. package/dist/public/assets/index-DPSts5Re.css.br +0 -0
  101. package/dist/public/assets/index-DWw-gYwj.js +0 -1
  102. package/dist/public/assets/index-DWw-gYwj.js.br +0 -0
  103. package/dist/public/assets/index-Dc800O6M.js +0 -1
  104. package/dist/public/assets/index-De7XyxJU.js +0 -1
  105. package/dist/public/assets/index-Pfoc2Cwl.js +0 -14
  106. package/dist/public/assets/index-Pfoc2Cwl.js.br +0 -0
  107. package/dist/public/assets/index-SOEihm3l.js +0 -1
  108. package/dist/public/assets/index-dSgab9d_.js +0 -1
  109. package/dist/public/assets/index-dSgab9d_.js.br +0 -0
  110. package/dist/public/assets/index-iUN2bzlN.js +0 -1
  111. package/dist/public/assets/index-yXoFuCJJ.js +0 -1
  112. package/dist/public/assets/index-yXoFuCJJ.js.br +0 -0
  113. package/dist/public/assets/times-BsA3kTAU.js +0 -1
  114. package/dist/public/assets/times-C7C5ulLg.css +0 -1
@@ -0,0 +1 @@
1
+ .change-log-container{width:100%;padding-bottom:24px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px}.change-log-loading{min-height:240px;display:flex;align-items:center;justify-content:center}.change-log-empty{color:var(--tt-text-dim);margin:0}.change-log-item{display:flex;flex-direction:column}.change-log-item-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.change-log-version{margin:0;font-size:var(--tt-text-h2);font-weight:600;color:var(--tt-text);letter-spacing:-.2px}.change-log-section+.change-log-section{margin-top:16px;padding-top:16px;border-top:1px solid var(--tt-border)}.change-log-section-title{display:inline-flex;align-items:center;gap:8px}.change-log-changes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.change-log-change{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:var(--tt-radius-md);background:var(--tt-bg-sunken);font-size:var(--tt-text-body);line-height:1.6;color:var(--tt-text)}.change-log-change-bullet{flex-shrink:0;margin-top:8px;width:5px;height:5px;border-radius:999px;background:var(--tt-text-faint)}.change-log-change-body{flex:1 1 auto;min-width:0}.change-log-change-link{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:0 6px;height:20px;border-radius:var(--tt-radius-sm);background:var(--tt-accent-soft);color:var(--tt-accent-text);text-decoration:none;font-size:var(--tt-text-caption);font-weight:600;vertical-align:middle;transition:var(--tt-hover-transition)}.change-log-change-link:hover{background:var(--tt-accent-strong);color:var(--tt-accent-text)}
@@ -0,0 +1 @@
1
+ import{u as a,d as l,D as c,j as s,s as t,c7 as i,i as o,T as n,b as d}from"./index-BJ1WI0xW.js";const g=()=>{const r=a(),{state:{user:e}}=l();return c(e)?s.jsx(t,{position:"bottom",content:s.jsx("div",{className:"login-user-popover",children:e?.email||e?.user_id}),children:s.jsx(i,{color:"amber",style:{flexShrink:0},alt:e?.email||e?.user_id||void 0,size:"small",children:(e?.email||e?.user_id||"?").trim()[0]?.toUpperCase()||"?"})}):s.jsx(t,{position:"bottom",trigger:"hover",content:s.jsxs("div",{className:"not-login-status-popover",children:[s.jsxs("div",{className:"not-login-status-popover-copy",children:[s.jsx(n.Text,{strong:!0,children:o("notLogin")}),s.jsx(n.Text,{children:o("notLoginTip")}),s.jsx("code",{className:"not-login-status-command",children:"ttmg login"})]}),s.jsx("div",{className:"not-login-status-popover-actions",children:s.jsx(d,{size:"small",theme:"light",onClick:()=>r("/basic_debug_guide"),children:o("basicDebugGuide.entryAction")})})]}),children:s.jsx(i,{color:"grey",style:{flexShrink:0},size:"small",children:o("notLogin")})})};export{g as LoginStatus};
@@ -0,0 +1 @@
1
+ import{u as t,r as a,j as e,b as c,i as o,K as r,O as i}from"./index-BJ1WI0xW.js";const d=()=>{const n=t();return a.useEffect(()=>{const s=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=s}},[]),e.jsxs("div",{className:"manual-connect-container",children:[e.jsx("div",{className:"manual-connect-back",children:e.jsx(c,{className:"devtool-page-back",theme:"borderless",onClick:()=>n("/network_diagnostics"),children:o("back")})}),e.jsx(r,{title:o("netDiagManualBindEntry"),children:e.jsx(i,{onClose:()=>n("/network_diagnostics"),onSuccess:()=>n("/network_diagnostics")})})]})};export{d as ManualConnect};
@@ -0,0 +1 @@
1
+ import{c as o,u as c,j as e,P as r,i as a}from"./index-BJ1WI0xW.js";import{S as t}from"./SectionHeader-BFCjOsAZ.js";import{C as d,m,L as l,M as h,a as p,o as x}from"./MonetizationModeSummary-BSmi2Vjs.js";import"./index-B6NHbQwP.js";import{C as v}from"./chevron-right-DzleLIdl.js";import{C as y}from"./compass-BW4vGO0x.js";import"./Card-CTv745_w.js";import"./Tag-Cwc1Bal2.js";const j=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],u=o("credit-card",j);const g=[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]],k=o("megaphone",g),N={iaa:k,iap:u,iaap:l},C=s=>a(s),I=()=>{const s=c();return e.jsxs("div",{className:"ia-page",children:[e.jsx(r,{title:a("ia.overview.title"),subtitle:a("ia.overview.desc")}),e.jsxs("section",{className:"ia-section ia-section-modes",children:[e.jsx(t,{icon:d,title:a("ia.monetization.title"),subtitle:a("ia.monetization.desc")}),e.jsx("div",{className:"ia-mode-grid",children:m.map(i=>{const n=N[i.key];return e.jsxs("button",{type:"button",className:`ia-mode-card ia-mode-card-${i.key}`,onClick:()=>s(`/integration_assistant/mode/${i.key}`),children:[e.jsxs("header",{className:"ia-mode-card-head",children:[e.jsx("span",{className:"ia-mode-card-badge","aria-hidden":"true",children:e.jsx(n,{size:17,strokeWidth:2})}),e.jsx("h4",{className:"ia-mode-card-title",children:C(i.titleKey)}),e.jsx("span",{className:"ia-mode-card-chevron","aria-hidden":"true",children:e.jsx(v,{size:14,strokeWidth:2})})]}),e.jsx(h,{mode:i,compact:!0})]},i.key)})})]}),e.jsxs("section",{className:"ia-section",children:[e.jsx(t,{icon:y,title:a("ia.overview.groups.title"),subtitle:a("ia.overview.groups.desc")}),e.jsx("div",{className:"ia-section-stack",children:e.jsx(p,{sections:x})})]})]})};export{I as IntegrationAssistant};
@@ -0,0 +1 @@
1
+ .basic-debug-guide-page{display:flex;flex-direction:column;gap:16px;padding:16px}.basic-debug-guide-banner-copy{display:flex;flex-direction:column;gap:4px}.basic-debug-guide-hero,.basic-debug-guide-section{border:1px solid var(--tt-border);border-radius:var(--tt-radius-lg);background:var(--tt-bg-panel)}.basic-debug-guide-hero{padding:22px 24px;background:var(--tt-bg-panel)}.basic-debug-guide-hero-desc{margin:14px 0 0;color:var(--tt-text-dim);line-height:1.7}.basic-debug-guide-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.basic-debug-guide-section{padding:18px 20px}.basic-debug-guide-section-head{display:flex;flex-direction:column;gap:4px}.basic-debug-guide-section-desc{color:var(--tt-text-dim);line-height:1.65}.basic-debug-guide-list,.basic-debug-guide-steps{display:flex;flex-direction:column;gap:12px;margin-top:16px}.basic-debug-guide-item,.basic-debug-guide-step{display:flex;align-items:flex-start;gap:12px}.basic-debug-guide-item-index,.basic-debug-guide-step-index{width:24px;height:24px;border-radius:999px;background:var(--tt-accent-soft);color:var(--tt-accent-text);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--tt-text-meta);font-weight:600;margin-top:1px}.basic-debug-guide-item-muted .basic-debug-guide-item-index{background:var(--tt-overlay-medium);color:var(--tt-text-faint)}.basic-debug-guide-item-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.basic-debug-guide-item-copy .semi-typography:nth-child(2),.basic-debug-guide-step .semi-typography{color:var(--tt-text-dim);line-height:1.65}.basic-debug-guide-command-list{display:flex;flex-direction:column;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--tt-border)}.basic-debug-guide-command-item{display:flex;flex-direction:column;gap:6px}.basic-debug-guide-command-item code{display:inline-flex;width:fit-content;padding:7px 10px;border-radius:var(--tt-radius-sm);background:var(--tt-overlay-soft);border:1px solid var(--tt-border);font-family:var(--tt-font-mono);font-size:var(--tt-text-body);color:var(--tt-text)}@media(max-width:900px){.basic-debug-guide-page{padding:12px}.basic-debug-guide-hero,.basic-debug-guide-section{padding-left:16px;padding-right:16px}}
@@ -0,0 +1 @@
1
+ import{c as a}from"./index-BJ1WI0xW.js";const e=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],l=a("sparkles",e);export{l as S};
@@ -0,0 +1 @@
1
+ import{c as a}from"./index-BJ1WI0xW.js";const o=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],e=a("zap",o);export{e as Z};
@@ -12,10 +12,20 @@
12
12
  rel="stylesheet"
13
13
  />
14
14
  <title>TikTok Mini Games DevTool</title>
15
- <script type="module" crossorigin src="/assets/index-Pfoc2Cwl.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-D2LsTDVa.css">
15
+ <script type="module" crossorigin src="/assets/index-BJ1WI0xW.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-ROKxx4f7.css">
17
17
  </head>
18
- <body>
18
+ <!--
19
+ Theme attributes (`theme-mode` for Semi UI + `data-theme` for our
20
+ own CSS variables) are written by `src/utils/theme.ts` at boot
21
+ time and on user-toggle. The inline initial values below avoid a
22
+ flash-of-unthemed-content; the real source of truth is
23
+ `getInitialTheme()`, which reads localStorage and otherwise
24
+ defaults to light (dark mode is opt-in via the header toggle).
25
+ The legacy `theme-variant='simple'` is dropped — the Wasm modal
26
+ now uses the global `tt-flair-*` silencer in `index.css` instead.
27
+ -->
28
+ <body theme-mode="light" data-theme="light">
19
29
  <div id="root"></div>
20
30
  <iframe
21
31
  style="visibility: hidden"
@@ -0,0 +1,191 @@
1
+ /**
2
+ * ===================================================================
3
+ * dev-debug.js — 一键联调 cli + ide
4
+ * ===================================================================
5
+ *
6
+ * 用途:让你在本地同时改 CLI(CLI server / wasm split / route 等)和 IDE
7
+ * (React 组件、wasm-split Modal、API 调用)时只敲一条命令就把三件事
8
+ * 一起拉起来:
9
+ *
10
+ * 1. CLI 源码增量构建 → packages/libs/dev-tools/cli/dist
11
+ * 2. CLI dev server → http://localhost:3000,cwd = 你的 Unity 工程
12
+ * 3. IDE vite dev server → http://localhost:5173,热更
13
+ *
14
+ * IDE 的 vite.config.ts 已经把所有 /game/* 接口 proxy 到 :3000,所以
15
+ * 你只要在浏览器开 http://localhost:5173,就能用最新 IDE + 最新 CLI 联调。
16
+ *
17
+ * 用法(在 cli 目录下):
18
+ * pnpm dev:debug /absolute/path/to/your/unity-game
19
+ * # 或者
20
+ * TTMG_DEV_PROJECT=/absolute/path/to/your/unity-game pnpm dev:debug
21
+ *
22
+ * 在 monorepo 任意位置:
23
+ * pnpm -C packages/libs/dev-tools/cli dev:debug /absolute/path/to/unity-game
24
+ *
25
+ * 必填:Unity 工程目录(必须含 game.json)。CLI 大量逻辑用 process.cwd()
26
+ * 解析 wasm 路径、写 __TTMG_TEMP__、改 webgl-wasm-split.js,所以必须把
27
+ * CLI 进程的 cwd 直接指到工程根,不能在 monorepo 里跑。
28
+ *
29
+ * 设计要点:
30
+ * - 用 Node 自带的 `--watch`(≥18.11)替代 nodemon —— 监听 dist/index.js
31
+ * 变化自动重启 server 进程,零额外依赖。
32
+ * - 用 rollup 自带 `-w` 替代 ts-node-dev / tsx —— 跟 npm run build 走
33
+ * 同一条 pipeline,不会出现 "ts-node 跑得通、build 不过" 的偏差。
34
+ * - 启动顺序:先 spawn rollup -w(它会自己 first-build),轮询等待
35
+ * dist/index.js 出现,再 spawn node --watch;vite 跟 rollup 同时起。
36
+ * 这样避免了"node --watch 在 dist 还不存在时直接退出"的坑。
37
+ * - SIGINT/SIGTERM 一并下发给三个子进程,Ctrl+C 干净收尾。
38
+ *
39
+ * 设置 `TTMG_DEV_NO_OPEN=1` 给 CLI 子进程,让它不要 openUrl 到 :3000
40
+ *(那是 dist/public 里的旧 IDE,联调时我们要的是 vite 的 :5173)。
41
+ */
42
+
43
+ const { spawn } = require('child_process');
44
+ const fs = require('fs');
45
+ const path = require('path');
46
+
47
+ // __dirname = packages/libs/dev-tools/cli/scripts
48
+ const CLI_DIR = path.resolve(__dirname, '..');
49
+ const IDE_DIR = path.resolve(__dirname, '../../ide');
50
+ const CLI_DIST_ENTRY = path.join(CLI_DIR, 'dist/index.js');
51
+
52
+ function fail(msg) {
53
+ console.error(`\n❌ ${msg}\n`);
54
+ process.exit(1);
55
+ }
56
+
57
+ const projectArg = process.argv[2];
58
+ const projectEnv = process.env.TTMG_DEV_PROJECT;
59
+ const projectDir = projectArg
60
+ ? path.resolve(projectArg)
61
+ : projectEnv
62
+ ? path.resolve(projectEnv)
63
+ : null;
64
+
65
+ if (!projectDir) {
66
+ fail(
67
+ '缺少 Unity 工程目录。\n' +
68
+ ' 用法: pnpm dev:debug /absolute/path/to/your/unity-game\n' +
69
+ ' 或: TTMG_DEV_PROJECT=/absolute/path/to/unity-game pnpm dev:debug',
70
+ );
71
+ }
72
+ if (!fs.existsSync(projectDir)) {
73
+ fail(`Unity 工程目录不存在: ${projectDir}`);
74
+ }
75
+ if (!fs.existsSync(path.join(projectDir, 'game.json'))) {
76
+ fail(
77
+ `${projectDir} 看起来不是 Unity 工程根(缺少 game.json)。\n` +
78
+ ` CLI 用 process.cwd() 操作工程文件,cwd 不对会写错地方,所以这里硬性校验。`,
79
+ );
80
+ }
81
+ if (!fs.existsSync(IDE_DIR)) {
82
+ fail(
83
+ `IDE 目录不存在: ${IDE_DIR}\n` +
84
+ ` 这个脚本依赖 monorepo 同级 ide 包,单独发出去的 npm 包不会带这个目录。`,
85
+ );
86
+ }
87
+
88
+ console.log('🚀 ttmg dev-debug starting');
89
+ console.log(` ├─ CLI 源码 ${CLI_DIR}`);
90
+ console.log(` ├─ IDE 源码 ${IDE_DIR}`);
91
+ console.log(` └─ Unity 工程 ${projectDir}`);
92
+ console.log('');
93
+
94
+ const children = [];
95
+
96
+ function spawnChild(label, cmd, args, opts) {
97
+ console.log(`▶ [${label}] ${cmd} ${args.join(' ')}`);
98
+ const child = spawn(cmd, args, {
99
+ stdio: 'inherit',
100
+ shell: process.platform === 'win32', // Windows 下需要 shell 才能识别 .cmd
101
+ ...opts,
102
+ });
103
+ child._label = label;
104
+ child.on('exit', (code, signal) => {
105
+ if (signal === 'SIGINT' || signal === 'SIGTERM') return;
106
+ console.log(`✗ [${label}] exited with code=${code} signal=${signal}`);
107
+ // 任何一个子进程异常退出都把整个 dev-debug 拉下来,避免出现
108
+ // "vite 还在转、CLI 已经挂了" 这种调起来很懵的状态。
109
+ cleanup(code ?? 1);
110
+ });
111
+ children.push(child);
112
+ return child;
113
+ }
114
+
115
+ let cleanedUp = false;
116
+ function cleanup(code = 0) {
117
+ if (cleanedUp) return;
118
+ cleanedUp = true;
119
+ for (const c of children) {
120
+ if (!c.killed) {
121
+ try {
122
+ c.kill('SIGINT');
123
+ } catch {}
124
+ }
125
+ }
126
+ // 给子进程一点时间把端口让出来 / flush 日志
127
+ setTimeout(() => process.exit(code), 200);
128
+ }
129
+ process.on('SIGINT', () => cleanup(0));
130
+ process.on('SIGTERM', () => cleanup(0));
131
+
132
+ // 1) CLI rollup watch —— 第一次会 full build,之后增量。
133
+ spawnChild('cli:build', 'npx', ['rollup', '-c', '-w'], { cwd: CLI_DIR });
134
+
135
+ // 3) IDE vite —— 跟 rollup 没依赖关系,并行起。
136
+ spawnChild('ide:dev', 'pnpm', ['dev'], { cwd: IDE_DIR });
137
+
138
+ // 2) CLI dev server —— 必须等 rollup 第一次 build 完,否则 node --watch
139
+ // 会在 dist/index.js 还不存在时立即退出。轮询 dist/index.js 文件存在
140
+ // + 连续两次大小不变(=已经写完)后再启动。
141
+ const POLL_INTERVAL_MS = 200;
142
+ const READY_TIMEOUT_MS = 60_000;
143
+ const startedAt = Date.now();
144
+ let lastSize = -1;
145
+ let stableCount = 0;
146
+
147
+ const waitTimer = setInterval(() => {
148
+ if (cleanedUp) {
149
+ clearInterval(waitTimer);
150
+ return;
151
+ }
152
+ if (Date.now() - startedAt > READY_TIMEOUT_MS) {
153
+ clearInterval(waitTimer);
154
+ fail(
155
+ `等待 ${CLI_DIST_ENTRY} 超时 (${READY_TIMEOUT_MS}ms)。` +
156
+ ' rollup -w 是不是挂了?看上面的 cli:build 输出。',
157
+ );
158
+ }
159
+ let size;
160
+ try {
161
+ size = fs.statSync(CLI_DIST_ENTRY).size;
162
+ } catch {
163
+ return; // 还没生成
164
+ }
165
+ if (size === lastSize && size > 0) {
166
+ stableCount += 1;
167
+ } else {
168
+ stableCount = 0;
169
+ lastSize = size;
170
+ }
171
+ if (stableCount >= 2) {
172
+ clearInterval(waitTimer);
173
+ console.log(
174
+ `\n✓ cli dist ready (${(size / 1024).toFixed(1)}KB), starting server in ${projectDir}\n`,
175
+ );
176
+ spawnChild(
177
+ 'cli:server',
178
+ 'node',
179
+ ['--watch', CLI_DIST_ENTRY, 'dev'],
180
+ {
181
+ cwd: projectDir,
182
+ env: {
183
+ ...process.env,
184
+ // 让 CLI 跳过自己的 chrome-launcher openUrl —— 联调时 IDE 在
185
+ // vite (5173),不要再去打开 dist/public 那份旧 IDE。
186
+ TTMG_DEV_NO_OPEN: '1',
187
+ },
188
+ },
189
+ );
190
+ }
191
+ }, POLL_INTERVAL_MS);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttmg/cli",
3
- "version": "0.3.8",
3
+ "version": "0.3.9-beta.2",
4
4
  "description": "TikTok Mini Game Command Line Tool",
5
5
  "license": "ISC",
6
6
  "bin": {
@@ -9,12 +9,16 @@
9
9
  "files": [
10
10
  "dist"
11
11
  ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
12
15
  "scripts": {
13
16
  "prepublish": "npm run build",
14
17
  "build": "node scripts/build.js",
15
18
  "setup": "node scripts/setup.js",
16
19
  "reset:local-state": "node scripts/resetLocalState.js",
17
- "dev:link": "npm run build && npm link"
20
+ "dev:link": "npm run build && npm link",
21
+ "dev:debug": "node scripts/dev-debug.js"
18
22
  },
19
23
  "keywords": [
20
24
  "TTMG",
@@ -22,6 +26,7 @@
22
26
  ],
23
27
  "author": "zhanghongyang.mocha",
24
28
  "dependencies": {
29
+ "@anrans001/ttmg-wasmtool": "^0.3.2",
25
30
  "acorn": "^8.15.0",
26
31
  "archiver": "^7.0.1",
27
32
  "axios": "^1.11.0",
package/CHANGELOG.md DELETED
@@ -1,228 +0,0 @@
1
- ## 0.1.0
2
-
3
- 发布正式版本,支持 H5 小游戏和原生小游戏的初始化、开发调试和打包构建。支持 Windows 系统
4
-
5
- ## 0.1.0-beta.1
6
-
7
- 移除 Client WS 端口和 Http 端口默认 -1 的配置,变成通过和 Node CLI 通信显示发端口
8
-
9
- ## 0.1.0-beta.8
10
-
11
- 支持自动打开浏览器,且聚焦在 devTools 窗口
12
-
13
- ## 0.1.0-beta.9
14
-
15
- 1. 支持文件上传进度显示
16
- 2. 支持自动打开浏览器调试模式
17
-
18
- ## 0.1.0-beta.10
19
-
20
- fix: 修复还未完成新编译就直接上传了的问题
21
-
22
- ## 0.1.0-beta.11
23
-
24
- feat: 先关闭自动上传能力
25
-
26
- ## 0.1.0-beta.12
27
-
28
- feat: 支持文件变更监听,告知浏览器文件变更,提醒开发者重新加载游戏
29
-
30
- ## 0.1.0-beta.13
31
-
32
- 1. 支持 sourcemap
33
- 2. 优化上传环节产物,过滤 sourcemap 文件,提高上传效率
34
-
35
- ## 0.1.0-beta.14
36
-
37
- 1. 修复 client key 未成功写入 mock meta 的问题,导致不一致
38
-
39
- ## 0.1.0-beta.15
40
-
41
- 1. 还原 open url 历史方法
42
-
43
- ## 0.1.1
44
-
45
- 发布最新版本,提醒开发者升级最新版本
46
-
47
- ## 0.1.2
48
-
49
- 发布最新版本,支持 sourcemap
50
-
51
- ## 0.1.3-beta.1
52
-
53
- 优化显示二维码问题
54
-
55
- ## 0.1.3-beta.2
56
-
57
- 彻底修复二维码兼容问题
58
-
59
- ## 0.1.3-beta.3
60
-
61
- 修复 sourcemap 错乱问题
62
-
63
- ## 0.1.3-beta.4
64
-
65
- 修复循环依赖问题
66
-
67
- ## 0.1.3-beta.5
68
-
69
- 修复监听文件变化报错问题
70
-
71
- ## 0.1.3
72
-
73
- 发布优化版本 CLI
74
-
75
- ## 0.1.4
76
-
77
- 优化页面交互
78
-
79
- ## 0.1.5
80
-
81
- 1.fix: 控制台报错问题 2. feat: 优化
82
-
83
- ## 0.1.6
84
-
85
- 1. 优化控制台报错日志
86
- 2. 优化调试启动环节耗时
87
-
88
- ## 0.1.7
89
-
90
- - 修复 Windows 调试资源加载失败问题
91
-
92
- ## 0.1.8
93
-
94
- 优化 DevTool 网页端启动时间
95
-
96
- ## 0.1.9-beta.1
97
-
98
- 发布测试版本,供客户端调试使用
99
-
100
- ## 0.1.9-beta.2
101
-
102
- 发布测试版本,用于 Windows 测试
103
-
104
- ## 0.1.9
105
-
106
- 发布正式版本,支持
107
-
108
- - login
109
- - 支持上传游戏包
110
- - 支持启动模式
111
- - 支持 Debug Settings
112
-
113
- ## 0.2.0-beta.1
114
-
115
- 发布测试版本,用于 Windows 测试 login 登录异常逻辑
116
-
117
- ## 0.2.0
118
-
119
- 发布正式版本,支持 Windows 登录加载报错提示
120
-
121
- ## 0.2.1
122
-
123
- 1. 移除项目详情部分,比较冗余,不常用,融合到代码预检中
124
- 2. 打开调试页面地址增加 version 参数,来规避新老版本缓存问题和不同网页之间的隔离(未来支持)
125
- 3. 优化登录失败提示,增加网络检查提示,并给出如何修改网络设置的文档链接
126
- 4. 补充发送 meta 至客户端链路,增加调试链路日志信息,便于排查问题
127
-
128
- ## 0.2.2
129
-
130
- 1. 修复访问无权限的小游戏,顶部报错问题
131
-
132
- ## 0.2.3
133
-
134
- 优化扫码连接不上问题,支持手动绑定电脑本地 IP 地址
135
-
136
- ## 0.2.4
137
-
138
- 支持新的 DevTool 平台
139
-
140
- ## 0.2.5
141
-
142
- 1. 增加不在游戏根目录启动调试校验
143
- 2. 支持手动绑定客户端 IP 地址和端口
144
- 3. 调整启动模式中的场景列表表达文案
145
- 4. 修复文件上传问题,避免偶现上传失败
146
- 5. 支持展示游戏详情模块,支持开发者查看当前小游戏基本信息
147
- 6. 支持调试环节消费平台配置的域名
148
- 7. 升级 ttmg-pack 0.1.7,修复构建环节对开发者 JS 代码降级的问题
149
- 8. 文档新增常见问题部分,替换原有的开发文档
150
-
151
- ## 0.2.6
152
-
153
- 修复启动模式中场景列表展示问题,重复展示默认启动模式
154
-
155
- ## 0.2.7
156
- 1. 升级 ttmg-pack 0.2.3,调整 esbuild 配置,目标 es2020
157
- 2. 支持校验子包配置文件名是否符合规范,对于非法文件名,提示开发者修改
158
- 3. 调整域名校验默认逻辑,默认开启,校验失败时,提示开发者修改
159
-
160
- ## 0.2.8
161
- 1. 升级 ttmg-pack 0.2.4,修复 open data context 文件丢失问题
162
-
163
- ## 0.2.9
164
- 1. 升级 ttmg-pack 0.2.5,修复 open data context 打包问题
165
- ## 0.3.0
166
- 新增/优化功能适用 TikTok 版本 iOS >=43.1 | Android>=43.1
167
- 支持了开发信息蒙层,打开后可以查看游戏 FPS、设备信息、调试开关等信息,便于查看游戏运行状态 了解如何使用
168
- 支持删除历史启动模式,便于管理历史启动模式
169
- 调整调试设置模块名称为开发选项,和客户端内调开发者选项保持一致 了解如何使用
170
- 调试设置新增定义 vConsole 和 开发信息浮层设置
171
- 支持了变更日志,用户可以在调试环境下查看游戏的变更记录,部分新功能可通过更多信息查看使用
172
- 支持了调试设置开关本地缓存,避免每次都需要重新设置
173
- 修复上传名称为中文的游戏时,平台展示乱码的问题
174
- 修复启动模式模块,自定义query 参数无法持久化的问题
175
- 修复扫描二维码模块,内容过多,纵向无法滚动问题
176
-
177
- ## 0.3.1
178
- - 支持 unity 小游戏本地一些列调试功能,如 Wasm 分包、包大小校验、一键上传代码包至平台等 了解如何使用
179
- - 增加用户登录过期的异常提示,提醒开发者重新登录
180
- - 优化上传代码包至平台功能,开发者只用添加描述后点击上传便可自动压缩当前目录下的代码包上传至开发者平台
181
- - 优化 ttmg login 终端网络代理异常导致无法登录的报错引导,提示用户检查网络设置
182
-
183
- ## 0.3.2-beta.1
184
- 支持 cocos 2.0 openDataContext 相关适配
185
-
186
- ## 0.3.2
187
- - 小游戏详情查询升级到 TikTok DevPortal v4 `devtool/info` 接口,字段映射更完整
188
- - 支持一键打包当前目录并上传代码包到开发者平台;上传失败提示更明确,文件名非法字符自动处理
189
- - Unity Wasm 分包:更新 `game.json` 子包配置写入逻辑(兼容 `subpackages`/`subPackages` 字段),Android/iOS main/sub 配置去重合并
190
- - 启动校验增强:检查是否在小游戏根目录执行,并提示 `subPackages` 拼写错误
191
- 增加对 unity 是否需要分包的检查,对于需要分包的 unity 项目,给出明确提示
192
- 支持通过 `ttmg setup` 配置 CLI 语言,调试环境会跟随语言设置展示文案,首次调试时会自动同步默认语言,后续 CLI 与 IDE 语言保持一致,减少反复切换
193
- 调试与预检支持多语言展示,关键提示与校验信息更易理解
194
- 支持 Cocos 2.0 openDataContext 配置
195
- 变更记录新增提醒功能,当有新版本发布时,会通过弹窗提醒开发者更新
196
- ttmg login 支持 ttmg login --verbose 参数,打印更多登录信息
197
- API 预检建议文案统一收敛,避免重复提示,阅读更清晰
198
- 顶部区域透出项目预检错误与警告信息,便于开发者及时发现问题并修复
199
- 语言选择策略优化:优先使用 CLI 本地设置,未设置时自动回退浏览器语言
200
- 启动校验增强:检查是否在小游戏根目录执行,对于分包配置 subPackages 给出明确报错,引导开发者修改为 subpackages
201
- 修复项目详情中展示的主包大小限制和代码预检不一致的情况
202
-
203
- ## 0.3.3
204
- 升级 ttmg-pack 到 0.4.5,解决安卓无法调试 unity 项目问题
205
-
206
- ## 0.3.4
207
- 优化校验逻辑,给出提示
208
-
209
- ## 0.3.5
210
- 优化连接和代理,帮助开发者自助解决问题
211
-
212
- ## 0.3.6
213
- 修复分包过程超时问题
214
-
215
- ## 0.3.7
216
- 新增/优化功能适用 TikTok 版本 iOS >=43.1 | Android >=43.1
217
-
218
- 1. 新增能力接入助手,帮助开发者基于小游戏变现类型获取关键能力的接入引导。
219
- 2. 优化上传发布环节,将代码预检与代码上传整合为完整的上传发布流程。
220
- 3. 扩充包体大小预检说明,补充整包、主包、独立分包限制规则与详细文档入口,便于开发者理解和处理包体超限问题。
221
-
222
- ## 0.3.8
223
- 修复 `ttmg login` 后接口鉴权异常的问题:
224
-
225
- 1. 登录时把 `Set-Cookie` 响应头中的 `Path / Domain / Max-Age / Expires / Secure / HttpOnly / SameSite` 等属性被当成 cookie 拼接到 `Cookie` 字段,导致 CLI 发请求时把属性当成"假 cookie"一并带上。
226
- 2. 同一域名下同名 cookie(例如服务端用 `Max-Age=0` 显式删除的占位 cookie)也会被一起发送,污染掉真正有效的同名 cookie,浏览器会自动过滤这种情况,CLI 不会,造成登录态接口异常。
227
- 3. 修复后与浏览器行为保持一致:剥离 cookie 属性、过滤 `Max-Age<=0` 或 `Expires` 已过期的 cookie,仅保留 `name=value` 用于请求。
228
- 4. 已登录用户无需重新登录,下次发起请求时会自动清洗 rc 中已存的脏数据。
@@ -1 +0,0 @@
1
- import{aR as U,b$ as ie,bZ as Pe,aP as l,ay as a,aG as e,t as Re,o as Fe,K as c,f as I,d as w,a as O,y as Ve,S as xe,Q as Ge,N as Ne,c0 as qe,T as fe}from"./index-Pfoc2Cwl.js";import{E as Ue}from"./index-iUN2bzlN.js";import{F as E}from"./baseForm-DqyLTNAx.js";import{c as Qe}from"./index-tOg_vZEc.js";import"./times-BsA3kTAU.js";import"./index-yXoFuCJJ.js";function Ye(t={}){return U({url:"/game/direct-feed-card/list",method:"POST",data:t})}function Be(t={}){return U({url:"/game/direct-feed-card/scenarios",method:"POST",data:t})}function ze(t){return U({url:"/game/direct-feed-card/create",method:"POST",data:t})}function We(t){return U({url:"/game/direct-feed-card/asset-preview",method:"POST",data:t})}function He(t={}){return U({url:"/game/assets",method:"POST",data:t})}const Ze="fyf_promotion_direct_feed_play",je="direct-play-debug",ae="__create_direct_play_card__",se="recover_stamina_dynamic",Je=2,G=String(Je),Xe={cardName:"",cardDesc:"",cardType:G,scenario:se,subPkg:"__GAME__",params:""};function D(t,d){if(typeof t=="string"&&t.trim())return t;if(t&&typeof t=="object"){const i=t;if(i.errorMsg)return i.errorMsg;if(i.StatusMessage)return i.StatusMessage;if(i.message)return i.message}return d}function ea(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(2)} MB`:"-"}function aa(t){return t?new Date(t*1e3).toLocaleString():"-"}function ta(t){return t==="preview"?a("ia.directPlay.stage2.assetGroup.preview"):t==="live"?a("ia.directPlay.stage2.assetGroup.live"):a("ia.directPlay.stage2.assetGroup.review")}function sa(t){return{...t||Ne,scene:Ze}}function ia(t){return t.pkgType==="independent"?t.independentPkg||t.pkgName||a("independentPackage"):a("gameMainPackage")}function te(t){return!t||t==="__GAME__"?a("gameMainPackage"):t}function be(t){const d=String(t||"").trim();return d?d==="reward_issue_static"||d==="reward_issue_dynamic"?a("ia.directPlay.stage2.create.scenario.rewardIssue"):d==="recover_stamina_static"||d==="recover_stamina_dynamic"||d==="strength_recovery"?a("ia.directPlay.stage2.create.scenario.recoverStamina"):d==="unlock_level_static"||d==="unlock_level_dynamic"?a("ia.directPlay.stage2.create.scenario.unlockLevel"):d==="recall_scenario"?a("ia.directPlay.stage2.create.scenario.rewardIssue"):"":""}function q(t,d){if(!t)return"-";const i=be(t);return i||(d?.[t]?d[t]:t)}function ra(t){const d=String(t||"").trim();if(d.endsWith("_static"))return 1;if(d.endsWith("_dynamic"))return 2}function _e(t,d){const i=Number(d),o=t.cardType===void 0?ra(t.value):Number(t.cardType);return o===void 0||o===i}function ve(t,d){const i=new Set;return t.filter(o=>{const x=q(o.value,d);return i.has(x)?!1:(i.add(x),!0)})}function na(t){return t?Number(t.audit_status)===1?a("ia.directPlay.stage2.cardStatus.approved"):Number(t.audit_status)===0||Number(t.status)===0?a("ia.directPlay.stage2.cardStatus.pending"):"":""}function ca(t,d){const i=t?.direct_feed_card||{},o=String(t?.content_id||i.content_id||"").trim();return o?{audit_status:Number(i.audit_status??1),status:Number(i.status??1),content_id:o,card_name:String(i.card_name||d.cardName),card_desc:String(i.card_desc||d.cardDesc),card_type:Number(i.card_type??d.cardType),scenario:String(i.scenario||d.scenario),sub_pkg:String(i.sub_pkg||d.subPkg),params:String(i.params||d.params||""),priority:i.priority===void 0?void 0:Number(i.priority)}:null}function W(){return[{value:se,label:q(se)}]}const da=()=>{const t=ie(),{state:{selectedLaunchOption:d,gameDetail:i,launchOptions:o,packages:x},setLaunchOptions:k,setSelectedLaunchOption:r}=Pe(),[f,Q]=l.useState([]),[b,M]=l.useState([]),[P,$]=l.useState("select"),[j,Y]=l.useState(""),[L,re]=l.useState(""),[ne,B]=l.useState(""),[ce,de]=l.useState(""),[le,R]=l.useState(""),[oe,H]=l.useState(""),[ue,Z]=l.useState(""),[Te,ge]=l.useState(!0),[Ce,pe]=l.useState(!1),[Se,me]=l.useState(!1),[ye,J]=l.useState(G),[A,he]=l.useState(W),T=l.useRef(null),X=l.useMemo(()=>sa(d),[d]),y=l.useMemo(()=>({appId:i?.app_id,clientKey:i?.client_key,miniGameId:i?.app_id}),[i?.app_id,i?.client_key]),C=l.useMemo(()=>f.find(s=>s.content_id===j)||null,[f,j]),K=l.useMemo(()=>b.find(s=>s.asset_id===L)||null,[b,L]),S=l.useMemo(()=>A.reduce((s,n)=>(n?.value&&(s[n.value]=be(n.value)||(n.label&&n.label!==n.value?n.label:n.value)),s),{}),[A]),z=l.useMemo(()=>{const s=A.filter(u=>_e(u,ye)),n=s.length>0?s:W();return ve(n,S).map(u=>({...u,label:q(u.value,S)}))},[ye,S,A]),Ie=l.useMemo(()=>b.map(s=>({label:`${s.file_name||s.asset_id} · v${s.version||"-"}`,value:s.asset_id})),[b]),we=l.useMemo(()=>[{label:a("ia.directPlay.stage2.create.option"),value:ae},...f.map(s=>({label:`${s.card_name} · ${q(s.scenario,S)} · ${te(s.sub_pkg)}`,value:s.content_id}))],[f,S]),ke=l.useMemo(()=>[{label:a("ia.directPlay.stage2.create.cardType.fixed"),value:"1"},{label:a("ia.directPlay.stage2.create.cardType.dynamic"),value:"2"}],[]),Ee=l.useMemo(()=>{const s=new Set(["__GAME__"]);return(x||[]).forEach(n=>{n?.type==="independent"&&n.name&&s.add(n.name)}),o.forEach(n=>{n.pkgType==="independent"&&n.independentPkg&&s.add(n.independentPkg)}),Array.from(s).map(n=>({label:te(n),value:n}))},[o,x]),De=l.useMemo(()=>e.jsxs("span",{className:"integration-assistant-direct-play-label-with-info",children:[e.jsx("span",{children:a("ia.directPlay.stage2.create.cardType")}),e.jsx(Re,{position:"top",trigger:"hover",showArrow:!0,content:e.jsxs("div",{className:"integration-assistant-direct-play-info-popover",children:[e.jsx(c.Text,{children:a("ia.directPlay.stage2.create.cardType.dynamicDesc")}),e.jsx(c.Text,{children:a("ia.directPlay.stage2.create.cardType.fixedDesc")})]}),children:e.jsx("span",{className:"integration-assistant-direct-play-info-icon","aria-label":"card type info",children:e.jsx(Fe,{})})})]}),[]),Me=l.useCallback(s=>{const n=String(s||G);J(n);const u=A.filter(p=>_e(p,n)),h=u.length>0?ve(u,S):W(),m=h[0]?.value,_=T.current?.getValue?.("scenario"),N=h.some(p=>p.value===_);T.current?.setValue?.("cardType",n),m&&!N&&T.current?.setValue?.("scenario",m)},[S,A]),F=l.useCallback(async s=>{ge(!0),de("");try{const[n,u,h]=await Promise.allSettled([Ye({appId:y.appId,clientKey:y.clientKey}),He({appId:y.appId,miniGameId:y.miniGameId,clientKey:y.clientKey}),Be({appId:y.appId,clientKey:y.clientKey})]),m=n.status==="fulfilled"?n.value:null,_=u.status==="fulfilled"?u.value:null,N=h.status==="fulfilled"?h.value:null;if(n.status==="rejected"||m?.error||m?.code!==0||!m?.data)throw new Error(D(m?.error,a("ia.directPlay.stage2.loadCardsFailed")));if(u.status==="rejected"||_?.error||_?.code!==0||!_?.data)throw new Error(D(_?.error,a("ia.directPlay.stage2.loadAssetsFailed")));const p=m.data.cards||[],V=(_.data.preview_assets||[]).map(g=>({...g,group:"preview"}));Q(p),M(V),N?.code===0&&N.data?.scenarios?.length?he(N.data.scenarios):he(g=>g.length>0?g:W()),Y(g=>{if(s?.contentId&&p.some(v=>v.content_id===s.contentId))return s.contentId;if(s?.cardName){const v=p.find(ee=>ee.card_name===s.cardName);if(v?.content_id)return v.content_id}return g&&p.some(v=>v.content_id===g)?g:p[0]?.content_id||""}),re(g=>g&&V.some(v=>v.asset_id===g)?g:V[0]?.asset_id||"")}catch(n){de(D(n,a("ia.directPlay.stage2.loadResourcesFailed")))}finally{ge(!1)}},[y.appId,y.clientKey,y.miniGameId]);l.useEffect(()=>{F()},[F]),l.useEffect(()=>{const s=z[0]?.value;if(!s)return;const n=T.current?.getValue?.("scenario");z.some(h=>h.value===n)||T.current?.setValue?.("scenario",s)},[z]);const Le=l.useCallback(()=>{const s={...X,id:je,name:a("ia.directPlay.stage1.generatedModeName")},n=o.filter(m=>m.id!==je),u=n.findIndex(m=>m.id==="created"),h=u>=0?[...n.slice(0,u),s,...n.slice(u)]:[...n,s];k(h),r(s),t("/")},[o,t,k,r,X]),Ae=l.useCallback(async()=>{try{const s=await T.current?.validate(),n=String(s?.cardName||"").trim(),u=String(s?.cardDesc||"").trim(),h=String(s?.scenario||"").trim(),m=String(s?.subPkg||"__GAME__").trim()||"__GAME__",_=String(s?.params||"").trim(),N=Number(s?.cardType||0);if(!n||!u||!h||!N)return;me(!0),H(""),Z("");const p=await ze({appId:y.appId,clientKey:y.clientKey,directFeedCard:{cardName:n,cardDesc:u,cardType:N,scenario:h,subPkg:m,params:_||void 0}});if(p?.error||p?.code!==0)throw new Error(D(p?.error,a("ia.directPlay.stage2.create.failed")));const V=String(p?.data?.content_id||p?.data?.direct_feed_card?.content_id||""),g=ca(p?.data,{cardName:n,cardDesc:u,cardType:N,scenario:h,subPkg:m,params:_});await F({contentId:V,cardName:n}),g&&(Q(v=>{const ee=v.filter($e=>$e.content_id!==g.content_id);return[g,...ee]}),Y(g.content_id)),$("select"),Z(a("ia.directPlay.stage2.create.success")),R(""),B(""),T.current?.reset?.(),J(G)}catch(s){if(s?.name==="ValidateError")return;H(D(s,a("ia.directPlay.stage2.create.failed")))}finally{me(!1)}},[F,y.appId,y.clientKey]),Ke=l.useCallback(s=>{if(s===ae){$("create"),Y(""),R(""),B("");return}$("select"),Y(s||"")},[]),Oe=l.useCallback(async()=>{if(!j||!L){R(a("ia.directPlay.stage2.selectRequired"));return}pe(!0),R("");try{const s=await We({assetId:L,contentId:j});if(s?.error||s?.code!==0||!s?.data?.preview_url)throw new Error(D(s?.error,a("ia.directPlay.stage2.previewFailed")));B(s.data.preview_url)}catch(s){B(""),R(D(s,a("ia.directPlay.stage2.previewFailed")))}finally{pe(!1)}},[L,j]);return e.jsxs("div",{className:"integration-assistant-direct-play-grid",children:[e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{children:[e.jsx(c.Title,{heading:5,children:a("ia.directPlay.stage1.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage1.desc")})]})}),e.jsxs("div",{className:"integration-assistant-direct-play-summary",children:[e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.modeName")}),e.jsx(c.Text,{children:a("ia.directPlay.stage1.modeValue")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.scene")}),e.jsx(c.Text,{children:a("scene_fyf_promotion_direct_feed_play")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.package")}),e.jsx(c.Text,{children:ia(X)})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",onClick:Le,children:a("ia.directPlay.stage1.createQr")})})]}),e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx(O,{className:"integration-assistant-direct-play-banner integration-assistant-direct-play-banner-top",fullMode:!1,bordered:!1,closeIcon:null,type:"info",description:a("ia.directPlay.stage2.banner")}),e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{className:"integration-assistant-direct-play-stage-head",children:[e.jsx(c.Title,{heading:5,children:a("ia.directPlay.stage2.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.desc")})]})}),e.jsx(O,{className:"integration-assistant-direct-play-banner integration-assistant-direct-play-banner-inline",fullMode:!1,bordered:!1,closeIcon:null,type:"warning",description:a("ia.directPlay.versionNotice")}),ce?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:ce}):null,le?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:le}):null,oe?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:oe}):null,ue?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"success",description:ue}):null,Te?e.jsx("div",{className:"integration-assistant-direct-play-loading",children:e.jsx(Ve,{size:"large"})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"integration-assistant-direct-play-form",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"integration-assistant-direct-play-field-head",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.cardSelect")}),e.jsx(w,{theme:"borderless",onClick:()=>F(),children:a("ia.directPlay.stage2.refresh")})]}),e.jsx(xe,{className:"integration-assistant-direct-play-select",value:P==="create"?ae:j||void 0,optionList:we,onChange:s=>Ke(s),placeholder:a("ia.directPlay.stage2.cardSelect")})]}),P==="select"?e.jsxs("div",{children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.assetSelect")}),e.jsx(xe,{className:"integration-assistant-direct-play-select",value:L||void 0,optionList:Ie,onChange:s=>re(s),placeholder:a("ia.directPlay.stage2.assetSelect")})]}):null]}),P==="create"?e.jsx("div",{className:"integration-assistant-direct-play-create-wrap",children:e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.create.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.create.desc")}),e.jsx(E,{className:"integration-assistant-direct-play-create-form",initValues:Xe,getFormApi:s=>{T.current=s},onValueChange:s=>{if(H(""),Z(""),s&&typeof s=="object"&&"cardType"in s){const n=String(s.cardType||G);J(n)}},children:e.jsxs("div",{className:"integration-assistant-direct-play-create-grid",children:[e.jsx(E.Input,{field:"cardName",label:a("ia.directPlay.stage2.create.cardName"),placeholder:a("ia.directPlay.stage2.create.cardNamePlaceholder"),rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"cardType",label:De,optionList:ke,onChange:Me,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Input,{field:"cardDesc",label:a("ia.directPlay.stage2.create.cardDesc"),placeholder:a("ia.directPlay.stage2.create.cardDescPlaceholder"),rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"subPkg",label:a("ia.directPlay.stage2.create.subPkg"),optionList:Ee,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"scenario",label:a("ia.directPlay.stage2.create.scenario"),optionList:z,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Input,{field:"params",label:a("ia.directPlay.stage2.create.params"),placeholder:a("ia.directPlay.stage2.create.paramsPlaceholder")})]})}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",type:"primary",loading:Se,onClick:Ae,children:a("ia.directPlay.stage2.create.submit")})})]})}):null,P==="select"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"integration-assistant-direct-play-details",children:[e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.selectedCard")}),C?e.jsxs("ul",{className:"integration-assistant-detail-list",children:[e.jsx("li",{children:`${a("ia.directPlay.stage2.cardName")}${C.card_name}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardContentId")}${C.content_id||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardDesc")}${C.card_desc||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardScenario")}${q(C.scenario,S)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardStatus")}${na(C)||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardPackage")}${te(C.sub_pkg)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardQueries")}${C.params||"-"}`})]}):e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.emptyCard")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.selectedAsset")}),K?e.jsxs("ul",{className:"integration-assistant-detail-list",children:[e.jsx("li",{children:`${a("ia.directPlay.stage2.assetGroup")}${ta(K.group)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetFile")}${K.file_name||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetVersion")}${K.version||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetSize")}${ea(K.file_size)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetUploaded")}${aa(K.uploaded_at)}`})]}):e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.emptyAsset")})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",loading:Ce,onClick:Oe,children:a("ia.directPlay.stage2.generate")})})]}):null,P==="select"&&ne?e.jsxs("div",{className:"integration-assistant-direct-play-preview",children:[e.jsx("div",{className:"integration-assistant-direct-play-qr",children:e.jsx(Ge,{value:ne,size:180})}),e.jsx("div",{className:"integration-assistant-direct-play-preview-content",children:e.jsx(c.Text,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.qrDesc")})})]}):null]})]})]})},la={sidebar_revisit:{modeId:"sidebar-revisit-debug",scene:"center",sceneKey:"scene_center",titleKey:"ia.revisit.sidebar.panel.title",descKey:"ia.revisit.sidebar.panel.desc",modeValueKey:"ia.revisit.sidebar.panel.modeValue",generatedModeNameKey:"ia.revisit.sidebar.panel.generatedModeName",signalValueKey:"ia.revisit.sidebar.panel.signalValue",createQrKey:"ia.revisit.sidebar.panel.createQr"},shortcut_revisit:{modeId:"shortcut-revisit-debug",scene:"desktop_shortcut",sceneKey:"scene_shortcut",titleKey:"ia.revisit.shortcut.panel.title",descKey:"ia.revisit.shortcut.panel.desc",modeValueKey:"ia.revisit.shortcut.panel.modeValue",generatedModeNameKey:"ia.revisit.shortcut.panel.generatedModeName",signalValueKey:"ia.revisit.shortcut.panel.signalValue",createQrKey:"ia.revisit.shortcut.panel.createQr"}};function oa(t,d){return{...t||Ne,scene:d}}function ua(t){return t.pkgType==="independent"?t.independentPkg||t.pkgName||a("independentPackage"):a("gameMainPackage")}const ga=({capabilityKey:t})=>{const d=ie(),{state:{selectedLaunchOption:i,launchOptions:o},setLaunchOptions:x,setSelectedLaunchOption:k}=Pe(),r=la[t],f=l.useMemo(()=>oa(i,r.scene),[r.scene,i]),Q=l.useCallback(()=>{const b={...f,id:r.modeId,name:a(r.generatedModeNameKey)},M=o.filter(j=>j.id!==r.modeId),P=M.findIndex(j=>j.id==="created"),$=P>=0?[...M.slice(0,P),b,...M.slice(P)]:[...M,b];x($),k(b),d("/")},[r.generatedModeNameKey,r.modeId,o,d,f,x,k]);return e.jsx("div",{className:"integration-assistant-direct-play-grid",children:e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{children:[e.jsx(c.Title,{heading:5,children:a(r.titleKey)}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a(r.descKey)})]})}),e.jsxs("div",{className:"integration-assistant-direct-play-summary",children:[e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.modeName")}),e.jsx(c.Text,{children:a(r.modeValueKey)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.scene")}),e.jsx(c.Text,{children:a(r.sceneKey)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.launchParams")}),e.jsx(c.Text,{children:`scene=${r.scene}`})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.package")}),e.jsx(c.Text,{children:ua(f)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.signal")}),e.jsx(c.Text,{children:a(r.signalValueKey)})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",onClick:Q,children:a(r.createQrKey)})})]})})},ja=()=>{const t=ie(),{capabilityKey:d}=qe(),i=d?Qe[d]:void 0,o=r=>a(r),x=i?.actions.filter(r=>r.labelKey==="ia.action.openCapabilityDoc")||[],k=r=>{if(r.type==="external"&&r.href){window.open(r.href,r.target||"_blank","noopener,noreferrer");return}r.type==="route"&&r.path&&t(r.path)};return!i||i.hidden?e.jsx("div",{className:"integration-assistant-page integration-assistant-detail-page",children:e.jsxs(I,{bordered:!0,children:[e.jsx(Ue,{description:a("ia.detail.notFound")}),e.jsx("div",{className:"integration-assistant-detail-backalone",children:e.jsx(w,{onClick:()=>t("/integration_assistant"),children:a("ia.detail.backToMap")})})]})}):e.jsxs("div",{className:"integration-assistant-page integration-assistant-detail-page",children:[e.jsx("div",{className:"integration-assistant-detail-backalone",children:e.jsx(w,{theme:"borderless",onClick:()=>t("/integration_assistant"),children:a("ia.detail.backToMap")})}),e.jsx(I,{className:"integration-assistant-detail-hero",bordered:!1,children:e.jsxs("div",{className:"integration-assistant-detail-hero-content",children:[e.jsxs("div",{className:"integration-assistant-detail-title-row",children:[e.jsx("div",{className:"integration-assistant-map-icon","aria-hidden":"true",children:i.icon}),e.jsxs("div",{children:[e.jsx(c.Title,{heading:3,className:"integration-assistant-title",children:o(i.titleKey)}),e.jsx(c.Paragraph,{className:"integration-assistant-subtitle",children:o(i.summaryKey)})]})]}),e.jsxs("div",{className:"integration-assistant-map-meta",children:[i.sceneKey&&e.jsx(fe,{color:"blue",children:`${a("ia.sceneLabel")}${o(i.sceneKey)}`}),i.apiTags.map(r=>e.jsx("span",{children:e.jsx(fe,{children:r})},r))]}),e.jsx("div",{className:"integration-assistant-actions",children:x.map(r=>e.jsx(w,{theme:r.theme||"light",onClick:()=>k(r),children:o(r.labelKey)},`${r.type}:${r.path||r.href||r.labelKey}`))})]})}),e.jsxs("div",{className:"integration-assistant-detail-grid",children:[e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.prerequisites")}),e.jsx("div",{className:"integration-assistant-detail-info-list",children:i.prerequisiteKeys.map(r=>e.jsxs("div",{className:"integration-assistant-detail-info-item",children:[e.jsx("span",{className:"integration-assistant-detail-info-marker"}),e.jsx(c.Text,{className:"integration-assistant-detail-info-text",children:o(r)})]},r))})]}),e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.steps")}),e.jsx("div",{className:"integration-assistant-detail-step-list",children:i.stepKeys.map((r,f)=>e.jsxs("div",{className:"integration-assistant-detail-step",children:[e.jsx("span",{className:"integration-assistant-detail-step-index",children:f+1}),e.jsx(c.Text,{className:"integration-assistant-detail-step-text",children:o(r)})]},r))})]}),e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.tips")}),e.jsx("div",{className:"integration-assistant-detail-info-list",children:i.tipKeys.map(r=>e.jsxs("div",{className:"integration-assistant-detail-info-item",children:[e.jsx("span",{className:"integration-assistant-detail-info-marker"}),e.jsx(c.Text,{className:"integration-assistant-detail-info-text",children:o(r)})]},r))})]})]}),i.key==="direct_play_card"?e.jsx(da,{}):null,i.key==="sidebar_revisit"||i.key==="shortcut_revisit"?e.jsx(ga,{capabilityKey:i.key}):null]})};export{ja as IntegrationAssistantDetail};
@@ -1 +0,0 @@
1
- import{b$ as l,c0 as m,aP as g,aG as a,f as o,ay as s,d as r,K as p}from"./index-Pfoc2Cwl.js";import{E as x}from"./index-iUN2bzlN.js";import{m as h,f as j,M as b,C as y,a as N}from"./MonetizationModeSummary-v1a9_YaN.js";import"./index-tOg_vZEc.js";const C=()=>{const e=l(),{modeKey:n}=m(),i=n?h[n]:void 0,d=t=>s(t),c=g.useMemo(()=>j.map(t=>({...t,sectionClassName:`integration-assistant-map-tile integration-assistant-map-section integration-assistant-fixed-section ${t.sectionClassName}`})),[]);return i?a.jsxs("div",{className:"integration-assistant-page integration-assistant-detail-page",children:[a.jsx("div",{className:"integration-assistant-detail-backalone",children:a.jsx(r,{theme:"borderless",onClick:()=>e("/integration_assistant"),children:s("ia.detail.backToMap")})}),a.jsx(o,{className:"integration-assistant-detail-hero",bordered:!1,children:a.jsx("div",{className:"integration-assistant-detail-hero-content",children:a.jsxs("div",{className:"integration-assistant-mode-page-head",children:[a.jsx("div",{className:"integration-assistant-mode-badge",children:d(i.titleKey)}),a.jsx(b,{mode:i,clickableTags:!0})]})})}),a.jsxs("section",{className:"integration-assistant-mode-core-group integration-assistant-map-tile",children:[a.jsx("div",{className:"integration-assistant-mode-group-head",children:a.jsx(p.Title,{heading:4,className:"integration-assistant-map-section-title",children:s("ia.monetization.core.title")})}),a.jsx("div",{className:"integration-assistant-mode-capability-list",children:a.jsx(y,{capabilityKeys:i.capabilityKeys,capabilityRequirementMap:i.capabilityRequirementMap,gridClassName:"integration-assistant-mode-grid-recommend"})})]}),a.jsx(N,{sections:c})]}):a.jsx("div",{className:"integration-assistant-page integration-assistant-detail-page",children:a.jsxs(o,{bordered:!0,children:[a.jsx(x,{description:s("ia.detail.notFound")}),a.jsx("div",{className:"integration-assistant-detail-backalone",children:a.jsx(r,{onClick:()=>e("/integration_assistant"),children:s("ia.detail.backToMap")})})]})})};export{C as IntegrationAssistantMonetizationMode};
@@ -1 +0,0 @@
1
- import{b$ as b,aG as a,K as y,ay as n,aP as u,d as N}from"./index-Pfoc2Cwl.js";import{c as g}from"./index-tOg_vZEc.js";const K=[{key:"iaa",titleKey:"ia.monetization.mode.iaa.title",summaryKey:"ia.monetization.mode.iaa.summary",descriptionKey:"ia.monetization.mode.iaa.desc",capabilityKeys:["login","authorize","ad"],capabilityRequirementMap:{login:"required",authorize:"optional",ad:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]},{key:"iap",titleKey:"ia.monetization.mode.iap.title",summaryKey:"ia.monetization.mode.iap.summary",descriptionKey:"ia.monetization.mode.iap.desc",capabilityKeys:["login","authorize","payment"],capabilityRequirementMap:{login:"required",authorize:"optional",payment:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]},{key:"iaap",titleKey:"ia.monetization.mode.iaap.title",summaryKey:"ia.monetization.mode.iaap.summary",descriptionKey:"ia.monetization.mode.iaap.desc",capabilityKeys:["login","authorize","ad","payment"],capabilityRequirementMap:{login:"required",authorize:"optional",ad:"required",payment:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]}],q=K.reduce((e,l)=>(e[l.key]=l,e),{}),C=[{key:"growth",titleKey:"ia.overview.section.growth.title",descriptionKey:"ia.overview.section.growth.desc",capabilityKeys:["sidebar_revisit","shortcut_revisit","direct_play_card"],capabilityRequirementMap:{sidebar_revisit:"required",shortcut_revisit:"required",direct_play_card:"experimental"},sectionClassName:"integration-assistant-map-section-growth",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"share",titleKey:"ia.overview.section.share.title",descriptionKey:"ia.overview.section.share.desc",capabilityKeys:["share_message","share_story"],capabilityRequirementMap:{share_message:"recommended"},sectionClassName:"integration-assistant-map-section-share",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"foundation",titleKey:"ia.overview.section.foundation.title",descriptionKey:"ia.overview.section.foundation.desc",capabilityKeys:["ui_adaptation","subpackage","network"],capabilityRequirementMap:{ui_adaptation:"recommended",subpackage:"basic",network:"basic"},sectionClassName:"integration-assistant-map-section-foundation",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0}],z=[{key:"identity",titleKey:"ia.overview.section.identity.title",descriptionKey:"ia.overview.section.identity.desc",capabilityKeys:["login","authorize"],capabilityRequirementMap:{login:"required",authorize:"optional"},sectionClassName:"integration-assistant-map-section-identity",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"monetization",titleKey:"ia.overview.section.monetization.title",descriptionKey:"ia.overview.section.monetization.desc",capabilityKeys:["payment","ad"],sectionClassName:"integration-assistant-map-section-monetization",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},...C],j={login:"integration-assistant-capability-tile-compact",authorize:"integration-assistant-capability-tile-compact",payment:"integration-assistant-capability-tile-compact",ad:"integration-assistant-capability-tile-compact",ui_adaptation:"integration-assistant-capability-tile-compact",share_message:"integration-assistant-capability-tile-compact",share_story:"integration-assistant-capability-tile-compact",subpackage:"integration-assistant-capability-tile-compact",network:"integration-assistant-capability-tile-compact",sidebar_revisit:"integration-assistant-capability-tile-compact",shortcut_revisit:"integration-assistant-capability-tile-compact",direct_play_card:"integration-assistant-capability-tile-compact"},k=e=>e==="required"?n("ia.requirement.required"):e==="optional"?n("ia.requirement.optional"):e==="recommended"?n("ia.requirement.recommended"):e==="basic"?n("ia.requirement.basic"):n("ia.requirement.experimental"),f=({capabilityKeys:e,gridClassName:l,capabilityRequirementMap:m})=>{const d=b(),c=i=>n(i),t=e.map(i=>g[i]).filter(i=>!i.hidden);if(!t.length)return null;const o=t.length===1?"integration-assistant-map-section-grid-one":l;return a.jsx("div",{className:`integration-assistant-map-section-grid ${o}`,children:t.map(i=>a.jsxs("button",{type:"button",className:`integration-assistant-capability-tile ${j[i.key]}`,onClick:()=>d(`/integration_assistant/${i.key}`),children:[a.jsxs("div",{className:"integration-assistant-capability-tile-main",children:[a.jsxs("div",{className:"integration-assistant-capability-head",children:[a.jsxs("div",{className:"integration-assistant-capability-title-row",children:[a.jsx("div",{className:"integration-assistant-capability-icon","aria-hidden":"true",children:i.icon}),a.jsx("div",{className:"integration-assistant-capability-title-stack",children:a.jsxs("div",{className:"integration-assistant-capability-title-line",children:[a.jsx(y.Title,{heading:6,className:"integration-assistant-map-title integration-assistant-capability-title",children:c(i.titleKey)}),m?.[i.key]?a.jsx("span",{className:`integration-assistant-capability-requirement integration-assistant-capability-requirement-${m[i.key]}`,children:k(m[i.key])}):null]})})]}),a.jsx("span",{className:"integration-assistant-capability-arrow",children:"→"})]}),a.jsx(y.Paragraph,{className:"integration-assistant-capability-summary",children:c(i.summaryKey)})]}),i.apiTags.length?a.jsx("div",{className:"integration-assistant-capability-tags",children:i.apiTags.slice(0,2).map(s=>a.jsx("span",{className:"integration-assistant-capability-tag",children:s},s))}):null,a.jsx("div",{className:"integration-assistant-capability-footer",children:a.jsx(y.Text,{className:"integration-assistant-capability-cta",children:n("ia.action.openGuide")})})]},i.key))})},M=({sections:e})=>{const l=t=>n(t),[m,d]=u.useState({}),c=u.useMemo(()=>e.map(t=>`${t.key}:${t.defaultCollapsed?1:0}:${t.collapsible===!1?0:1}`).join("|"),[e]);return u.useEffect(()=>{d(t=>e.reduce((o,i)=>(o[i.key]=t[i.key]??i.defaultCollapsed??!1,o),{}))},[c,e]),a.jsx(a.Fragment,{children:e.map(t=>{const o=t.capabilityKeys.map(r=>g[r]).filter(r=>!r.hidden);if(o.length===0)return null;const i=t.collapsible!==!1,s=i?m[t.key]:!1,p=o.length===1?"integration-assistant-map-section-grid-one":t.gridClassName,v=!t.hideHeader,h=()=>{d(r=>({...r,[t.key]:!1}))},x=()=>{d(r=>({...r,[t.key]:!r[t.key]}))};return a.jsxs("section",{className:`${t.sectionClassName} ${s?"integration-assistant-map-section-collapsed":""}`,role:s?"button":void 0,tabIndex:s?0:void 0,onClick:s?h:void 0,onKeyDown:r=>{!s||r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),h())},children:[v?a.jsxs("div",{className:"integration-assistant-map-section-head",children:[a.jsxs("div",{className:"integration-assistant-map-section-head-main",children:[a.jsx(y.Title,{heading:4,className:"integration-assistant-map-section-title",children:l(t.titleKey)}),a.jsx(y.Paragraph,{className:"integration-assistant-section-desc",children:l(t.descriptionKey)})]}),i?a.jsx(N,{className:"integration-assistant-map-section-toggle",theme:"borderless",onClick:r=>{r.stopPropagation(),x()},children:s?n("netDiagExpand"):n("netDiagCollapse")}):null]}):null,s?null:a.jsx(f,{capabilityKeys:t.capabilityKeys,gridClassName:p,capabilityRequirementMap:t.capabilityRequirementMap})]},t.key)})})},$=({mode:e,compact:l=!1,clickableTags:m=!1})=>{const d=b(),c=s=>n(s),t=e.capabilityKeys.filter(s=>e.capabilityRequirementMap[s]==="required"),o=e.capabilityKeys.filter(s=>e.capabilityRequirementMap[s]==="optional"),i=s=>s.map(p=>m?a.jsx("button",{type:"button",className:"integration-assistant-capability-tag integration-assistant-capability-tag-action",onClick:()=>d(`/integration_assistant/${p}`),children:c(g[p].titleKey)},`${e.key}-${p}`):a.jsx("span",{className:"integration-assistant-capability-tag",children:c(g[p].titleKey)},`${e.key}-${p}`));return a.jsxs("div",{className:`integration-assistant-mode-summary ${l?"compact":""}`,children:[a.jsx(y.Paragraph,{className:"integration-assistant-mode-summary-text",children:c(e.summaryKey)}),a.jsxs("div",{className:"integration-assistant-mode-summary-list",children:[a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.required")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(t)})]}),o.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.optional")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(o)})]}):null,e.supportCapabilityKeys.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.support")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(e.supportCapabilityKeys)})]}):null,e.experimentalCapabilityKeys.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.experimental")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(e.experimentalCapabilityKeys)})]}):null]})]})};export{f as C,$ as M,M as a,K as b,C as f,q as m,z as o};