@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 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Z`}))]]),a=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Zm112-80a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,132Zm0,40a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,172Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,88H152V32Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Zm-32-80a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,136Zm0,32a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,168Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,176H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm0-32H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm-8-56V44l44,44Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Zm-34-82a6,6,0,0,1-6,6H96a6,6,0,0,1,0-12h64A6,6,0,0,1,166,136Zm0,32a6,6,0,0,1-6,6H96a6,6,0,0,1,0-12h64A6,6,0,0,1,166,168Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Zm-32-80a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,136Zm0,32a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,168Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Zm-36-84a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,136Zm0,32a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,168Z`}))]]),o=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));o.displayName=`CircleIcon`;var s=o,c=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:a}));c.displayName=`FileTextIcon`;var l=c;export{s as n,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,24v63.72L186.14,97.86a20,20,0,0,0-28.28,0L52,203.72V52ZM85.66,204,172,117.66l32,32V204ZM76,96a20,20,0,1,1,20,20A20,20,0,0,1,76,96Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,40H48a8,8,0,0,0-8,8V208a8,8,0,0,0,8,8h8.69L166.34,106.34a8,8,0,0,1,11.32,0L216,144.69V48A8,8,0,0,0,208,40ZM96,112a16,16,0,1,1,16-16A16,16,0,0,1,96,112Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM80,96a16,16,0,1,1,16,16A16,16,0,0,1,80,96Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM46,208V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2v82.2l-28.1-28.1a14,14,0,0,0-19.8,0L54.2,210H48A2,2,0,0,1,46,208Zm162,2H71.17l99.41-99.41a2,2,0,0,1,2.83,0L210,147.17V208A2,2,0,0,1,208,210ZM96,118A22,22,0,1,0,74,96,22,22,0,0,0,96,118Zm0-32A10,10,0,1,1,86,96,10,10,0,0,1,96,86Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36ZM44,208V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4v87l-31.51-31.52a12,12,0,0,0-17,0L55,212H48A4,4,0,0,1,44,208Zm164,4H66.34L169.17,109.17a4,4,0,0,1,5.66,0L212,146.34V208A4,4,0,0,1,208,212ZM96,116A20,20,0,1,0,76,96,20,20,0,0,0,96,116Zm0-32A12,12,0,1,1,84,96,12,12,0,0,1,96,84Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`ImageSquareIcon`;var o=a;export{o as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/resources-xyl8IpX6.js","assets/jsx-runtime-CdVFa8IP.js","assets/AssetMediaPreview-D2cd6oQO.js","assets/ui-wHE_yBK0.js","assets/ImageSquare.es-DxCFt99_.js","assets/ArrowUpRight.es-BmIrpjWN.js","assets/CheckCircle.es-D5B3hdvz.js","assets/DownloadSimple.es-DwOWFbs2.js","assets/dist-7vx7MTaJ.js","assets/MagnifyingGlass.es-rkdOU2rH.js","assets/Sparkle.es-CmGpvnNm.js","assets/UploadSimple.es-DxIuxpCC.js","assets/WarningCircle.es-D63H8cL9.js","assets/index-B6_q6dBC.js","assets/index-Izzbh11U.css","assets/CoreAccount-BfH0gEKJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{n as i,r as a,t as o}from"./AssetMediaPreview-D2cd6oQO.js";import{t as s}from"./ArrowRight.es-9w41WqD8.js";import{v as c}from"./ui-wHE_yBK0.js";import{n as l,t as u}from"./PaperPlaneRight.es-U0twumpP.js";import{n as d}from"./Square.es-BjNN9Ypc.js";import{t as f}from"./PencilSimple.es-JVHwRvGx.js";import{i as p}from"./YandexConfigFields-DDL22Bfw.js";import{B as m,G as h,I as g,L as _,M as v,N as y,T as b,U as x,W as S,_ as C,a as w,c as T,f as E,g as D,h as O,i as k,j as A,l as j,n as M,o as N,p as P,r as F,s as I,t as L,u as R}from"./index-B6_q6dBC.js";import{PermissionCard as z,a as B,c as V,d as H,i as ee,l as te,n as U,o as ne,r as re,s as ie,t as ae,u as W}from"./workflow-CEkwrbrT.js";var G=t(n(),1),oe=new Map([[`bold`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M228,48V96a12,12,0,0,1-12,12H168a12,12,0,0,1,0-24h19l-7.8-7.8a75.55,75.55,0,0,0-53.32-22.26h-.43A75.49,75.49,0,0,0,72.39,75.57,12,12,0,1,1,55.61,58.41a99.38,99.38,0,0,1,69.87-28.47H126A99.42,99.42,0,0,1,196.2,59.23L204,67V48a12,12,0,0,1,24,0ZM183.61,180.43a75.49,75.49,0,0,1-53.09,21.63h-.43A75.55,75.55,0,0,1,76.77,179.8L69,172H88a12,12,0,0,0,0-24H40a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V189l7.8,7.8A99.42,99.42,0,0,0,130,226.06h.56a99.38,99.38,0,0,0,69.87-28.47,12,12,0,0,0-16.78-17.16Z`}))],[`duotone`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),G.createElement(`path`,{d:`M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z`}))],[`fill`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1-5.66-13.66L180.65,72a79.48,79.48,0,0,0-54.72-22.09h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27,96,96,0,0,1,192,60.7l18.36-18.36A8,8,0,0,1,224,48ZM186.41,183.29A80,80,0,0,1,75.35,184l18.31-18.31A8,8,0,0,0,88,152H40a8,8,0,0,0-8,8v48a8,8,0,0,0,13.66,5.66L64,195.3a95.42,95.42,0,0,0,66,26.76h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z`}))],[`light`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M222,48V96a6,6,0,0,1-6,6H168a6,6,0,0,1,0-12h33.52L183.47,72a81.51,81.51,0,0,0-57.53-24h-.46A81.5,81.5,0,0,0,68.19,71.28a6,6,0,1,1-8.38-8.58,93.38,93.38,0,0,1,65.67-26.76H126a93.45,93.45,0,0,1,66,27.53l18,18V48a6,6,0,0,1,12,0ZM187.81,184.72a81.5,81.5,0,0,1-57.29,23.34h-.46a81.51,81.51,0,0,1-57.53-24L54.48,166H88a6,6,0,0,0,0-12H40a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V174.48l18,18.05a93.45,93.45,0,0,0,66,27.53h.52a93.38,93.38,0,0,0,65.67-26.76,6,6,0,1,0-8.38-8.58Z`}))],[`regular`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z`}))],[`thin`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M220,48V96a4,4,0,0,1-4,4H168a4,4,0,0,1,0-8h38.34L184.89,70.54A84,84,0,0,0,66.8,69.85a4,4,0,1,1-5.6-5.72,92,92,0,0,1,129.34.76L212,86.34V48a4,4,0,0,1,8,0ZM189.2,186.15a83.44,83.44,0,0,1-58.68,23.91h-.47a83.52,83.52,0,0,1-58.94-24.6L49.66,164H88a4,4,0,0,0,0-8H40a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V169.66l21.46,21.45A91.43,91.43,0,0,0,130,218.06h.51a91.45,91.45,0,0,0,64.28-26.19,4,4,0,1,0-5.6-5.72Z`}))]]),se=new Map([[`bold`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M225.29,165.93C216.61,151,212,129.57,212,104a84,84,0,0,0-168,0c0,25.58-4.59,47-13.27,61.93A20.08,20.08,0,0,0,30.66,186,19.77,19.77,0,0,0,48,196H84.18a44,44,0,0,0,87.64,0H208a19.77,19.77,0,0,0,17.31-10A20.08,20.08,0,0,0,225.29,165.93ZM128,212a20,20,0,0,1-19.6-16h39.2A20,20,0,0,1,128,212ZM54.66,172C63.51,154,68,131.14,68,104a60,60,0,0,1,120,0c0,27.13,4.48,50,13.33,68Z`}))],[`duotone`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M208,192H48a8,8,0,0,1-6.88-12C47.71,168.6,56,139.81,56,104a72,72,0,0,1,144,0c0,35.82,8.3,64.6,14.9,76A8,8,0,0,1,208,192Z`,opacity:`0.2`}),G.createElement(`path`,{d:`M221.8,175.94C216.25,166.38,208,139.33,208,104a80,80,0,1,0-160,0c0,35.34-8.26,62.38-13.81,71.94A16,16,0,0,0,48,200H88.81a40,40,0,0,0,78.38,0H208a16,16,0,0,0,13.8-24.06ZM128,216a24,24,0,0,1-22.62-16h45.24A24,24,0,0,1,128,216ZM48,184c7.7-13.24,16-43.92,16-80a64,64,0,1,1,128,0c0,36.05,8.28,66.73,16,80Z`}))],[`fill`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M221.8,175.94C216.25,166.38,208,139.33,208,104a80,80,0,1,0-160,0c0,35.34-8.26,62.38-13.81,71.94A16,16,0,0,0,48,200H88.81a40,40,0,0,0,78.38,0H208a16,16,0,0,0,13.8-24.06ZM128,216a24,24,0,0,1-22.62-16h45.24A24,24,0,0,1,128,216Z`}))],[`light`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M220.07,176.94C214.41,167.2,206,139.73,206,104a78,78,0,1,0-156,0c0,35.74-8.42,63.2-14.08,72.94A14,14,0,0,0,48,198H90.48a38,38,0,0,0,75,0H208a14,14,0,0,0,12.06-21.06ZM128,218a26,26,0,0,1-25.29-20h50.58A26,26,0,0,1,128,218Zm81.71-33a1.9,1.9,0,0,1-1.7,1H48a1.9,1.9,0,0,1-1.7-1,2,2,0,0,1,0-2C53.87,170,62,139.69,62,104a66,66,0,1,1,132,0c0,35.68,8.14,65.95,15.71,79A2,2,0,0,1,209.71,185Z`}))],[`regular`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M221.8,175.94C216.25,166.38,208,139.33,208,104a80,80,0,1,0-160,0c0,35.34-8.26,62.38-13.81,71.94A16,16,0,0,0,48,200H88.81a40,40,0,0,0,78.38,0H208a16,16,0,0,0,13.8-24.06ZM128,216a24,24,0,0,1-22.62-16h45.24A24,24,0,0,1,128,216ZM48,184c7.7-13.24,16-43.92,16-80a64,64,0,1,1,128,0c0,36.05,8.28,66.73,16,80Z`}))],[`thin`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M218.35,178C212.58,168,204,140.13,204,104a76,76,0,1,0-152,0c0,36.13-8.59,64-14.36,73.95A12,12,0,0,0,48,196H92.23a36,36,0,0,0,71.54,0H208A12,12,0,0,0,218.35,178ZM128,220a28,28,0,0,1-27.71-24h55.42A28,28,0,0,1,128,220Zm83.45-34a3.91,3.91,0,0,1-3.44,2H48a3.91,3.91,0,0,1-3.44-2,4,4,0,0,1,0-4C52,169.17,60,139.32,60,104a68,68,0,1,1,136,0c0,35.31,8,65.17,15.44,78A4,4,0,0,1,211.45,186Z`}))]]),ce=new Map([[`bold`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM40,76H216a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24ZM216,180H40a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Z`}))],[`duotone`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M216,64V192H40V64Z`,opacity:`0.2`}),G.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z`}))],[`fill`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM192,184H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Z`}))],[`light`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM40,70H216a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12ZM216,186H40a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Z`}))],[`regular`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z`}))],[`thin`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM40,68H216a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8ZM216,188H40a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Z`}))]]),le=new Map([[`bold`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z`}))],[`duotone`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z`,opacity:`0.2`}),G.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`fill`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z`}))],[`light`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z`}))],[`regular`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`thin`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z`}))]]),ue=new Map([[`bold`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z`}))],[`duotone`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z`,opacity:`0.2`}),G.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`fill`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`light`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z`}))],[`regular`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`thin`,G.createElement(G.Fragment,null,G.createElement(`path`,{d:`M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z`}))]]),de=G.forwardRef((t,n)=>G.createElement(e,{ref:n,...t,weights:oe}));de.displayName=`ArrowsClockwiseIcon`;var K=de,fe=G.forwardRef((t,n)=>G.createElement(e,{ref:n,...t,weights:se}));fe.displayName=`BellIcon`;var pe=fe,me=G.forwardRef((t,n)=>G.createElement(e,{ref:n,...t,weights:ce}));me.displayName=`ListIcon`;var he=me,ge=G.forwardRef((t,n)=>G.createElement(e,{ref:n,...t,weights:le}));ge.displayName=`MoonIcon`;var _e=ge,ve=G.forwardRef((t,n)=>G.createElement(e,{ref:n,...t,weights:ue}));ve.displayName=`SunIcon`;var ye=ve,be=[[/музыкальн(?:ый|ого) луп(?:а|ы)?/giu,`музыка для игры`],[/спрайт-?лист(?:а|ы|ов)?/giu,`набор картинок`],[/спрайты/giu,`картинки`],[/спрайтов/giu,`картинок`],[/спрайта/giu,`картинки`],[/спрайт/giu,`картинка`],[/иконки/giu,`значки`],[/иконок/giu,`значков`],[/иконку/giu,`значок`],[/иконка/giu,`значок`],[/ассеты/giu,`материалы`],[/ассетов/giu,`материалов`],[/ассета/giu,`материала`],[/ассет/giu,`материал`],[/тайлы/giu,`плитки`],[/тайлов/giu,`плиток`],[/тайл/giu,`плитка`],[/текстуры/giu,`рисунки поверхности`],[/текстура/giu,`рисунок поверхности`],[/\bлуп(?:а|ы)?\b/giu,`музыка по кругу`],[/\bSFX\b/gu,`звуки`],[/\bUI\b/gu,`кнопки и надписи`],[/импорта/giu,`загрузки`],[/импорту/giu,`загрузке`],[/импорт/giu,`загрузка`]];function xe(e){let t=e;for(let[e,n]of be)t=t.replace(e,e=>e[0]===e[0].toUpperCase()&&e[0]!==e[0].toLowerCase()?n[0].toUpperCase()+n.slice(1):n);return t}var Se=[[`dependenc(?:y|ies)`,`Dependencies`,`Ready-made pieces of other people's code that the game uses for help. Like parts from a kit: you don't have to make them yourself.`],[`baseline`,`Baseline`,`A snapshot of how everything worked at the very start. Later it is used to check that nothing got broken.`],[`templates?`,`Template`,`A starter for the game: an empty project that already has the basics. You begin with it so you don't build everything from scratch.`],[``,`API`,`The list of commands a program understands. Like buttons on a remote: press the right one and it does its job.`],[``,`Phaser`,`An engine for flat games in the browser. It can draw pictures, move heroes and catch key presses.`],[``,`TypeScript`,`The language the game code is written in. It warns you when the code has a mistake.`],[``,`Vite`,`A program that puts all the game files together and quickly shows the result in the browser.`],[`compatib(?:le|ility)`,`Compatibility`,`When different programs work well together and don't get in each other's way.`],[``,`Headless`,`A check without a screen: the computer “plays” the game invisibly and sees whether everything works.`],[`gameplay`,`Gameplay`,`What you do in the game: fly, jump, collect, dodge.`],[``,`architecture.md`,`The map file of the project. It says which parts the game has and what each one does.`],[`constants?`,`Constants`,`Numbers that are set once and never changed. For example, how many lives the cat has.`],[`balanc(?:e|ing)`,`Balance`,`Tuning the difficulty so the game is neither too easy nor too hard.`],[``,`Config`,`The file with the game settings. Change a number in it and the game behaves differently.`],[`scenes?`,`Scene`,`One screen of the game: the menu, the game itself or the win screen. Like scenes in a play.`],[``,`FIT`,`A mode where the game field stretches or shrinks to fit the size of the screen.`],[`counters?`,`Counter`,`A number on the screen that goes up or down. For example, how many stars you have collected.`],[`restarts?`,`Restart`,`Starting the game again from the very beginning.`],[`builds?`,`Build`,`Making a finished game out of all the files so it can be launched. The finished game itself is also called a build.`],[`end-to-end(?: scenario| test)?`,`End-to-end scenario`,`Checking the game from start to finish in one go: launch it, play it, win.`],[`functions?`,`Function`,`A small piece of code that does one job. It can be used again and again.`],[`spawn(?:s|ing)?`,`Spawn`,`When a new object or enemy appears in the game. For example, when a new rock flies onto the screen.`],[`collisions?`,`Collision`,`When two objects in the game touch each other. The game notices it and does something, like taking away a life.`],[`invincib(?:le|ility)|invulnerab(?:le|ility)`,`Invincibility`,`A short time after a hit when the hero can't be hurt again. So you don't lose all your lives at once.`],[`leaks?`,`Leak`,`When the game forgets to clean up things it no longer needs and starts to slow down. This is found and fixed.`],[`textures?`,`Texture`,`A picture stretched over an object in the game to make it look nice.`],[`sprites?`,`Sprite`,`A picture of a hero or an object in a flat game. The cat, the star and the rock are all sprites.`],[`parallax`,`Parallax`,`When the far background moves slower than the near one. It makes the picture look deep.`],[`animations?`,`Animation`,`Several pictures that quickly replace each other, so the object seems to move.`],[``,`HUD`,`The labels and icons on top of the game: lives, points, score. They are always on the screen.`],[`icons?`,`Icon`,`A small picture that stands for something. For example, a heart instead of the word “life”.`],[`particles?`,`Particles`,`Lots of tiny dots or sparks that fly apart. That's how explosions, glitter and smoke are made.`],[`camera shake|screen shake`,`Camera shake`,`The screen trembles a little when something hits. It makes the hit feel stronger.`],[`scal(?:e|ing)`,`Scaling`,`When the game adjusts its size to a big or a small screen.`],[`regressions?`,`Regression`,`When fixing one thing accidentally breaks another. That's why everything is checked again after changes.`],[`audio module`,`Audio module`,`The part of the game that handles all the sounds and music.`],[`modules?`,`Module`,`A separate part of a program with its own job. Like one piece in a building set.`],[`loop(?:s|ed|ing)?`,`Looped music`,`Music that plays in a circle without pauses: it reaches the end and starts again right away.`],[``,`Mute`,`The “no sound” button. Press it and the game goes quiet.`],[`auto-?pause`,`Auto-pause`,`The game pauses by itself when you switch to another window.`],[`acceptance criteria`,`Acceptance criteria`,`A list of checks. When every item is done, the work counts as finished.`],[`production`,`Production`,`The finished version of the game for real players, not for testing.`],[`bugs?|defects?`,`Bug (defect)`,`A mistake in the game: something doesn't work the way it was planned.`],[`audits?`,`Audit`,`A careful check that everything is in place and nothing extra is left.`],[``,`dist`,`The folder where the finished game is put after the build.`],[`assets?`,`Asset`,`Any ready-made material for the game: a picture, a sound, music or a model.`],[`tiles?`,`Tile`,`A square piece. Levels are put together from tiles like a mosaic.`],[``,`UI`,`Everything the player presses and reads: buttons, menus, labels.`],[``,`SFX`,`Short sounds in the game: a jump, a hit, picking up a coin.`],[`hitbox(?:es)?`,`Hitbox`,`An invisible frame around the hero. The game counts a hit only when this frame is touched.`],[``,`FPS`,`How many pictures per second the game shows. The more there are, the smoother the motion.`],[`engines?`,`Engine`,`A big helper program a game is built on. It already knows how to draw, move things and play sound.`],[`render(?:s|ing)?`,`Rendering`,`Drawing the picture on the screen. The game does it many times a second.`],[`platforms?`,`Platform`,`The place where the game runs: a browser, a phone, Roblox or a games website.`],[`source code`,`Source code`,`The files with code that the game is later built from.`],[`game design`,`Game design`,`Inventing the rules of the game: what you can do, what gets in the way and how to win.`]],q=r(),Ce=[[`зависимост[а-яё]*`,`Зависимости`,`Готовые кусочки чужого кода, которые игра берёт в помощь. Как детали из набора: не надо делать их самому.`],[`базов[а-яё]+ лини[а-яё]+`,`Базовая линия`,`Снимок того, как всё работало в самом начале. С ним потом сравнивают, не сломалось ли что-нибудь.`],[`шаблон[а-яё]*`,`Шаблон`,`Заготовка игры: пустой проект, в котором уже есть самое нужное. С него начинают, чтобы не делать всё с нуля.`],[`API`,`API`,`Список команд, которые понимает программа. Как кнопки на пульте: нажал нужную, и она делает своё дело.`],[`Phaser`,`Phaser`,`Движок для плоских игр в браузере. Он умеет рисовать картинки, двигать героев и ловить нажатия клавиш.`],[`TypeScript|TS`,`TypeScript`,`Язык, на котором написан код игры. Он сам подсказывает, если в коде есть ошибка.`],[`Vite`,`Vite`,`Программа, которая собирает все файлы игры вместе и быстро показывает результат в браузере.`],[`совместимост[а-яё]*`,`Совместимость`,`Когда разные программы хорошо работают вместе и не мешают друг другу.`],[`headless`,`Headless`,`Проверка без экрана: компьютер сам «играет» в игру невидимо и смотрит, всё ли работает.`],[`геймпле[а-яё]*`,`Геймплей`,`То, что ты делаешь в игре: летаешь, прыгаешь, собираешь, уворачиваешься.`],[`architecture\\.md`,`architecture.md`,`Файл-карта проекта. В нём записано, из каких частей состоит игра и что каждая делает.`],[`констант[а-яё]*`,`Константы`,`Числа, которые задают один раз и больше не меняют. Например, сколько у кота жизней.`],[`баланс[а-яё]*`,`Баланс`,`Настройка сложности: чтобы играть было не слишком легко и не слишком трудно.`],[`конфиг[а-яё]*|config(?:\\.ts)?`,`Конфиг`,`Файл с настройками игры. Поменял в нём число, и игра стала вести себя по-другому.`],[`сцен(?:а|ы|у|е|ой|ам|ами|ах)?`,`Сцена`,`Один экран игры: меню, сама игра или экран победы. Как сцены в спектакле.`],[`FIT`,`FIT`,`Режим, когда поле игры само растягивается или сжимается под размер экрана.`],[`счётчик[а-яё]*`,`Счётчик`,`Число на экране, которое растёт или уменьшается. Например, сколько звёзд ты собрал.`],[`рестарт[а-яё]*`,`Рестарт`,`Начать игру заново с самого начала.`],[`сборк[а-яё]*`,`Сборка`,`Когда из всех файлов делают готовую игру, которую можно запустить. И ещё так называют саму готовую игру.`],[`сквозн[а-яё]+ сценари[а-яё]+`,`Сквозной сценарий`,`Проверка игры от начала до конца подряд: запустил, поиграл, победил.`],[`функци[а-яё]*`,`Функция`,`Маленький кусочек кода, который делает одно дело. Его можно вызывать много раз.`],[`спавн[а-яё]*`,`Спавн`,`Появление нового предмета или врага в игре. Например, когда на экран вылетает новый камень.`],[`столкновени[а-яё]*|коллизи[а-яё]*`,`Столкновение`,`Когда два предмета в игре касаются друг друга. Игра это замечает и что-то делает: например, отнимает жизнь.`],[`неуязвимост[а-яё]*`,`Неуязвимость`,`Короткое время после удара, когда героя нельзя ранить снова. Чтобы не потерять все жизни сразу.`],[`утечк[а-яё]*`,`Утечка`,`Когда игра забывает убрать за собой ненужное и начинает тормозить. Это ищут и чинят.`],[`текстур[а-яё]*`,`Текстура`,`Картинка, которую натягивают на предмет в игре, чтобы он выглядел красиво.`],[`спрайт[а-яё]*`,`Спрайт`,`Картинка героя или предмета в плоской игре. Кот, звезда и камень — это всё спрайты.`],[`параллакс[а-яё]*`,`Параллакс`,`Когда дальний фон двигается медленнее ближнего. От этого кажется, что у картинки есть глубина.`],[`анимаци[а-яё]*`,`Анимация`,`Несколько картинок, которые быстро сменяют друг друга, и кажется, что предмет двигается.`],[`HUD`,`HUD`,`Надписи и значки поверх игры: жизни, очки, счёт. Они всегда на экране.`],[`иконк[а-яё]*`,`Иконка`,`Маленькая картинка-значок. Например, сердечко вместо слова «жизнь».`],[`частиц[а-яё]*`,`Частицы`,`Много маленьких точек или искорок, которые разлетаются. Так делают взрывы, блёстки и дым.`],[`тряск[а-яё]+ камеры`,`Тряска камеры`,`Экран немного дрожит, когда случается удар. От этого удар кажется сильнее.`],[`масштабировани[а-яё]*`,`Масштабирование`,`Когда игра подстраивает свой размер под большой или маленький экран.`],[`регресси[а-яё]*`,`Регрессия`,`Когда чинили одно, а случайно сломали другое. Поэтому после правок всё проверяют ещё раз.`],[`аудиомодул[а-яё]*`,`Аудиомодуль`,`Часть игры, которая отвечает за все звуки и музыку.`],[`модул[а-яё]*`,`Модуль`,`Отдельная часть программы со своей задачей. Как отдельная деталь в конструкторе.`],[`зацикленн[а-яё]*|луп(?:а|ы|ов)?`,`Зацикленная музыка`,`Музыка, которая играет по кругу без пауз: дошла до конца и сразу началась снова.`],[`mute`,`Mute`,`Кнопка «без звука». Нажал, и игра замолчала.`],[`автопауз[а-яё]*`,`Автопауза`,`Игра сама встаёт на паузу, если ты переключился на другое окно.`],[`критери[а-яё]+ приёмки`,`Критерии приёмки`,`Список проверок. Если все пункты выполнены, работа считается готовой.`],[`продакшен[а-яё-]*`,`Продакшен`,`Готовая версия игры для настоящих игроков, а не для проверки.`],[`дефект[а-яё]*|баг(?:а|и|ов|у|ом)?`,`Дефект (баг)`,`Ошибка в игре: что-то работает не так, как задумано.`],[`аудит[а-яё]*`,`Аудит`,`Внимательная проверка: всё ли на месте и нет ли лишнего.`],[`dist/?`,`dist`,`Папка, куда кладётся готовая игра после сборки.`],[`ассет[а-яё]*`,`Ассет`,`Любой готовый материал для игры: картинка, звук, музыка или модель.`],[`тайл[а-яё]*`,`Тайл`,`Квадратная плитка, из которых, как из мозаики, складывают уровень.`],[`UI`,`UI`,`Всё, на что игрок нажимает и что читает: кнопки, меню, надписи.`],[`SFX`,`SFX`,`Короткие звуки в игре: прыжок, удар, подбор монетки.`],[`хитбокс[а-яё]*`,`Хитбокс`,`Невидимая рамка вокруг героя. Игра считает удар, только если задели эту рамку.`],[`FPS`,`FPS`,`Сколько картинок в секунду показывает игра. Чем больше, тем плавнее движение.`],[`движ(?:ок|к[а-яё]+)`,`Движок`,`Большая программа-помощник, на которой строят игру. Она уже умеет рисовать, двигать и проигрывать звук.`],[`рендер[а-яё]*`,`Рендер`,`Рисование картинки на экране. Игра делает это много раз в секунду.`],[`платформ[а-яё]*`,`Платформа`,`Место, где запускают игру: браузер, телефон, Роблокс или сайт с играми.`],[`исходник[а-яё]*|src/[\\w./-]+`,`Исходный код`,`Файлы с кодом, из которых потом собирают игру.`],[`геймдизайн[а-яё]*`,`Геймдизайн`,`Придумывание правил игры: что можно делать, что мешает и как победить.`]],we=Ce.map(([e],t)=>`(${e}${Se[t][0]?`|${Se[t][0]}`:``})`).join(`|`),Te=`(?<![\\p{L}\\p{N}_])`,Ee=`(?![\\p{L}\\p{N}_])`;function De(e){let t=RegExp(`${Te}(?:${we})${Ee}`,`giu`),n=[],r=new Set,i=0;for(let a of e.matchAll(t)){let t=a.slice(1).findIndex(e=>e!==void 0);t<0||r.has(t)||a.index===void 0||(r.add(t),a.index>i&&n.push({text:e.slice(i,a.index)}),n.push({text:a[0],term:t}),i=a.index+a[0].length)}return i<e.length&&n.push({text:e.slice(i)}),n}var Oe=e=>T()===`en`?{title:Se[e][1],text:Se[e][2]}:{title:Ce[e][1],text:Ce[e][2]};function J({text:e}){let t=(0,G.useMemo)(()=>De(e),[e]),[n,r]=(0,G.useState)(null),i=(0,G.useRef)(null);return(0,G.useEffect)(()=>{if(n===null)return;let e=e=>{(e instanceof KeyboardEvent?e.key===`Escape`:!i.current?.contains(e.target))&&r(null)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,e)}},[n]),t.some(e=>e.term!==void 0)?(0,q.jsx)(`span`,{className:`k-explain`,ref:i,children:t.map((e,t)=>{if(e.term===void 0)return e.text;let i=Oe(e.term),a=n===e.term,o=t=>{t.stopPropagation(),t.preventDefault(),r(a?null:e.term)};return(0,q.jsxs)(`span`,{className:`k-term`,children:[e.text,(0,q.jsx)(`span`,{role:`button`,tabIndex:0,className:`k-q ${a?`on`:``}`,"aria-expanded":a,"aria-label":I`Что такое «${i.title}»?`,"data-testid":`kids-term`,onClick:o,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&o(e)},children:`?`}),a&&(0,q.jsxs)(`span`,{className:`k-tip`,role:`note`,"data-testid":`kids-term-tip`,children:[(0,q.jsx)(`b`,{children:i.title}),i.text]})]},t)})}):e}var ke={html5:{title:`HTML5`,color:`#E34F26`,path:`M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z`},roblox:{title:`Roblox`,color:`currentColor`,path:`M18.926 23.998 0 18.892 5.075.002 24 5.108ZM15.348 10.09l-5.282-1.453-1.414 5.273 5.282 1.453z`},godot:{title:`Godot Engine`,color:`#478CBF`,path:`M9.5598.683c-1.096.244-2.1812.5831-3.1983 1.0951.023.8981.081 1.7582.199 2.6323-.395.253-.81.47-1.178.766-.375.288-.7581.564-1.0971.9011-.6781-.448-1.3962-.869-2.1352-1.2411C1.3532 5.6934.608 6.6186 0 7.6546c.458.7411.936 1.4352 1.4521 2.0942h.014v6.3565c.012 0 .023 0 .035.003l3.8963.376c.204.02.364.184.378.3891l.12 1.7201 3.3994.242.234-1.587c.03-.206.207-.358.415-.358h4.1114c.208 0 .385.152.415.358l.234 1.587 3.3993-.242.12-1.72a.4196.4196 0 01.378-.3891l3.8954-.376c.012 0 .023-.003.035-.003v-.5071h.002V9.7498h.014c.516-.659.994-1.3531 1.4521-2.0942-.608-1.036-1.3541-1.9611-2.1512-2.8192-.739.372-1.4571.793-2.1352 1.2411-.339-.337-.721-.613-1.096-.901-.369-.296-.7841-.5131-1.1781-.7661.117-.8741.175-1.7342.199-2.6323-1.0171-.512-2.1012-.851-3.1983-1.095-.438.736-.838 1.533-1.1871 2.3121-.414-.069-.829-.094-1.2461-.099h-.016c-.417.005-.832.03-1.2461.099-.349-.779-.749-1.576-1.1881-2.3121l.001-.001zM6.4765 9.9889c1.2971 0 2.3492 1.0511 2.3492 2.3482s-1.052 2.3482-2.3492 2.3482c-1.296 0-2.3482-1.051-2.3482-2.3482 0-1.297 1.0511-2.3482 2.3482-2.3482zm11.049 0c1.296 0 2.3482 1.0511 2.3482 2.3482s-1.0511 2.3482-2.3482 2.3482-2.3492-1.051-2.3492-2.3482c0-1.297 1.051-2.3482 2.3492-2.3482zm-10.824.9301c-.861 0-1.559.698-1.559 1.5591s.698 1.5582 1.559 1.5582c.8611 0 1.5592-.698 1.5592-1.5582 0-.86-.697-1.559-1.5591-1.559zm10.598 0c-.8611 0-1.5582.698-1.5582 1.5591s.697 1.5582 1.5581 1.5582c.8611 0 1.5592-.698 1.5592-1.5582 0-.86-.697-1.559-1.5592-1.559zm-5.2985.453c.417 0 .757.308.757.6871v2.1622c0 .379-.339.687-.757.687s-.756-.308-.756-.687V12.059c0-.379.339-.687.756-.687zM1.4601 16.9464c.002.377.006.789.006.871 0 3.7014 4.6944 5.4795 10.5269 5.5005h.014c5.8325-.02 10.5259-1.7991 10.5259-5.5004 0-.084.005-.495.007-.871l-3.5023.338-.121 1.729a.421.421 0 01-.389.3901l-4.1814.296a.4203.4203 0 01-.415-.358l-.238-1.6141h-3.3863l-.238 1.6141a.4192.4192 0 01-.4451.357l-4.1513-.296c-.208-.015-.375-.181-.389-.389l-.12-1.7292-3.5044-.337z`},unity:{title:`Unity`,color:`currentColor`,path:`m12.9288 4.2939 3.7997 2.1929c.1366.077.1415.2905 0 .3675l-4.515 2.6076a.4192.4192 0 0 1-.4246 0L7.274 6.8543c-.139-.0745-.1415-.293 0-.3675l3.7972-2.193V0L1.3758 5.5977V16.793l3.7177-2.1456v-4.3858c-.0025-.1565.1813-.2682.318-.1838l4.5148 2.6076a.4252.4252 0 0 1 .2136.3676v5.2127c.0025.1565-.1813.2682-.3179.1838l-3.7996-2.1929-3.7178 2.1457L12 24l9.6954-5.5977-3.7178-2.1457-3.7996 2.1929c-.1341.082-.3229-.0248-.3179-.1838V13.053c0-.1565.087-.2956.2136-.3676l4.5149-2.6076c.134-.082.3228.0224.3179.1838v4.3858l3.7177 2.1456V5.5977L12.9288 0Z`},unreal:{title:`Unreal Engine`,color:`currentColor`,path:`M12 0a12 12 0 1012 12A12 12 0 0012 0zm0 23.52A11.52 11.52 0 1123.52 12 11.52 11.52 0 0112 23.52zm7.13-9.791c-.206.997-1.126 3.557-4.06 4.942l-1.179-1.325-1.988 2a7.338 7.338 0 01-5.804-2.978 2.859 2.859 0 00.65.123c.326.006.678-.114.678-.66v-5.394a.89.89 0 00-1.116-.89c-.92.212-1.656 2.509-1.656 2.509a7.304 7.304 0 012.528-5.597 7.408 7.408 0 013.73-1.721c-1.006.573-1.57 1.507-1.57 2.29 0 1.262.76 1.109.984.923v7.28a1.157 1.157 0 00.148.256 1.075 1.075 0 00.88.445c.76 0 1.747-.868 1.747-.868V9.172c0-.6-.452-1.324-.905-1.572 0 0 .838-.149 1.484.346a5.537 5.537 0 01.387-.425c1.508-1.48 2.929-1.902 4.112-2.112 0 0-2.151 1.69-2.151 3.96 0 1.687.043 5.801.043 5.801.799.771 1.986-.342 3.059-1.441Z`}};function Ae({id:e,size:t=64}){let n=ke[e];return(0,q.jsx)(`svg`,{className:`k-engine-logo`,width:t,height:t,viewBox:`0 0 24 24`,role:`img`,"aria-label":n.title,children:(0,q.jsx)(`path`,{d:n.path,fill:n.color})})}var je=[{id:`html5`,name:`HTML5`,engine:`html5`,dimensions:[`2d`,`3d`],hint:N`Игра для браузера. Открывается на любом компьютере и телефоне, ничего ставить не нужно. Лучше всего для первой игры.`},{id:`roblox`,name:`Roblox`,engine:`roblox`,dimensions:[`3d`],needs:`roblox`,hint:N`Игра внутри Роблокса, в неё смогут зайти друзья. Нужна программа Roblox Studio.`},{id:`godot`,name:`Godot`,engine:`godot`,dimensions:[`2d`,`3d`],needs:`godot`,hint:N`Настоящий игровой движок. На нём делают игры для компьютера и браузера. Нужна программа Godot.`},{id:`unity`,name:`Unity`,hint:N`На нём сделано много известных игр для телефонов и приставок.`},{id:`unreal`,name:`Unreal Engine`,hint:N`Движок для больших игр с очень красивой графикой.`}];function Me(e){let t={id:`web`,icon:`🌐`,title:N`В браузере`,hint:N`Игра открывается по ссылке или из папки на любом компьютере.`,platforms:[`web`]},n={id:`yandex`,icon:`🎮`,title:N`В Яндекс Играх`,hint:N`Игру можно будет выложить на сайт Яндекс Игры, где в неё сыграют все желающие.`,platforms:[`web`,`yandex-games`]};return e===`roblox`?[{id:`roblox`,icon:`🧱`,title:N`В Роблоксе`,hint:N`Игра открывается внутри Роблокса.`,platforms:[`roblox`]}]:e===`godot`?[{id:`desktop`,icon:`💻`,title:N`На компьютере`,hint:N`Игра запускается как обычная программа.`,platforms:[`desktop`]},t,n]:[t,n]}var Ne=e=>je.find(t=>t.engine===e),Pe=new Map(Object.entries(Object.assign({"../assets/kids/bg-build.svg":`/assets/bg-build-DIalyCDw.svg`,"../assets/kids/bg-idea.svg":`/assets/bg-idea-DHcE-Dhs.svg`,"../assets/kids/bg-materials.svg":`/assets/bg-materials-UDVFaueI.svg`,"../assets/kids/bg-plan.svg":`/assets/bg-plan-DpfwIsqJ.svg`,"../assets/kids/bg-play.svg":`/assets/bg-play-CNc1QZFK.svg`,"../assets/kids/robot-happy.svg":`/assets/robot-happy-B6YvlU94.svg`,"../assets/kids/robot-hello.svg":`/assets/robot-hello-CCsQgsS-.svg`,"../assets/kids/robot-listen.svg":`/assets/robot-listen-Buuz9xII.svg`,"../assets/kids/robot-sad.svg":`/assets/robot-sad-CRtiNVWs.svg`,"../assets/kids/robot-think.svg":`/assets/robot-think-CJ5fDBTm.svg`,"../assets/kids/star-big.svg":`/assets/star-big-CSFDKjws.svg`,"../assets/kids/star-empty.svg":`/assets/star-empty-CC-5vioJ.svg`,"../assets/kids/star-next.svg":`/assets/star-next-ztuDjOHU.svg`,"../assets/kids/star-on.svg":`/assets/star-on-l_krO3aV.svg`})).map(([e,t])=>[e.split(`/`).pop().replace(/\.[^.]+$/,``),t])),Fe=e=>Pe.get(e),Ie=(e,t)=>(t?Fe(`bg-${e}-light`):void 0)??Fe(`bg-${e}`),Le=[{id:`name`,title:N`Название`,hint:N`Придумать название игры`},{id:`folder`,title:N`Папка`,hint:N`Выбрать, где хранится игра`}],Re=[{id:`plan`,title:N`План`,hint:N`Проверить план игры`},{id:`materials`,title:N`Материалы`,hint:N`Выбрать картинки и звуки`},{id:`build`,title:N`Сборка`,hint:N`UM пишет код`},{id:`play`,title:N`Игра`,hint:N`Запустить готовую игру`},{id:`share`,title:N`Друзьям`,hint:N`Показать игру друзьям`}];function Y(e){return e.plans.toSorted((e,t)=>t.version-e.version)[0]}function ze(e){return U(e.interviewRounds?.findLast(e=>e.coverage)?.coverage)}function Be(e){if(e.video&&!e.videoAccepted)return`idea`;let t=Y(e);if(e.run?.kind===`planning`&&y(e.run))return`plan`;if((e.interviewRound?.status===`open`||e.run?.kind===`interview`&&y(e.run))&&(!t?.approvedAt||e.planNeedsUpdate)||!t)return`idea`;if(!t.approvedAt||e.planNeedsUpdate)return`plan`;let n=e.tasks.filter(e=>e.planId===t.id);return e.assetSelection&&e.assetReadiness?.assetsReady===!1?`materials`:!n.length||n.some(e=>e.status!==`done`)?`build`:`play`}function Ve(e,t,n=!1){let r=e?ze(e):U(),i=e?Y(e):void 0,a=!!i?.approvedAt&&!e?.planNeedsUpdate,o=a||e?.interviewRound?.status===`complete`,s=e&&i?e.tasks.filter(e=>e.planId===i.id):[],c=a&&(e?.assetSelection?e.assetSelection.status===`confirmed`||e.assetReadiness?.assetsReady===!0:s.length>0),l=a&&s.length>0&&s.every(e=>e.status===`done`),u=!!e,d=Le.length,f=[u,u,...ae.map((e,t)=>o||r[t].status===`covered`),a,c,l,l&&t,l&&t&&n],p=f.indexOf(!1);return[...Le,...ae,...Re].map((e,t)=>({id:e.id,title:R(e.title),hint:R(e.hint),state:f[t]?`on`:t===p?`next`:`off`,partial:t>=d&&t<d+ae.length&&!f[t]&&r[t-d].status===`partial`,...t<d?{fixed:!0}:{}}))}var He=e=>e.filter(e=>e.state===`on`).length,Ue=`M12 2.6l2.85 6 6.55.85-4.8 4.55 1.25 6.5L12 17.3l-5.85 3.2 1.25-6.5-4.8-4.55 6.55-.85z`,We=[[4,60],[10.5,30],[17,62],[24,28],[31,58],[38,26],[45,58],[52,26],[59,60],[66,28],[73,62],[79,30],[85,60],[91,28],[96.5,58]];function Ge(){return(0,q.jsx)(`svg`,{width:`0`,height:`0`,style:{position:`absolute`},"aria-hidden":`true`,children:(0,q.jsxs)(`defs`,{children:[(0,q.jsxs)(`linearGradient`,{id:`kids-star-fill`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,q.jsx)(`stop`,{offset:`0`,stopColor:`#FFF3A6`}),(0,q.jsx)(`stop`,{offset:`.5`,stopColor:`#FFC447`}),(0,q.jsx)(`stop`,{offset:`1`,stopColor:`#FF9A3D`})]}),(0,q.jsxs)(`linearGradient`,{id:`kids-star-edge`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,q.jsx)(`stop`,{offset:`0`,stopColor:`#FFE27A`}),(0,q.jsx)(`stop`,{offset:`1`,stopColor:`#F08A2E`})]}),(0,q.jsxs)(`linearGradient`,{id:`kids-brand`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,q.jsx)(`stop`,{offset:`0`,stopColor:`#B8F33A`}),(0,q.jsx)(`stop`,{offset:`.55`,stopColor:`#3FE0B5`}),(0,q.jsx)(`stop`,{offset:`1`,stopColor:`#4C8DFF`})]})]})})}function X({state:e,size:t=44,big:n}){let r=(n?Fe(`star-big`):void 0)??Fe(e===`on`?`star-on`:e===`next`?`star-next`:`star-empty`);return r?(0,q.jsx)(`img`,{className:`kids-star kids-star-img kids-star-${e}`,src:r,width:t,height:t,alt:``}):(0,q.jsxs)(`svg`,{className:`kids-star kids-star-${e}`,width:t,height:t,viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,q.jsx)(`path`,{d:Ue,strokeLinejoin:`round`,strokeWidth:`1.6`}),e===`on`&&(0,q.jsx)(`path`,{d:`M8.2 9.6c.9-1.9 1.9-3 3.3-3.9`,fill:`none`,stroke:`#fff`,strokeOpacity:`.75`,strokeWidth:`1.3`,strokeLinecap:`round`})]})}function Ke({stars:e}){let t=He(e);return(0,q.jsxs)(`span`,{className:`kids-count`,role:`img`,"aria-label":I`Звёзд: ${t} из ${e.length}`,children:[(0,q.jsx)(X,{state:`on`,size:28}),(0,q.jsx)(`b`,{children:t}),(0,q.jsx)(`i`,{children:I`из ${e.length}`})]})}function qe(e){let t=(0,G.useRef)(null);return(0,G.useEffect)(()=>{let e=t.current,n=e?.querySelector(`[data-current]`);if(!e||!n||e.scrollWidth<=e.clientWidth)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect();e.scrollLeft+=i.left+i.width/2-(r.left+r.width/2)},[e]),t}function Je({stars:e,small:t}){let n=(e.find(e=>e.state===`next`)??e.findLast(e=>e.state===`on`))?.id,r=qe(n);return(0,q.jsx)(`div`,{className:`kids-sky-scroll`,ref:r,"data-testid":`kids-constellation-scroll`,children:(0,q.jsxs)(`div`,{className:`kids-sky ${t?`kids-sky-small`:``}`,"data-testid":`kids-constellation`,children:[(0,q.jsx)(`svg`,{className:`kids-sky-lines`,viewBox:`0 0 100 100`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:We.slice(1).map((t,n)=>(0,q.jsx)(`line`,{x1:We[n][0],y1:We[n][1],x2:t[0],y2:t[1],className:e[n+1]?.state===`on`?`on`:``,vectorEffect:`non-scaling-stroke`},n))}),e.map((e,r)=>(0,q.jsxs)(`span`,{className:`kids-sky-star ${e.state}`,"data-current":e.id===n?``:void 0,style:{left:`${We[r][0]}%`,top:`${We[r][1]}%`},title:e.hint,children:[(0,q.jsx)(X,{state:e.state,size:(e.state===`next`?60:e.state===`on`?50:38)*(t?.8:1)}),(0,q.jsx)(`b`,{children:e.title})]},e.id)),(0,q.jsx)(`span`,{className:`kids-sky-divider`,style:{left:`69.5%`},children:I`Идея готова`})]})})}function Ye({size:e=120,thinking:t,pose:n}){let r=Fe(`robot-${t?`think`:n??`hello`}`)??Fe(`robot-hello`);return r?(0,q.jsxs)(`span`,{className:`kids-bot-wrap`,children:[(0,q.jsx)(`img`,{className:`kids-bot kids-bot-img ${t?`kids-bot-thinking`:``}`,src:r,width:Math.round(e*1.5),height:Math.round(e*1.5),alt:``}),(0,q.jsx)(`b`,{className:`kids-bot-name`,style:{fontSize:Math.max(18,Math.round(e*.22))},children:`UM`})]}):(0,q.jsxs)(`span`,{className:`kids-bot-wrap`,children:[(0,q.jsxs)(`svg`,{className:`kids-bot ${t?`kids-bot-thinking`:``}`,width:e,height:e,viewBox:`0 0 120 120`,"aria-hidden":`true`,children:[(0,q.jsx)(`path`,{d:`M60 8v14`,stroke:`url(#kids-brand)`,strokeWidth:`5`,strokeLinecap:`round`}),(0,q.jsx)(`circle`,{cx:`60`,cy:`8`,r:`6`,fill:`#B8F33A`}),(0,q.jsx)(`rect`,{x:`16`,y:`24`,width:`88`,height:`70`,rx:`26`,fill:`url(#kids-brand)`}),(0,q.jsx)(`rect`,{x:`28`,y:`38`,width:`64`,height:`38`,rx:`16`,fill:`#0E1024`}),(0,q.jsx)(`circle`,{className:`kids-bot-eye`,cx:`46`,cy:`56`,r:`7`,fill:`#B8F33A`}),(0,q.jsx)(`circle`,{className:`kids-bot-eye`,cx:`74`,cy:`56`,r:`7`,fill:`#B8F33A`}),(0,q.jsx)(`path`,{d:`M50 84q10 7 20 0`,stroke:`#0E1024`,strokeWidth:`4`,fill:`none`,strokeLinecap:`round`}),(0,q.jsx)(`rect`,{x:`4`,y:`48`,width:`10`,height:`26`,rx:`5`,fill:`#3FE0B5`}),(0,q.jsx)(`rect`,{x:`106`,y:`48`,width:`10`,height:`26`,rx:`5`,fill:`#4C8DFF`}),(0,q.jsx)(`rect`,{x:`38`,y:`98`,width:`16`,height:`14`,rx:`6`,fill:`#3FE0B5`}),(0,q.jsx)(`rect`,{x:`66`,y:`98`,width:`16`,height:`14`,rx:`6`,fill:`#3FE0B5`})]}),(0,q.jsx)(`b`,{className:`kids-bot-name`,style:{fontSize:Math.max(18,Math.round(e*.22))},children:`UM`})]})}function Xe({size:e=44}){return(0,q.jsxs)(`span`,{className:`kids-logo`,children:[(0,q.jsx)(`img`,{src:b,alt:`UMGT`,width:e,height:e}),(0,q.jsxs)(`span`,{children:[`Game `,(0,q.jsx)(`i`,{children:`Hub`})]})]})}var Ze=(0,G.lazy)(()=>P(()=>import(`./resources-xyl8IpX6.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]))),Z=(0,G.createContext)({mode:`robot`,voice:!0,starsOn:!0,stars:[],coverage:[],sideOpen:!0,setSideOpen:()=>{}}),Qe=e=>/^[A-ZА-ЯЁ]{2}/u.test(e)?e:e.charAt(0).toLowerCase()+e.slice(1),$e=e=>{try{return localStorage.getItem(e)!==`off`}catch{return!0}},et=(e,t)=>{try{localStorage.setItem(e,t?`on`:`off`)}catch{}},tt=e=>{try{return localStorage.getItem(`lmgh-kids-played:${e}`)===`yes`}catch{return!1}};function nt(){let e=`(max-width: 980px)`,[t,n]=(0,G.useState)(()=>typeof matchMedia==`function`&&matchMedia(e).matches);return(0,G.useEffect)(()=>{let t=matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[]),t}function Q({icon:e,title:t,hint:n,tone:r=`default`,selected:i,wide:a=!0,...o}){return(0,q.jsxs)(`button`,{type:`button`,...o,className:`k-btn k-btn-${r} ${i?`k-btn-selected`:``} ${a?`k-btn-wide`:``} ${o.className??``}`,children:[e&&(0,q.jsx)(`span`,{className:`k-btn-icon`,children:e}),(0,q.jsxs)(`span`,{className:`k-btn-text`,children:[(0,q.jsx)(`b`,{children:t}),n&&(0,q.jsx)(`small`,{children:n})]})]})}function rt(e){let t=e.match(/^(\p{Extended_Pictographic}(?:️|\p{Extended_Pictographic})*)\s*(.+)$/u);return t?{icon:t[1],text:t[2]}:{text:e}}function it({placeholder:e,disabled:t,onSend:n}){let{voice:r}=(0,G.useContext)(Z),i=re(),a=C(),[o,s]=(0,G.useState)(``),c=(0,G.useRef)(!1);(0,G.useEffect)(()=>{if(c.current&&!i.recording&&i.transcript){let e=i.transcript;s(t=>t.trim()?`${t.trim()} ${e}`:e),i.reset()}c.current=i.recording},[i.recording]);let l=i.recording?[o.trim(),i.transcript].filter(Boolean).join(` `):o,d=()=>{let e=o.trim();!e||t||i.recording||(a.prepare(),s(``),n(e))};return(0,q.jsxs)(`footer`,{className:`k-dock`,"data-testid":`kids-dock`,children:[(0,q.jsx)(O,{}),i.recording&&(0,q.jsxs)(`div`,{className:`k-dock-live`,"aria-live":`polite`,children:[(0,q.jsx)(`i`,{}),I`Я слушаю ·`,` `,ee(i.seconds),` `,I`· нажми «Стоп», когда закончишь`]}),!i.recording&&i.error&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:i.error}),(0,q.jsxs)(`form`,{className:`k-dock-row`,onSubmit:e=>{e.preventDefault(),d()},children:[(0,q.jsx)(D,{}),(0,q.jsx)(`textarea`,{className:`k-input`,rows:1,value:l,placeholder:i.recording?I`Говори, я записываю…`:e,maxLength:2e3,disabled:t,readOnly:i.recording,"data-testid":`kids-text`,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),d())}}),(0,q.jsx)(`button`,{type:`submit`,className:`k-dock-send`,disabled:!o.trim()||t||i.recording,"aria-label":I`Отправить`,"data-testid":`kids-send`,children:(0,q.jsx)(u,{size:30,weight:`fill`})}),r&&i.supported&&(0,q.jsxs)(`button`,{type:`button`,className:`k-dock-voice ${i.recording?`live`:``}`,disabled:t,"aria-pressed":i.recording,"data-testid":`kids-voice`,"aria-label":i.recording?I`Остановить запись`:I`Ответить голосом`,onClick:()=>{a.interrupt(),i.recording?i.stop():i.start()},children:[i.recording?(0,q.jsx)(W,{size:30,weight:`fill`}):(0,q.jsx)(H,{size:30,weight:`fill`}),(0,q.jsx)(`span`,{children:i.recording?I`Стоп`:I`Голос`})]})]})]})}function at({compact:e}){let{stars:t,coverage:n,onStep:r,activeStep:i}=(0,G.useContext)(Z);return(0,q.jsx)(`ol`,{className:`k-starlist`,"data-testid":`kids-steps`,children:t.map((t,a)=>{let o=n.find(e=>e.id===t.id),s=t.state===`on`?o?.summary??I`Готово`:t.partial?I`Нужно уточнить${o?.summary?`: ${o.summary}`:``}`:t.hint,c=!!r&&t.state!==`off`&&!t.fixed;return(0,q.jsxs)(`li`,{className:`${t.state} ${t.partial?`partial`:``} ${i===t.id?`active`:``} ${t.id===`difficulty`?`marked`:``}`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`k-step`,disabled:!c,"data-testid":`kids-step-${t.id}`,title:e?`${t.title}: ${s}`:c?I`Открыть этот шаг и поправить`:void 0,"aria-label":`${t.title}. ${s}${c?I`. Открыть и поправить`:``}`,"aria-current":i===t.id?`step`:void 0,onClick:()=>r?.(t),children:[(0,q.jsx)(X,{state:t.state,size:e?30:32}),!e&&(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`b`,{children:t.title}),(0,q.jsx)(`small`,{children:s})]}),!e&&c&&(0,q.jsx)(f,{className:`k-step-edit`,size:18})]}),t.id===`difficulty`&&!e&&(0,q.jsx)(`span`,{className:`k-starlist-mark`,children:I`Идея готова`})]},t.id)})})}function $({say:e,note:t,thinking:n,pose:r,children:o,extra:s,dock:c,controlsLast:l}){let{mode:u,stars:d,starsOn:f,sideOpen:p,setSideOpen:m,background:g,onStep:_,activeStep:v,onReturn:y}=(0,G.useContext)(Z),b=nt(),[x,S]=(0,G.useState)(!1),C=v??(d.find(e=>e.state===`next`)??d.findLast(e=>e.state===`on`))?.id,w=qe(C),T=(0,q.jsxs)(`div`,{className:`k-main ${g?`k-main-art`:``}`,style:g?{backgroundImage:`url(${g})`}:void 0,children:[(0,q.jsx)(`div`,{className:`k-center`,children:(0,q.jsxs)(`div`,{className:`k-center-in`,children:[(0,q.jsxs)(`div`,{className:`k-head`,children:[(0,q.jsx)(Ye,{size:96,thinking:n,pose:r}),(0,q.jsxs)(`div`,{className:`k-say`,"aria-live":`polite`,children:[e,t&&(0,q.jsx)(`div`,{className:`k-note`,children:t})]})]}),!l&&o&&(0,q.jsx)(`div`,{className:`k-controls`,children:o}),s,l&&o&&(0,q.jsx)(`div`,{className:`k-controls`,children:o}),y&&(0,q.jsx)(`div`,{className:`k-controls`,children:(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(h,{size:26}),title:I`Вернуться к текущему шагу`,hint:I`Закрыть этот шаг без изменений`,"data-testid":`kids-step-return`,onClick:y})})]})}),c&&(0,q.jsx)(it,{...c})]});if(u===`road`)return(0,q.jsxs)(`div`,{className:`k-work k-work-road`,children:[f&&(0,q.jsx)(`ol`,{className:`k-road`,ref:w,children:d.map(e=>(0,q.jsx)(`li`,{className:`${e.state} ${v===e.id?`active`:``}`,"data-current":e.id===C?``:void 0,children:(0,q.jsxs)(`button`,{type:`button`,className:`k-step`,disabled:!_||e.state===`off`||e.fixed,"aria-label":I`${e.title}. Открыть этот шаг`,onClick:()=>_?.(e),children:[(0,q.jsx)(X,{state:e.state,size:e.state===`next`?46:36}),(0,q.jsx)(`span`,{children:e.title})]})},e.id))}),T]});let E=b?x:p;return(0,q.jsxs)(`div`,{className:`k-work ${E?``:`k-work-collapsed`}`,children:[f&&b&&!E&&(0,q.jsxs)(`button`,{type:`button`,className:`k-drawer-tab`,"aria-label":I`Показать этапы`,"aria-expanded":!1,"data-testid":`kids-side-toggle`,onClick:()=>S(!0),children:[(0,q.jsx)(X,{state:`on`,size:24}),(0,q.jsx)(i,{size:18,weight:`bold`})]}),f&&b&&E&&(0,q.jsx)(`button`,{type:`button`,className:`k-drawer-backdrop`,"aria-label":I`Скрыть этапы`,onClick:()=>S(!1)}),f&&(!b||E)&&(0,q.jsxs)(`aside`,{className:`k-side ${b?`k-drawer`:``}`,"aria-label":I`Пройденные этапы`,onClick:e=>{b&&e.target.closest(`.k-step:not(:disabled)`)&&S(!1)},children:[(0,q.jsx)(`button`,{type:`button`,className:`k-side-toggle`,"aria-expanded":E,"data-testid":b?`kids-drawer-close`:`kids-side-toggle`,onClick:()=>b?S(!1):m(!p),children:E?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(a,{size:22,weight:`bold`}),(0,q.jsx)(`span`,{children:I`Скрыть этапы`})]}):(0,q.jsx)(i,{size:22,weight:`bold`,"aria-label":I`Показать этапы`})}),(0,q.jsx)(at,{compact:!E})]}),T]})}function ot({question:e,answer:t,last:n,busy:r,multiRef:i,onAnswer:a}){let[o,c]=(0,G.useState)(()=>Array.isArray(t?.value)?t.value:[]),[l,u]=(0,G.useState)(()=>e.type===`range`?typeof t?.value==`number`?t.value:e.defaultValue??e.min:0);i.current=o;let d=n?I`Отправить ответ UM`:I`Перейти к следующему вопросу`;return e.type===`single`?(0,q.jsx)(`div`,{className:`k-options`,children:e.options.map(e=>{let n=rt(e.label);return(0,q.jsx)(Q,{icon:n.icon,title:n.text,disabled:r,selected:t?.value===e.id,"data-testid":`kids-option`,onClick:()=>a({value:e.id})},e.id)})}):e.type===`multi`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:`k-hint`,children:[I`Можно выбрать несколько`,e.maxSelections?I`, но не больше ${e.maxSelections}`:``,`.`]}),(0,q.jsx)(`div`,{className:`k-options`,children:e.options.map(e=>{let t=rt(e.label),n=o.includes(e.id);return(0,q.jsx)(Q,{icon:n?(0,q.jsx)(x,{size:28,weight:`bold`}):t.icon,title:t.text,selected:n,disabled:r,"aria-pressed":n,onClick:()=>c(t=>n?t.filter(t=>t!==e.id):[...t,e.id])},e.id)})}),(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Ответить`,hint:d,disabled:r||!o.length,onClick:()=>a({value:o})})]}):e.type===`range`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`k-range`,children:[(0,q.jsxs)(`b`,{children:[l,e.unit?` ${e.unit}`:``]}),(0,q.jsx)(`input`,{type:`range`,min:e.min,max:e.max,step:e.step,value:l,disabled:r,"aria-label":e.prompt,onChange:e=>u(Number(e.target.value))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`i`,{children:e.min}),(0,q.jsx)(`i`,{children:e.max})]})]}),(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Ответить`,hint:d,disabled:r,onClick:()=>a({value:l})})]}):null}function st({workspace:e,activityLabel:t,onRefresh:n}){let r=e.project.id,i=e.interviewRound,a=y(e.run),{coverage:o}=(0,G.useContext)(Z),[c,l]=(0,G.useState)({}),[u,d]=(0,G.useState)(0),[f,p]=(0,G.useState)(!1),[m,g]=(0,G.useState)(``),_=(0,G.useRef)([]);(0,G.useEffect)(()=>{l(i?ne(i):{}),d(0),g(``)},[i?.id]);let b=async e=>{if(!f){p(!0),g(``);try{await e(),await n()}catch(e){g(v(e))}finally{p(!1)}}},x=e=>b(()=>A(`/projects/${r}/messages`,`POST`,{text:e,mode:`interview`})),S=(e,t,n)=>{let i={...c,[t.id]:{questionId:t.id,...n}},a=B(t,i[t.id]);if(a){g(a);return}if(l(i),g(``),u<e.questions.length-1){d(u+1);return}b(()=>A(`/projects/${r}/interview/${e.id}/answers`,`POST`,{answers:ie(e,i)}))},C=m&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:m});if(a||f)return(0,q.jsxs)($,{thinking:!0,say:e.run?.kind===`planning`?I`Составляю план…`:I`Думаю над твоим ответом…`,note:t,children:[(0,q.jsx)(Q,{tone:`ghost`,wide:!1,icon:(0,q.jsx)(W,{size:26}),title:I`Остановить`,hint:I`UM перестанет думать`,onClick:()=>void A(`/projects/${r}/control`,`POST`,{action:`stop`}).then(n).catch(e=>g(v(e)))}),C]});if(i?.status===`open`&&i.questions.length){let e=i.questions[Math.min(u,i.questions.length-1)],t=!!e.aspect&&o.find(t=>t.id===e.aspect)?.status===`partial`,n=e.type===`text`||(e.type===`single`||e.type===`multi`)&&e.allowCustom?{placeholder:e.type===`text`?e.placeholder||I`Напиши или скажи ответ`:I`Свой ответ: напиши или скажи голосом`,disabled:f,onSend:t=>S(i,e,e.type===`text`?{value:t.slice(0,e.maxLength??2e3)}:e.type===`multi`?{value:_.current,customText:t}:{customText:t})}:void 0;return(0,q.jsxs)($,{say:e.prompt,dock:n,note:(0,q.jsxs)(q.Fragment,{children:[u===0&&i.introduction&&(0,q.jsx)(`span`,{"data-testid":`kids-intro`,children:i.introduction}),e.description&&(0,q.jsx)(`span`,{children:e.description}),t&&(0,q.jsx)(`span`,{className:`k-clarify`,"data-testid":`kids-clarify`,children:I`UM уточняет ответ, чтобы зажечь звезду`}),i.questions.length>1&&(0,q.jsxs)(`span`,{children:[I`Вопрос`,` `,u+1,` `,I`из`,` `,i.questions.length]})]}),children:[(0,q.jsx)(ot,{question:e,answer:c[e.id],last:u===i.questions.length-1,busy:f,multiRef:_,onAnswer:t=>S(i,e,t)},e.id),u>0&&(0,q.jsx)(Q,{tone:`ghost`,wide:!1,icon:(0,q.jsx)(h,{size:26}),title:I`Назад`,hint:I`К прошлому вопросу`,onClick:()=>d(u-1)}),C]})}if(i?.status===`complete`)return(0,q.jsxs)($,{say:I`Идея готова! Теперь я составлю план игры.`,note:(0,q.jsx)(te,{text:i.introduction}),dock:{placeholder:I`Хочешь что-то добавить или поменять?`,disabled:f,onSend:x},children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Составить план`,hint:I`UM запишет, из чего состоит игра`,disabled:f,"data-testid":`kids-make-plan`,onClick:()=>void b(()=>A(`/projects/${r}/plan`,`POST`,{}))}),C]});let w=e.run?.status===`failed`||e.run?.status===`interrupted`;return e.messages.length?(0,q.jsxs)($,{pose:w?`sad`:void 0,say:w?I`Что-то пошло не так. Попробуем ещё раз?`:I`Расскажи ещё что-нибудь про игру.`,note:w?e.run?.error:void 0,dock:{placeholder:I`Напиши или скажи, что хочешь добавить`,disabled:f,onSend:x},children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(K,{size:28}),title:I`Продолжить`,hint:I`UM задаст следующий вопрос`,disabled:f,onClick:()=>void x(I`Продолжим. Задай следующий вопрос.`)}),C]}):(0,q.jsx)($,{say:I`Расскажи, какую игру ты хочешь сделать.`,note:I`Можно коротко: кто герой и что он делает. Напиши внизу или нажми «Голос».`,dock:{placeholder:I`Например: кот летает в космосе и собирает звёзды`,disabled:f,onSend:x},children:C})}function ct({workspace:e,star:t,onRefresh:n,onDone:r}){let{coverage:i}=(0,G.useContext)(Z),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(``),l=i.find(e=>e.id===t.id)?.summary,u=y(e.run);return(0,q.jsx)($,{say:I`Что поменять в шаге «${t.title}»?`,thinking:a,note:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{"data-testid":`kids-step-current`,children:l?(0,q.jsxs)(q.Fragment,{children:[I`Сейчас записано:`,(0,q.jsx)(`b`,{className:`k-current`,children:l})]}):t.hint}),(0,q.jsx)(`span`,{children:u?I`Я сейчас занят. Подожди, пока я закончу, и попробуй снова.`:I`Напиши или скажи внизу, как должно быть. Я проверю ответ и обновлю звезду.`})]}),dock:{placeholder:I`Новый ответ про «${t.title.toLowerCase()}»`,disabled:a||u,onSend:async i=>{o(!0),c(``);try{await A(`/projects/${e.project.id}/messages`,`POST`,{text:I`Хочу поменять ответ про шаг «${t.title}» (аспект ${t.id}). Теперь так: ${i}`,mode:`interview`}),await n(),r()}catch(e){c(v(e))}finally{o(!1)}}},children:s&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:s})})}function lt({workspace:e,activityLabel:t,busy:n,profile:r,onAction:i,onRefresh:a,onEditPlan:o}){let s=e.project.id,c=Y(e),l=c?(0,q.jsx)(`div`,{className:`k-plan`,children:(0,q.jsx)(te,{text:c.markdown})}):void 0;if(e.run?.kind===`planning`&&y(e.run))return(0,q.jsx)($,{thinking:!0,say:I`Составляю план игры…`,note:t,extra:l});if(!c||e.planNeedsUpdate)return(0,q.jsx)($,{say:c?I`Идея изменилась. Обновим план?`:I`Пора составить план игры.`,note:e.run?.status===`failed`?e.run.error:void 0,extra:l,children:(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(K,{size:28}),title:c?I`Обновить план`:I`Составить план`,hint:I`UM запишет, из чего состоит игра`,disabled:n,onClick:()=>void i(I`Составляем план`,`/projects/${s}/plan`)})});let u=e.messages.filter(e=>e.createdAt>(c.approvedAt??c.createdAt)&&!e.interviewRoundId),d=u.findLast(e=>e.role===`user`),p=u.at(-1)?.role===`assistant`?u.at(-1):void 0,m=e.run?.kind===`chat`&&y(e.run),h=e.run?.kind===`chat`&&e.run.status===`failed`,g=r&&r.age<14?I`Прочитай план игры вместе с родителями и обсудите его. Если что-то непонятно, спроси у них или спроси меня внизу, текстом или голосом. Я отвечу прямо здесь.`:I`Если что-то непонятно или не так, спроси меня внизу, текстом или голосом. Я отвечу прямо здесь.`,_={placeholder:I`Спроси UM про план или скажи, что поменять`,disabled:n||m,onSend:e=>void i(I`Отправляем сообщение`,`/projects/${s}/messages`,{text:e,mode:`chat`})};if(m)return(0,q.jsx)($,{thinking:!0,say:I`Думаю над твоим вопросом…`,note:(0,q.jsxs)(q.Fragment,{children:[d&&(0,q.jsxs)(`span`,{className:`k-asked`,children:[I`Ты:`,` `,d.content]}),(0,q.jsx)(`span`,{children:t})]}),extra:l,dock:_});let v=!!c.approvedAt;return(0,q.jsxs)($,{controlsLast:!0,say:p?I`Отвечаю на твой вопрос`:v?I`Это план твоей игры. Ты его уже одобрил.`:I`Я записал план игры. Всё верно?`,pose:h?`sad`:void 0,extra:l,dock:_,note:p?(0,q.jsxs)(q.Fragment,{children:[d&&(0,q.jsxs)(`span`,{className:`k-asked`,children:[I`Ты:`,` `,d.content]}),(0,q.jsx)(`div`,{className:`k-answer`,"data-testid":`kids-plan-answer`,children:(0,q.jsx)(te,{text:p.content})}),(0,q.jsx)(`span`,{children:I`План находится ниже. Можешь спросить ещё что-нибудь в поле внизу.`})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{"data-testid":r&&r.age<14?`kids-plan-parents`:void 0,children:g}),h&&(0,q.jsxs)(`span`,{className:`k-clarify`,children:[I`Не получилось ответить:`,` `,e.run?.error??I`попробуй ещё раз`]})]}),children:[d&&(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(K,{size:28}),title:I`Обновить план по нашему разговору`,hint:I`UM перепишет план с учётом того, что ты сказал`,disabled:n,"data-testid":`kids-plan-update`,onClick:()=>void i(I`Составляем план`,`/projects/${s}/plan`)}),!v&&(0,q.jsx)(Q,{tone:d?`default`:`main`,icon:(0,q.jsx)(x,{size:28,weight:`bold`}),title:I`План хороший`,hint:I`UM начнёт готовить игру`,disabled:n,"data-testid":`kids-approve-plan`,onClick:async()=>{await i(I`Утверждаем план`,`/projects/${s}/plan/approve`,{planId:c.id})&&await a()}}),(0,q.jsx)(Q,{icon:(0,q.jsx)(f,{size:26}),title:I`Хочешь исправить что-то сам? Нажми здесь`,hint:I`Откроется окно, где план можно менять как обычный текст`,"data-testid":`kids-edit-plan`,onClick:o})]})}function ut({workspace:e,onRefresh:t,onClose:n}){let r=Y(e),[i,a]=(0,G.useState)(r?.markdown??``),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(``),u=i!==(r?.markdown??``),d=async()=>{if(!i.trim()){l(I`План не может быть пустым. Напиши хотя бы одну строчку.`);return}s(!0),l(``);try{await A(`/projects/${e.project.id}/plan`,`PUT`,{markdown:i}),await t(),n()}catch(e){l(v(e))}finally{s(!1)}};return(0,q.jsxs)(`main`,{className:`k-editor`,"data-testid":`kids-plan-editor`,children:[(0,q.jsxs)(`div`,{className:`k-settings-head`,children:[(0,q.jsx)(Q,{wide:!1,icon:(0,q.jsx)(h,{size:28}),title:I`Назад`,hint:u?I`Выйти без сохранения`:I`Вернуться к плану`,disabled:o,"data-testid":`kids-plan-editor-back`,onClick:n}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:I`Исправь план сам`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Это текст плана. Меняй его как обычную записку, а потом нажми «Сохранить план».`})]})]}),(0,q.jsxs)(`ul`,{className:`k-tips`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`b`,{children:`#`}),(0,q.jsx)(`span`,{children:I`Строка с решёткой в начале это заголовок.`})]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`b`,{children:`-`}),(0,q.jsx)(`span`,{children:I`Строка с чёрточкой в начале это пункт списка.`})]})]}),(0,q.jsx)(`textarea`,{className:`k-editor-text`,"aria-label":I`Текст плана`,value:i,spellCheck:!0,disabled:o,"data-testid":`kids-plan-text`,onChange:e=>{a(e.target.value),l(``)}}),c&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:c}),(0,q.jsxs)(`div`,{className:`k-cta`,children:[(0,q.jsx)(Q,{wide:!1,icon:(0,q.jsx)(K,{size:28}),title:I`Вернуть как было`,hint:I`Отменить все мои правки`,disabled:o||!u,onClick:()=>{a(r?.markdown??``),l(``)}}),(0,q.jsx)(Q,{tone:`main`,wide:!1,className:`k-btn-xl`,icon:(0,q.jsx)(x,{size:32,weight:`bold`}),title:I`Сохранить план`,hint:u?I`UM запомнит новый план и покажет его тебе`:I`Сначала что-нибудь измени`,disabled:o||!u,"data-testid":`kids-plan-save`,onClick:()=>void d()})]})]})}var dt={audio:`🎵`,video:`🎬`,ui:`🔘`,"2d":`🖼️`,models:`🧊`,textures:`🧱`,hdris:`🌅`},ft={searching:N`UM ищет варианты`,ready:N`Нажми и выбери`,importing:N`Загружаю в игру`,imported:N`Готово`,skipped:N`UM сделает сам`,failed:N`Не получилось, нажми`};function pt({workspace:e,onRefresh:t}){let n=e.project.id,r=e.assetSelection,{profile:i}=(0,G.useContext)(Z),[a,c]=(0,G.useState)(null),[u,d]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[g,y]=(0,G.useState)(null),b=(0,G.useRef)(null),S=(0,G.useRef)(null),[C,w]=(0,G.useState)(!1),[T,E]=(0,G.useState)(``),D=r?.needs??[],O=D.find(e=>e.id===a),k=e=>!!e.choice||e.status===`imported`||e.status===`skipped`,j=D.filter(e=>!k(e)).length,M=async(e,n)=>{if(!C&&r){w(!0),E(``);try{await e(),await t(),n?.()}catch(e){E(v(e)),await t().catch(()=>{})}finally{w(!1)}}},N=r?`/projects/${n}/asset-selection/${r.id}`:``,P=async()=>{for(let e of D.filter(e=>!k(e))){let t=await A(`/projects/${n}/asset-selection`);await A(`${N}/needs/${e.id}`,`PATCH`,{revision:t.selection?.revision??r.revision,choice:{kind:`skip`}})}},F=async(e,t,n)=>{let r=new FormData;r.append(`revision`,String(n)),r.append(`license`,I`Собственный файл пользователя`),r.append(`author`,i?.name??I`Автор игры`),r.append(`file`,t);let a=await fetch(`/api/v1${N}/needs/${e}/upload`,{method:`POST`,credentials:`same-origin`,body:r});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.message??I`Не получилось загрузить файл. Попробуй другой.`)}},L=(e,t)=>M(()=>F(e,t,r.revision),()=>c(null)),z=e=>M(async()=>{let t=g,n=t?.type.startsWith(`audio/`)?`audio`:t?.type.startsWith(`video/`)?`video`:`2d`,i=await A(`${N}/needs`,`POST`,{revision:r.revision,title:I`Пожелание: ${e.slice(0,80)}`,note:e,type:n}),a=i.needs.at(-1);t?await F(a.id,t,i.revision):await A(`${N}/needs/${a.id}`,`PATCH`,{revision:i.revision,choice:{kind:`skip`}})},()=>{m(!1),y(null)}),B=e=>e.choice?.kind===`skip`?e.title.startsWith(I`Пожелание`)?I`UM учтёт это пожелание`:I`UM сделает сам`:e.choice?.kind===`upload`?I`Твой файл: ${e.choice.asset.name}`:e.choice?.kind===`candidate`?e.candidates.find(t=>e.choice?.kind===`candidate`&&t.id===e.choice.candidateId)?.asset.name??I`Выбрано`:e.importedAsset?.name??I`Ещё не выбрано`,V=T&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:T});if(!r||r.status===`discovering`)return(0,q.jsx)($,{thinking:!0,say:I`Смотрю, какие картинки и звуки нужны игре…`,note:I`Это займёт минутку.`});if(r.status===`failed`||r.status===`cancelled`)return(0,q.jsxs)($,{pose:`sad`,say:I`Не получилось подобрать материалы. Попробуем ещё раз?`,note:r.error?xe(r.error):void 0,children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(K,{size:28}),title:I`Попробовать ещё раз`,hint:I`UM заново подберёт картинки и звуки`,disabled:C,onClick:()=>void M(()=>A(`${N}/retry`,`POST`,{}))}),V]});if(r.status===`importing`)return(0,q.jsx)($,{thinking:!0,say:I`Загружаю выбранное в игру…`,note:I`Скоро начнём сборку.`});if(r.status===`confirmed`)return(0,q.jsx)($,{say:I`Материалы уже загружены в игру.`,note:I`Этот набор подтверждён. Другие материалы выберем при обновлении плана.`,extra:(0,q.jsx)(`div`,{className:`k-rows`,"data-testid":`kids-confirmed-assets`,children:D.map(e=>(0,q.jsxs)(`div`,{className:`k-row k-review`,children:[(0,q.jsx)(`span`,{className:`k-need-icon`,children:dt[e.type]??`🖼️`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:(0,q.jsx)(J,{text:e.title})}),(0,q.jsx)(`small`,{children:B(e)})]})]},e.id))})});if(O){let e=O.candidates.filter(e=>e.asset.importMode===`automatic`),t=O.choice?.kind===`candidate`?O.choice.candidateId:void 0;return(0,q.jsx)($,{say:(0,q.jsxs)(q.Fragment,{children:[I`Выбери:`,` `,(0,q.jsx)(J,{text:O.title})]}),thinking:O.status===`searching`,note:O.status===`searching`?I`Ищу варианты, подожди немного.`:e.length?I`${O.type===`audio`?I`Нажми на треугольник, чтобы послушать`:I`Посмотри варианты`}, и нажми «Выбрать» под тем, что нравится. Если ничего не подходит, напиши внизу, что искать.`:I`Готовых вариантов не нашлось. Напиши внизу, что искать, или нажми «Пусть UM сделает сам».`,dock:{placeholder:I`Найти другое: напиши, что искать`,disabled:C||O.status===`searching`,onSend:e=>void M(()=>A(`${N}/needs/${O.id}/search`,`POST`,{revision:r.revision,query:e}))},extra:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`k-picks`,"data-testid":`kids-picks`,children:e.map(e=>(0,q.jsxs)(`div`,{className:`k-pick ${t===e.id?`on`:``}`,children:[(0,q.jsx)(`div`,{className:`k-pick-media`,children:(0,q.jsx)(o,{asset:e.asset,compact:!0})}),(0,q.jsx)(`b`,{children:e.asset.name}),(0,q.jsxs)(`small`,{children:[e.asset.author?I`Автор: ${e.asset.author}. `:``,I`Бесплатно`]}),(0,q.jsx)(Q,{tone:t===e.id?`default`:`main`,icon:(0,q.jsx)(x,{size:26,weight:`bold`}),title:t===e.id?I`Выбрано`:I`Выбрать`,disabled:C,"data-testid":`kids-pick`,onClick:()=>void M(()=>A(`${N}/needs/${O.id}`,`PATCH`,{revision:r.revision,choice:{kind:`candidate`,candidateId:e.id}}),()=>c(null))})]},e.id))}),(0,q.jsxs)(`div`,{className:`k-controls`,children:[(0,q.jsx)(Q,{icon:(0,q.jsx)(f,{size:26}),title:I`Пусть UM сделает сам`,hint:O.required?I`UM нарисует или запишет это сам`:I`Это не обязательно, можно обойтись`,disabled:C,"data-testid":`kids-pick-skip`,onClick:()=>void M(()=>A(`${N}/needs/${O.id}`,`PATCH`,{revision:r.revision,choice:{kind:`skip`}}),()=>c(null))}),(0,q.jsx)(Q,{icon:(0,q.jsx)(l,{size:26}),title:I`Загрузить со своего устройства`,hint:O.type===`audio`?I`Своя музыка или звук с компьютера`:I`Своя картинка с компьютера`,disabled:C,"data-testid":`kids-pick-upload`,onClick:()=>S.current?.click()}),(0,q.jsx)(`input`,{ref:S,type:`file`,hidden:!0,accept:O.type===`audio`?`audio/*`:O.type===`video`?`video/*`:`image/*`,"data-testid":`kids-pick-file`,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&L(O.id,t)}}),O.choice?.kind===`upload`&&(0,q.jsxs)(`p`,{className:`k-hint k-ok-text`,children:[I`Сейчас выбран твой файл:`,` `,O.choice.asset.name]}),(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(h,{size:26}),title:I`Назад к списку`,hint:I`Выбрать что-нибудь другое`,onClick:()=>{c(null),E(``)}}),V]})]})})}return p?(0,q.jsxs)($,{say:I`Что тебе нравится? Покажи и расскажи.`,"data-testid":`kids-wish`,note:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:I`Например: «Хочу кнопки как на этой картинке» или «Хочу такую же музыку».`}),(0,q.jsx)(`span`,{children:I`Сначала приложи файл, если он есть. Потом напиши или скажи внизу, что тебе в нём нравится, и я это учту.`})]}),dock:{placeholder:I`Что тебе нравится в этом файле?`,disabled:C,onSend:z},children:[(0,q.jsx)(Q,{icon:(0,q.jsx)(l,{size:26}),title:g?I`Файл: ${g.name}`:I`Приложить картинку, звук или видео`,hint:g?I`Нажми, чтобы выбрать другой файл`:I`Выбрать файл с устройства. Можно и без файла`,selected:!!g,disabled:C,"data-testid":`kids-wish-file-button`,onClick:()=>b.current?.click()}),(0,q.jsx)(`input`,{ref:b,type:`file`,hidden:!0,accept:`image/*,audio/*,video/*`,"data-testid":`kids-wish-file`,onChange:e=>{y(e.target.files?.[0]??null),e.target.value=``}}),(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(h,{size:26}),title:I`Назад к списку`,hint:I`Не добавлять пожелание`,disabled:C,onClick:()=>{m(!1),y(null),E(``)}}),V]}):u?(0,q.jsxs)($,{controlsLast:!0,say:I`Проверь набор. Всё так, как ты хотел?`,note:I`Если что-то не так, нажми «Поменять» в нужной строчке.`,extra:(0,q.jsx)(`div`,{className:`k-rows`,"data-testid":`kids-review`,children:D.length?D.map(e=>(0,q.jsxs)(`div`,{className:`k-row k-review`,children:[(0,q.jsx)(`span`,{className:`k-need-icon`,children:dt[e.type]??`🖼️`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:(0,q.jsx)(J,{text:e.title})}),(0,q.jsx)(`small`,{children:B(e)})]}),(0,q.jsxs)(`button`,{type:`button`,className:`k-chip`,disabled:C,onClick:()=>{d(!1),c(e.id)},children:[(0,q.jsx)(f,{size:18}),I`Поменять`]})]},e.id)):(0,q.jsx)(`p`,{className:`k-hint`,children:I`Новые материалы не нужны: используем уже имеющиеся или нарисуем их в игре.`})}),children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(x,{size:28,weight:`bold`}),title:I`Подтвердить набор и продолжить`,hint:I`UM загрузит всё в игру и начнёт сборку`,disabled:C||j>0,"data-testid":`kids-confirm-assets`,onClick:()=>void M(()=>A(`${N}/confirm`,`POST`,{revision:r.revision}),()=>d(!1))}),(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(h,{size:26}),title:I`Назад к списку`,hint:I`Выбрать что-нибудь ещё`,onClick:()=>d(!1)}),V]}):(0,q.jsx)($,{say:D.length?j?I`Выберем картинки и звуки для игры.`:I`Всё выбрано! Осталось проверить набор.`:I`Новые картинки для этой игры не нужны.`,note:D.length?j?I`Нажми на строчку и выбери, что нравится. Осталось выбрать: ${j}.`:I`Нажми «Проверить набор» под списком.`:I`Используем материалы из проекта или нарисуем их в игре. Нажми «Проверить набор».`,extra:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`k-rows`,"data-testid":`kids-needs`,children:D.map(e=>(0,q.jsxs)(`button`,{type:`button`,className:`k-row k-need ${k(e)?`done`:``} ${e.status}`,"data-testid":`kids-need`,onClick:()=>{c(e.id),E(``)},children:[(0,q.jsx)(`span`,{className:`k-need-icon`,children:dt[e.type]??`🖼️`}),(0,q.jsx)(`b`,{children:(0,q.jsx)(J,{text:e.title})}),(0,q.jsx)(`small`,{children:e.choice?.kind===`candidate`?I`✓ Выбрано`:e.choice?.kind===`upload`?I`✓ Твой файл`:e.choice?.kind===`skip`?I`UM сделает сам`:R(ft[e.status]??e.status)}),(0,q.jsx)(s,{size:22,weight:`bold`})]},e.id))}),(0,q.jsxs)(`div`,{className:`k-controls`,children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(x,{size:28,weight:`bold`}),title:I`Проверить набор`,hint:j?I`Сначала выбери всё из списка выше, осталось ${j}`:I`Посмотреть весь набор перед сборкой`,disabled:C||j>0,"data-testid":`kids-review-open`,onClick:()=>d(!0)}),(0,q.jsx)(Q,{icon:(0,q.jsx)(_,{size:28,weight:`bold`}),title:I`Мне нравится вот это`,hint:I`Добавить своё пожелание: приложи картинку, звук или видео и расскажи, что хочешь`,disabled:C,"data-testid":`kids-wish-open`,onClick:()=>{m(!0),E(``)}}),j>0&&(0,q.jsx)(Q,{icon:(0,q.jsx)(f,{size:26}),title:I`Пусть UM сделает всё остальное сам`,hint:I`Не выбирать: UM нарисует картинки и запишет звуки сам`,disabled:C,"data-testid":`kids-skip-all`,onClick:()=>void M(P)}),V]})]})})}function mt({workspace:e,activityLabel:t,busy:n,onAction:r,onRefresh:i}){let a=e.project.id,o=Y(e),s=e.tasks.filter(e=>e.planId===o?.id),l=s.filter(e=>e.status===`done`).length,u=e.run,f=u?.kind===`execution`&&y(u),m=u?.status===`paused`,h=s.find(e=>e.status===`running`)??s.find(e=>e.status===`open`),g=s.find(e=>e.status===`failed`),_=!s.length,v=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`k-progress`,children:[(0,q.jsxs)(`b`,{children:[I`Готово`,` `,l,` `,I`из`,` `,s.length]}),(0,q.jsx)(`span`,{className:`k-bar`,children:(0,q.jsx)(`i`,{style:{width:`${s.length?l/s.length*100:0}%`}})})]}),(0,q.jsx)(`div`,{className:`k-rows`,children:s.map(e=>(0,q.jsxs)(`div`,{className:`k-row ${e.status}`,children:[(0,q.jsx)(`span`,{className:`k-dot ${e.status}`,children:e.status===`done`?(0,q.jsx)(x,{size:20,weight:`bold`}):e.status===`running`?(0,q.jsx)(p,{size:14,weight:`fill`}):e.status===`failed`?(0,q.jsx)(c,{size:18}):null}),(0,q.jsx)(`b`,{children:(0,q.jsx)(J,{text:e.title})})]},e.id))})]}),b=u?.kind===`execution`&&u.status===`pausing`,S=e=>void r(e===`pause`?I`Запрашиваем паузу`:e===`stop`?I`Останавливаем UM`:I`Продолжаем работу`,`/projects/${a}/control`,{action:e});return(0,q.jsxs)($,{thinking:f||_,pose:g?`sad`:void 0,extra:v,say:_?I`Разбиваю план на шаги…`:b?(0,q.jsxs)(q.Fragment,{children:[I`Доделываю шаг и встану на паузу:`,` `,(0,q.jsx)(J,{text:h?.title??I`следующий шаг`})]}):f?(0,q.jsxs)(q.Fragment,{children:[I`Я делаю:`,` `,(0,q.jsx)(J,{text:h?.title??I`следующий шаг`})]}):g?I`Один шаг не получился. Попробуем ещё раз?`:m?I`Я на паузе. Продолжим?`:I`Всё готово к сборке. Начинаем?`,note:b?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`k-clarify`,"data-testid":`kids-pausing`,children:I`Пауза принята. Я не бросаю шаг посередине, чтобы ничего не сломать. Как только закончу его, остановлюсь.`}),(0,q.jsx)(`span`,{children:t})]}):_||f?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:t}),(0,q.jsx)(`span`,{children:I`Незнакомое слово? Нажми на кружок с вопросом рядом с ним.`})]}):g?g.error:e.assetReadiness?.canExecute===!1?e.assetReadiness.reason:void 0,children:[e.permissions.map(e=>(0,q.jsx)(`div`,{className:`k-permission`,children:(0,q.jsx)(z,{permission:e,projectId:a,onRefresh:i})},e.id)),!_&&(f?b?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Q,{icon:(0,q.jsx)(d,{size:28,weight:`fill`}),title:I`Пауза скоро включится`,hint:I`UM доделывает текущий шаг`,disabled:!0}),(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(W,{size:26,weight:`fill`}),title:I`Остановить прямо сейчас`,hint:I`Шаг прервётся и потом начнётся заново`,disabled:n,"data-testid":`kids-stop-now`,onClick:()=>S(`stop`)})]}):(0,q.jsx)(Q,{icon:(0,q.jsx)(d,{size:28,weight:`fill`}),title:I`Пауза`,hint:I`UM доделает текущий шаг и остановится`,disabled:n,"data-testid":`kids-pause`,onClick:()=>S(`pause`)}):g?(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(K,{size:28}),title:I`Попробовать ещё раз`,hint:I`UM переделает этот шаг`,disabled:n,onClick:()=>void r(I`Возвращаем задачу в очередь`,`/projects/${a}/tasks/${g.id}/retry`)}):(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(p,{size:28,weight:`fill`}),title:m?I`Продолжить`:I`Начать сборку`,hint:I`UM будет делать игру шаг за шагом`,disabled:n||e.assetReadiness?.canExecute===!1,"data-testid":`kids-start-build`,onClick:()=>m?S(`resume`):void r(I`Запускаем разработку`,`/projects/${a}/run`)}))]})}function ht({workspace:e,engineBusy:t,previewUrl:n,error:r,busy:i,played:a,onEngine:o,onAction:c,onPlayed:l,onShare:u}){let d=e.project.id,[f,m]=(0,G.useState)(!1);return(0,G.useEffect)(()=>{f&&!t&&(m(!1),!r&&(e.project.engine!==`html5`||n)&&l())},[f,t,r,n,e.project.engine,l]),(0,q.jsxs)($,{pose:`happy`,say:I`Игра готова! Запустим?`,note:t||I`Если хочешь что-то улучшить, напиши или скажи внизу.`,thinking:!!t,dock:{placeholder:I`Что улучшить в игре?`,disabled:i,onSend:e=>void c(I`Отправляем сообщение`,`/projects/${d}/messages`,{text:e,mode:`interview`})},children:[(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(p,{size:28,weight:`fill`}),title:I`Играть`,hint:I`Запустить игру прямо сейчас`,disabled:!!t||f,"data-testid":`kids-play`,onClick:()=>{m(!0),o(`run`).catch(()=>m(!1))}}),n&&(0,q.jsxs)(`a`,{className:`k-btn k-btn-default k-btn-wide`,href:n,target:`_blank`,rel:`noreferrer`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(s,{size:28})}),(0,q.jsxs)(`span`,{className:`k-btn-text`,children:[(0,q.jsx)(`b`,{children:I`Открыть игру`}),(0,q.jsx)(`small`,{children:I`Игра откроется в новой вкладке`})]})]}),(0,q.jsx)(Q,{icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Показать игру друзьям`,hint:a?I`Собрать игру, чтобы в неё сыграли другие`:I`Сначала сыграй сам, потом покажем друзьям`,disabled:!a,"data-testid":`kids-share-open`,onClick:u}),(0,q.jsx)(Q,{tone:`ghost`,icon:(0,q.jsx)(W,{size:26}),title:I`Остановить игру`,hint:I`Закрыть запущенную игру`,disabled:!!t,onClick:()=>void o(`stop`)})]})}function gt({workspace:e,engineBusy:t,error:n,onEngine:r,onShared:i}){let a=e.project,o=a.platforms.includes(`yandex-games`),c=a.engine===`roblox`,[u,d]=(0,G.useState)([]),[f,p]=(0,G.useState)(!1),m=()=>void A(`/projects/${a.id}/builds`).then(d).catch(()=>{});(0,G.useEffect)(m,[a.id]),(0,G.useEffect)(()=>{f&&!t&&(p(!1),m(),n||i())},[t]);let h=u.filter(e=>e.validation.ok).at(-1),g=c?I`Игру для Роблокса публикуют из программы Roblox Studio: меню File, пункт Publish to Roblox. Попроси взрослого помочь.`:o?I`Готовый файл игры можно скачать ниже и загрузить в Яндекс Игры. Публикацию там пока делает взрослый.`:I`Готовая игра появится в папке builds/web внутри папки игры: ${a.path}. Эту папку можно отправить другу или выложить на сайт.`;return(0,q.jsxs)($,{pose:`happy`,thinking:f||!!t,say:f?I`Упаковываю игру для друзей…`:I`Покажем игру друзьям!`,note:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:f?t:I`Я упакую игру так, чтобы в неё могли сыграть другие.`}),(0,q.jsx)(`span`,{children:g})]}),children:[!c&&(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Собрать игру для друзей`,hint:I`UM упакует игру, это займёт минутку`,disabled:f||!!t,"data-testid":`kids-share-build`,onClick:()=>{p(!0),r(`export`)}}),h&&(0,q.jsxs)(`a`,{className:`k-btn k-btn-default k-btn-wide`,href:`/api/v1/projects/${a.id}/builds/${h.id}/download`,"data-testid":`kids-share-download`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(l,{size:28})}),(0,q.jsxs)(`span`,{className:`k-btn-text`,children:[(0,q.jsx)(`b`,{children:I`Скачать файл игры`}),(0,q.jsx)(`small`,{children:I`Один файл, который можно отправить или загрузить на сайт`})]})]}),c&&(0,q.jsx)(Q,{tone:`main`,icon:(0,q.jsx)(x,{size:28,weight:`bold`}),title:I`Я опубликовал игру`,hint:I`Отметить этот шаг готовым`,onClick:i})]})}var _t=[{id:`2d`,icon:`🕹️`,title:N`Плоская игра (2D)`,hint:N`Как Марио или Змейка: герой бегает и прыгает, а ты смотришь сбоку или сверху. Делать её проще и быстрее.`},{id:`3d`,icon:`🌍`,title:N`Объёмная игра (3D)`,hint:N`Как Майнкрафт: можно идти в любую сторону и смотреть вокруг. Делать её дольше.`}];function vt({settings:e,onCreated:t,onCancel:n}){let[r,i]=(0,G.useState)(`name`),[a,o]=(0,G.useState)(``),[c,u]=(0,G.useState)(`html5`),[d,f]=(0,G.useState)(`2d`),[p,m]=(0,G.useState)(`web`),[g,_]=(0,G.useState)(``),[y,b]=(0,G.useState)(!1),[S,C]=(0,G.useState)(``),[w,T]=(0,G.useState)(`claude`),[E,D]=(0,G.useState)({});(0,G.useEffect)(()=>{A(`/diagnostics`).then(e=>{let t=e.agents.find(e=>e.available);t&&T(t.id),D({godot:!!e.godot?.available,roblox:!!e.roblox?.available})}).catch(()=>{})},[]);let O=je.find(e=>e.id===c),k=O.engine??`html5`,j=O.dimensions??[`2d`],M=Me(k),N=M.find(e=>e.id===p)??M[0],P=[`name`,`engine`,...j.length>1?[`dimension`]:[],...M.length>1?[`platform`]:[],`folder`],F=P.indexOf(r),L=F===P.length-1,z={name:I`Название`,engine:I`Движок`,dimension:I`Какая игра`,platform:I`Где играть`,folder:I`Папка`},B=e=>{e.engine&&(u(e.id),f(e.dimensions?.[0]??`2d`),m(Me(e.engine)[0].id))},V=e.projectsDirectory?.includes(`\\`)?`\\`:`/`,H=e.projectsDirectory&&a.trim()?`${e.projectsDirectory.replace(/[\\/]+$/,``)}${V}${a.trim().replace(yt,` `).trim()}`:``,ee=g.trim()||H,te=async()=>{C(``),b(!0);try{let e=await A(`/dialogs/directory`,`POST`,{});e.path!==null&&_(e.path)}catch(e){C(v(e))}finally{b(!1)}},U=async()=>{C(``),b(!0);try{t(await A(`/projects`,`POST`,{name:a.trim(),path:ee,dimension:j.includes(d)?d:j[0],platforms:N.platforms,agent:w,description:``,engine:k}))}catch(e){C(v(e))}finally{b(!1)}};return(0,q.jsxs)(`main`,{className:`k-create ${r===`engine`?`k-create-wide`:``}`,"data-testid":`kids-create`,children:[(0,q.jsx)(`ol`,{className:`k-steps`,children:P.map((e,t)=>(0,q.jsxs)(`li`,{className:t<F?`on`:t===F?`next`:``,children:[(0,q.jsx)(`b`,{children:t<F?(0,q.jsx)(x,{size:20,weight:`bold`}):t+1}),z[e]]},e))}),r===`name`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{children:I`Как назовём игру?`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Название можно поменять потом.`}),(0,q.jsx)(`input`,{className:`k-input k-input-big`,autoFocus:!0,value:a,maxLength:80,placeholder:I`Например: Кот-космонавт`,"data-testid":`kids-name`,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`&&a.trim()&&i(`engine`)}})]}),r===`engine`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{children:I`На каком движке сделаем игру?`}),(0,q.jsx)(`p`,{className:`k-lead`,children:(0,q.jsx)(J,{text:I`Движок это большая программа-помощник, на которой строят игру. Выбери один. Если не знаешь, бери HTML5: он самый простой.`})}),(0,q.jsx)(`div`,{className:`k-engines`,"data-testid":`kids-engines`,children:je.map(e=>{let t=!!e.needs&&E[e.needs]===!1;return(0,q.jsxs)(`button`,{type:`button`,className:`k-engine ${c===e.id&&e.engine?`on`:``} ${e.engine?``:`soon`}`,disabled:!e.engine,"aria-pressed":c===e.id,"data-testid":`kids-engine-${e.id}`,onClick:()=>B(e),children:[(0,q.jsx)(`span`,{className:`k-engine-mark`,children:(0,q.jsx)(Ae,{id:e.id,size:72})}),(0,q.jsx)(`b`,{children:e.name}),(0,q.jsx)(`small`,{children:R(e.hint)}),e.engine?t?(0,q.jsx)(`em`,{className:`k-pill warn`,children:I`Программа не установлена`}):c===e.id?(0,q.jsx)(`em`,{className:`k-pill on`,children:I`✓ Выбран`}):(0,q.jsx)(`em`,{className:`k-pill`,children:I`Выбрать`}):(0,q.jsx)(`em`,{className:`k-pill`,children:I`Скоро`})]},e.id)})}),!!O.needs&&E[O.needs]===!1&&(0,q.jsx)(`p`,{className:`k-error`,role:`status`,children:I`Для этого движка на компьютере нужна программа ${O.name===`Roblox`?`Roblox Studio`:O.name}. Попроси взрослого установить её и указать в настройках на вкладке «Для взрослых».`})]}),r===`dimension`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{children:I`Какая это будет игра?`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Выбери одно. Если не знаешь, бери первую: она самая простая.`}),(0,q.jsx)(`div`,{className:`k-controls`,children:_t.filter(e=>j.includes(e.id)).map(e=>(0,q.jsx)(Q,{className:`k-btn-xl`,icon:e.icon,title:R(e.title),hint:R(e.hint),selected:d===e.id,"data-testid":`kids-dimension-${e.id}`,onClick:()=>f(e.id)},e.id))})]}),r===`platform`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{children:I`Где будут играть в твою игру?`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Это нельзя поменять потом, поэтому выбери сейчас.`}),(0,q.jsx)(`div`,{className:`k-controls`,children:M.map(e=>(0,q.jsx)(Q,{className:`k-btn-xl`,icon:e.icon,title:R(e.title),hint:R(e.hint),selected:N.id===e.id,"data-testid":`kids-platform-${e.id}`,onClick:()=>m(e.id)},e.id))})]}),r===`folder`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h1`,{children:I`Где сохранить игру?`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Нужна пустая папка на компьютере.`}),(0,q.jsxs)(`div`,{className:`k-folder`,children:[(0,q.jsx)(l,{size:34}),(0,q.jsx)(`b`,{children:ee||I`Папка ещё не выбрана`})]}),(0,q.jsx)(Q,{icon:(0,q.jsx)(l,{size:28}),title:ee?I`Выбрать другую папку`:I`Выбрать папку`,hint:I`Откроется окно с папками`,disabled:y,onClick:()=>void te()}),(0,q.jsxs)(`details`,{style:{width:`100%`,textAlign:`left`},children:[(0,q.jsx)(`summary`,{children:I`Ввести путь к папке вручную`}),(0,q.jsxs)(`label`,{style:{display:`grid`,gap:8,marginTop:12},children:[I`Полный путь к пустой папке`,(0,q.jsx)(`input`,{className:`k-input`,"aria-label":I`Полный путь к пустой папке`,value:g,placeholder:H||`/Users/name/Games/my-game`,disabled:y,onChange:e=>_(e.target.value)})]})]}),(0,q.jsx)(`p`,{className:`k-hint`,"data-testid":`kids-create-summary`,children:I`Игра «${a.trim()}»: ${O.name}, ${j.includes(d)?d.toUpperCase():j[0].toUpperCase()}, ${R(N.title)}.`})]}),S&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:S}),(0,q.jsxs)(`div`,{className:`k-cta`,children:[(0,q.jsx)(Q,{tone:`ghost`,wide:!1,icon:(0,q.jsx)(h,{size:26}),title:I`Назад`,hint:F===0?I`К списку игр`:I`К прошлому шагу`,disabled:y,onClick:()=>F===0?n():i(P[F-1])}),L?(0,q.jsx)(Q,{tone:`main`,wide:!1,icon:(0,q.jsx)(x,{size:28,weight:`bold`}),title:I`Создать игру`,hint:I`Потом расскажешь идею UM`,disabled:y||!ee,"data-testid":`kids-create-submit`,onClick:()=>void U()}):(0,q.jsx)(Q,{tone:`main`,wide:!1,icon:(0,q.jsx)(s,{size:28,weight:`bold`}),title:I`Дальше`,hint:z[P[F+1]],disabled:r===`name`&&!a.trim(),"data-testid":`kids-next`,onClick:()=>i(P[F+1])})]})]})}var yt=/[\\/:*?"<>|]+/g,bt=[6,7,8,9,10,11,12,13,14,15,16];function xt({profile:e,onSaved:t,onCancel:n}){let[r,i]=(0,G.useState)(e?.name??``),[a,o]=(0,G.useState)(`name`),[s,c]=(0,G.useState)(!1),[l,u]=(0,G.useState)(``),d=async e=>{c(!0),u(``);try{t(await A(`/settings`,`PUT`,{profile:{name:r.trim().slice(0,40),age:e}}))}catch(e){u(v(e))}finally{c(!1)}},f=a===`name`?{say:e?I`Как тебя теперь называть?`:I`Привет! Меня зовут UM, я твой робот-помощник. А как зовут тебя?`,note:I`Напиши имя внизу или нажми «Голос».`,dock:{placeholder:e?.name??I`Твоё имя`,disabled:s,onSend:e=>{i(e.replace(/[.!]+$/,``).trim()),o(`age`)}},body:null}:{say:I`Приятно познакомиться, ${r}! Сколько тебе лет?`,note:I`Я буду подбирать вопросы и слова под твой возраст.`,dock:void 0,body:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`k-ages`,children:[bt.map(t=>(0,q.jsx)(`button`,{type:`button`,className:`k-age ${e?.age===t?`on`:``}`,disabled:s,"data-testid":`kids-age`,onClick:()=>void d(t),children:t},t)),(0,q.jsx)(`button`,{type:`button`,className:`k-age k-age-wide ${e&&e.age>16?`on`:``}`,disabled:s,onClick:()=>void d(18),children:I`17 и больше`})]}),(0,q.jsx)(Q,{tone:`ghost`,wide:!1,icon:(0,q.jsx)(h,{size:26}),title:I`Назад`,hint:I`Поменять имя`,onClick:()=>o(`name`)})]})};return(0,q.jsx)(`div`,{className:`k-work k-work-plain`,"data-testid":`kids-profile`,children:(0,q.jsxs)(`div`,{className:`k-main`,children:[(0,q.jsx)(`div`,{className:`k-center`,children:(0,q.jsxs)(`div`,{className:`k-center-in`,children:[(0,q.jsxs)(`div`,{className:`k-head`,children:[(0,q.jsx)(Ye,{size:112}),(0,q.jsxs)(`div`,{className:`k-say`,"aria-live":`polite`,children:[f.say,(0,q.jsx)(`div`,{className:`k-note`,children:f.note})]})]}),(0,q.jsxs)(`div`,{className:`k-controls`,children:[f.body,l&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:l}),a===`name`&&n&&(0,q.jsx)(Q,{tone:`ghost`,wide:!1,icon:(0,q.jsx)(h,{size:26}),title:I`Назад`,hint:I`Оставить как было`,onClick:n})]})]})}),f.dock&&(0,q.jsx)(it,{...f.dock})]})})}function St({projects:e,profile:t,onOpen:n,onCreate:r}){let{starsOn:i}=(0,G.useContext)(Z),[a,o]=(0,G.useState)({});return(0,G.useEffect)(()=>{let t=!0;for(let n of e)A(`/projects/${n.id}`).then(e=>{t&&o(t=>({...t,[n.id]:Ve(e,tt(n.id))}))}).catch(()=>{});return()=>{t=!1}},[e,T()]),(0,q.jsxs)(`main`,{className:`k-home`,"data-testid":`kids-home`,children:[(0,q.jsxs)(`div`,{className:`k-hello`,children:[(0,q.jsx)(Ye,{size:104}),(0,q.jsxs)(`div`,{className:`k-say`,"data-testid":`kids-greeting`,children:[(0,q.jsxs)(`b`,{children:[I`Привет`,t?`, ${t.name}`:``,`!`]}),(0,q.jsx)(`div`,{className:`k-note`,children:e.length?I`Какую игру откроем сегодня? Или начнём новую.`:I`Давай сделаем твою первую игру. Нажми «Новая игра».`})]})]}),(0,q.jsxs)(`div`,{className:`k-games`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`k-newgame`,"data-testid":`kids-new-game`,onClick:r,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(_,{size:44,weight:`bold`})}),(0,q.jsx)(`b`,{children:I`Новая игра`}),(0,q.jsx)(`small`,{children:I`Три простых шага, и UM начнёт помогать`})]}),e.map(e=>{let t=a[e.id],r=Ne(e.engine),o=t?.find(e=>e.state===`next`);return(0,q.jsxs)(`button`,{type:`button`,className:`k-game`,"data-testid":`kids-game`,onClick:()=>n(e.id),children:[(0,q.jsx)(`span`,{className:`k-game-art`,children:r?(0,q.jsx)(Ae,{id:r.id,size:48}):`🎮`}),(0,q.jsx)(`b`,{children:e.name}),(0,q.jsxs)(`small`,{children:[r?.name??e.engine,` · `,e.dimension.toUpperCase()]}),i&&t?(0,q.jsxs)(`span`,{className:`k-game-score`,"data-testid":`kids-game-score`,role:`img`,"aria-label":I`Звёзд: ${He(t)} из ${t.length}`,children:[(0,q.jsx)(X,{state:`on`,size:58}),(0,q.jsx)(`b`,{children:He(t)}),(0,q.jsx)(`i`,{children:I`из ${t.length}`})]}):!t&&(0,q.jsx)(`em`,{children:I`Открываю…`}),t&&(0,q.jsx)(`em`,{children:o?I`Дальше: ${o.title.toLowerCase()}`:I`Игра готова`})]},e.id)})]})]})}function Ct({id:e}){let t=I`Где летает кот?`;return e===`robot`?(0,q.jsxs)(`span`,{className:`k-pv k-pv-robot`,"aria-hidden":`true`,children:[(0,q.jsx)(`span`,{className:`k-pv-side`,children:[`on`,`on`,`next`,`off`].map((e,t)=>(0,q.jsx)(X,{state:e,size:16},t))}),(0,q.jsxs)(`span`,{className:`k-pv-main`,children:[(0,q.jsxs)(`span`,{className:`k-pv-talk`,children:[(0,q.jsx)(Ye,{size:30}),(0,q.jsx)(`span`,{className:`k-pv-bubble`,children:t})]}),(0,q.jsxs)(`span`,{className:`k-pv-option`,children:[`🪐 `,I`В космосе`]}),(0,q.jsxs)(`span`,{className:`k-pv-option`,children:[`🌊 `,I`Под водой`]}),(0,q.jsxs)(`span`,{className:`k-pv-input`,children:[(0,q.jsx)(`i`,{children:I`Свой ответ`}),(0,q.jsx)(`b`,{children:(0,q.jsx)(u,{size:12,weight:`fill`})}),(0,q.jsx)(`b`,{className:`mic`,children:(0,q.jsx)(H,{size:12,weight:`fill`})})]})]})]}):e===`road`?(0,q.jsxs)(`span`,{className:`k-pv k-pv-road`,"aria-hidden":`true`,children:[(0,q.jsx)(`span`,{className:`k-pv-stars`,children:[`on`,`on`,`on`,`next`,`off`,`off`].map((e,t)=>(0,q.jsx)(X,{state:e,size:e===`next`?22:18},t))}),(0,q.jsx)(`b`,{className:`k-pv-title`,children:t}),(0,q.jsxs)(`span`,{className:`k-pv-option`,children:[`🪐 `,I`В космосе`]}),(0,q.jsxs)(`span`,{className:`k-pv-option`,children:[`🌊 `,I`Под водой`]}),(0,q.jsx)(`span`,{className:`k-pv-go`,children:I`Ответить`})]}):(0,q.jsxs)(`span`,{className:`k-pv k-pv-classic`,"aria-hidden":`true`,children:[(0,q.jsx)(`span`,{className:`k-pv-menu`,children:[I`Обзор`,I`Агент`,I`Задачи`,I`Ассеты`,I`Настройки`].map(e=>(0,q.jsx)(`i`,{children:e},e))}),(0,q.jsxs)(`span`,{className:`k-pv-main`,children:[(0,q.jsx)(`span`,{className:`k-pv-bubble`,children:I`Какую игру создадим?`}),(0,q.jsx)(`span`,{className:`k-pv-bubble me`,children:I`Про кота в космосе`}),(0,q.jsx)(`span`,{className:`k-pv-bubble`,children:I`Принято. Какое управление?`}),(0,q.jsxs)(`span`,{className:`k-pv-input`,children:[(0,q.jsx)(`i`,{children:I`Сообщение агенту`}),(0,q.jsx)(`b`,{children:(0,q.jsx)(u,{size:12,weight:`fill`})}),(0,q.jsx)(`b`,{className:`mic`,children:(0,q.jsx)(H,{size:12,weight:`fill`})})]})]})]})}function wt({settings:e,project:t,onSettings:n,onRefresh:r}){return(0,q.jsxs)(`div`,{className:`k-adult`,"data-testid":`kids-adult-settings`,children:[(0,q.jsx)(`p`,{className:`k-hint`,children:I`Ниже все технические настройки: аккаунт UMGT, Godot и Roblox Studio, разрешения и папка, куда сохраняются новые игры.`}),(0,q.jsx)(`div`,{className:`k-adult-form`,children:(0,q.jsx)(G.Suspense,{fallback:(0,q.jsx)(`p`,{className:`k-hint`,children:I`Загружаю настройки…`}),children:(0,q.jsx)(Ze,{settings:e,onSave:n,project:t,onProjectChange:r})})})]})}function Tt({settings:e,mode:t,voice:n,starsOn:r,project:i,onSettings:a,onVoice:o,onStars:s,onBack:c,onProfile:l,onRefresh:u}){let[d,p]=(0,G.useState)(`kids`),[_,y]=(0,G.useState)(``),[b,S]=(0,G.useState)(!1),[C,E]=(0,G.useState)(!1),[D,O]=(0,G.useState)(``);(0,G.useEffect)(()=>{F().then(S).catch(()=>{})},[]);let j=e=>void A(`/settings`,`PUT`,e).then(a).catch(e=>y(v(e))),N=async e=>{E(!0),y(``),O(``);try{e?await M():await L(),S(e),e&&O(I`Уведомления включены.`)}catch(e){y(v(e))}finally{E(!1)}},P=async()=>{E(!0),y(``);try{let e=await w();O(e.delivered?I`Проверочное уведомление отправлено.`:I`Не получилось отправить. Выключи и включи уведомления ещё раз.`)}catch(e){y(v(e))}finally{E(!1)}},R=[{id:`robot`,title:I`Робот-помощник`,hint:I`UM задаёт вопросы и объясняет каждый шаг`},{id:`road`,title:I`Дорожка`,hint:I`Один шаг на экране и путь из звёзд сверху`}],z=[{id:`dark`,title:I`Тёмная`,icon:(0,q.jsx)(_e,{size:26})},{id:`light`,title:I`Светлая`,icon:(0,q.jsx)(ye,{size:26})},{id:`system`,title:I`Как на компьютере`,icon:(0,q.jsx)(m,{size:26})}],B=(e,t,n,r=!1)=>(0,q.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,"aria-label":n,disabled:r,className:`k-switch ${e?`on`:``}`,onClick:()=>t(!e)});return(0,q.jsxs)(`main`,{className:`k-settings`,"data-testid":`kids-settings`,children:[(0,q.jsxs)(`div`,{className:`k-settings-head`,children:[(0,q.jsx)(Q,{wide:!1,icon:(0,q.jsx)(h,{size:28}),title:I`Назад`,hint:I`Вернуться`,onClick:c}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:I`Настройки`}),(0,q.jsx)(`p`,{className:`k-lead`,children:I`Выбери, как тебе удобнее делать игру.`})]})]}),(0,q.jsxs)(`div`,{className:`k-tabs`,role:`tablist`,children:[(0,q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":d===`kids`,className:d===`kids`?`on`:``,"data-testid":`kids-tab-kids`,onClick:()=>p(`kids`),children:I`Для детей`}),(0,q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":d===`adult`,className:d===`adult`?`on`:``,"data-testid":`kids-tab-adult`,onClick:()=>p(`adult`),children:I`Для взрослых`})]}),d===`adult`?(0,q.jsx)(wt,{settings:e,project:i,onSettings:a,onRefresh:u}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h2`,{children:I`Интерфейс`}),(0,q.jsx)(`div`,{className:`k-grid2`,children:R.map(e=>(0,q.jsxs)(`button`,{type:`button`,className:`k-mode ${t===e.id?`on`:``}`,"aria-pressed":t===e.id,"data-testid":`kids-mode-${e.id}`,onClick:()=>j({interfaceMode:e.id}),children:[(0,q.jsx)(Ct,{id:e.id}),(0,q.jsx)(`b`,{children:e.title}),(0,q.jsx)(`small`,{children:e.hint}),(0,q.jsx)(`em`,{children:t===e.id?I`✓ Включён`:I`Включить`})]},e.id))}),(0,q.jsx)(`h2`,{children:I`Помощь и награды`}),(0,q.jsxs)(`div`,{className:`k-grid2`,children:[(0,q.jsxs)(`div`,{className:`k-setting`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(g,{size:30})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:e.profile?I`${e.profile.name}, ${e.profile.age>16?`17+`:e.profile.age} лет`:I`Анкета не заполнена`}),(0,q.jsx)(`small`,{children:I`UM обращается по имени и подбирает слова под возраст`})]}),(0,q.jsxs)(`button`,{type:`button`,className:`k-chip`,"data-testid":`kids-edit-profile`,onClick:l,children:[(0,q.jsx)(f,{size:20}),I`Изменить`]})]}),(0,q.jsxs)(`div`,{className:`k-setting`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(pe,{size:28})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:I`Уведомления`}),(0,q.jsx)(`small`,{children:k()?I`UM напишет, когда задаст вопрос или закончит сборку`:I`Этот браузер не поддерживает уведомления`}),D&&(0,q.jsx)(`small`,{className:`k-ok`,children:D})]}),b&&(0,q.jsx)(`button`,{type:`button`,className:`k-chip`,disabled:C,onClick:()=>void P(),children:I`Проверить`}),B(b,e=>void N(e),I`Уведомления`,C||!k())]}),(0,q.jsxs)(`div`,{className:`k-setting`,children:[(0,q.jsx)(X,{state:`on`,size:44}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:I`Звёзды за шаги`}),(0,q.jsx)(`small`,{children:I`Показывать созвездие и пройденные этапы`})]}),B(r,s,I`Звёзды за шаги`)]}),(0,q.jsxs)(`div`,{className:`k-setting`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(H,{size:28})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:I`Голосовой ввод`}),(0,q.jsx)(`small`,{children:I`Говорить вместо того, чтобы печатать`})]}),B(n,o,I`Голосовой ввод`)]}),(0,q.jsxs)(`div`,{className:`k-setting`,children:[(0,q.jsx)(`span`,{className:`k-btn-icon`,children:(0,q.jsx)(x,{size:28,weight:`bold`})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`b`,{children:I`Проверка ответов`}),(0,q.jsxs)(`small`,{children:[I`UM уточняет, пока не поймёт все`,` `,ae.length,` `,I`частей игры`]})]}),(0,q.jsx)(`em`,{className:`k-pill on`,children:I`Всегда включена`})]})]}),(0,q.jsx)(`h2`,{children:I`Язык`}),(0,q.jsx)(`p`,{className:`k-hint`,children:I`На каком языке говорит UM и написан интерфейс`}),(0,q.jsxs)(`div`,{className:`k-grid3`,children:[(0,q.jsx)(Q,{icon:`🇷🇺`,title:`Русский`,selected:T()===`ru`,"data-testid":`kids-lang-ru`,onClick:()=>j({language:`ru`})}),(0,q.jsx)(Q,{icon:`🇬🇧`,title:`English`,selected:T()===`en`,"data-testid":`kids-lang-en`,onClick:()=>j({language:`en`})})]}),(0,q.jsx)(`h2`,{children:I`Тема`}),(0,q.jsx)(`div`,{className:`k-grid3`,children:z.map(t=>(0,q.jsx)(Q,{icon:t.icon,title:t.title,selected:e.theme===t.id,onClick:()=>j({theme:t.id})},t.id))}),(0,q.jsx)(`p`,{className:`k-hint`,children:I`Подключение помощников, Roblox Studio и папка для новых игр находятся на вкладке «Для взрослых».`}),_&&(0,q.jsx)(`p`,{className:`k-error`,role:`alert`,children:_})]})]})}function Et(e){let{mode:t,projects:n,selected:r,workspace:i,settings:a}=e,o=a.language===`en`?`en`:`ru`;j(o);let[l,u]=(0,G.useState)(a.profile?`home`:`profile`);(0,G.useEffect)(()=>{e.openChatProject&&u(`work`)},[e.openChatProject]);let[d,f]=(0,G.useState)(`home`),[_,v]=(0,G.useState)(()=>$e(`lmgh-kids-voice`)),[y,b]=(0,G.useState)(()=>$e(`lmgh-kids-stars`)),[x,C]=(0,G.useState)(()=>$e(`lmgh-kids-side`)),[w,T]=(0,G.useState)(!1);(0,G.useEffect)(()=>{T(r?tt(r):!1)},[r]),(0,G.useEffect)(()=>{if(e.previewUrl&&r){T(!0);try{localStorage.setItem(`lmgh-kids-played:${r}`,`yes`)}catch{}}},[e.previewUrl,r]);let D=i&&i.project.id===r?i:null,[O,k]=(0,G.useState)(!1);(0,G.useEffect)(()=>{try{k(!!r&&localStorage.getItem(`lmgh-kids-shared:${r}`)===`yes`)}catch{k(!1)}},[r]);let M=()=>{if(r){T(!0);try{localStorage.setItem(`lmgh-kids-played:${r}`,`yes`)}catch{}}},N=()=>{if(r){k(!0);try{localStorage.setItem(`lmgh-kids-shared:${r}`,`yes`)}catch{}}},P=(0,G.useMemo)(()=>Ve(D,w,O),[D,w,O,o]),F=(0,G.useMemo)(()=>D?ze(D):[],[D]),L=He(P),R=(0,G.useRef)(null),[z,B]=(0,G.useState)([]);(0,G.useEffect)(()=>{B([]),R.current=null},[r]),(0,G.useEffect)(()=>{if(!D)return;let e=R.current;if(!e||e.project!==D.project.id){R.current={project:D.project.id,count:L};return}L>e.count&&y&&B(P.filter(e=>e.state===`on`).slice(e.count,L)),R.current={project:D.project.id,count:L}},[D,L]);let H=!!e.busy,[ee,te]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=Array.from(document.scripts).map(e=>e.src).find(e=>/\/assets\/index-/.test(e));if(!e)return;let t=()=>{document.hidden||fetch(`/`,{cache:`no-store`}).then(e=>e.text()).then(t=>{let n=t.match(/assets\/index-[\w-]+\.js/);n&&!e.endsWith(n[0])&&te(!0)}).catch(()=>{})};document.addEventListener(`visibilitychange`,t),window.addEventListener(`focus`,t);let n=setInterval(t,6e4);return()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`focus`,t),clearInterval(n)}},[]);let[U,ne]=(0,G.useState)(null),[re,ie]=(0,G.useState)(!1);(0,G.useEffect)(()=>{ne(null),ie(!1)},[r]);let W=P.find(e=>e.state===`next`),oe=D?Be(D):`idea`,se=!!D&&!D.messages.length&&L<=2,ce=ae.map(e=>e.id),le=U&&!ce.includes(U.id)?U.id:null,ue=le??(U?`idea`:oe),de=D?e=>{e.fixed||(B([]),u(`work`),ne(!ce.includes(e.id)&&e.id===oe?null:e))}:void 0,K=Ie(ue,document.documentElement.dataset.theme===`light`),fe=(0,G.useMemo)(()=>({mode:t,voice:_,starsOn:y,stars:P,coverage:F,sideOpen:x,background:K,profile:a.profile,onStep:de,activeStep:U?.id,onReturn:U?()=>ne(null):void 0,setSideOpen:e=>{C(e),et(`lmgh-kids-side`,e)}}),[t,_,y,P,F,x,K,D,U,oe,a.profile]),pe=l===`enter`||l===`work`,me=t=>{e.onSelect(t),u(`enter`)},[ge,_e]=(0,G.useState)(!1),ve=()=>{e.onCloseChat(),l!==`settings`&&l!==`profile`&&f(l),u(`settings`)},ye;return ye=e.plainChat?(0,q.jsx)(`main`,{className:`k-chat-screen`,children:e.plainChat}):l===`profile`||!a.profile?(0,q.jsx)(xt,{profile:a.profile,onCancel:a.profile?()=>u(`settings`):void 0,onSaved:t=>{e.onSettings(t),u(a.profile?`settings`:`home`)}}):l===`settings`?(0,q.jsx)(Tt,{settings:a,mode:t,voice:_,starsOn:y,project:D?.project,onRefresh:e.onRefresh,onSettings:e.onSettings,onBack:()=>u(d),onProfile:()=>u(`profile`),onVoice:e=>{v(e),et(`lmgh-kids-voice`,e)},onStars:e=>{b(e),et(`lmgh-kids-stars`,e)}}):l===`create`?(0,q.jsx)(vt,{settings:a,onCreated:t=>{e.onCreated(t),u(`enter`)},onCancel:()=>u(`home`)}):l===`home`||!r?(0,q.jsx)(St,{projects:n,profile:a.profile,onOpen:me,onCreate:()=>u(`create`)}):D?z.length?(0,q.jsxs)(`main`,{className:`k-enter k-win`,"data-testid":`kids-star-earned`,children:[(0,q.jsxs)(`div`,{className:`k-big-star`,children:[(0,q.jsx)(`span`,{className:`k-rays`}),(0,q.jsx)(X,{state:`on`,size:190,big:!0})]}),(0,q.jsx)(`h1`,{children:z.length===1?I`Звезда «${z[0].title}» зажглась!`:I`Новые звёзды: ${z.map(e=>e.title).join(`, `)}`}),(0,q.jsxs)(`p`,{className:`k-lead`,children:[a.profile.name,I`, у тебя`,` `,L,` `,I`из`,` `,P.length,`.`,W?I` Следующая звезда: ${W.title.toLowerCase()}.`:I` Все звёзды зажжены!`]}),(0,q.jsx)(Je,{stars:P,small:!0}),(0,q.jsx)(`div`,{className:`k-cta`,children:(0,q.jsx)(Q,{tone:`main`,wide:!1,className:`k-btn-xl`,icon:(0,q.jsx)(s,{size:32,weight:`bold`}),title:I`Дальше`,hint:W?I`Следующая звезда: ${W.title.toLowerCase()}`:I`Вернуться к игре`,onClick:()=>B([])})})]}):l===`enter`?(0,q.jsxs)(`main`,{className:`k-enter`,"data-testid":`kids-enter`,children:[(0,q.jsx)(Ye,{size:112}),(0,q.jsx)(`h1`,{children:se?I`Это твоя новая игра «${D.project.name}»`:I`С возвращением, ${a.profile.name}! У тебя ${L} из ${P.length} звёзд`}),(0,q.jsxs)(`p`,{className:`k-lead`,children:[se&&I`Две звезды уже горят: за название и папку. `,W?I`Следующая звезда даётся за шаг «${W.title}»: ${Qe(W.hint)}.`:I`Все звёзды зажжены. Игра готова!`,se&&I` Зажги все ${P.length} звёзд, и игра будет готова.`]}),y&&(0,q.jsx)(Je,{stars:P}),(0,q.jsxs)(`div`,{className:`k-cta`,children:[oe===`play`&&(0,q.jsx)(Q,{wide:!1,icon:(0,q.jsx)(p,{size:28,weight:`fill`}),title:I`Играть`,hint:I`Запустить готовую игру`,onClick:()=>{u(`work`),e.onEngine(`run`)}}),(0,q.jsx)(Q,{tone:`main`,wide:!1,className:`k-btn-xl`,icon:(0,q.jsx)(s,{size:32,weight:`bold`}),title:se?I`Зажечь следующую звезду`:I`Продолжить`,hint:W?I`Шаг «${W.title}»`:I`Открыть игру`,"data-testid":`kids-continue`,onClick:()=>u(`work`)})]})]}):re&&Y(D)?(0,q.jsx)(ut,{workspace:D,onRefresh:e.onRefresh,onClose:()=>ie(!1)},Y(D).id):U&&!le?(0,q.jsx)(ct,{workspace:D,star:U,onRefresh:e.onRefresh,onDone:()=>ne(null)},U.id):ue===`idea`?(0,q.jsxs)(`div`,{className:`video-idea-layout`,children:[(0,q.jsx)(V,{workspace:D,onRefresh:e.onRefresh,language:a.language},D.project.id),(0,q.jsx)(st,{workspace:D,activityLabel:e.activityLabel,onRefresh:e.onRefresh})]}):ue===`plan`?(0,q.jsx)(lt,{workspace:D,busy:H,activityLabel:e.activityLabel,onAction:e.onAction,onRefresh:e.onRefresh,profile:a.profile,onEditPlan:()=>ie(!0)}):ue===`materials`?(0,q.jsx)(pt,{workspace:D,onRefresh:e.onRefresh}):ue===`build`?(0,q.jsx)(mt,{workspace:D,busy:H,activityLabel:e.activityLabel,onAction:e.onAction,onRefresh:e.onRefresh}):ue===`share`?(0,q.jsx)(gt,{workspace:D,engineBusy:e.engineBusy,error:e.error,onEngine:e.onEngine,onShared:N}):(0,q.jsx)(ht,{workspace:D,busy:H,played:w,engineBusy:e.engineBusy,previewUrl:e.previewUrl,error:e.error,onEngine:e.onEngine,onAction:e.onAction,onPlayed:M,onShare:()=>ne(P.find(e=>e.id===`share`)??null)}):(0,q.jsxs)(`main`,{className:`k-enter`,children:[(0,q.jsx)(Ye,{size:120,thinking:!0}),(0,q.jsx)(`h1`,{children:I`Открываю игру…`})]}),(0,q.jsx)(Z.Provider,{value:fe,children:(0,q.jsxs)(`div`,{className:`kids-app kids-${t}`,"data-testid":`kids-app`,children:[(0,q.jsx)(Ge,{}),(0,q.jsxs)(`header`,{className:`k-top`,children:[(0,q.jsx)(`button`,{type:`button`,className:`k-logo-btn`,"aria-label":I`К списку игр`,disabled:!a.profile,onClick:()=>{e.onCloseChat(),u(`home`)},children:(0,q.jsx)(Xe,{})}),a.profile&&pe&&r&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`button`,{type:`button`,className:`k-chip`,"data-testid":`kids-home-link`,"aria-label":I`Мои игры`,onClick:()=>{e.onCloseChat(),u(`home`)},children:[(0,q.jsx)(h,{size:20,weight:`bold`}),(0,q.jsx)(`span`,{children:I`Мои игры`})]}),(0,q.jsx)(`b`,{className:`k-game-name`,children:D?.project.name??n.find(e=>e.id===r)?.name})]}),(0,q.jsxs)(`span`,{className:`k-top-end`,children:[y&&D&&pe&&(0,q.jsx)(Ke,{stars:P}),!e.connected&&(0,q.jsx)(`em`,{className:`k-pill warn`,children:I`Нет связи`}),(0,q.jsxs)(`button`,{type:`button`,className:`k-chip k-plain-chat-link`,"data-testid":`plain-chat-open`,"aria-label":I`Чат`,onClick:e.onOpenChat,children:[(0,q.jsx)(S,{size:23}),(0,q.jsx)(`span`,{children:I`Чат`})]}),(0,q.jsx)(`button`,{type:`button`,className:`k-chip k-lang`,"data-testid":`kids-lang-toggle`,lang:o===`en`?`ru`:`en`,"aria-label":o===`en`?`Переключить на русский`:`Switch to English`,onClick:()=>void A(`/settings`,`PUT`,{language:o===`en`?`ru`:`en`}).then(e.onSettings).catch(()=>{}),children:o===`en`?`Русский`:`English`}),a.profile&&(0,q.jsx)(`button`,{type:`button`,className:`k-gear`,"aria-label":I`Настройки`,"data-testid":`kids-settings-open`,onClick:ve,children:(0,q.jsx)(m,{size:28})})]}),(0,q.jsx)(`button`,{type:`button`,className:`k-burger`,"aria-label":I`Меню`,"aria-expanded":ge,"data-testid":`kids-menu-open`,onClick:()=>_e(!ge),children:ge?(0,q.jsx)(c,{size:26,weight:`bold`}):(0,q.jsx)(he,{size:26,weight:`bold`})}),(0,q.jsx)(E,{avatarOnly:!0,className:`k-chip k-header-account`,onClick:e.onOpenAccount})]}),ge&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`k-menu-backdrop`,"aria-label":I`Закрыть меню`,onClick:()=>_e(!1)}),(0,q.jsxs)(`nav`,{className:`k-menu`,"aria-label":I`Меню`,"data-testid":`kids-menu`,onClick:()=>_e(!1),children:[(0,q.jsx)(Q,{icon:(0,q.jsx)(S,{size:26}),title:I`Чат`,hint:I`Поговорить с UM без создания игры`,onClick:e.onOpenChat}),(0,q.jsx)(Q,{icon:(0,q.jsx)(g,{size:26}),title:`Аккаунт UMGT`,hint:I`Ключ, подписка и лимиты`,onClick:e.onOpenAccount}),a.profile&&(0,q.jsx)(Q,{icon:(0,q.jsx)(h,{size:26,weight:`bold`}),title:I`Мои игры`,hint:I`К списку игр`,"data-testid":`kids-menu-games`,onClick:()=>{e.onCloseChat(),u(`home`)}}),a.profile&&(0,q.jsx)(Q,{icon:(0,q.jsx)(m,{size:26}),title:I`Настройки`,hint:I`Интерфейс, уведомления, голос и анкета`,"data-testid":`kids-menu-settings`,onClick:ve}),(0,q.jsx)(Q,{icon:o===`en`?`🇷🇺`:`🇬🇧`,title:o===`en`?`Русский`:`English`,hint:o===`en`?`Переключить язык на русский`:`Switch the language to English`,"data-testid":`kids-menu-language`,onClick:()=>void A(`/settings`,`PUT`,{language:o===`en`?`ru`:`en`}).then(e.onSettings).catch(()=>{})})]})]}),ee&&(0,q.jsxs)(`div`,{className:`k-banner`,role:`status`,"data-testid":`kids-outdated`,children:[(0,q.jsx)(`span`,{children:I`Вышла новая версия приложения. Обнови страницу, чтобы её увидеть.`}),(0,q.jsx)(`button`,{type:`button`,className:`k-chip`,onClick:()=>location.reload(),children:I`Обновить`})]}),(e.error||e.notice)&&(0,q.jsxs)(`div`,{className:`k-banner ${e.error?`bad`:``}`,role:e.error?`alert`:`status`,children:[(0,q.jsx)(`span`,{children:e.error||e.notice}),(0,q.jsx)(`button`,{type:`button`,"aria-label":I`Закрыть сообщение`,onClick:e.onDismiss,children:(0,q.jsx)(c,{size:22})})]}),ye]})})}export{Et as KidsApp};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`MagnifyingGlassIcon`;var o=a;export{o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,68H132L105.33,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V200a20,20,0,0,0,20,20H216.89A19.13,19.13,0,0,0,236,200.89V88A20,20,0,0,0,216,68Zm-4,128H44V68H92l28.8,21.6A12,12,0,0,0,128,92h84Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,88V200.89a7.11,7.11,0,0,1-7.11,7.11H40a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h88A8,8,0,0,1,224,88Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M216,72H130.67L102.93,51.2a16.12,16.12,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V200a16,16,0,0,0,16,16H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72Zm0,128H40V64H93.33L123.2,86.4A8,8,0,0,0,128,88h88Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M232,88V200.89A15.13,15.13,0,0,1,216.89,216H40a16,16,0,0,1-16-16V64A16,16,0,0,1,40,48H93.33a16.12,16.12,0,0,1,9.6,3.2L130.67,72H216A16,16,0,0,1,232,88Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,74H130L101.73,52.8a14,14,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V200a14,14,0,0,0,14,14H216.89A13.12,13.12,0,0,0,230,200.89V88A14,14,0,0,0,216,74Zm2,126.89a1.11,1.11,0,0,1-1.11,1.11H40a2,2,0,0,1-2-2V64a2,2,0,0,1,2-2H93.33a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h88a2,2,0,0,1,2,2Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,72H130.67L102.93,51.2a16.12,16.12,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V200a16,16,0,0,0,16,16H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72Zm0,128H40V64H93.33L123.2,86.4A8,8,0,0,0,128,88h88Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,76H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V200a12,12,0,0,0,12,12H216.89A11.12,11.12,0,0,0,228,200.89V88A12,12,0,0,0,216,76Zm4,124.89a3.12,3.12,0,0,1-3.11,3.11H40a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h88a4,4,0,0,1,4,4Z`}))]]),a=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M233.86,110.48,65.8,14.58A20,20,0,0,0,37.15,38.64L67.33,128,37.15,217.36A20,20,0,0,0,56,244a20.1,20.1,0,0,0,9.81-2.58l.09-.06,168-96.07a20,20,0,0,0,0-34.81ZM63.19,215.26,88.61,140H144a12,12,0,0,0,0-24H88.61L63.18,40.72l152.76,87.17Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M227.91,134.86,59.93,231a8,8,0,0,1-11.44-9.67L80,128,48.49,34.72a8,8,0,0,1,11.44-9.67l168,95.85A8,8,0,0,1,227.91,134.86Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M231.87,114l-168-95.89A16,16,0,0,0,40.92,37.34L71.55,128,40.92,218.67A16,16,0,0,0,56,240a16.15,16.15,0,0,0,7.93-2.1l167.92-96.05a16,16,0,0,0,.05-27.89ZM56,224a.56.56,0,0,0,0-.12L85.74,136H144a8,8,0,0,0,0-16H85.74L56.06,32.16A.46.46,0,0,0,56,32l168,95.83Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M240,127.89a16,16,0,0,1-8.18,14L63.9,237.9A16.15,16.15,0,0,1,56,240a16,16,0,0,1-15-21.33l27-79.95A4,4,0,0,1,71.72,136H144a8,8,0,0,0,8-8.53,8.19,8.19,0,0,0-8.26-7.47h-72a4,4,0,0,1-3.79-2.72l-27-79.94A16,16,0,0,1,63.84,18.07l168,95.89A16,16,0,0,1,240,127.89Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M230.88,115.69l-168-95.88a14,14,0,0,0-20,16.87L73.66,128,42.81,219.33A14,14,0,0,0,56,238a14.15,14.15,0,0,0,6.93-1.83L230.84,140.1a14,14,0,0,0,0-24.41Zm-5.95,14L57,225.73a2,2,0,0,1-2.86-2.42.42.42,0,0,0,0-.1L84.3,134H144a6,6,0,0,0,0-12H84.3L54.17,32.8a.3.3,0,0,0,0-.1,1.87,1.87,0,0,1,.6-2.2A1.85,1.85,0,0,1,57,30.25l168,95.89a1.93,1.93,0,0,1,1,1.74A2,2,0,0,1,224.93,129.66Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M231.87,114l-168-95.89A16,16,0,0,0,40.92,37.34L71.55,128,40.92,218.67A16,16,0,0,0,56,240a16.15,16.15,0,0,0,7.93-2.1l167.92-96.05a16,16,0,0,0,.05-27.89ZM56,224a.56.56,0,0,0,0-.12L85.74,136H144a8,8,0,0,0,0-16H85.74L56.06,32.16A.46.46,0,0,0,56,32l168,95.83Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M229.89,117.43l-168-95.88A12,12,0,0,0,44.7,36l31.08,92L44.71,220A12,12,0,0,0,56,236a12.13,12.13,0,0,0,5.93-1.57l167.94-96.08a12,12,0,0,0,0-20.92Zm-4,14L58,227.47a4,4,0,0,1-5.72-4.83l0-.07L82.87,132H144a4,4,0,0,0,0-8H82.87L52.26,33.37A3.89,3.89,0,0,1,53.44,29,4.13,4.13,0,0,1,56,28a3.88,3.88,0,0,1,1.93.54l168,95.87a4,4,0,0,1,0,7Z`}))]]),o=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));o.displayName=`FolderSimpleIcon`;var s=o,c=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:a}));c.displayName=`PaperPlaneRightIcon`;var l=c;export{s as n,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M230.14,70.54,185.46,25.85a20,20,0,0,0-28.29,0L33.86,149.17A19.85,19.85,0,0,0,28,163.31V208a20,20,0,0,0,20,20H92.69a19.86,19.86,0,0,0,14.14-5.86L230.14,98.82a20,20,0,0,0,0-28.28ZM91,204H52V165l84-84,39,39ZM192,103,153,64l18.34-18.34,39,39Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M221.66,90.34,192,120,136,64l29.66-29.66a8,8,0,0,1,11.31,0L221.66,79A8,8,0,0,1,221.66,90.34Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM192,108.68,147.31,64l24-24L216,84.68Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M225.9,74.78,181.21,30.09a14,14,0,0,0-19.8,0L38.1,153.41a13.94,13.94,0,0,0-4.1,9.9V208a14,14,0,0,0,14,14H92.69a13.94,13.94,0,0,0,9.9-4.1L225.9,94.58a14,14,0,0,0,0-19.8ZM94.1,209.41a2,2,0,0,1-1.41.59H48a2,2,0,0,1-2-2V163.31a2,2,0,0,1,.59-1.41L136,72.48,183.51,120ZM217.41,86.1,192,111.51,144.49,64,169.9,38.58a2,2,0,0,1,2.83,0l44.68,44.69a2,2,0,0,1,0,2.83Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224.49,76.2,179.8,31.51a12,12,0,0,0-17,0L133.17,61.17h0L39.52,154.83A11.9,11.9,0,0,0,36,163.31V208a12,12,0,0,0,12,12H92.69a12,12,0,0,0,8.48-3.51L224.48,93.17a12,12,0,0,0,0-17Zm-129,134.63A4,4,0,0,1,92.69,212H48a4,4,0,0,1-4-4V163.31a4,4,0,0,1,1.17-2.83L136,69.65,186.34,120ZM218.83,87.51,192,114.34,141.66,64l26.82-26.83a4,4,0,0,1,5.66,0l44.69,44.68a4,4,0,0,1,0,5.66Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`PencilSimpleIcon`;var o=a;export{o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{i,n as a}from"./ui-wHE_yBK0.js";import{n as o,t as s}from"./PaperPlaneRight.es-U0twumpP.js";import{t as c}from"./PencilSimple.es-JVHwRvGx.js";import{i as l}from"./YandexConfigFields-DDL22Bfw.js";import{G as u,L as d,M as f,V as p,W as m,_ as h,g,h as _,j as v,v as ee}from"./index-B6_q6dBC.js";import{PermissionCard as te,d as ne,i as re,l as ie,r as ae,u as y}from"./workflow-CEkwrbrT.js";var b=t(n(),1),x=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M228,128a100,100,0,0,1-98.66,100H128a99.39,99.39,0,0,1-68.62-27.29,12,12,0,0,1,16.48-17.45,76,76,0,1,0-1.57-109c-.13.13-.25.25-.39.37L54.89,92H72a12,12,0,0,1,0,24H24a12,12,0,0,1-12-12V56a12,12,0,0,1,24,0V76.72L57.48,57.06A100,100,0,0,1,228,128Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L60.63,81.29l17,17A8,8,0,0,1,72,112H24a8,8,0,0,1-8-8V56A8,8,0,0,1,29.66,50.3L49.31,70,60.25,60A96,96,0,0,1,224,128Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M222,128a94,94,0,0,1-92.74,94H128a93.43,93.43,0,0,1-64.5-25.65,6,6,0,1,1,8.24-8.72A82,82,0,1,0,70,70l-.19.19L39.44,98H72a6,6,0,0,1,0,12H24a6,6,0,0,1-6-6V56a6,6,0,0,1,12,0V90.34L61.63,61.4A94,94,0,0,1,222,128Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M220,128a92,92,0,0,1-90.77,92H128a91.47,91.47,0,0,1-63.13-25.1,4,4,0,1,1,5.5-5.82A84,84,0,1,0,68.6,68.57l-.13.12L34.3,100H72a4,4,0,0,1,0,8H24a4,4,0,0,1-4-4V56a4,4,0,0,1,8,0V94.89l35-32A92,92,0,0,1,220,128Z`}))]]),S=new Map([[`bold`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z`}))],[`duotone`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z`,opacity:`0.2`}),b.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`fill`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z`}))],[`light`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z`}))],[`regular`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`thin`,b.createElement(b.Fragment,null,b.createElement(`path`,{d:`M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z`}))]]),C=b.forwardRef((t,n)=>b.createElement(e,{ref:n,...t,weights:x}));C.displayName=`ArrowCounterClockwiseIcon`;var w=C,T=b.forwardRef((t,n)=>b.createElement(e,{ref:n,...t,weights:S}));T.displayName=`TrashIcon`;var E=T,D=r();function oe(e){let[t,n]=(0,b.useState)(),[r,o]=(0,b.useState)(),s=(0,b.useRef)(0),[l,u]=(0,b.useState)(!1),[d,p]=(0,b.useState)(``);(0,b.useEffect)(()=>{let e=()=>{s.current++,u(!1),n(void 0),o(void 0),p(``)};return window.addEventListener(`umgt-account-changed`,e),()=>{s.current++,window.removeEventListener(`umgt-account-changed`,e)}},[]);let m=async e=>{let t=s.current;u(!0),p(``);try{await e(),t===s.current&&(n(void 0),o(void 0))}catch(e){t===s.current&&p(f(e))}finally{t===s.current&&u(!1)}},h=n=>{n.preventDefault(),t?.title.trim()&&m(()=>e.onRename(t.id,t.title.trim()))},g=e.busy||l,_=`chat-dialog-modal ${e.modern?`account-modal-modern kids-theme`:``}`;return(0,D.jsxs)(`aside`,{className:`plain-chat-history`,"aria-label":`Диалоги`,children:[(0,D.jsxs)(`div`,{className:`chat-history-list`,children:[e.chats.map(t=>(0,D.jsxs)(`div`,{className:`chat-history-row ${e.selected===t.id?`selected`:``}`,children:[e.deleted?(0,D.jsx)(`span`,{className:`chat-history-deleted-title`,children:t.title}):(0,D.jsxs)(`button`,{type:`button`,className:`chat-history-select`,disabled:g,"aria-pressed":e.selected===t.id,onClick:()=>e.onSelect(t.id),children:[t.title,t.status===`running`&&(0,D.jsx)(`small`,{children:`Отвечает…`})]}),(0,D.jsx)(`div`,{className:`chat-history-actions`,children:e.deleted?(0,D.jsx)(`button`,{type:`button`,disabled:g,"aria-label":`Восстановить «${t.title}»`,title:`Восстановить`,onClick:()=>void m(()=>e.onRestore(t.id)),children:(0,D.jsx)(w,{size:18})}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`button`,{type:`button`,disabled:g,"aria-label":`Переименовать «${t.title}»`,title:`Переименовать`,onClick:()=>{p(``),n({id:t.id,title:t.title})},children:(0,D.jsx)(c,{size:18})}),(0,D.jsx)(`button`,{type:`button`,disabled:g,"aria-label":`Удалить «${t.title}»`,title:`Удалить`,onClick:()=>{p(``),o(t)},children:(0,D.jsx)(E,{size:18})})]})})]},t.id)),!e.chats.length&&(0,D.jsx)(`p`,{children:e.deleted?`Нет удалённых диалогов.`:`Ваши диалоги появятся здесь.`})]}),(0,D.jsxs)(`button`,{type:`button`,className:`chat-history-trash`,disabled:g,onClick:e.onToggleDeleted,children:[(0,D.jsx)(E,{size:17}),e.deleted?`К диалогам`:`Удалённые диалоги`]}),d&&!t&&!r&&(0,D.jsx)(`p`,{className:`plain-chat-error`,role:`alert`,children:d}),(0,D.jsx)(i,{open:!!t,onOpenChange:e=>{!e&&!l&&n(void 0)},title:`Переименовать диалог`,description:`Название видно в списке диалогов.`,className:_,children:(0,D.jsxs)(`form`,{onSubmit:h,className:`chat-dialog-form`,children:[(0,D.jsxs)(`label`,{children:[`Название диалога`,(0,D.jsx)(`input`,{autoFocus:!0,required:!0,maxLength:120,value:t?.title??``,disabled:l,onChange:e=>n(t=>t&&{...t,title:e.target.value})})]}),d&&(0,D.jsx)(`p`,{className:`plain-chat-error`,role:`alert`,children:d}),(0,D.jsxs)(`div`,{className:`chat-dialog-actions`,children:[(0,D.jsx)(a,{type:`button`,disabled:l,onClick:()=>n(void 0),children:`Отмена`}),(0,D.jsx)(a,{type:`submit`,tone:`primary`,disabled:l||!t?.title.trim(),children:`Сохранить`})]})]})}),(0,D.jsxs)(i,{open:!!r,onOpenChange:e=>{!e&&!l&&o(void 0)},title:`Удалить диалог?`,description:`Диалог попадёт в «Удалённые», откуда его можно восстановить. Текущая генерация остановится, созданные игры останутся в проектах.`,className:_,children:[(0,D.jsx)(`p`,{className:`chat-dialog-name`,children:r?.title}),d&&(0,D.jsx)(`p`,{className:`plain-chat-error`,role:`alert`,children:d}),(0,D.jsxs)(`div`,{className:`chat-dialog-actions`,children:[(0,D.jsx)(a,{disabled:l,onClick:()=>o(void 0),children:`Отмена`}),(0,D.jsx)(a,{tone:`danger`,disabled:l,onClick:()=>r&&void m(()=>e.onDelete(r.id)),children:`Удалить`})]})]})]})}function O({onClose:e,onOpenProject:t,modern:n=!1}){let r=h(),i=ae(),c=(0,b.useRef)(!1),x=(0,b.useRef)(void 0),S=(0,b.useRef)(new Set),C=(0,b.useRef)(new Set),w=(0,b.useRef)(null),[T,O]=(0,b.useState)([]),[k,A]=(0,b.useState)(),[j,M]=(0,b.useState)(),[N,P]=(0,b.useState)(``);(0,b.useEffect)(()=>{if(c.current&&!i.recording&&i.transcript){let e=i.transcript;P(t=>(t.trim()?`${t.trim()} ${e}`:e).slice(0,3e4)),i.reset()}c.current=i.recording},[i.recording]);let[F,I]=(0,b.useState)(``),[L,R]=(0,b.useState)(!1),[z,B]=(0,b.useState)(!0),[V,H]=(0,b.useState)(!1),[U,W]=(0,b.useState)(``),[G,K]=(0,b.useState)({}),q=(0,b.useRef)(k);q.current=k;let J=(0,b.useRef)(0),Y=(0,b.useRef)(``),X=(0,b.useRef)(null),Z=(0,b.useCallback)(async()=>{let e=J.current,t=await v(V?`/chats?deleted=true`:`/chats`);e===J.current&&(O(t),A(e=>V?void 0:t.some(t=>t.id===e)?e:t[0]?.id))},[V]);(0,b.useEffect)(()=>{let e=()=>{let e=++J.current;r.interrupt(),c.current=!1,i.reset(),w.current?.close(),w.current=null,x.current=void 0,S.current.clear(),C.current.clear(),M(void 0),O([]),A(void 0),P(``),I(``),R(!1),B(!0),W(``),K({}),Z().catch(t=>{e===J.current&&I(f(t))}).finally(()=>{e===J.current&&B(!1)})};return e(),window.addEventListener(`umgt-account-changed`,e),()=>{J.current++,window.removeEventListener(`umgt-account-changed`,e)}},[Z]),(0,b.useEffect)(()=>{M(void 0),P(``)},[k]),(0,b.useEffect)(()=>()=>{w.current?.close()},[]),(0,b.useEffect)(()=>{if(!k||V)return;let e=J.current,t=!1,n,r=async()=>{try{let i=await v(`/chats/${k}`);if(t||e!==J.current)return;M(i);let a=`${i.messages.at(-1)?.id}:${i.games?.map(e=>e.status).join(`,`)}`;i.status!==`running`&&a!==Y.current&&(Y.current=a,window.dispatchEvent(new Event(`umgt-usage-changed`))),O(e=>e.map(e=>e.id===i.id?{...e,title:i.title,model:i.model,status:i.status,updatedAt:i.updatedAt}:e)),(i.status===`running`||i.launches?.some(e=>e.status===`running`)||i.games?.some(e=>[`queued`,`planning`,`building`,`waiting`].includes(e.status)))&&(n=setTimeout(r,700))}catch(i){!t&&e===J.current&&(I(f(i)),n=setTimeout(r,2500))}};return r(),()=>{t=!0,clearTimeout(n)}},[k,L,V]),(0,b.useEffect)(()=>{X.current?.scrollIntoView({block:`nearest`})},[j?.messages.at(-1)?.content]),(0,b.useEffect)(()=>{if(!j||!x.current)return;let e=x.current,t=j.messages.findIndex(t=>t.id===e.requestId);if(t<0)return;let n=(e,t)=>{S.current.has(t)||(S.current.add(t),r.say(e,t))};for(let e of j.permissions??[])n(`Нужен ваш ответ или разрешение. Проверьте запрос в чате.`,`chat-permission:${e.id}`);let i=(j.launches??[]).filter(t=>t.requestId===e.requestId);for(let e of j.messages.slice(t+1))e.role===`assistant`&&e.status===`complete`&&e.speech&&!i.length&&n(e.speech,`chat-message:${e.id}`);for(let t of j.games??[])Date.parse(t.createdAt)>=e.at&&(t.status===`ready`&&n(`Игра готова. Можно запускать.`,`game-ready:${t.id}`),t.status===`waiting`&&n(`Нужен ваш ответ. Откройте запрос в проекте.`,`game-wait:${t.id}`),t.status===`error`&&n(`Нужна ваша помощь. Подробности есть в карточке игры.`,`game-error:${t.id}`));for(let e of i)if(!(e.status===`running`||C.current.has(e.id))){if(C.current.add(e.id),e.status===`error`){w.current?.close(),w.current=null,I(e.error||`Не удалось запустить игру.`);continue}try{let t=new URL(e.url);if(t.protocol!==`http:`||![`127.0.0.1`,`localhost`,`[::1]`].includes(t.hostname)||t.username||t.password)throw Error(`Неверный адрес игры.`);let r=w.current&&!w.current.closed?w.current:window.open(`about:blank`,`_blank`,`popup,width=1200,height=800`);w.current=null,r?(r.opener=null,r.location.replace(t.href),n(`Как пожелаете. Открываю игру.`,`open:${e.id}`)):(I(`Разрешите новое окно или нажмите «Открыть игру» ниже.`),n(`Игра готова. Нажмите «Открыть игру».`,`open:${e.id}`))}catch(e){w.current?.close(),w.current=null,I(f(e))}}j.status!==`running`&&!i.length&&(w.current?.close(),w.current=null)},[j,r.enabled,r.say]);let se=async()=>{let e=J.current;r.interrupt(),c.current=!1,i.reset(),w.current?.close(),w.current=null,x.current=void 0,R(!0),I(``);try{let t=await v(`/chats`,`POST`,{});if(e!==J.current)return;O(e=>[t,...e]),A(t.id),M(t)}catch(t){e===J.current&&I(f(t))}finally{e===J.current&&R(!1)}},Q=async()=>{let e=N.trim();if(!e||L||z||i.recording||j?.status===`running`)return;let t=J.current;r.prepare();let n=crypto.randomUUID();x.current={requestId:n,at:Date.now()},ee(e)&&j?.games?.at(-1)?.status===`ready`&&(w.current=window.open(`about:blank`,`_blank`,`popup,width=1200,height=800`),w.current&&(w.current.opener=null,w.current.document.title=`Запуск игры`,w.current.document.body.textContent=`Открываем игру…`)),R(!0),I(``);try{let i=k??(await v(`/chats`,`POST`,{})).id;if(t!==J.current)return;let a=await v(`/chats/${i}/messages`,`POST`,{text:e,requestId:n,voiceEnabled:r.enabled});if(t!==J.current)return;A(i),M(a),P(``),await Z()}catch(e){w.current?.close(),w.current=null,t===J.current&&I(f(e))}finally{t===J.current&&R(!1)}},ce=async()=>{if(!k)return;let e=J.current;R(!0);try{let t=await v(`/chats/${k}/stop`,`POST`,{});e===J.current&&q.current===t.id&&M(t)}catch(t){e===J.current&&I(f(t))}finally{e===J.current&&R(!1)}},le=async e=>{let t=J.current;try{let n=await v(`/chats/${k}/games/${e}/stop`,`POST`,{});t===J.current&&q.current===n.id&&M(n)}catch(e){t===J.current&&I(f(e))}},$=async e=>{let t=J.current,n=window.open(`about:blank`,`_blank`,`popup,width=1200,height=800`);n&&(n.opener=null,n.document.title=`Запуск игры`,n.document.body.textContent=`Готовим игру…`),W(e),I(``);try{let r=await v(`/chats/${k}/games/${e}/launch`,`POST`,{});if(t!==J.current){n?.close();return}let i=new URL(r.url);if(i.protocol!==`http:`||![`127.0.0.1`,`localhost`,`[::1]`].includes(i.hostname)||i.username||i.password)throw Error(`Студия вернула неверный адрес игры.`);K(t=>({...t,[e]:i.href})),n&&!n.closed?n.location.replace(i.href):I(`Разрешите открытие нового окна или нажмите «Открыть игру» ниже.`)}catch(e){n?.close(),t===J.current&&I(f(e))}finally{t===J.current&&W(``)}};return(0,D.jsxs)(`section`,{className:`plain-chat-page ${n?`plain-chat-modern kids-theme`:``}`,"aria-label":`Чат`,children:[(0,D.jsxs)(`header`,{className:`plain-chat-page-heading`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h1`,{children:`Чат`}),(0,D.jsx)(`p`,{children:`Поговори с UM или попроси создать игру.`})]}),(0,D.jsxs)(a,{tone:`ghost`,onClick:e,children:[(0,D.jsx)(u,{size:18}),`К играм`]})]}),(0,D.jsxs)(`div`,{className:`plain-chat`,"data-testid":`plain-chat`,children:[(0,D.jsx)(`div`,{className:`plain-chat-toolbar`,children:(0,D.jsxs)(a,{onClick:()=>void se(),disabled:L||z||V,children:[(0,D.jsx)(d,{size:17}),`Новый диалог`]})}),(0,D.jsxs)(`div`,{className:`plain-chat-layout`,children:[(0,D.jsx)(oe,{chats:T,selected:k,busy:L||z,deleted:V,modern:n,onRename:async(e,t)=>{let n=J.current,r=await v(`/chats/${e}`,`PATCH`,{title:t});n===J.current&&(O(t=>t.map(t=>t.id===e?{...t,title:r.title,updatedAt:r.updatedAt}:t)),M(t=>t?.id===e?{...t,title:r.title}:t))},onDelete:async e=>{let t=J.current;await v(`/chats/${e}`,`DELETE`),t===J.current&&(q.current===e&&(r.interrupt(),c.current=!1,i.reset(),x.current=void 0,w.current?.close(),w.current=null,A(void 0),M(void 0),P(``),I(``)),await Z())},onRestore:async e=>{let t=J.current;await v(`/chats/${e}/restore`,`POST`,{}),t===J.current&&await Z()},onToggleDeleted:()=>H(e=>!e),onSelect:e=>{r.interrupt(),c.current=!1,i.reset(),w.current?.close(),w.current=null,x.current=void 0,A(e),I(``)}}),(0,D.jsx)(`div`,{className:`plain-chat-body`,children:V?(0,D.jsxs)(`div`,{className:`plain-chat-empty`,children:[(0,D.jsx)(E,{size:44}),(0,D.jsx)(`h3`,{children:`Удалённые диалоги`}),(0,D.jsx)(`p`,{children:`Нажмите значок восстановления рядом с диалогом, чтобы вернуть его в список.`}),(0,D.jsx)(a,{onClick:()=>H(!1),children:`К диалогам`})]}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`div`,{className:`plain-chat-messages`,role:`log`,"aria-label":`Сообщения чата`,"aria-busy":j?.status===`running`,children:[!j?.messages.length&&(0,D.jsxs)(`div`,{className:`plain-chat-empty`,children:[(0,D.jsx)(m,{size:48}),(0,D.jsx)(`h3`,{children:`Поговорим или сделаем игру?`}),(0,D.jsx)(`p`,{children:`Например: «Создай игру змейку». UM подготовит быстрый HTML-прототип, который можно сразу запустить.`}),(0,D.jsx)(a,{onClick:()=>P(`Создай игру змейку — быстрый HTML-прототип для проверки концепции.`),children:`Создать змейку`})]}),j?.messages.map(e=>(0,D.jsxs)(`article`,{className:`plain-chat-message ${e.role}`,children:[(0,D.jsx)(`strong`,{children:e.role===`user`?`Вы`:`UMGT`}),(0,D.jsx)(ie,{text:e.content}),e.role===`assistant`&&e.status===`interrupted`&&j.status!==`running`&&(0,D.jsx)(`small`,{children:`Незавершённый ответ`})]},e.id)),j?.permissions?.map(e=>(0,D.jsx)(te,{permission:e,projectId:``,onAnswer:t=>v(`/chats/${j.id}/permissions/${e.id}`,`POST`,t),onRefresh:async()=>{let e=await v(`/chats/${j.id}`);q.current===e.id&&M(e)}},e.id)),j?.games?.map(e=>(0,D.jsxs)(`article`,{className:`plain-chat-game ${e.status}`,"aria-label":`Игра ${e.name}`,children:[(0,D.jsxs)(`div`,{className:`plain-chat-game-heading`,children:[(0,D.jsx)(p,{size:28}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h3`,{children:e.name}),(0,D.jsx)(`small`,{children:e.engine===`html5`?`HTML-прототип`:e.engine===`roblox`?`Roblox Studio`:`Godot`})]}),(0,D.jsx)(`span`,{children:e.status===`ready`?`Готово`:e.status===`error`?`Ошибка`:e.status===`stopped`?`Остановлено`:`Создаётся`})]}),(0,D.jsxs)(`p`,{role:`status`,children:[e.stage,e.total>0&&` · ${e.completed}/${e.total} задач`]}),e.total>0&&(0,D.jsx)(`progress`,{"aria-label":`Готовность игры ${e.name}`,max:e.total,value:e.completed}),e.status===`error`&&e.error&&(0,D.jsx)(`p`,{className:`plain-chat-error`,children:e.error}),(0,D.jsxs)(`div`,{className:`plain-chat-game-actions`,children:[e.status===`ready`&&e.engine===`html5`&&(0,D.jsxs)(a,{tone:`primary`,disabled:!!U,onClick:()=>void $(e.id),children:[(0,D.jsx)(l,{size:19,weight:`fill`}),U===e.id?`Запускаем…`:`Запустить`]}),G[e.id]&&(0,D.jsx)(`a`,{className:`button`,href:G[e.id],target:`_blank`,rel:`noopener noreferrer`,children:`Открыть игру`}),(0,D.jsxs)(a,{onClick:()=>void t(e.projectId).catch(e=>I(f(e))),children:[(0,D.jsx)(o,{size:18}),`Открыть проект`]}),[`queued`,`planning`,`building`,`waiting`].includes(e.status)&&(0,D.jsxs)(a,{onClick:()=>void le(e.id),children:[(0,D.jsx)(y,{size:16}),`Остановить создание`]})]})]},e.id)),j?.launches?.slice(-1).filter(e=>e.status===`ready`).map(e=>(0,D.jsx)(`p`,{className:`plain-chat-launch`,children:(0,D.jsx)(a,{disabled:!!U,onClick:()=>void $(e.gameId),children:`Открыть игру`})},e.id)),(0,D.jsx)(`div`,{ref:X})]}),(F||j?.error)&&(0,D.jsx)(`p`,{className:`plain-chat-error`,role:`alert`,children:F||j?.error}),j?.status===`running`&&(0,D.jsxs)(`div`,{className:`plain-chat-progress`,role:`status`,children:[(0,D.jsx)(`span`,{children:`UMGT отвечает…`}),(0,D.jsxs)(a,{onClick:()=>void ce(),disabled:L,children:[(0,D.jsx)(y,{size:16}),`Остановить ответ`]})]}),(0,D.jsxs)(`form`,{className:`plain-chat-compose`,onSubmit:e=>{e.preventDefault(),Q()},children:[(0,D.jsx)(g,{}),(0,D.jsx)(`textarea`,{"aria-label":`Сообщение чата`,placeholder:`Напишите сообщение…`,value:i.recording?[N.trim(),i.transcript].filter(Boolean).join(` `):N,readOnly:i.recording,maxLength:3e4,rows:3,disabled:L||j?.status===`running`,onChange:e=>P(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),Q())}}),(0,D.jsx)(a,{type:`submit`,tone:`primary`,"aria-label":`Отправить сообщение`,disabled:!N.trim()||L||z||i.recording||j?.status===`running`,children:(0,D.jsx)(s,{size:20})}),i.supported&&(0,D.jsx)(`button`,{type:`button`,className:`voice-reply-toggle ${i.recording?`enabled`:``}`,"aria-label":i.recording?`Остановить диктовку`:`Начать диктовку`,"aria-pressed":i.recording,disabled:L||j?.status===`running`,onClick:()=>{r.interrupt(),i.recording?i.stop():i.start()},children:i.recording?(0,D.jsx)(y,{size:22,weight:`fill`}):(0,D.jsx)(ne,{size:22})})]}),i.recording&&(0,D.jsxs)(`p`,{className:`voice-reply-status`,role:`status`,children:[`Диктовка · `,re(i.seconds),` · нажмите микрофон, чтобы закончить`]}),!i.recording&&i.error&&(0,D.jsx)(`p`,{className:`plain-chat-error`,role:`alert`,children:i.error}),(0,D.jsx)(_,{}),(0,D.jsx)(`small`,{className:`plain-chat-caption`,children:`По умолчанию создаём быстрые HTML-прототипы. Enter — отправить, Shift+Enter — новая строка. Расход — из лимитов аккаунта.`})]})})]})]})]})}export{O as PlainChat};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`SparkleIcon`;var o=a;export{o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M200,28H160a20,20,0,0,0-20,20V208a20,20,0,0,0,20,20h40a20,20,0,0,0,20-20V48A20,20,0,0,0,200,28Zm-4,176H164V52h32ZM96,28H56A20,20,0,0,0,36,48V208a20,20,0,0,0,20,20H96a20,20,0,0,0,20-20V48A20,20,0,0,0,96,28ZM92,204H60V52H92Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,48V208a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8h40A8,8,0,0,1,208,48ZM96,40H56a8,8,0,0,0-8,8V208a8,8,0,0,0,8,8H96a8,8,0,0,0,8-8V48A8,8,0,0,0,96,40Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M200,32H160a16,16,0,0,0-16,16V208a16,16,0,0,0,16,16h40a16,16,0,0,0,16-16V48A16,16,0,0,0,200,32Zm0,176H160V48h40ZM96,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V48A16,16,0,0,0,96,32Zm0,176H56V48H96Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,48V208a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V48a16,16,0,0,1,16-16h40A16,16,0,0,1,216,48ZM96,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V48A16,16,0,0,0,96,32Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M200,34H160a14,14,0,0,0-14,14V208a14,14,0,0,0,14,14h40a14,14,0,0,0,14-14V48A14,14,0,0,0,200,34Zm2,174a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2V48a2,2,0,0,1,2-2h40a2,2,0,0,1,2,2ZM96,34H56A14,14,0,0,0,42,48V208a14,14,0,0,0,14,14H96a14,14,0,0,0,14-14V48A14,14,0,0,0,96,34Zm2,174a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V48a2,2,0,0,1,2-2H96a2,2,0,0,1,2,2Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M200,32H160a16,16,0,0,0-16,16V208a16,16,0,0,0,16,16h40a16,16,0,0,0,16-16V48A16,16,0,0,0,200,32Zm0,176H160V48h40ZM96,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V48A16,16,0,0,0,96,32Zm0,176H56V48H96Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M200,36H160a12,12,0,0,0-12,12V208a12,12,0,0,0,12,12h40a12,12,0,0,0,12-12V48A12,12,0,0,0,200,36Zm4,172a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4V48a4,4,0,0,1,4-4h40a4,4,0,0,1,4,4ZM96,36H56A12,12,0,0,0,44,48V208a12,12,0,0,0,12,12H96a12,12,0,0,0,12-12V48A12,12,0,0,0,96,36Zm4,172a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V48a4,4,0,0,1,4-4H96a4,4,0,0,1,4,4Z`}))]]),a=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,176H52V52H204Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,48V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H208A8,8,0,0,1,216,48Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34Zm2,174a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36Zm4,172a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z`}))]]),o=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));o.displayName=`PauseIcon`;var s=o,c=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:a}));c.displayName=`SquareIcon`;var l=c;export{s as n,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0ZM96.49,80.49,116,61v83a12,12,0,0,0,24,0V61l19.51,19.52a12,12,0,1,0,17-17l-40-40a12,12,0,0,0-17,0l-40,40a12,12,0,1,0,17,17Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM93.66,77.66,120,51.31V144a8,8,0,0,0,16,0V51.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,77.66Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM88,80h32v64a8,8,0,0,0,16,0V80h32a8,8,0,0,0,5.66-13.66l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,88,80Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0ZM92.24,76.24,122,46.49V144a6,6,0,0,0,12,0V46.49l29.76,29.75a6,6,0,0,0,8.48-8.48l-40-40a6,6,0,0,0-8.48,0l-40,40a6,6,0,0,0,8.48,8.48Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM93.66,77.66,120,51.31V144a8,8,0,0,0,16,0V51.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,77.66Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0ZM90.83,74.83,124,41.66V144a4,4,0,0,0,8,0V41.66l33.17,33.17a4,4,0,1,0,5.66-5.66l-40-40a4,4,0,0,0-5.66,0l-40,40a4,4,0,0,0,5.66,5.66Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`UploadSimpleIcon`;var o=a;export{o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,o as t,r as n}from"./jsx-runtime-CdVFa8IP.js";var r=t(n(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z`}))]]),a=r.forwardRef((t,n)=>r.createElement(e,{ref:n,...t,weights:i}));a.displayName=`WarningCircleIcon`;var o=a;export{o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e,r as t,t as n}from"./jsx-runtime-CdVFa8IP.js";import{t as r}from"./ArrowRight.es-9w41WqD8.js";import{t as i}from"./CaretDown.es-Cq33NYip.js";import{n as a}from"./ui-wHE_yBK0.js";import{n as o,t as s}from"./Square.es-BjNN9Ypc.js";import{t as c}from"./WarningCircle.es-D63H8cL9.js";import{U as l,b as u,d}from"./index-B6_q6dBC.js";var f=e(t(),1),p=n();function m({workspace:e,request:t,activity:n,connected:m,onPermission:h,events:g=[],onAssets:_}){let v=d(e,t),[y,b]=(0,f.useState)(!0);if((0,f.useEffect)(()=>b(!0),[e.project.id,t?.startedAt,v.decomposition?.id]),!v.visible)return null;let x=[...new Map(g.filter(t=>t.type===`permission.auto_approved`&&t.projectId===e.project.id).filter(e=>{let t=e.payload;return t.runId===v.run?.id||t.runId===v.decomposition?.id}).map(e=>[e.id,e])).values()],S=n.run?.id===v.run?.id?u(n,e.permissions.length,m):void 0,C=m&&(v.pending||v.working||v.status===`assets-search`||v.status===`assets-import`)&&!v.waiting&&v.status!==`assets-choice`,w=v.stages.length?v.stages:v.accepted?[{id:`accepted`,label:`План принят`,status:`completed`,counts:void 0,createdAt:v.decomposition?.startedAt??t?.startedAt}]:[];return(0,p.jsxs)(`section`,{className:`workflow-journal ${C?`is-live`:``}`,"data-testid":`workflow-journal`,"data-state":v.status,"aria-label":`Журнал разработки`,children:[(0,p.jsxs)(`button`,{type:`button`,className:`workflow-journal-toggle`,"aria-expanded":y,onClick:()=>b(e=>!e),"data-testid":`workflow-journal-toggle`,children:[(0,p.jsx)(`span`,{className:`workflow-journal-mark`,"aria-hidden":`true`,children:v.waiting||v.failed?(0,p.jsx)(c,{size:18}):v.status===`paused`?(0,p.jsx)(o,{size:18}):v.status===`stopped`?(0,p.jsx)(s,{size:16}):C?(0,p.jsxs)(`span`,{className:`journal-bars`,children:[(0,p.jsx)(`i`,{}),(0,p.jsx)(`i`,{}),(0,p.jsx)(`i`,{})]}):(0,p.jsx)(l,{size:18})}),(0,p.jsxs)(`span`,{className:`workflow-journal-heading`,children:[(0,p.jsx)(`strong`,{role:`status`,"data-testid":`workflow-journal-title`,children:v.title}),(0,p.jsx)(`small`,{children:!m&&(v.pending||v.working)?`Связь прервана · восстанавливаем состояние`:v.waiting?`Действие продолжится после вашего ответа`:v.pending?`Запрос отправлен. Ждём подтверждения сервера.`:v.working?S?.detail?`${S.label} · ${S.detail}`:S?.label??`Выполняем текущий этап`:v.tasks.length?`Завершено задач: ${v.done} из ${v.tasks.length}`:`Ход подготовки и разработки`})]}),(0,p.jsxs)(`span`,{className:`journal-toggle-label`,children:[`Журнал `,(0,p.jsx)(i,{size:15})]})]}),y&&(0,p.jsxs)(`div`,{className:`workflow-journal-body`,children:[(0,p.jsxs)(`ol`,{className:`workflow-journal-rows`,"data-testid":`workflow-journal-rows`,children:[v.pending&&(0,p.jsxs)(`li`,{"data-status":`running`,children:[(0,p.jsx)(`span`,{className:`journal-node`}),(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`strong`,{children:`Отправлено утверждение плана`}),(0,p.jsx)(`small`,{children:`Подготовка начнётся после подтверждения.`})]})]}),w.map(e=>(0,p.jsxs)(`li`,{"data-status":e.status,children:[(0,p.jsx)(`span`,{className:`journal-node`,children:e.status===`completed`?(0,p.jsx)(l,{size:12}):e.status===`failed`?(0,p.jsx)(c,{size:12}):null}),(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`strong`,{children:`kind`in e&&e.kind===`approval`&&e.status===`completed`?`План принят`:e.label}),e.counts&&(0,p.jsx)(`small`,{children:e.counts.tasks===void 0?e.counts.skills===void 0?``:`Подключено: ${e.counts.skills}`:`Сохранено эпиков: ${e.counts.epics} · задач: ${e.counts.tasks}`})]}),(0,p.jsx)(`span`,{className:`journal-row-status`,children:e.status===`completed`?`Готово`:e.status===`failed`?`Ошибка`:e.status===`cancelled`?`Остановлено`:v.waiting?`Ждёт ответа`:`В работе`})]},e.id)),x.length>0&&(0,p.jsxs)(`li`,{"data-status":`completed`,"data-testid":`journal-auto-approved`,children:[(0,p.jsx)(`span`,{className:`journal-node`,children:(0,p.jsx)(l,{size:12})}),(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`strong`,{children:`Действия разрешены автоматически`}),(0,p.jsxs)(`small`,{children:[`Подтверждено запросов: `,x.length,`. Агент продолжил работу.`]})]})]}),!!v.tasks.length&&(0,p.jsxs)(`li`,{"data-status":v.done===v.tasks.length?`completed`:v.working?`running`:`idle`,children:[(0,p.jsx)(`span`,{className:`journal-node`,children:v.done===v.tasks.length?(0,p.jsx)(l,{size:12}):null}),(0,p.jsxs)(`div`,{children:[(0,p.jsx)(`strong`,{children:v.done===v.tasks.length?`Реализация завершена`:`Реализация задач`}),(0,p.jsx)(`small`,{children:v.tasks.find(e=>e.status===`running`)?.title??`Выполнено ${v.done} из ${v.tasks.length}`}),(0,p.jsx)(`progress`,{"aria-label":`Выполнение задач плана`,value:v.done,max:v.tasks.length})]}),(0,p.jsxs)(`span`,{className:`journal-row-status`,children:[v.done,` / `,v.tasks.length]})]})]}),v.selection&&(0,p.jsxs)(`div`,{className:`journal-asset-stage`,"data-testid":`journal-asset-selection`,children:[(0,p.jsx)(`span`,{children:v.selection.status===`confirmed`?`Набор ассетов подтверждён`:v.selection.status===`discovering`?`Ищем варианты по утверждённому плану`:v.selection.status===`importing`?`Импортируем подтверждённый набор`:`Подбор ассетов сохранён`}),_&&(0,p.jsxs)(a,{onClick:_,"data-testid":`journal-open-assets`,children:[v.selection.status===`confirmed`?`Посмотреть набор`:`Открыть подбор`,` `,(0,p.jsx)(r,{size:15})]})]}),v.error&&(0,p.jsx)(`p`,{className:`journal-error`,role:`alert`,children:v.error}),v.waiting&&(0,p.jsxs)(a,{onClick:h,"data-testid":`journal-open-permission`,children:[`Ответить агенту `,(0,p.jsx)(r,{size:15})]}),!v.pending&&!v.failed&&!v.stages.length&&v.working&&(0,p.jsx)(`p`,{className:`journal-legacy-note`,children:v.run?.kind===`decomposition`?`Агент создаёт эпики и задачи.`:`Состояние задач обновляется по событиям агента.`})]})]})}export{m as WorkflowJournal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{n as i}from"./ui-wHE_yBK0.js";var a=t(n(),1),o=new Map([[`bold`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M234.49,111.07,90.41,22.94A20,20,0,0,0,60,39.87V216.13a20,20,0,0,0,30.41,16.93l144.08-88.13a19.82,19.82,0,0,0,0-33.86ZM84,208.85V47.15L216.16,128Z`}))],[`duotone`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M228.23,134.69,84.15,222.81A8,8,0,0,1,72,216.12V39.88a8,8,0,0,1,12.15-6.69l144.08,88.12A7.82,7.82,0,0,1,228.23,134.69Z`,opacity:`0.2`}),a.createElement(`path`,{d:`M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z`}))],[`fill`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z`}))],[`light`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M231.36,116.19,87.28,28.06a14,14,0,0,0-14.18-.27A13.69,13.69,0,0,0,66,39.87V216.13a13.69,13.69,0,0,0,7.1,12.08,14,14,0,0,0,14.18-.27l144.08-88.13a13.82,13.82,0,0,0,0-23.62Zm-6.26,13.38L81,217.7a2,2,0,0,1-2.06,0,1.78,1.78,0,0,1-1-1.61V39.87a1.78,1.78,0,0,1,1-1.61A2.06,2.06,0,0,1,80,38a2,2,0,0,1,1,.31L225.1,126.43a1.82,1.82,0,0,1,0,3.14Z`}))],[`regular`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z`}))],[`thin`,a.createElement(a.Fragment,null,a.createElement(`path`,{d:`M230.32,117.9,86.24,29.79a11.91,11.91,0,0,0-12.17-.23A11.71,11.71,0,0,0,68,39.89V216.11a11.71,11.71,0,0,0,6.07,10.33,11.91,11.91,0,0,0,12.17-.23L230.32,138.1a11.82,11.82,0,0,0,0-20.2Zm-4.18,13.37L82.06,219.39a4,4,0,0,1-4.07.07,3.77,3.77,0,0,1-2-3.35V39.89a3.77,3.77,0,0,1,2-3.35,4,4,0,0,1,4.07.07l144.08,88.12a3.8,3.8,0,0,1,0,6.54Z`}))]]),s=a.forwardRef((t,n)=>a.createElement(e,{ref:n,...t,weights:o}));s.displayName=`PlayIcon`;var c=s,l=r(),u=()=>({devices:[`desktop`,`mobile`],orientation:`any`,languages:[`ru`,`en`],ads:{interstitial:!1,rewarded:!1},cloudSaves:!0,authorization:!1,payments:{enabled:!1,products:[]},leaderboards:[]});function d(e){return{...e,languages:[...new Set(e.languages.map(e=>e.trim()).filter(Boolean))],leaderboards:[...new Set(e.leaderboards.map(e=>e.trim()).filter(Boolean))]}}function f({value:e,onChange:t,disabled:n=!1}){let r=n=>t({...e,...n});return(0,l.jsxs)(`fieldset`,{className:`yandex-config`,disabled:n,children:[(0,l.jsx)(`legend`,{children:`Игра на Яндекс Играх`}),(0,l.jsxs)(`div`,{className:`form-columns`,children:[(0,l.jsxs)(`fieldset`,{children:[(0,l.jsx)(`legend`,{children:`Устройства игроков`}),(0,l.jsx)(`div`,{className:`checkbox-options`,children:[`desktop`,`mobile`].map(t=>(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.devices.includes(t),onChange:n=>r({devices:n.target.checked?[...e.devices,t]:e.devices.filter(e=>e!==t)})}),t===`desktop`?`Компьютер`:`Телефон`]},t))})]}),(0,l.jsxs)(`label`,{children:[`Ориентация`,(0,l.jsxs)(`select`,{"aria-label":`Ориентация игры`,value:e.orientation,onChange:e=>r({orientation:e.target.value}),children:[(0,l.jsx)(`option`,{value:`any`,children:`Любая`}),(0,l.jsx)(`option`,{value:`landscape`,children:`Горизонтальная`}),(0,l.jsx)(`option`,{value:`portrait`,children:`Вертикальная`})]})]})]}),(0,l.jsxs)(`div`,{className:`form-columns`,children:[(0,l.jsxs)(`label`,{children:[`Языки`,(0,l.jsx)(`input`,{"aria-label":`Языки игры`,placeholder:`ru, en`,value:e.languages.join(`, `),onChange:e=>r({languages:e.target.value.split(`,`).map(e=>e.trim())})}),(0,l.jsx)(`small`,{children:`Коды языков через запятую.`})]}),(0,l.jsxs)(`label`,{children:[`App ID `,(0,l.jsx)(`span`,{className:`muted`,children:`· после создания черновика`}),(0,l.jsx)(`input`,{"aria-label":`Yandex App ID`,value:e.appId??``,onChange:e=>r({appId:e.target.value.trim()||void 0})})]})]}),(0,l.jsxs)(`div`,{className:`yandex-features`,children:[(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.cloudSaves,onChange:e=>r({cloudSaves:e.target.checked})}),`Облачные сохранения`]}),(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.authorization,onChange:e=>r({authorization:e.target.checked})}),`Авторизация игрока`]}),(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.ads.interstitial,onChange:t=>r({ads:{...e.ads,interstitial:t.target.checked}})}),`Межстраничная реклама`]}),(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.ads.rewarded,onChange:t=>r({ads:{...e.ads,rewarded:t.target.checked}})}),`Реклама с наградой`]}),(0,l.jsxs)(`label`,{children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:e.payments.enabled,onChange:t=>r({payments:{...e.payments,enabled:t.target.checked}})}),`Внутриигровые покупки`]})]}),e.payments.enabled&&(0,l.jsxs)(`div`,{className:`yandex-products`,children:[(0,l.jsx)(`p`,{className:`muted`,children:`Товары должны совпадать с каталогом в консоли Яндекс Игр.`}),e.payments.products.map((t,n)=>(0,l.jsxs)(`div`,{className:`yandex-product`,children:[(0,l.jsxs)(`label`,{children:[`ID товара`,(0,l.jsx)(`input`,{"aria-label":`ID товара ${n+1}`,required:!0,value:t.id,onChange:t=>r({payments:{...e.payments,products:e.payments.products.map((e,r)=>r===n?{...e,id:t.target.value}:e)}})})]}),(0,l.jsxs)(`label`,{children:[`Ресурс награды`,(0,l.jsx)(`input`,{"aria-label":`Ресурс товара ${n+1}`,value:Object.keys(t.grant)[0]??``,onChange:t=>r({payments:{...e.payments,products:e.payments.products.map((e,r)=>r===n?{...e,grant:{[t.target.value]:Object.values(e.grant)[0]??1}}:e)}})})]}),(0,l.jsxs)(`label`,{children:[`Количество`,(0,l.jsx)(`input`,{"aria-label":`Количество товара ${n+1}`,type:`number`,min:`1`,step:`1`,value:Object.values(t.grant)[0]??1,onChange:t=>r({payments:{...e.payments,products:e.payments.products.map((e,r)=>r===n?{...e,grant:{[Object.keys(e.grant)[0]??`coins`]:Number(t.target.value)}}:e)}})})]}),(0,l.jsxs)(`label`,{className:`checkbox-options`,children:[(0,l.jsx)(`input`,{type:`checkbox`,checked:t.consumable,onChange:t=>r({payments:{...e.payments,products:e.payments.products.map((e,r)=>r===n?{...e,consumable:t.target.checked}:e)}})}),`Расходуемый`]}),(0,l.jsx)(i,{type:`button`,tone:`ghost`,"aria-label":`Удалить товар ${n+1}`,onClick:()=>r({payments:{...e.payments,products:e.payments.products.filter((e,t)=>t!==n)}}),children:`Удалить`})]},n)),(0,l.jsx)(i,{type:`button`,onClick:()=>r({payments:{...e.payments,products:[...e.payments.products,{id:``,consumable:!0,grant:{coins:1}}]}}),children:`Добавить товар`})]}),(0,l.jsxs)(`label`,{children:[`Таблицы лидеров`,(0,l.jsx)(`input`,{"aria-label":`Таблицы лидеров`,placeholder:`Например, bestScore`,value:e.leaderboards.join(`, `),onChange:e=>r({leaderboards:e.target.value.split(`,`).map(e=>e.trim())})}),(0,l.jsx)(`small`,{children:`Идентификаторы через запятую. Оставьте пустым, если рейтинги не нужны.`})]}),(0,l.jsx)(`small`,{children:`SDK, полноэкранный режим и жизненный цикл игры входят в интеграцию. Реклама и покупки включаются только по вашему выбору.`})]})}export{c as i,u as n,d as r,f as t};
|