@darkclaw921/umgt 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/server/agents/core-tools.d.ts +6 -2
- package/dist/server/agents/core-tools.js +8 -3
- package/dist/server/agents/core-tools.js.map +1 -1
- package/dist/server/agents/core.js +4 -3
- package/dist/server/agents/core.js.map +1 -1
- package/dist/server/app.js +2 -1
- package/dist/server/app.js.map +1 -1
- package/dist/server/asset-media.d.ts +2 -1
- package/dist/server/asset-media.js +1 -1
- package/dist/server/asset-media.js.map +1 -1
- package/dist/server/chat-computer.d.ts +3 -1
- package/dist/server/chat-computer.js +8 -3
- package/dist/server/chat-computer.js.map +1 -1
- package/dist/server/chat.js +4 -3
- package/dist/server/chat.js.map +1 -1
- package/dist/server/core-client.d.ts +4 -0
- package/dist/server/core-client.js +19 -0
- package/dist/server/core-client.js.map +1 -1
- package/dist/server/generated-media.d.ts +19 -0
- package/dist/server/generated-media.js +342 -0
- package/dist/server/generated-media.js.map +1 -0
- package/dist/server/reports.d.ts +4 -0
- package/dist/server/reports.js +40 -0
- package/dist/server/reports.js.map +1 -0
- package/dist/server/routes.js +7 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/server/updates.d.ts +28 -0
- package/dist/server/updates.js +99 -0
- package/dist/server/updates.js.map +1 -0
- package/dist/shared/generated-media.d.ts +2 -0
- package/dist/shared/generated-media.js +3 -0
- package/dist/shared/generated-media.js.map +1 -0
- package/dist/web/assets/AgentActivity-DRuju8iC.js +9 -0
- package/dist/web/assets/{ArrowRight.es-rFSWI60-.js → ArrowRight.es-9w41WqD8.js} +1 -1
- package/dist/web/assets/{ArrowUpRight.es-9AGQAwc-.js → ArrowUpRight.es-BmIrpjWN.js} +1 -1
- package/dist/web/assets/{AssetMediaPreview-Cqs-ltSx.js → AssetMediaPreview-D2cd6oQO.js} +1 -1
- package/dist/web/assets/AssetSelectionWizard-7SBX7wym.js +1 -0
- package/dist/web/assets/{CaretDown.es-BF-GEzW4.js → CaretDown.es-Cq33NYip.js} +1 -1
- package/dist/web/assets/{CheckCircle.es-CAQfdit1.js → CheckCircle.es-D5B3hdvz.js} +1 -1
- package/dist/web/assets/CoreAccount-BfH0gEKJ.js +1 -0
- package/dist/web/assets/{DownloadSimple.es-CwuHLlwX.js → DownloadSimple.es-DwOWFbs2.js} +1 -1
- package/dist/web/assets/{FileText.es-C7Qe_oPL.js → FileText.es-D83IIiOG.js} +1 -1
- package/dist/web/assets/{ImageSquare.es-DXp8f5Py.js → ImageSquare.es-DxCFt99_.js} +1 -1
- package/dist/web/assets/KidsApp-ChVKRU9B.js +2 -0
- package/dist/web/assets/{MagnifyingGlass.es-DAAoXLM5.js → MagnifyingGlass.es-rkdOU2rH.js} +1 -1
- package/dist/web/assets/PaperPlaneRight.es-U0twumpP.js +1 -0
- package/dist/web/assets/{PencilSimple.es-B8ERAsFN.js → PencilSimple.es-JVHwRvGx.js} +1 -1
- package/dist/web/assets/PlainChat-C4V_wRVc.js +1 -0
- package/dist/web/assets/{Sparkle.es-B2bpSK_D.js → Sparkle.es-CmGpvnNm.js} +1 -1
- package/dist/web/assets/{Square.es-POdDsCpj.js → Square.es-BjNN9Ypc.js} +1 -1
- package/dist/web/assets/{UploadSimple.es-DIzZ2Med.js → UploadSimple.es-DxIuxpCC.js} +1 -1
- package/dist/web/assets/{WarningCircle.es-DeosDn7W.js → WarningCircle.es-D63H8cL9.js} +1 -1
- package/dist/web/assets/WorkflowJournal-BlTNapOH.js +1 -0
- package/dist/web/assets/{YandexConfigFields-B4ZNwcRp.js → YandexConfigFields-DDL22Bfw.js} +1 -1
- package/dist/web/assets/{YandexGamesView-JIfZE9xK.js → YandexGamesView-BAuOI0EI.js} +2 -2
- package/dist/web/assets/{dist-BmzcNjGQ.js → dist-7vx7MTaJ.js} +1 -1
- package/dist/web/assets/index-B6_q6dBC.js +13 -0
- package/dist/web/assets/index-Izzbh11U.css +1 -0
- package/dist/web/assets/{IconBase.es-Bvh5HoVq.js → jsx-runtime-CdVFa8IP.js} +1 -1
- package/dist/web/assets/resources-xyl8IpX6.js +1 -0
- package/dist/web/assets/ui-wHE_yBK0.js +41 -0
- package/dist/web/assets/workflow-CEkwrbrT.js +34 -0
- package/dist/web/assets/workflow-s2TewWL6.css +1 -0
- package/dist/web/index.html +4 -4
- package/package.json +11 -1
- package/dist/web/assets/AgentActivity-BmfJK4y-.js +0 -9
- package/dist/web/assets/AssetSelectionWizard-BB3qGs0g.js +0 -1
- package/dist/web/assets/Check.es-C6V98Gx8.js +0 -1
- package/dist/web/assets/CoreAccount-Dkpl4Rzw.js +0 -1
- package/dist/web/assets/KidsApp-BRwDKhZO.js +0 -2
- package/dist/web/assets/PlainChat-DT-l2KJ-.js +0 -1
- package/dist/web/assets/Plus.es-xuvXKifF.js +0 -1
- package/dist/web/assets/WorkflowJournal-CnLiVdGb.js +0 -1
- package/dist/web/assets/index-IRbQKmkO.js +0 -13
- package/dist/web/assets/index-aj0ikA52.css +0 -1
- package/dist/web/assets/resources-CT9ITJ8m.js +0 -1
- package/dist/web/assets/ui-CVc6Nw0y.js +0 -41
- package/dist/web/assets/workflow-BhcU9uvG.css +0 -1
- package/dist/web/assets/workflow-o5sZ-osd.js +0 -34
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./IconBase.es-Bvh5HoVq.js";import{a as i,n as a,o,t as s}from"./ui-CVc6Nw0y.js";import{t as c}from"./CheckCircle.es-CAQfdit1.js";import{t as ee}from"./DownloadSimple.es-CwuHLlwX.js";import{t as l}from"./ImageSquare.es-DXp8f5Py.js";import{n as u,t as d}from"./Square.es-POdDsCpj.js";import{i as f,n as te,r as p,t as m}from"./YandexConfigFields-B4ZNwcRp.js";import{t as h}from"./UploadSimple.es-DIzZ2Med.js";import{t as g}from"./WarningCircle.es-DeosDn7W.js";import{O as _,S as v,k as y}from"./index-IRbQKmkO.js";var b=t(n(),1),x=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z`}))]]),S=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,52H182.42L170,33.34A12,12,0,0,0,160,28H96a12,12,0,0,0-10,5.34L73.57,52H48A28,28,0,0,0,20,80V192a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V80A28,28,0,0,0,208,52Zm4,140a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4H80a12,12,0,0,0,10-5.34L102.42,52h51.15L166,70.66A12,12,0,0,0,176,76h32a4,4,0,0,1,4,4ZM128,84a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,84Zm0,72a24,24,0,1,1,24-24A24,24,0,0,1,128,156Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,64H176L160,40H96L80,64H48A16,16,0,0,0,32,80V192a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V80A16,16,0,0,0,208,64ZM128,168a36,36,0,1,1,36-36A36,36,0,0,1,128,168Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm-44,76a36,36,0,1,1-36-36A36,36,0,0,1,164,132Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,58H179.21L165,36.67A6,6,0,0,0,160,34H96a6,6,0,0,0-5,2.67L76.78,58H48A22,22,0,0,0,26,80V192a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V80A22,22,0,0,0,208,58Zm10,134a10,10,0,0,1-10,10H48a10,10,0,0,1-10-10V80A10,10,0,0,1,48,70H80a6,6,0,0,0,5-2.67L99.21,46h57.57L171,67.33A6,6,0,0,0,176,70h32a10,10,0,0,1,10,10ZM128,90a42,42,0,1,0,42,42A42,42,0,0,0,128,90Zm0,72a30,30,0,1,1,30-30A30,30,0,0,1,128,162Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,60H178.13L163.32,37.78A4,4,0,0,0,160,36H96a4,4,0,0,0-3.32,1.78L77.85,60H48A20,20,0,0,0,28,80V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V80A20,20,0,0,0,208,60Zm12,132a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V80A12,12,0,0,1,48,68H80a4,4,0,0,0,3.33-1.78L98.13,44h59.72l14.82,22.22A4,4,0,0,0,176,68h32a12,12,0,0,1,12,12ZM128,92a40,40,0,1,0,40,40A40,40,0,0,0,128,92Zm0,72a32,32,0,1,1,32-32A32,32,0,0,1,128,164Z`}))]]),C=b.forwardRef((e,t)=>b.createElement(r,{ref:t,...e,weights:x}));C.displayName=`ArrowSquareOutIcon`;var w=C,T=b.forwardRef((e,t)=>b.createElement(r,{ref:t,...e,weights:S}));T.displayName=`CameraIcon`;var E=T,D=e();function O(e){if(e.size>10485760)return`Изображение должно быть не больше 10 МБ.`;if(![`image/png`,`image/jpeg`,`image/webp`].includes(e.type))return`Выберите PNG, JPEG или WebP.`;if(!e.size)return`Выбран пустой файл.`}function k(e,t){return`/api/v1/projects/${encodeURIComponent(e)}/publication/materials/${encodeURIComponent(t)}/file`}function ne({projectId:e,buildId:t,disabled:n,reviewed:r,refreshToken:i,onBusyChange:c}){let[u,d]=(0,b.useState)([]),[f,te]=(0,b.useState)(`icon`),[p,m]=(0,b.useState)(null),[g,v]=(0,b.useState)(``),[x,S]=(0,b.useState)(),[C,w]=(0,b.useState)(``),[T,ne]=(0,b.useState)(!0),[A,j]=(0,b.useState)(new Set),M=(0,b.useRef)(null),N=(0,b.useRef)(null),P=(0,b.useRef)(!0),F=`/projects/${e}/publication/materials`;(0,b.useEffect)(()=>(c(!!g),()=>c(!1)),[g,c]),(0,b.useEffect)(()=>(P.current=!0,()=>{P.current=!1,M.current?.abort()}),[]),(0,b.useEffect)(()=>{let e=!1;return _(F).then(t=>{e||d(t.materials)}).catch(t=>{e||w(y(t))}).finally(()=>{e||ne(!1)}),()=>{e=!0}},[F,i]);let I=e=>d(t=>[e,...t.filter(t=>t.id!==e.id)]),L=e=>{if(e.preventDefault(),!p||g||n||r)return;let i=O(p);if(i){w(i);return}w(``),v(`Загружаем изображение`),S(void 0);let a=new FormData;a.append(`kind`,f),t&&a.append(`buildId`,t),a.append(`file`,p);let o=new XMLHttpRequest;M.current=o,o.open(`POST`,`/api/v1${F}`),o.upload.onprogress=e=>{P.current&&e.lengthComputable&&S(e.loaded/e.total*100)},o.upload.onload=()=>{P.current&&(v(`Проверяем изображение`),S(void 0))};let s=()=>{M.current=null,P.current&&(v(``),S(void 0))};o.onabort=()=>s(),o.onerror=()=>{P.current&&w(`Не удалось загрузить изображение. Файл сохранён в форме — попробуйте ещё раз.`),s()},o.onload=()=>{try{let e=JSON.parse(o.responseText);if(o.status<200||o.status>=300)throw Error(e.message??`Не удалось принять изображение`);P.current&&(I(e),m(null),N.current&&(N.current.value=``))}catch(e){P.current&&w(y(e))}finally{s()}},o.send(a)},R=async(e,t)=>{if(!(g||n||r)){w(``),v(e);try{await t()}catch(e){P.current&&w(y(e))}finally{P.current&&v(``)}}};return(0,D.jsxs)(`section`,{className:`panel publication-materials`,"data-testid":`publication-materials`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Иконка и скриншоты`}),(0,D.jsxs)(`span`,{className:`muted`,children:[u.length,` / 10`]})]}),(0,D.jsx)(`p`,{className:`muted`,children:`Загрузите собственную иконку и кадры игры. Скриншот из превью снимается в отдельной фоновой вкладке Chrome.`}),r&&(0,D.jsx)(s,{type:`info`,children:`Черновик уже подготовлен к проверке. Остановите публикацию, чтобы изменить материалы и проверить их заново.`}),C&&(0,D.jsx)(s,{children:C}),T&&(0,D.jsx)(o,{label:`Загружаем материалы`}),g&&(0,D.jsxs)(`div`,{className:`publication-material-progress`,children:[(0,D.jsx)(o,{label:g,value:x}),M.current&&(0,D.jsx)(a,{tone:`ghost`,onClick:()=>M.current?.abort(),children:`Отменить загрузку`})]}),(0,D.jsxs)(`form`,{onSubmit:L,className:`publication-material-form`,children:[(0,D.jsxs)(`div`,{className:`form-columns`,children:[(0,D.jsxs)(`label`,{children:[`Назначение`,(0,D.jsxs)(`select`,{"data-testid":`publication-material-kind`,value:f,disabled:n||r||!!g,onChange:e=>te(e.target.value),children:[(0,D.jsx)(`option`,{value:`icon`,children:`Иконка`}),(0,D.jsx)(`option`,{value:`screenshot`,children:`Скриншот`})]})]}),(0,D.jsxs)(`label`,{children:[`Изображение`,(0,D.jsx)(`input`,{ref:N,"data-testid":`publication-material-file`,type:`file`,accept:`image/png,image/jpeg,image/webp`,disabled:n||r||!!g,onChange:e=>{m(e.target.files?.[0]??null),w(``)}})]})]}),(0,D.jsx)(`small`,{children:`PNG, JPEG или WebP · до 10 МБ · до 4096 × 4096. Итоговые требования иконки и скриншотов проверяются в консоли платформы.`}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(a,{type:`submit`,"data-testid":`publication-material-upload`,disabled:!p||n||r||!!g||u.length>=10,children:[(0,D.jsx)(h,{size:16}),`Загрузить изображение`]}),(0,D.jsxs)(a,{type:`button`,"data-testid":`publication-material-capture`,disabled:!t||n||r||!!g||u.length>=10,onClick:()=>void R(`Снимаем кадр из игры в Chrome`,async()=>{let e=await _(`${F}/capture`,`POST`,{buildId:t});P.current&&I(e)}),children:[(0,D.jsx)(E,{size:16}),`Кадр из игры`]})]}),!t&&(0,D.jsx)(`small`,{children:`Для снимка из игры сначала выберите готовую сборку.`})]}),(0,D.jsx)(`div`,{className:`publication-material-grid`,children:u.map(i=>(0,D.jsxs)(`article`,{"data-testid":`publication-material-card`,"data-kind":i.kind,"data-source":i.source,children:[A.has(i.id)?(0,D.jsxs)(`div`,{className:`publication-material-fallback`,children:[(0,D.jsx)(l,{size:28}),(0,D.jsx)(`span`,{children:`Не удалось открыть изображение`})]}):(0,D.jsx)(`a`,{href:k(e,i.id),target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Открыть ${i.filename}`,children:(0,D.jsx)(`img`,{"data-testid":`publication-material-image`,src:k(e,i.id),alt:i.kind===`icon`?`Иконка игры`:`Скриншот: ${i.filename}`,loading:`lazy`,onError:()=>j(e=>new Set(e).add(i.id))})}),(0,D.jsxs)(`div`,{className:`publication-material-info`,children:[(0,D.jsx)(`strong`,{children:i.kind===`icon`?`Иконка`:`Скриншот`}),(0,D.jsx)(`span`,{title:i.filename,children:i.filename}),(0,D.jsxs)(`small`,{children:[i.width,` × `,i.height,` · `,(i.bytes/1024).toFixed(0),` КБ`]}),(0,D.jsxs)(`small`,{children:[i.source===`preview`?`Снято из превью игры`:`Загружено вами`,i.buildId&&i.buildId!==t?` · другая сборка`:``]}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(`a`,{href:k(e,i.id),className:`button button-ghost`,download:i.filename,children:[(0,D.jsx)(ee,{size:14}),`Скачать`]}),(0,D.jsx)(a,{tone:`ghost`,disabled:n||r||!!g,"aria-label":`Удалить ${i.filename}`,onClick:()=>void R(`Удаляем материал`,async()=>{await _(`${F}/${encodeURIComponent(i.id)}`,`DELETE`),P.current&&d(e=>e.filter(e=>e.id!==i.id))}),children:`Удалить`})]})]})]},i.id))}),!T&&!u.length&&(0,D.jsx)(`p`,{className:`muted`,children:`Материалов пока нет. Здесь появятся только ваши файлы и реальные кадры игры.`})]})}var A={preparing:`Подготовка`,draft:`Черновик`,materials:`Материалы`,upload:`Загрузка сборки`,testing:`Проверка игры`,review:`Готово к проверке`,moderation:`Модерация`},j={running:`Помощник работает`,paused:`Приостановлено`,stopped:`Остановлено`,interrupted:`Нужно возобновить`,waiting_user:`Нужно ваше действие`,ready_for_review:`Проверьте черновик`,submitted:`Отправлено на модерацию`,failed:`Не удалось завершить`};function M(e){try{let t=new URL(e??``);return t.protocol===`https:`&&!t.username&&!t.password?t.href:void 0}catch{return}}var N={open:`Открыта страница`,read:`Проверено содержимое страницы`,click:`Выполнено действие в консоли`,fill:`Заполнены данные`,upload:`Сборка загружена`,upload_confirmation:`Загрузка подтверждена`,console_validation:`Проверка консоли`,moderation_click:`Запрошена модерация`,moderation_confirmation:`Модерация подтверждена`,agent_report:`Результат работы`};function P(e){if(e.action!==`agent_report`)return e.detail;try{let t=JSON.parse(e.detail);return typeof t.summary==`string`?[t.summary,...Array.isArray(t.checks)?t.checks.map(e=>`${e.passed?`✓`:`!`} ${e.name}: ${e.evidence}`):[]].join(`
|
|
2
|
-
`):e.detail}catch{return e.detail}}function F(e){return e?.status===`ready_for_review`}function I({project:e,events:t,onRefresh:n,onEngine:r,engineBusy:l}){let[h,x]=(0,b.useState)(e.yandexGames??te()),[S,C]=(0,b.useState)([]),[T,E]=(0,b.useState)(``),[O,k]=(0,b.useState)(),[I,L]=(0,b.useState)([]),[R,z]=(0,b.useState)({id:`chrome-mcp`,endpoint:`http://127.0.0.1:12306/mcp`,enabled:!0}),[B,re]=(0,b.useState)(),[V,H]=(0,b.useState)({title:e.name,description:e.description,instructions:``,locales:e.yandexGames?.languages??[`ru`,`en`]}),[U,ie]=(0,b.useState)(``),[W,ae]=(0,b.useState)(!1),[oe,G]=(0,b.useState)(``),[se,ce]=(0,b.useState)(``),[K,le]=(0,b.useState)(!1),[ue,de]=(0,b.useState)(),[fe,pe]=(0,b.useState)(!0),me=(0,b.useRef)(Date.now()),q=(0,b.useRef)(!0),J=t.filter(t=>t.projectId===e.id&&[`publication.updated`,`publication.materials`,`engine.completed`].includes(t.type)).at(-1),Y=J?.id;(0,b.useEffect)(()=>(q.current=!0,()=>{q.current=!1}),[]),(0,b.useEffect)(()=>{let t=!1;return pe(!0),Promise.all([_(`/projects/${e.id}/builds`),_(`/projects/${e.id}/publication`),_(`/browser/config`),_(`/projects/${e.id}/yandex-games/config`)]).then(([e,n,r,i])=>{t||(C(e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))),E(t=>t||e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id||``),k(n.run),L(n.runs),z(r),x(i.config),de(i.configHash),n.run&&H({...n.run.metadata,draftUrl:n.run.draftUrl??n.run.metadata.draftUrl}))}).catch(e=>{t||G(y(e))}).finally(()=>{t||pe(!1)}),()=>{t=!0}},[e.id]),(0,b.useEffect)(()=>{if(!Y)return;let t=!1;return Promise.all([_(`/projects/${e.id}/builds`),_(`/projects/${e.id}/publication`)]).then(([e,n])=>{if(t)return;C(e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt)));let r=J?.type===`engine.completed`&&Date.parse(J.createdAt)>=me.current?J.payload:void 0;E(t=>r?.ok&&e.some(e=>e.id===r.buildId)?r.buildId:t||e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id||``),k(n.run),L(n.runs)}).catch(e=>{t||G(y(e))}),()=>{t=!0}},[Y,e.id]);let X=async()=>{let t=await _(`/projects/${e.id}/publication`);q.current&&(k(t.run),L(t.runs))},Z=async(e,t)=>{if(!U){ie(e),G(``),ce(``);try{await t()}catch(e){q.current&&G(y(e))}finally{q.current&&ie(``)}}},he=async t=>{t.preventDefault(),await Z(`Сохраняем настройки SDK`,async()=>{await _(`/projects/${e.id}/yandex-games/config`,`PUT`,p(h));let t=await _(`/projects/${e.id}/yandex-games/config`);await n(),q.current&&(de(t.configHash),le(!1),ce(`Настройки игры сохранены. Соберите новый ZIP, чтобы применить их.`))})},Q=O?.status===`running`,ge=O&&[`paused`,`stopped`,`interrupted`,`waiting_user`,`failed`].includes(O.status),$=S.find(e=>e.id===T),_e=!!$&&!!ue&&$.configHash!==ue,ve=t=>Z(t===`resume`?`Продолжаем публикацию`:t===`pause`?`Приостанавливаем публикацию`:`Останавливаем публикацию`,async()=>{await _(`/projects/${e.id}/publication/control`,`POST`,{action:t,...t===`resume`&&V.draftUrl?{draftUrl:V.draftUrl}:{}}),await X()});return fe?(0,D.jsx)(o,{label:`Загружаем настройки публикации`}):(0,D.jsxs)(`div`,{className:`yandex-view`,"data-testid":`yandex-games-view`,children:[(0,D.jsx)(i,{title:`Яндекс Игры`,description:`SDK, проверенная Web-сборка и публикация через ваш Chrome.`,action:(0,D.jsxs)(`span`,{className:`badge`,children:[e.engine===`html5`?`HTML5`:`Godot`,` · Web`]})}),oe&&(0,D.jsx)(s,{children:oe}),se&&(0,D.jsx)(s,{type:`success`,children:se}),U&&(0,D.jsx)(o,{label:U}),(0,D.jsxs)(`div`,{className:`yandex-layout`,children:[(0,D.jsxs)(`div`,{className:`yandex-main`,children:[(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Настройки игры`}),(0,D.jsx)(`span`,{className:`muted`,children:`SDK`})]}),(0,D.jsxs)(`form`,{onSubmit:he,children:[(0,D.jsx)(m,{value:h,onChange:e=>{x(e),le(!0)},disabled:!!U||Q}),(0,D.jsx)(`div`,{className:`modal-actions`,children:(0,D.jsx)(a,{type:`submit`,tone:`primary`,"data-testid":`yandex-save-config`,disabled:!!U||W||Q||!h.devices.length||!h.languages.some(Boolean),children:`Сохранить настройки`})})]})]}),(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Сборка для загрузки`}),(0,D.jsx)(a,{"data-testid":`yandex-build`,busy:!!l,disabled:!!U||W||Q||K,onClick:()=>void r(`export`,`yandex-games`),children:`Собрать ZIP`})]}),l&&(0,D.jsx)(o,{label:l}),S.length?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`label`,{children:[`Сборка`,(0,D.jsx)(`select`,{"data-testid":`yandex-build-select`,value:T,onChange:e=>E(e.target.value),children:S.map(e=>(0,D.jsxs)(`option`,{value:e.id,children:[new Date(e.createdAt).toLocaleString(`ru-RU`),` · `,e.validation.ok?`Проверена`:`Есть замечания`]},e.id))})]}),$&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`div`,{className:`yandex-build-result`,"data-testid":`yandex-build-result`,children:[$.validation.ok?(0,D.jsx)(c,{size:20}):(0,D.jsx)(g,{size:20}),(0,D.jsx)(`strong`,{children:$.validation.ok?`Сборка прошла проверку`:`Исправьте ошибки сборки`}),(0,D.jsxs)(`span`,{children:[$.validation.files,` файлов · `,($.validation.bytes/1024/1024).toFixed(1),` МБ`]})]}),(0,D.jsx)(`ul`,{className:`yandex-issues`,children:$.validation.issues.map((e,t)=>(0,D.jsxs)(`li`,{"data-severity":e.severity,children:[e.message,e.file&&(0,D.jsx)(`small`,{children:e.file})]},t))}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(`a`,{className:`button button-default`,"data-testid":`yandex-download`,href:`/api/v1/projects/${e.id}/builds/${$.id}/download`,download:!0,children:[(0,D.jsx)(ee,{size:17}),`Скачать ZIP`]}),(0,D.jsx)(a,{"data-testid":`yandex-validate`,disabled:!!U,onClick:()=>void Z(`Проверяем ZIP`,async()=>{let t=await _(`/projects/${e.id}/builds/${$.id}/validate`,`POST`,{});q.current&&C(e=>e.map(e=>e.id===$.id?{...e,validation:t}:e))}),children:`Проверить ещё раз`})]})]})]}):(0,D.jsx)(`p`,{className:`muted`,children:`Соберите игру. Здесь появятся ZIP и результаты проверки файлов.`})]}),(0,D.jsx)(ne,{projectId:e.id,buildId:$?.validation.ok&&!_e?$.id:void 0,disabled:Q||!!U,reviewed:O?.status===`ready_for_review`,refreshToken:Y,onBusyChange:ae}),(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsx)(`h2`,{children:`Карточка игры`}),(K||_e)&&(0,D.jsx)(s,{type:`info`,children:`Настройки изменились. Сохраните их и соберите новый ZIP перед публикацией.`}),(0,D.jsx)(`form`,{onSubmit:t=>{t.preventDefault(),Z(`Запускаем помощника публикации`,async()=>{await _(`/projects/${e.id}/publication/start`,`POST`,{buildId:T,metadata:{...V,locales:V.locales.map(e=>e.trim()).filter(Boolean),tags:V.tags?.map(e=>e.trim()).filter(Boolean)}}),await X()})},children:(0,D.jsxs)(`div`,{className:`project-form`,children:[(0,D.jsxs)(`label`,{children:[`Название игры`,(0,D.jsx)(`input`,{required:!0,maxLength:100,value:V.title,onChange:e=>H({...V,title:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Описание`,(0,D.jsx)(`textarea`,{required:!0,rows:3,value:V.description,onChange:e=>H({...V,description:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Как играть`,(0,D.jsx)(`textarea`,{required:!0,rows:3,"data-testid":`publication-instructions`,value:V.instructions,onChange:e=>H({...V,instructions:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Языки карточки`,(0,D.jsx)(`input`,{value:V.locales.join(`, `),onChange:e=>H({...V,locales:e.target.value.split(`,`).map(e=>e.trim())})})]}),(0,D.jsxs)(`label`,{children:[`Существующий черновик `,(0,D.jsx)(`span`,{className:`muted`,children:`· необязательно`}),(0,D.jsx)(`input`,{type:`url`,placeholder:`https://games.yandex.ru/console/…`,value:V.draftUrl??``,onChange:e=>H({...V,draftUrl:e.target.value||void 0})})]}),(0,D.jsxs)(`div`,{className:`form-columns`,children:[(0,D.jsxs)(`label`,{children:[`Жанр`,(0,D.jsx)(`input`,{value:V.genre??``,onChange:e=>H({...V,genre:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Возрастной рейтинг`,(0,D.jsx)(`input`,{value:V.ageRating??``,onChange:e=>H({...V,ageRating:e.target.value})})]})]}),(0,D.jsxs)(`label`,{children:[`Теги`,(0,D.jsx)(`input`,{value:V.tags?.join(`, `)??``,onChange:e=>H({...V,tags:e.target.value.split(`,`).map(e=>e.trim())})})]}),(0,D.jsxs)(a,{type:`submit`,"data-testid":`publication-start`,tone:`primary`,disabled:!!U||Q||!!ge||O?.status===`ready_for_review`||W||K||_e||!$?.validation.ok,children:[(0,D.jsx)(f,{size:16}),`Подготовить публикацию`]}),(0,D.jsx)(`small`,{children:`Помощник подготовит черновик, загрузит сборку и проверит игру. Отправку на модерацию вы запускаете отдельно.`})]})})]})]}),(0,D.jsxs)(`aside`,{className:`yandex-side`,children:[(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsx)(`h2`,{children:`Подключение Chrome`}),(0,D.jsx)(`p`,{className:`muted`,children:`Помощник использует Chrome MCP Bridge и расширение в вашем браузере.`}),(0,D.jsxs)(`label`,{children:[`Адрес локального bridge`,(0,D.jsx)(`input`,{"data-testid":`chrome-bridge-endpoint`,value:R.endpoint,onChange:e=>z({...R,endpoint:e.target.value})})]}),(0,D.jsxs)(`label`,{className:`checkbox-options`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:R.enabled,onChange:e=>z({...R,enabled:e.target.checked})}),`Использовать Chrome MCP`]}),(0,D.jsx)(a,{"data-testid":`chrome-connect`,disabled:!!U||Q,onClick:()=>void Z(`Подключаем Chrome и проверяем расширение`,async()=>{await _(`/browser/config`,`PUT`,R);let e=await _(`/browser/diagnostics`,`POST`,{});q.current&&re(e)}),children:`Сохранить и проверить`}),B&&(0,D.jsxs)(`div`,{className:`yandex-diagnostic`,"data-testid":`chrome-diagnostic`,"data-ready":B.available,children:[(0,D.jsx)(`strong`,{children:B.available?`Chrome подключён`:`Подключение требует внимания`}),(0,D.jsx)(`p`,{children:B.message}),(0,D.jsxs)(`ul`,{children:[(0,D.jsxs)(`li`,{children:[`Bridge: `,B.bridgeConnected?`доступен`:`не подключён`]}),(0,D.jsxs)(`li`,{children:[`Расширение: `,B.extensionReady?`готово`:`не готово`]})]}),M(B.setupUrl)&&(0,D.jsxs)(`a`,{href:M(B.setupUrl),target:`_blank`,rel:`noopener noreferrer`,children:[`Настроить расширение `,(0,D.jsx)(w,{size:14})]})]})]}),(0,D.jsxs)(`section`,{className:`panel publication-journal`,"data-testid":`publication-journal`,"data-status":O?.status??`idle`,children:[(0,D.jsx)(`div`,{className:`eyebrow`,children:`ПУБЛИКАЦИЯ`}),(0,D.jsx)(`h2`,{"aria-live":`polite`,children:O?j[O.status]:`Готовы к первому черновику`}),O?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`p`,{children:A[O.stage]}),Q&&(0,D.jsx)(o,{label:A[O.stage]}),` `,O.userAction&&[`waiting_user`,`interrupted`].includes(O.status)&&(0,D.jsx)(s,{children:(0,D.jsx)(v,{id:`publication:${O.id}:user`,children:O.userAction})}),O.error&&(0,D.jsx)(s,{children:O.error}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[Q&&(0,D.jsxs)(a,{"data-testid":`publication-pause`,disabled:!!U,onClick:()=>void ve(`pause`),children:[(0,D.jsx)(u,{size:15}),`Пауза`]}),ge&&(0,D.jsxs)(a,{"data-testid":`publication-resume`,disabled:!!U,onClick:()=>void ve(`resume`),children:[(0,D.jsx)(f,{size:15}),O.status===`waiting_user`?`Я выполнил действие`:`Продолжить`]}),(Q||ge||O.status===`ready_for_review`)&&(0,D.jsxs)(a,{"data-testid":`publication-stop`,disabled:!!U,onClick:()=>void ve(`stop`),children:[(0,D.jsx)(d,{size:15}),`Остановить`]})]}),M(O.draftUrl)&&(0,D.jsxs)(`a`,{href:M(O.draftUrl),target:`_blank`,rel:`noopener noreferrer`,children:[`Открыть черновик `,(0,D.jsx)(w,{size:14})]}),(0,D.jsx)(`ol`,{className:`publication-evidence`,children:O.evidence.map((e,t)=>(0,D.jsxs)(`li`,{children:[(0,D.jsx)(`span`,{className:`publication-dot`}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`strong`,{children:N[e.action]??e.action}),(0,D.jsx)(`p`,{children:(0,D.jsx)(v,{id:`publication:${O.id}:${t}`,children:P(e)})}),(0,D.jsx)(`small`,{children:new Date(e.at).toLocaleTimeString(`ru-RU`)})]})]},`${e.at}:${t}`))}),F(O)&&(0,D.jsxs)(`div`,{className:`publication-submit`,children:[(0,D.jsx)(`p`,{children:`Проверьте карточку, материалы и игру в консоли. Это отдельное действие отправит текущий черновик на модерацию.`}),(0,D.jsx)(a,{"data-testid":`publication-submit`,tone:`primary`,disabled:!!U||W,onClick:()=>void Z(`Отправляем на модерацию`,async()=>{await _(`/projects/${e.id}/publication/submit`,`POST`,{runId:O.id}),await X()}),children:`Отправить на модерацию`})]})]}):(0,D.jsx)(`p`,{className:`muted`,children:`Сначала проверьте сборку и подключите Chrome. Вход в аккаунт и CAPTCHA выполняются вами в браузере.`}),I.length>1&&(0,D.jsxs)(`details`,{children:[(0,D.jsxs)(`summary`,{children:[`Предыдущие попытки · `,I.length-1]}),I.filter(e=>e.id!==O?.id).map(e=>(0,D.jsxs)(`p`,{children:[new Date(e.createdAt).toLocaleString(`ru-RU`),` · `,j[e.status]]},e.id))]})]})]})]})]})}export{I as YandexGamesView};
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{t as i}from"./CheckCircle.es-D5B3hdvz.js";import{a,n as o,o as s,t as c}from"./ui-wHE_yBK0.js";import{t as ee}from"./DownloadSimple.es-DwOWFbs2.js";import{t as l}from"./ImageSquare.es-DxCFt99_.js";import{n as u,t as d}from"./Square.es-BjNN9Ypc.js";import{i as f,n as te,r as p,t as m}from"./YandexConfigFields-DDL22Bfw.js";import{t as h}from"./UploadSimple.es-DxIuxpCC.js";import{t as g}from"./WarningCircle.es-D63H8cL9.js";import{M as _,S as v,j as y}from"./index-B6_q6dBC.js";var b=t(n(),1),x=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z`}))]]),S=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,52H182.42L170,33.34A12,12,0,0,0,160,28H96a12,12,0,0,0-10,5.34L73.57,52H48A28,28,0,0,0,20,80V192a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V80A28,28,0,0,0,208,52Zm4,140a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4H80a12,12,0,0,0,10-5.34L102.42,52h51.15L166,70.66A12,12,0,0,0,176,76h32a4,4,0,0,1,4,4ZM128,84a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,84Zm0,72a24,24,0,1,1,24-24A24,24,0,0,1,128,156Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,64H176L160,40H96L80,64H48A16,16,0,0,0,32,80V192a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V80A16,16,0,0,0,208,64ZM128,168a36,36,0,1,1,36-36A36,36,0,0,1,128,168Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm-44,76a36,36,0,1,1-36-36A36,36,0,0,1,164,132Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,58H179.21L165,36.67A6,6,0,0,0,160,34H96a6,6,0,0,0-5,2.67L76.78,58H48A22,22,0,0,0,26,80V192a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V80A22,22,0,0,0,208,58Zm10,134a10,10,0,0,1-10,10H48a10,10,0,0,1-10-10V80A10,10,0,0,1,48,70H80a6,6,0,0,0,5-2.67L99.21,46h57.57L171,67.33A6,6,0,0,0,176,70h32a10,10,0,0,1,10,10ZM128,90a42,42,0,1,0,42,42A42,42,0,0,0,128,90Zm0,72a30,30,0,1,1,30-30A30,30,0,0,1,128,162Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H80a8,8,0,0,0,6.66-3.56L100.28,48h55.43l13.63,20.44A8,8,0,0,0,176,72h32a8,8,0,0,1,8,8ZM128,88a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,88Zm0,72a28,28,0,1,1,28-28A28,28,0,0,1,128,160Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M208,60H178.13L163.32,37.78A4,4,0,0,0,160,36H96a4,4,0,0,0-3.32,1.78L77.85,60H48A20,20,0,0,0,28,80V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V80A20,20,0,0,0,208,60Zm12,132a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V80A12,12,0,0,1,48,68H80a4,4,0,0,0,3.33-1.78L98.13,44h59.72l14.82,22.22A4,4,0,0,0,176,68h32a12,12,0,0,1,12,12ZM128,92a40,40,0,1,0,40,40A40,40,0,0,0,128,92Zm0,72a32,32,0,1,1,32-32A32,32,0,0,1,128,164Z`}))]]),C=b.forwardRef((t,n)=>b.createElement(e,{ref:n,...t,weights:x}));C.displayName=`ArrowSquareOutIcon`;var w=C,T=b.forwardRef((t,n)=>b.createElement(e,{ref:n,...t,weights:S}));T.displayName=`CameraIcon`;var E=T,D=r();function O(e){if(e.size>10485760)return`Изображение должно быть не больше 10 МБ.`;if(![`image/png`,`image/jpeg`,`image/webp`].includes(e.type))return`Выберите PNG, JPEG или WebP.`;if(!e.size)return`Выбран пустой файл.`}function k(e,t){return`/api/v1/projects/${encodeURIComponent(e)}/publication/materials/${encodeURIComponent(t)}/file`}function ne({projectId:e,buildId:t,disabled:n,reviewed:r,refreshToken:i,onBusyChange:a}){let[u,d]=(0,b.useState)([]),[f,te]=(0,b.useState)(`icon`),[p,m]=(0,b.useState)(null),[g,v]=(0,b.useState)(``),[x,S]=(0,b.useState)(),[C,w]=(0,b.useState)(``),[T,ne]=(0,b.useState)(!0),[A,j]=(0,b.useState)(new Set),M=(0,b.useRef)(null),N=(0,b.useRef)(null),P=(0,b.useRef)(!0),F=`/projects/${e}/publication/materials`;(0,b.useEffect)(()=>(a(!!g),()=>a(!1)),[g,a]),(0,b.useEffect)(()=>(P.current=!0,()=>{P.current=!1,M.current?.abort()}),[]),(0,b.useEffect)(()=>{let e=!1;return y(F).then(t=>{e||d(t.materials)}).catch(t=>{e||w(_(t))}).finally(()=>{e||ne(!1)}),()=>{e=!0}},[F,i]);let I=e=>d(t=>[e,...t.filter(t=>t.id!==e.id)]),L=e=>{if(e.preventDefault(),!p||g||n||r)return;let i=O(p);if(i){w(i);return}w(``),v(`Загружаем изображение`),S(void 0);let a=new FormData;a.append(`kind`,f),t&&a.append(`buildId`,t),a.append(`file`,p);let o=new XMLHttpRequest;M.current=o,o.open(`POST`,`/api/v1${F}`),o.upload.onprogress=e=>{P.current&&e.lengthComputable&&S(e.loaded/e.total*100)},o.upload.onload=()=>{P.current&&(v(`Проверяем изображение`),S(void 0))};let s=()=>{M.current=null,P.current&&(v(``),S(void 0))};o.onabort=()=>s(),o.onerror=()=>{P.current&&w(`Не удалось загрузить изображение. Файл сохранён в форме — попробуйте ещё раз.`),s()},o.onload=()=>{try{let e=JSON.parse(o.responseText);if(o.status<200||o.status>=300)throw Error(e.message??`Не удалось принять изображение`);P.current&&(I(e),m(null),N.current&&(N.current.value=``))}catch(e){P.current&&w(_(e))}finally{s()}},o.send(a)},R=async(e,t)=>{if(!(g||n||r)){w(``),v(e);try{await t()}catch(e){P.current&&w(_(e))}finally{P.current&&v(``)}}};return(0,D.jsxs)(`section`,{className:`panel publication-materials`,"data-testid":`publication-materials`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Иконка и скриншоты`}),(0,D.jsxs)(`span`,{className:`muted`,children:[u.length,` / 10`]})]}),(0,D.jsx)(`p`,{className:`muted`,children:`Загрузите собственную иконку и кадры игры. Скриншот из превью снимается в отдельной фоновой вкладке Chrome.`}),r&&(0,D.jsx)(c,{type:`info`,children:`Черновик уже подготовлен к проверке. Остановите публикацию, чтобы изменить материалы и проверить их заново.`}),C&&(0,D.jsx)(c,{children:C}),T&&(0,D.jsx)(s,{label:`Загружаем материалы`}),g&&(0,D.jsxs)(`div`,{className:`publication-material-progress`,children:[(0,D.jsx)(s,{label:g,value:x}),M.current&&(0,D.jsx)(o,{tone:`ghost`,onClick:()=>M.current?.abort(),children:`Отменить загрузку`})]}),(0,D.jsxs)(`form`,{onSubmit:L,className:`publication-material-form`,children:[(0,D.jsxs)(`div`,{className:`form-columns`,children:[(0,D.jsxs)(`label`,{children:[`Назначение`,(0,D.jsxs)(`select`,{"data-testid":`publication-material-kind`,value:f,disabled:n||r||!!g,onChange:e=>te(e.target.value),children:[(0,D.jsx)(`option`,{value:`icon`,children:`Иконка`}),(0,D.jsx)(`option`,{value:`screenshot`,children:`Скриншот`})]})]}),(0,D.jsxs)(`label`,{children:[`Изображение`,(0,D.jsx)(`input`,{ref:N,"data-testid":`publication-material-file`,type:`file`,accept:`image/png,image/jpeg,image/webp`,disabled:n||r||!!g,onChange:e=>{m(e.target.files?.[0]??null),w(``)}})]})]}),(0,D.jsx)(`small`,{children:`PNG, JPEG или WebP · до 10 МБ · до 4096 × 4096. Итоговые требования иконки и скриншотов проверяются в консоли платформы.`}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(o,{type:`submit`,"data-testid":`publication-material-upload`,disabled:!p||n||r||!!g||u.length>=10,children:[(0,D.jsx)(h,{size:16}),`Загрузить изображение`]}),(0,D.jsxs)(o,{type:`button`,"data-testid":`publication-material-capture`,disabled:!t||n||r||!!g||u.length>=10,onClick:()=>void R(`Снимаем кадр из игры в Chrome`,async()=>{let e=await y(`${F}/capture`,`POST`,{buildId:t});P.current&&I(e)}),children:[(0,D.jsx)(E,{size:16}),`Кадр из игры`]})]}),!t&&(0,D.jsx)(`small`,{children:`Для снимка из игры сначала выберите готовую сборку.`})]}),(0,D.jsx)(`div`,{className:`publication-material-grid`,children:u.map(i=>(0,D.jsxs)(`article`,{"data-testid":`publication-material-card`,"data-kind":i.kind,"data-source":i.source,children:[A.has(i.id)?(0,D.jsxs)(`div`,{className:`publication-material-fallback`,children:[(0,D.jsx)(l,{size:28}),(0,D.jsx)(`span`,{children:`Не удалось открыть изображение`})]}):(0,D.jsx)(`a`,{href:k(e,i.id),target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Открыть ${i.filename}`,children:(0,D.jsx)(`img`,{"data-testid":`publication-material-image`,src:k(e,i.id),alt:i.kind===`icon`?`Иконка игры`:`Скриншот: ${i.filename}`,loading:`lazy`,onError:()=>j(e=>new Set(e).add(i.id))})}),(0,D.jsxs)(`div`,{className:`publication-material-info`,children:[(0,D.jsx)(`strong`,{children:i.kind===`icon`?`Иконка`:`Скриншот`}),(0,D.jsx)(`span`,{title:i.filename,children:i.filename}),(0,D.jsxs)(`small`,{children:[i.width,` × `,i.height,` · `,(i.bytes/1024).toFixed(0),` КБ`]}),(0,D.jsxs)(`small`,{children:[i.source===`preview`?`Снято из превью игры`:`Загружено вами`,i.buildId&&i.buildId!==t?` · другая сборка`:``]}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(`a`,{href:k(e,i.id),className:`button button-ghost`,download:i.filename,children:[(0,D.jsx)(ee,{size:14}),`Скачать`]}),(0,D.jsx)(o,{tone:`ghost`,disabled:n||r||!!g,"aria-label":`Удалить ${i.filename}`,onClick:()=>void R(`Удаляем материал`,async()=>{await y(`${F}/${encodeURIComponent(i.id)}`,`DELETE`),P.current&&d(e=>e.filter(e=>e.id!==i.id))}),children:`Удалить`})]})]})]},i.id))}),!T&&!u.length&&(0,D.jsx)(`p`,{className:`muted`,children:`Материалов пока нет. Здесь появятся только ваши файлы и реальные кадры игры.`})]})}var A={preparing:`Подготовка`,draft:`Черновик`,materials:`Материалы`,upload:`Загрузка сборки`,testing:`Проверка игры`,review:`Готово к проверке`,moderation:`Модерация`},j={running:`Помощник работает`,paused:`Приостановлено`,stopped:`Остановлено`,interrupted:`Нужно возобновить`,waiting_user:`Нужно ваше действие`,ready_for_review:`Проверьте черновик`,submitted:`Отправлено на модерацию`,failed:`Не удалось завершить`};function M(e){try{let t=new URL(e??``);return t.protocol===`https:`&&!t.username&&!t.password?t.href:void 0}catch{return}}var N={open:`Открыта страница`,read:`Проверено содержимое страницы`,click:`Выполнено действие в консоли`,fill:`Заполнены данные`,upload:`Сборка загружена`,upload_confirmation:`Загрузка подтверждена`,console_validation:`Проверка консоли`,moderation_click:`Запрошена модерация`,moderation_confirmation:`Модерация подтверждена`,agent_report:`Результат работы`};function P(e){if(e.action!==`agent_report`)return e.detail;try{let t=JSON.parse(e.detail);return typeof t.summary==`string`?[t.summary,...Array.isArray(t.checks)?t.checks.map(e=>`${e.passed?`✓`:`!`} ${e.name}: ${e.evidence}`):[]].join(`
|
|
2
|
+
`):e.detail}catch{return e.detail}}function F(e){return e?.status===`ready_for_review`}function I({project:e,events:t,onRefresh:n,onEngine:r,engineBusy:l}){let[h,x]=(0,b.useState)(e.yandexGames??te()),[S,C]=(0,b.useState)([]),[T,E]=(0,b.useState)(``),[O,k]=(0,b.useState)(),[I,L]=(0,b.useState)([]),[R,z]=(0,b.useState)({id:`chrome-mcp`,endpoint:`http://127.0.0.1:12306/mcp`,enabled:!0}),[B,re]=(0,b.useState)(),[V,H]=(0,b.useState)({title:e.name,description:e.description,instructions:``,locales:e.yandexGames?.languages??[`ru`,`en`]}),[U,ie]=(0,b.useState)(``),[W,ae]=(0,b.useState)(!1),[oe,G]=(0,b.useState)(``),[se,ce]=(0,b.useState)(``),[K,le]=(0,b.useState)(!1),[ue,de]=(0,b.useState)(),[fe,pe]=(0,b.useState)(!0),me=(0,b.useRef)(Date.now()),q=(0,b.useRef)(!0),J=t.filter(t=>t.projectId===e.id&&[`publication.updated`,`publication.materials`,`engine.completed`].includes(t.type)).at(-1),Y=J?.id;(0,b.useEffect)(()=>(q.current=!0,()=>{q.current=!1}),[]),(0,b.useEffect)(()=>{let t=!1;return pe(!0),Promise.all([y(`/projects/${e.id}/builds`),y(`/projects/${e.id}/publication`),y(`/browser/config`),y(`/projects/${e.id}/yandex-games/config`)]).then(([e,n,r,i])=>{t||(C(e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))),E(t=>t||e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id||``),k(n.run),L(n.runs),z(r),x(i.config),de(i.configHash),n.run&&H({...n.run.metadata,draftUrl:n.run.draftUrl??n.run.metadata.draftUrl}))}).catch(e=>{t||G(_(e))}).finally(()=>{t||pe(!1)}),()=>{t=!0}},[e.id]),(0,b.useEffect)(()=>{if(!Y)return;let t=!1;return Promise.all([y(`/projects/${e.id}/builds`),y(`/projects/${e.id}/publication`)]).then(([e,n])=>{if(t)return;C(e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt)));let r=J?.type===`engine.completed`&&Date.parse(J.createdAt)>=me.current?J.payload:void 0;E(t=>r?.ok&&e.some(e=>e.id===r.buildId)?r.buildId:t||e.filter(e=>e.platform===`yandex-games`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id||``),k(n.run),L(n.runs)}).catch(e=>{t||G(_(e))}),()=>{t=!0}},[Y,e.id]);let he=async()=>{let t=await y(`/projects/${e.id}/publication`);q.current&&(k(t.run),L(t.runs))},X=async(e,t)=>{if(!U){ie(e),G(``),ce(``);try{await t()}catch(e){q.current&&G(_(e))}finally{q.current&&ie(``)}}},ge=async t=>{t.preventDefault(),await X(`Сохраняем настройки SDK`,async()=>{await y(`/projects/${e.id}/yandex-games/config`,`PUT`,p(h));let t=await y(`/projects/${e.id}/yandex-games/config`);await n(),q.current&&(de(t.configHash),le(!1),ce(`Настройки игры сохранены. Соберите новый ZIP, чтобы применить их.`))})},Z=O?.status===`running`,_e=O&&[`paused`,`stopped`,`interrupted`,`waiting_user`,`failed`].includes(O.status),Q=S.find(e=>e.id===T),ve=!!Q&&!!ue&&Q.configHash!==ue,$=t=>X(t===`resume`?`Продолжаем публикацию`:t===`pause`?`Приостанавливаем публикацию`:`Останавливаем публикацию`,async()=>{await y(`/projects/${e.id}/publication/control`,`POST`,{action:t,...t===`resume`&&V.draftUrl?{draftUrl:V.draftUrl}:{}}),await he()});return fe?(0,D.jsx)(s,{label:`Загружаем настройки публикации`}):(0,D.jsxs)(`div`,{className:`yandex-view`,"data-testid":`yandex-games-view`,children:[(0,D.jsx)(a,{title:`Яндекс Игры`,description:`SDK, проверенная Web-сборка и публикация через ваш Chrome.`,action:(0,D.jsxs)(`span`,{className:`badge`,children:[e.engine===`html5`?`HTML5`:`Godot`,` · Web`]})}),oe&&(0,D.jsx)(c,{children:oe}),se&&(0,D.jsx)(c,{type:`success`,children:se}),U&&(0,D.jsx)(s,{label:U}),(0,D.jsxs)(`div`,{className:`yandex-layout`,children:[(0,D.jsxs)(`div`,{className:`yandex-main`,children:[(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Настройки игры`}),(0,D.jsx)(`span`,{className:`muted`,children:`SDK`})]}),(0,D.jsxs)(`form`,{onSubmit:ge,children:[(0,D.jsx)(m,{value:h,onChange:e=>{x(e),le(!0)},disabled:!!U||Z}),(0,D.jsx)(`div`,{className:`modal-actions`,children:(0,D.jsx)(o,{type:`submit`,tone:`primary`,"data-testid":`yandex-save-config`,disabled:!!U||W||Z||!h.devices.length||!h.languages.some(Boolean),children:`Сохранить настройки`})})]})]}),(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsxs)(`div`,{className:`row-between`,children:[(0,D.jsx)(`h2`,{children:`Сборка для загрузки`}),(0,D.jsx)(o,{"data-testid":`yandex-build`,busy:!!l,disabled:!!U||W||Z||K,onClick:()=>void r(`export`,`yandex-games`),children:`Собрать ZIP`})]}),l&&(0,D.jsx)(s,{label:l}),S.length?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`label`,{children:[`Сборка`,(0,D.jsx)(`select`,{"data-testid":`yandex-build-select`,value:T,onChange:e=>E(e.target.value),children:S.map(e=>(0,D.jsxs)(`option`,{value:e.id,children:[new Date(e.createdAt).toLocaleString(`ru-RU`),` · `,e.validation.ok?`Проверена`:`Есть замечания`]},e.id))})]}),Q&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`div`,{className:`yandex-build-result`,"data-testid":`yandex-build-result`,children:[Q.validation.ok?(0,D.jsx)(i,{size:20}):(0,D.jsx)(g,{size:20}),(0,D.jsx)(`strong`,{children:Q.validation.ok?`Сборка прошла проверку`:`Исправьте ошибки сборки`}),(0,D.jsxs)(`span`,{children:[Q.validation.files,` файлов · `,(Q.validation.bytes/1024/1024).toFixed(1),` МБ`]})]}),(0,D.jsx)(`ul`,{className:`yandex-issues`,children:Q.validation.issues.map((e,t)=>(0,D.jsxs)(`li`,{"data-severity":e.severity,children:[e.message,e.file&&(0,D.jsx)(`small`,{children:e.file})]},t))}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[(0,D.jsxs)(`a`,{className:`button button-default`,"data-testid":`yandex-download`,href:`/api/v1/projects/${e.id}/builds/${Q.id}/download`,download:!0,children:[(0,D.jsx)(ee,{size:17}),`Скачать ZIP`]}),(0,D.jsx)(o,{"data-testid":`yandex-validate`,disabled:!!U,onClick:()=>void X(`Проверяем ZIP`,async()=>{let t=await y(`/projects/${e.id}/builds/${Q.id}/validate`,`POST`,{});q.current&&C(e=>e.map(e=>e.id===Q.id?{...e,validation:t}:e))}),children:`Проверить ещё раз`})]})]})]}):(0,D.jsx)(`p`,{className:`muted`,children:`Соберите игру. Здесь появятся ZIP и результаты проверки файлов.`})]}),(0,D.jsx)(ne,{projectId:e.id,buildId:Q?.validation.ok&&!ve?Q.id:void 0,disabled:Z||!!U,reviewed:O?.status===`ready_for_review`,refreshToken:Y,onBusyChange:ae}),(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsx)(`h2`,{children:`Карточка игры`}),(K||ve)&&(0,D.jsx)(c,{type:`info`,children:`Настройки изменились. Сохраните их и соберите новый ZIP перед публикацией.`}),(0,D.jsx)(`form`,{onSubmit:t=>{t.preventDefault(),X(`Запускаем помощника публикации`,async()=>{await y(`/projects/${e.id}/publication/start`,`POST`,{buildId:T,metadata:{...V,locales:V.locales.map(e=>e.trim()).filter(Boolean),tags:V.tags?.map(e=>e.trim()).filter(Boolean)}}),await he()})},children:(0,D.jsxs)(`div`,{className:`project-form`,children:[(0,D.jsxs)(`label`,{children:[`Название игры`,(0,D.jsx)(`input`,{required:!0,maxLength:100,value:V.title,onChange:e=>H({...V,title:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Описание`,(0,D.jsx)(`textarea`,{required:!0,rows:3,value:V.description,onChange:e=>H({...V,description:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Как играть`,(0,D.jsx)(`textarea`,{required:!0,rows:3,"data-testid":`publication-instructions`,value:V.instructions,onChange:e=>H({...V,instructions:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Языки карточки`,(0,D.jsx)(`input`,{value:V.locales.join(`, `),onChange:e=>H({...V,locales:e.target.value.split(`,`).map(e=>e.trim())})})]}),(0,D.jsxs)(`label`,{children:[`Существующий черновик `,(0,D.jsx)(`span`,{className:`muted`,children:`· необязательно`}),(0,D.jsx)(`input`,{type:`url`,placeholder:`https://games.yandex.ru/console/…`,value:V.draftUrl??``,onChange:e=>H({...V,draftUrl:e.target.value||void 0})})]}),(0,D.jsxs)(`div`,{className:`form-columns`,children:[(0,D.jsxs)(`label`,{children:[`Жанр`,(0,D.jsx)(`input`,{value:V.genre??``,onChange:e=>H({...V,genre:e.target.value})})]}),(0,D.jsxs)(`label`,{children:[`Возрастной рейтинг`,(0,D.jsx)(`input`,{value:V.ageRating??``,onChange:e=>H({...V,ageRating:e.target.value})})]})]}),(0,D.jsxs)(`label`,{children:[`Теги`,(0,D.jsx)(`input`,{value:V.tags?.join(`, `)??``,onChange:e=>H({...V,tags:e.target.value.split(`,`).map(e=>e.trim())})})]}),(0,D.jsxs)(o,{type:`submit`,"data-testid":`publication-start`,tone:`primary`,disabled:!!U||Z||!!_e||O?.status===`ready_for_review`||W||K||ve||!Q?.validation.ok,children:[(0,D.jsx)(f,{size:16}),`Подготовить публикацию`]}),(0,D.jsx)(`small`,{children:`Помощник подготовит черновик, загрузит сборку и проверит игру. Отправку на модерацию вы запускаете отдельно.`})]})})]})]}),(0,D.jsxs)(`aside`,{className:`yandex-side`,children:[(0,D.jsxs)(`section`,{className:`panel`,children:[(0,D.jsx)(`h2`,{children:`Подключение Chrome`}),(0,D.jsx)(`p`,{className:`muted`,children:`Помощник использует Chrome MCP Bridge и расширение в вашем браузере.`}),(0,D.jsxs)(`label`,{children:[`Адрес локального bridge`,(0,D.jsx)(`input`,{"data-testid":`chrome-bridge-endpoint`,value:R.endpoint,onChange:e=>z({...R,endpoint:e.target.value})})]}),(0,D.jsxs)(`label`,{className:`checkbox-options`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:R.enabled,onChange:e=>z({...R,enabled:e.target.checked})}),`Использовать Chrome MCP`]}),(0,D.jsx)(o,{"data-testid":`chrome-connect`,disabled:!!U||Z,onClick:()=>void X(`Подключаем Chrome и проверяем расширение`,async()=>{await y(`/browser/config`,`PUT`,R);let e=await y(`/browser/diagnostics`,`POST`,{});q.current&&re(e)}),children:`Сохранить и проверить`}),B&&(0,D.jsxs)(`div`,{className:`yandex-diagnostic`,"data-testid":`chrome-diagnostic`,"data-ready":B.available,children:[(0,D.jsx)(`strong`,{children:B.available?`Chrome подключён`:`Подключение требует внимания`}),(0,D.jsx)(`p`,{children:B.message}),(0,D.jsxs)(`ul`,{children:[(0,D.jsxs)(`li`,{children:[`Bridge: `,B.bridgeConnected?`доступен`:`не подключён`]}),(0,D.jsxs)(`li`,{children:[`Расширение: `,B.extensionReady?`готово`:`не готово`]})]}),M(B.setupUrl)&&(0,D.jsxs)(`a`,{href:M(B.setupUrl),target:`_blank`,rel:`noopener noreferrer`,children:[`Настроить расширение `,(0,D.jsx)(w,{size:14})]})]})]}),(0,D.jsxs)(`section`,{className:`panel publication-journal`,"data-testid":`publication-journal`,"data-status":O?.status??`idle`,children:[(0,D.jsx)(`div`,{className:`eyebrow`,children:`ПУБЛИКАЦИЯ`}),(0,D.jsx)(`h2`,{"aria-live":`polite`,children:O?j[O.status]:`Готовы к первому черновику`}),O?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`p`,{children:A[O.stage]}),Z&&(0,D.jsx)(s,{label:A[O.stage]}),` `,O.userAction&&[`waiting_user`,`interrupted`].includes(O.status)&&(0,D.jsx)(c,{children:(0,D.jsx)(v,{id:`publication:${O.id}:user`,children:O.userAction})}),O.error&&(0,D.jsx)(c,{children:O.error}),(0,D.jsxs)(`div`,{className:`row-actions`,children:[Z&&(0,D.jsxs)(o,{"data-testid":`publication-pause`,disabled:!!U,onClick:()=>void $(`pause`),children:[(0,D.jsx)(u,{size:15}),`Пауза`]}),_e&&(0,D.jsxs)(o,{"data-testid":`publication-resume`,disabled:!!U,onClick:()=>void $(`resume`),children:[(0,D.jsx)(f,{size:15}),O.status===`waiting_user`?`Я выполнил действие`:`Продолжить`]}),(Z||_e||O.status===`ready_for_review`)&&(0,D.jsxs)(o,{"data-testid":`publication-stop`,disabled:!!U,onClick:()=>void $(`stop`),children:[(0,D.jsx)(d,{size:15}),`Остановить`]})]}),M(O.draftUrl)&&(0,D.jsxs)(`a`,{href:M(O.draftUrl),target:`_blank`,rel:`noopener noreferrer`,children:[`Открыть черновик `,(0,D.jsx)(w,{size:14})]}),(0,D.jsx)(`ol`,{className:`publication-evidence`,children:O.evidence.map((e,t)=>(0,D.jsxs)(`li`,{children:[(0,D.jsx)(`span`,{className:`publication-dot`}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`strong`,{children:N[e.action]??e.action}),(0,D.jsx)(`p`,{children:(0,D.jsx)(v,{id:`publication:${O.id}:${t}`,children:P(e)})}),(0,D.jsx)(`small`,{children:new Date(e.at).toLocaleTimeString(`ru-RU`)})]})]},`${e.at}:${t}`))}),F(O)&&(0,D.jsxs)(`div`,{className:`publication-submit`,children:[(0,D.jsx)(`p`,{children:`Проверьте карточку, материалы и игру в консоли. Это отдельное действие отправит текущий черновик на модерацию.`}),(0,D.jsx)(o,{"data-testid":`publication-submit`,tone:`primary`,disabled:!!U||W,onClick:()=>void X(`Отправляем на модерацию`,async()=>{await y(`/projects/${e.id}/publication/submit`,`POST`,{runId:O.id}),await he()}),children:`Отправить на модерацию`})]})]}):(0,D.jsx)(`p`,{className:`muted`,children:`Сначала проверьте сборку и подключите Chrome. Вход в аккаунт и CAPTCHA выполняются вами в браузере.`}),I.length>1&&(0,D.jsxs)(`details`,{children:[(0,D.jsxs)(`summary`,{children:[`Предыдущие попытки · `,I.length-1]}),I.filter(e=>e.id!==O?.id).map(e=>(0,D.jsxs)(`p`,{children:[new Date(e.createdAt).toLocaleString(`ru-RU`),` · `,j[e.status]]},e.id))]})]})]})]})]})}export{I as YandexGamesView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./IconBase.es-Bvh5HoVq.js";import{c as i,d as a,f as o,g as s,h as c,l,m as u,p as d,s as f,u as p}from"./ui-CVc6Nw0y.js";var m=t(n(),1),h=new Map([[`bold`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z`}))],[`duotone`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z`,opacity:`0.2`}),m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`fill`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z`}))],[`light`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z`}))],[`regular`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`thin`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z`}))]]),g=m.forwardRef((e,t)=>m.createElement(r,{ref:t,...e,weights:h}));g.displayName=`FolderOpenIcon`;var _=g,v=e(),y=Object.defineProperty,b=(e,t)=>y(e,`name`,{value:t,configurable:!0});function x(e){let t=e+`CollectionProvider`,[n,r]=u(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=b(e=>{let{scope:t,children:n}=e,r=m.useRef(null),a=m.useRef(new Map).current;return(0,v.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})},`CollectionProvider`);o.displayName=t;let s=e+`CollectionSlot`,l=p(s),d=m.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=a(s,n),o=c(t,i.collectionRef);return(0,v.jsx)(l,{ref:o,children:r})});d.displayName=s;let f=e+`CollectionItemSlot`,h=`data-radix-collection-item`,g=p(f),_=m.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=m.useRef(null),s=c(t,o),l=a(f,n);return m.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,v.jsx)(g,{[h]:``,ref:s,children:r})});_.displayName=f;function y(t){let n=a(e+`CollectionConsumer`,t);return m.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return b(y,`useCollection`),[{Provider:o,Slot:d,ItemSlot:_},y,r]}b(x,`createCollection`);var S=new WeakMap,C=class e extends Map{static{b(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],S.set(this,!0)}set(e,t){return S.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r=this.has(t),i=this.#e.length,a=E(e),o=a>=0?a:i+a,s=o<0||o>=i?-1:o;if(s===this.size||r&&s===this.size-1||s===-1)return this.set(t,n),this;let c=this.size+ +!r;a<0&&o++;let l=[...this.#e],u,d=!1;for(let e=o;e<c;e++)if(o===e){let i=l[e];l[e]===t&&(i=l[e+1]),r&&this.delete(t),u=this.get(i),this.set(t,n)}else{!d&&l[e-1]===t&&(d=!0);let n=l[d?e:e-1],r=u;u=this.get(n),this.delete(n),this.set(n,r)}return this}with(t,n,r){let i=new e(this);return i.insert(t,n,r),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,n){let r=this.#e.indexOf(e);return r===-1?this:this.insert(r,t,n)}after(e){let t=this.#e.indexOf(e);if(t=t===-1||t===this.size-1?-1:t+1,t!==-1)return this.entryAt(t)}setAfter(e,t,n){let r=this.#e.indexOf(e);return r===-1?this:this.insert(r+1,t,n)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return t!==void 0&&this.delete(t)}at(e){let t=w(this.#e,e);if(t!==void 0)return this.get(t)}entryAt(e){let t=w(this.#e,e);if(t!==void 0)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return w(this.#e,e)}from(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return-1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=r===0&&e.length===1?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&e.length===1?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){let n=[...this.entries()].sort(t);return new e(n)}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(t===void 0)return r;t<0&&(t+=this.size),n!==void 0&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}};function w(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=T(e,t);return n===-1?void 0:e[n]}b(w,`at`);function T(e,t){let n=e.length,r=E(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}b(T,`toSafeIndex`);function E(e){return e!==e||e===0?0:Math.trunc(e)}b(E,`toSafeInteger`);function D(e){let t=e+`CollectionProvider`,[n,r]=u(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new C,setItemMap:b(()=>void 0,`setItemMap`)}),o=b(({state:e,...t})=>e?(0,v.jsx)(l,{...t,state:e}):(0,v.jsx)(s,{...t}),`CollectionProvider`);o.displayName=t;let s=b(e=>{let t=x();return(0,v.jsx)(l,{...e,state:t})},`CollectionInit`);s.displayName=t+`Init`;let l=b(e=>{let{scope:t,children:n,state:r}=e,a=m.useRef(null),[o,s]=m.useState(null),l=c(a,s),[u,d]=r;return m.useEffect(()=>{if(!o)return;let e=j(()=>{});return e.observe(o,{childList:!0,subtree:!0}),()=>{e.disconnect()}},[o]),(0,v.jsx)(i,{scope:t,itemMap:u,setItemMap:d,collectionRef:l,collectionRefObject:a,collectionElement:o,children:n})},`CollectionProviderImpl`);l.displayName=t+`Impl`;let d=e+`CollectionSlot`,f=p(d),h=m.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=a(d,n),o=c(t,i.collectionRef);return(0,v.jsx)(f,{ref:o,children:r})});h.displayName=d;let g=e+`CollectionItemSlot`,_=p(g),y=m.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=m.useRef(null),[s,l]=m.useState(null),u=c(t,o,l),{setItemMap:d}=a(g,n),f=m.useRef(i);O(f.current,i)||(f.current=i);let p=f.current;return m.useEffect(()=>{let e=p;return d(t=>s?t.has(s)?t.set(s,{...e,element:s}).toSorted(A):(t.set(s,{...e,element:s}),t.toSorted(A)):t),()=>{d(e=>!s||!e.has(s)?e:(e.delete(s),new C(e)))}},[s,p,d]),(0,v.jsx)(_,{"data-radix-collection-item":``,ref:u,children:r})});y.displayName=g;function x(){return m.useState(new C)}b(x,`useInitCollection`);function S(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return b(S,`useCollection`),[{Provider:o,Slot:h,ItemSlot:y},{createCollectionScope:r,useCollection:S,useInitCollection:x}]}b(D,`createCollection`);function O(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e==null||t==null)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||e[r]!==t[r])return!1;return!0}b(O,`shallowEqual`);function k(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}b(k,`isElementPreceding`);function A(e,t){return!e[1].element||!t[1].element?0:k(e[1].element,t[1].element)?-1:1}b(A,`sortByDocumentPosition`);function j(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}b(j,`getChildListObserver`);var ee=Object.defineProperty,te=(e,t)=>ee(e,`name`,{value:t,configurable:!0}),ne={LTR:`ltr`,RTL:`rtl`},re=m.createContext(void 0);function M(e){let t=m.useContext(re);return e||t||ne.LTR}te(M,`useDirection`);var ie=Object.defineProperty,N=(e,t)=>ie(e,`name`,{value:t,configurable:!0}),P=!1;function F(){let[e,t]=m.useState(P);return m.useEffect(()=>{P||(P=!0,t(!0))},[]),e}N(F,`useIsHydrated`);var ae=m.useSyncExternalStore;function oe(){return()=>{}}N(oe,`subscribe`);function I(){return ae(oe,()=>!0,()=>!1)}N(I,`useIsHydratedModern`);var se=typeof ae==`function`?I:F,ce=Object.defineProperty,L=(e,t)=>ce(e,`name`,{value:t,configurable:!0}),R=`rovingFocusGroup.onEntryFocus`,le={bubbles:!1,cancelable:!0},z=`RovingFocusGroup`,[B,V,ue]=x(z),[de,H]=u(z,[ue]),U={Vertical:`vertical`,Horizontal:`horizontal`},fe={LTR:`ltr`,RTL:`rtl`},[pe,me]=de(z),he=m.forwardRef(L(function(e,t){return(0,v.jsx)(B.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,v.jsx)(B.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,v.jsx)(ge,{...e,ref:t})})})},`RovingFocusGroup`)),ge=m.forwardRef(L(function(e,t){let{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:u,currentTabStopId:d,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:p,onEntryFocus:h,preventScrollOnEntryFocus:g=!1,..._}=e,y=m.useRef(null),b=c(t,y),x=M(u),[S,C]=a({prop:d,defaultProp:f??null,onChange:p,caller:z}),[w,T]=m.useState(!1),E=i(h),D=V(n),O=m.useRef(!1),[k,A]=m.useState(0);return m.useEffect(()=>{let e=y.current;if(e)return e.addEventListener(R,E),()=>e.removeEventListener(R,E)},[E]),(0,v.jsx)(pe,{scope:n,orientation:r,dir:x,loop:o,currentTabStopId:S,onItemFocus:m.useCallback(e=>C(e),[C]),onItemShiftTab:m.useCallback(()=>T(!0),[]),onFocusableItemAdd:m.useCallback(()=>A(e=>e+1),[]),onFocusableItemRemove:m.useCallback(()=>A(e=>e-1),[]),children:(0,v.jsx)(l.div,{tabIndex:w||k===0?-1:0,"data-orientation":r,..._,ref:b,style:{outline:`none`,...e.style},onMouseDown:s(e.onMouseDown,()=>{O.current=!0}),onFocus:s(e.onFocus,e=>{let t=!O.current;if(e.target===e.currentTarget&&t&&!w){let t=new CustomEvent(R,le);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=D().filter(e=>e.focusable);K([e.find(e=>e.active),e.find(e=>e.id===S),...e].filter(Boolean).map(e=>e.ref.current),g)}}O.current=!1}),onBlur:s(e.onBlur,()=>T(!1))})})},`RovingFocusGroupImpl`)),_e=`RovingFocusGroupItem`,ve=m.forwardRef(L(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:c,...u}=e,f=o(),p=a||f,h=me(_e,n),g=h.currentTabStopId===p,_=V(n),{onFocusableItemAdd:y,onFocusableItemRemove:b,currentTabStopId:x}=h,S=se();return d(()=>{if(S&&r)return y(),()=>b()},[S,r,y,b]),m.useEffect(()=>{if(!S&&r)return y(),()=>b()},[S,r,y,b]),(0,v.jsx)(B.ItemSlot,{scope:n,id:p,focusable:r,active:i,children:(0,v.jsx)(l.span,{tabIndex:g?0:-1,"data-orientation":h.orientation,...u,ref:t,onMouseDown:s(e.onMouseDown,e=>{r?h.onItemFocus(p):e.preventDefault()}),onFocus:s(e.onFocus,()=>h.onItemFocus(p)),onKeyDown:s(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){h.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=G(e,h.orientation,h.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=_().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=h.loop?q(n,r+1):n.slice(r+1)}setTimeout(()=>K(n))}}),children:typeof c==`function`?c({isCurrentTabStop:g,hasTabStop:x!=null}):c})})},`RovingFocusGroupItem`)),ye={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function W(e,t){return t===fe.RTL?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}L(W,`getDirectionAwareKey`);function G(e,t,n){let r=W(e.key,n);if(!(t===U.Vertical&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===U.Horizontal&&[`ArrowUp`,`ArrowDown`].includes(r)))return ye[r]}L(G,`getFocusIntent`);function K(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}L(K,`focusFirst`);function q(e,t){return e.map((n,r)=>e[(t+r)%e.length])}L(q,`wrapArray`);var be=Object.defineProperty,J=(e,t)=>be(e,`name`,{value:t,configurable:!0}),Y={Automatic:`automatic`,Manual:`manual`},X=`Tabs`,[xe,Se]=u(X,[H]),Ce=H(),[we,Z]=xe(X),Te=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:s,orientation:c=`horizontal`,dir:u,activationMode:d=Y.Automatic,...f}=e,p=M(u),[m,h]=a({prop:r,onChange:i,defaultProp:s??``,caller:X});return(0,v.jsx)(we,{scope:n,baseId:o(),value:m,onValueChange:h,orientation:c,dir:p,activationMode:d,children:(0,v.jsx)(l.div,{dir:p,"data-orientation":c,...f,ref:t})})},`Tabs`)),Ee=`TabsList`,De=m.forwardRef(J(function(e,t){let{__scopeTabs:n,loop:r=!0,...i}=e,a=Z(Ee,n),o=Ce(n);return(0,v.jsx)(he,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,v.jsx)(l.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})},`TabsList`)),Oe=`TabsTrigger`,ke=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=Z(Oe,n),c=Ce(n),u=Q(o.baseId,r),d=$(o.baseId,r),f=r===o.value;return(0,v.jsx)(ve,{asChild:!0,...c,focusable:!i,active:f,children:(0,v.jsx)(l.button,{type:`button`,role:`tab`,"aria-selected":f,"aria-controls":d,"data-state":f?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:u,...a,ref:t,onMouseDown:s(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?(e.currentTarget.focus(),o.onValueChange(r)):e.preventDefault()}),onKeyDown:s(e.onKeyDown,e=>{i||e.target!==e.currentTarget||[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:s(e.onFocus,()=>{let e=o.activationMode!==Y.Manual;!f&&!i&&e&&o.onValueChange(r)})})})},`TabsTrigger`)),Ae=`TabsContent`,je=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=Z(Ae,n),c=Q(s.baseId,r),u=$(s.baseId,r),d=r===s.value,p=m.useRef(d);return m.useEffect(()=>{let e=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,v.jsx)(f,{present:i||d,children:({present:n})=>(0,v.jsx)(l.div,{"data-state":d?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:u,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:p.current?`0s`:void 0},children:n&&a})})},`TabsContent`));function Q(e,t){return`${e}-trigger-${t}`}J(Q,`makeTriggerId`);function $(e,t){return`${e}-content-${t}`}J($,`makeContentId`);export{_ as a,ke as i,je as n,De as r,Te as t};
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{_ as i,c as a,f as o,g as s,h as c,l,m as u,p as d,s as f,u as p}from"./ui-wHE_yBK0.js";var m=t(n(),1),h=new Map([[`bold`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z`}))],[`duotone`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z`,opacity:`0.2`}),m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`fill`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z`}))],[`light`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z`}))],[`regular`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z`}))],[`thin`,m.createElement(m.Fragment,null,m.createElement(`path`,{d:`M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z`}))]]),g=m.forwardRef((t,n)=>m.createElement(e,{ref:n,...t,weights:h}));g.displayName=`FolderOpenIcon`;var _=g,v=r(),y=Object.defineProperty,b=(e,t)=>y(e,`name`,{value:t,configurable:!0});function x(e){let t=e+`CollectionProvider`,[n,r]=c(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=b(e=>{let{scope:t,children:n}=e,r=m.useRef(null),a=m.useRef(new Map).current;return(0,v.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})},`CollectionProvider`);o.displayName=t;let l=e+`CollectionSlot`,u=p(l),d=m.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=a(l,n),o=s(t,i.collectionRef);return(0,v.jsx)(u,{ref:o,children:r})});d.displayName=l;let f=e+`CollectionItemSlot`,h=`data-radix-collection-item`,g=p(f),_=m.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=m.useRef(null),c=s(t,o),l=a(f,n);return m.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,v.jsx)(g,{[h]:``,ref:c,children:r})});_.displayName=f;function y(t){let n=a(e+`CollectionConsumer`,t);return m.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return b(y,`useCollection`),[{Provider:o,Slot:d,ItemSlot:_},y,r]}b(x,`createCollection`);var S=new WeakMap,C=class e extends Map{static{b(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],S.set(this,!0)}set(e,t){return S.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r=this.has(t),i=this.#e.length,a=E(e),o=a>=0?a:i+a,s=o<0||o>=i?-1:o;if(s===this.size||r&&s===this.size-1||s===-1)return this.set(t,n),this;let c=this.size+ +!r;a<0&&o++;let l=[...this.#e],u,d=!1;for(let e=o;e<c;e++)if(o===e){let i=l[e];l[e]===t&&(i=l[e+1]),r&&this.delete(t),u=this.get(i),this.set(t,n)}else{!d&&l[e-1]===t&&(d=!0);let n=l[d?e:e-1],r=u;u=this.get(n),this.delete(n),this.set(n,r)}return this}with(t,n,r){let i=new e(this);return i.insert(t,n,r),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,n){let r=this.#e.indexOf(e);return r===-1?this:this.insert(r,t,n)}after(e){let t=this.#e.indexOf(e);if(t=t===-1||t===this.size-1?-1:t+1,t!==-1)return this.entryAt(t)}setAfter(e,t,n){let r=this.#e.indexOf(e);return r===-1?this:this.insert(r+1,t,n)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return t!==void 0&&this.delete(t)}at(e){let t=w(this.#e,e);if(t!==void 0)return this.get(t)}entryAt(e){let t=w(this.#e,e);if(t!==void 0)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return w(this.#e,e)}from(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return-1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=r===0&&e.length===1?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&e.length===1?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){let n=[...this.entries()].sort(t);return new e(n)}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(t===void 0)return r;t<0&&(t+=this.size),n!==void 0&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}};function w(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=T(e,t);return n===-1?void 0:e[n]}b(w,`at`);function T(e,t){let n=e.length,r=E(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}b(T,`toSafeIndex`);function E(e){return e!==e||e===0?0:Math.trunc(e)}b(E,`toSafeInteger`);function D(e){let t=e+`CollectionProvider`,[n,r]=c(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new C,setItemMap:b(()=>void 0,`setItemMap`)}),o=b(({state:e,...t})=>e?(0,v.jsx)(u,{...t,state:e}):(0,v.jsx)(l,{...t}),`CollectionProvider`);o.displayName=t;let l=b(e=>{let t=x();return(0,v.jsx)(u,{...e,state:t})},`CollectionInit`);l.displayName=t+`Init`;let u=b(e=>{let{scope:t,children:n,state:r}=e,a=m.useRef(null),[o,c]=m.useState(null),l=s(a,c),[u,d]=r;return m.useEffect(()=>{if(!o)return;let e=j(()=>{});return e.observe(o,{childList:!0,subtree:!0}),()=>{e.disconnect()}},[o]),(0,v.jsx)(i,{scope:t,itemMap:u,setItemMap:d,collectionRef:l,collectionRefObject:a,collectionElement:o,children:n})},`CollectionProviderImpl`);u.displayName=t+`Impl`;let d=e+`CollectionSlot`,f=p(d),h=m.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=a(d,n),o=s(t,i.collectionRef);return(0,v.jsx)(f,{ref:o,children:r})});h.displayName=d;let g=e+`CollectionItemSlot`,_=p(g),y=m.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=m.useRef(null),[c,l]=m.useState(null),u=s(t,o,l),{setItemMap:d}=a(g,n),f=m.useRef(i);O(f.current,i)||(f.current=i);let p=f.current;return m.useEffect(()=>{let e=p;return d(t=>c?t.has(c)?t.set(c,{...e,element:c}).toSorted(A):(t.set(c,{...e,element:c}),t.toSorted(A)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new C(e)))}},[c,p,d]),(0,v.jsx)(_,{"data-radix-collection-item":``,ref:u,children:r})});y.displayName=g;function x(){return m.useState(new C)}b(x,`useInitCollection`);function S(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return b(S,`useCollection`),[{Provider:o,Slot:h,ItemSlot:y},{createCollectionScope:r,useCollection:S,useInitCollection:x}]}b(D,`createCollection`);function O(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e==null||t==null)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||e[r]!==t[r])return!1;return!0}b(O,`shallowEqual`);function k(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}b(k,`isElementPreceding`);function A(e,t){return!e[1].element||!t[1].element?0:k(e[1].element,t[1].element)?-1:1}b(A,`sortByDocumentPosition`);function j(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}b(j,`getChildListObserver`);var ee=Object.defineProperty,te=(e,t)=>ee(e,`name`,{value:t,configurable:!0}),ne={LTR:`ltr`,RTL:`rtl`},re=m.createContext(void 0);function M(e){let t=m.useContext(re);return e||t||ne.LTR}te(M,`useDirection`);var ie=Object.defineProperty,N=(e,t)=>ie(e,`name`,{value:t,configurable:!0}),P=!1;function F(){let[e,t]=m.useState(P);return m.useEffect(()=>{P||(P=!0,t(!0))},[]),e}N(F,`useIsHydrated`);var ae=m.useSyncExternalStore;function oe(){return()=>{}}N(oe,`subscribe`);function I(){return ae(oe,()=>!0,()=>!1)}N(I,`useIsHydratedModern`);var se=typeof ae==`function`?I:F,ce=Object.defineProperty,L=(e,t)=>ce(e,`name`,{value:t,configurable:!0}),R=`rovingFocusGroup.onEntryFocus`,le={bubbles:!1,cancelable:!0},z=`RovingFocusGroup`,[B,V,ue]=x(z),[de,H]=c(z,[ue]),U={Vertical:`vertical`,Horizontal:`horizontal`},fe={LTR:`ltr`,RTL:`rtl`},[pe,me]=de(z),he=m.forwardRef(L(function(e,t){return(0,v.jsx)(B.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,v.jsx)(B.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,v.jsx)(ge,{...e,ref:t})})})},`RovingFocusGroup`)),ge=m.forwardRef(L(function(e,t){let{__scopeRovingFocusGroup:n,orientation:r,loop:c=!1,dir:u,currentTabStopId:d,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:p,onEntryFocus:h,preventScrollOnEntryFocus:g=!1,..._}=e,y=m.useRef(null),b=s(t,y),x=M(u),[S,C]=o({prop:d,defaultProp:f??null,onChange:p,caller:z}),[w,T]=m.useState(!1),E=a(h),D=V(n),O=m.useRef(!1),[k,A]=m.useState(0);return m.useEffect(()=>{let e=y.current;if(e)return e.addEventListener(R,E),()=>e.removeEventListener(R,E)},[E]),(0,v.jsx)(pe,{scope:n,orientation:r,dir:x,loop:c,currentTabStopId:S,onItemFocus:m.useCallback(e=>C(e),[C]),onItemShiftTab:m.useCallback(()=>T(!0),[]),onFocusableItemAdd:m.useCallback(()=>A(e=>e+1),[]),onFocusableItemRemove:m.useCallback(()=>A(e=>e-1),[]),children:(0,v.jsx)(l.div,{tabIndex:w||k===0?-1:0,"data-orientation":r,..._,ref:b,style:{outline:`none`,...e.style},onMouseDown:i(e.onMouseDown,()=>{O.current=!0}),onFocus:i(e.onFocus,e=>{let t=!O.current;if(e.target===e.currentTarget&&t&&!w){let t=new CustomEvent(R,le);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=D().filter(e=>e.focusable);K([e.find(e=>e.active),e.find(e=>e.id===S),...e].filter(Boolean).map(e=>e.ref.current),g)}}O.current=!1}),onBlur:i(e.onBlur,()=>T(!1))})})},`RovingFocusGroupImpl`)),_e=`RovingFocusGroupItem`,ve=m.forwardRef(L(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:o,children:s,...c}=e,f=d(),p=o||f,h=me(_e,n),g=h.currentTabStopId===p,_=V(n),{onFocusableItemAdd:y,onFocusableItemRemove:b,currentTabStopId:x}=h,S=se();return u(()=>{if(S&&r)return y(),()=>b()},[S,r,y,b]),m.useEffect(()=>{if(!S&&r)return y(),()=>b()},[S,r,y,b]),(0,v.jsx)(B.ItemSlot,{scope:n,id:p,focusable:r,active:a,children:(0,v.jsx)(l.span,{tabIndex:g?0:-1,"data-orientation":h.orientation,...c,ref:t,onMouseDown:i(e.onMouseDown,e=>{r?h.onItemFocus(p):e.preventDefault()}),onFocus:i(e.onFocus,()=>h.onItemFocus(p)),onKeyDown:i(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){h.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=G(e,h.orientation,h.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=_().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=h.loop?q(n,r+1):n.slice(r+1)}setTimeout(()=>K(n))}}),children:typeof s==`function`?s({isCurrentTabStop:g,hasTabStop:x!=null}):s})})},`RovingFocusGroupItem`)),ye={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function W(e,t){return t===fe.RTL?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}L(W,`getDirectionAwareKey`);function G(e,t,n){let r=W(e.key,n);if(!(t===U.Vertical&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===U.Horizontal&&[`ArrowUp`,`ArrowDown`].includes(r)))return ye[r]}L(G,`getFocusIntent`);function K(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}L(K,`focusFirst`);function q(e,t){return e.map((n,r)=>e[(t+r)%e.length])}L(q,`wrapArray`);var be=Object.defineProperty,J=(e,t)=>be(e,`name`,{value:t,configurable:!0}),Y={Automatic:`automatic`,Manual:`manual`},X=`Tabs`,[xe,Se]=c(X,[H]),Ce=H(),[we,Z]=xe(X),Te=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:s=`horizontal`,dir:c,activationMode:u=Y.Automatic,...f}=e,p=M(c),[m,h]=o({prop:r,onChange:i,defaultProp:a??``,caller:X});return(0,v.jsx)(we,{scope:n,baseId:d(),value:m,onValueChange:h,orientation:s,dir:p,activationMode:u,children:(0,v.jsx)(l.div,{dir:p,"data-orientation":s,...f,ref:t})})},`Tabs`)),Ee=`TabsList`,De=m.forwardRef(J(function(e,t){let{__scopeTabs:n,loop:r=!0,...i}=e,a=Z(Ee,n),o=Ce(n);return(0,v.jsx)(he,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,v.jsx)(l.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})},`TabsList`)),Oe=`TabsTrigger`,ke=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,disabled:a=!1,...o}=e,s=Z(Oe,n),c=Ce(n),u=Q(s.baseId,r),d=$(s.baseId,r),f=r===s.value;return(0,v.jsx)(ve,{asChild:!0,...c,focusable:!a,active:f,children:(0,v.jsx)(l.button,{type:`button`,role:`tab`,"aria-selected":f,"aria-controls":d,"data-state":f?`active`:`inactive`,"data-disabled":a?``:void 0,disabled:a,id:u,...o,ref:t,onMouseDown:i(e.onMouseDown,e=>{!a&&e.button===0&&e.ctrlKey===!1?(e.currentTarget.focus(),s.onValueChange(r)):e.preventDefault()}),onKeyDown:i(e.onKeyDown,e=>{a||e.target!==e.currentTarget||[` `,`Enter`].includes(e.key)&&s.onValueChange(r)}),onFocus:i(e.onFocus,()=>{let e=s.activationMode!==Y.Manual;!f&&!a&&e&&s.onValueChange(r)})})})},`TabsTrigger`)),Ae=`TabsContent`,je=m.forwardRef(J(function(e,t){let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=Z(Ae,n),c=Q(s.baseId,r),u=$(s.baseId,r),d=r===s.value,p=m.useRef(d);return m.useEffect(()=>{let e=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,v.jsx)(f,{present:i||d,children:({present:n})=>(0,v.jsx)(l.div,{"data-state":d?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:u,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:p.current?`0s`:void 0},children:n&&a})})},`TabsContent`));function Q(e,t){return`${e}-trigger-${t}`}J(Q,`makeTriggerId`);function $(e,t){return`${e}-content-${t}`}J($,`makeContentId`);export{_ as a,ke as i,je as n,De as r,Te as t};
|