@ytsaurus/ui 3.3.1 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/public/build/assets-manifest.json +34 -34
  2. package/dist/public/build/css/3132.43311d48.chunk.css +2 -0
  3. package/dist/public/build/css/3132.43311d48.chunk.css.map +1 -0
  4. package/dist/public/build/css/590.6f40b178.chunk.css +2 -0
  5. package/dist/public/build/css/590.6f40b178.chunk.css.map +1 -0
  6. package/dist/public/build/css/scheduling.8b8a192b.chunk.css +2 -0
  7. package/dist/public/build/css/scheduling.8b8a192b.chunk.css.map +1 -0
  8. package/dist/public/build/js/2563.bbb74274.chunk.js +2 -0
  9. package/dist/public/build/js/2563.bbb74274.chunk.js.map +1 -0
  10. package/dist/public/build/js/4237.57c56e6b.chunk.js +3 -0
  11. package/dist/public/build/js/4237.57c56e6b.chunk.js.map +1 -0
  12. package/dist/public/build/js/887.d8e107dc.chunk.js +2 -0
  13. package/dist/public/build/js/887.d8e107dc.chunk.js.map +1 -0
  14. package/dist/public/build/js/{app-navigation-page-layout.27364587.chunk.js → app-navigation-page-layout.afb1c1ba.chunk.js} +2 -2
  15. package/dist/public/build/js/app-navigation-page-layout.afb1c1ba.chunk.js.map +1 -0
  16. package/dist/public/build/js/{app-navigation.b86557c0.chunk.js → app-navigation.38835895.chunk.js} +2 -2
  17. package/dist/public/build/js/{app-navigation.b86557c0.chunk.js.map → app-navigation.38835895.chunk.js.map} +1 -1
  18. package/dist/public/build/js/{cluster-page-wrapper.98d8905c.chunk.js → cluster-page-wrapper.84f72ceb.chunk.js} +2 -2
  19. package/dist/public/build/js/{cluster-page-wrapper.98d8905c.chunk.js.map → cluster-page-wrapper.84f72ceb.chunk.js.map} +1 -1
  20. package/dist/public/build/js/{code-assistant-chat.4275144c.chunk.js → code-assistant-chat.a7927638.chunk.js} +2 -2
  21. package/dist/public/build/js/{code-assistant-chat.4275144c.chunk.js.map → code-assistant-chat.a7927638.chunk.js.map} +1 -1
  22. package/dist/public/build/js/main.d91d7090.js +3 -0
  23. package/dist/public/build/js/main.d91d7090.js.map +1 -0
  24. package/dist/public/build/js/{navigation.c35bb543.chunk.js → navigation.9b4e0429.chunk.js} +2 -2
  25. package/dist/public/build/js/navigation.9b4e0429.chunk.js.map +1 -0
  26. package/dist/public/build/js/{query-tracker.17cb6d4e.chunk.js → query-tracker.1b6d537a.chunk.js} +2 -2
  27. package/dist/public/build/js/{query-tracker.17cb6d4e.chunk.js.map → query-tracker.1b6d537a.chunk.js.map} +1 -1
  28. package/dist/public/build/js/{runtime.6000b37f.js → runtime.93a1fc00.js} +2 -2
  29. package/dist/public/build/js/{runtime.6000b37f.js.map → runtime.93a1fc00.js.map} +1 -1
  30. package/dist/public/build/js/scheduling.943b1602.chunk.js +2 -0
  31. package/dist/public/build/js/scheduling.943b1602.chunk.js.map +1 -0
  32. package/dist/public/build/manifest.json +30 -30
  33. package/dist/server/controllers/ai-chat.js +2 -1
  34. package/dist/server/types/ai-chat.d.ts +3 -0
  35. package/package.json +5 -5
  36. package/dist/public/build/css/3132.62cd9c06.chunk.css +0 -2
  37. package/dist/public/build/css/3132.62cd9c06.chunk.css.map +0 -1
  38. package/dist/public/build/css/590.1d7b27ca.chunk.css +0 -2
  39. package/dist/public/build/css/590.1d7b27ca.chunk.css.map +0 -1
  40. package/dist/public/build/css/scheduling.f5b832cf.chunk.css +0 -2
  41. package/dist/public/build/css/scheduling.f5b832cf.chunk.css.map +0 -1
  42. package/dist/public/build/js/3205.87c8575d.chunk.js +0 -2
  43. package/dist/public/build/js/3205.87c8575d.chunk.js.map +0 -1
  44. package/dist/public/build/js/4237.a6d263f6.chunk.js +0 -3
  45. package/dist/public/build/js/4237.a6d263f6.chunk.js.map +0 -1
  46. package/dist/public/build/js/887.7bbb21d6.chunk.js +0 -2
  47. package/dist/public/build/js/887.7bbb21d6.chunk.js.map +0 -1
  48. package/dist/public/build/js/app-navigation-page-layout.27364587.chunk.js.map +0 -1
  49. package/dist/public/build/js/main.39129d1a.js +0 -3
  50. package/dist/public/build/js/main.39129d1a.js.map +0 -1
  51. package/dist/public/build/js/navigation.c35bb543.chunk.js.map +0 -1
  52. package/dist/public/build/js/scheduling.3fff0b4f.chunk.js +0 -2
  53. package/dist/public/build/js/scheduling.3fff0b4f.chunk.js.map +0 -1
  54. /package/dist/public/build/js/{4237.a6d263f6.chunk.js.LICENSE.txt → 4237.57c56e6b.chunk.js.LICENSE.txt} +0 -0
  55. /package/dist/public/build/js/{main.39129d1a.js.LICENSE.txt → main.d91d7090.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[6748],{21346:(e,t,i)=>{i.r(t),i.d(t,{AppNavigationPageLayout:()=>f,default:()=>C});var n=i(40319),s=i(18801),o=i(77810),a=i(28477),r=i(63657),c=i(33882),h=i(14371),l=i(51404),d=i(64922),u=(0,c.A)(o.lazy((function(){return Promise.all([i.e(355),i.e(3536),i.e(2701),i.e(827),i.e(2763),i.e(908),i.e(3205),i.e(8398)]).then(i.bind(i,23132))}))),p=function(){var e=(0,h.d)(l.D4),t=(0,h.d)(l.ly),i=(0,r.p)("chat",{renderContent:function(){return(0,d.jsx)(u,{})}}),n=i.widgetContent,s=i.openWidget,a=i.closeWidget;return(0,o.useEffect)((function(){t&&(e?s:a)()}),[a,e,s,t]),t?n:null},m=["onChangeCompact","className","compact"],v=o.lazy((function(){return Promise.all([i.e(4724),i.e(3205),i.e(9999)]).then(i.bind(i,25773))}));function f(e){var t=e.onChangeCompact,i=e.className,r=e.compact,c=(0,s.A)(e,m);return(0,d.jsxs)(a.P,{compact:r,className:i,children:[(0,d.jsx)(o.Suspense,{fallback:(0,d.jsx)(a.e,{}),children:(0,d.jsx)(v,(0,n.A)((0,n.A)({},c),{},{onChangeCompact:t}))}),(0,d.jsx)(a.P.Content,{children:e.children}),(0,d.jsx)(p,{})]})}const C=o.memo(f)},37733:(e,t,i)=>{i.d(t,{c:()=>C});var n=i(64922),s=i(77810),o=i(85804),a=i(32),r=i(71044),c=i(47926),h=i(7424),l=i(83086);const d=(0,i(47999).om)("sheet");class u{x;y;timeStamp;constructor(e,t){this.x=e,this.y=t,this.timeStamp=Date.now()}}class p{pointsLen;points=[];constructor(e=5){this.pointsLen=e,this.clear()}clear(){this.points=new Array(this.pointsLen)}addMovement({x:e,y:t}){this.points.pop(),this.points.unshift(new u(e,t))}getYAcceleration(e=1){const t=this.points[0],i=this.points[e];return t&&i?(t.y-i.y)/Math.pow(t.timeStamp-i.timeStamp,2):0}}let m=[];class v extends s.Component{static defaultProps={id:"sheet",allowHideOnContentScroll:!0};veilRef=s.createRef();sheetRef=s.createRef();sheetTopRef=s.createRef();sheetMarginBoxRef=s.createRef();sheetScrollContainerRef=s.createRef();velocityTracker=new p;observer=null;resizeWindowTimer=null;state={startScrollTop:0,startY:0,deltaY:0,prevSheetHeight:0,swipeAreaTouched:!1,contentTouched:!1,veilTouched:!1,isAnimating:!1,inWindowResizeScope:!1,delayedResize:!1};componentDidMount(){this.addListeners(),this.show();const e=this.getAvailableContentHeight(this.sheetContentHeight);this.setInitialStyles(e),this.setState({prevSheetHeight:e})}componentDidUpdate(e){const{visible:t,location:i}=this.props;!e.visible&&t&&this.show(),(e.visible&&!t||this.shouldClose(e))&&this.hide(),e.location.pathname!==i.pathname&&(m=[])}componentWillUnmount(){this.removeListeners()}render(){const{content:e,contentClassName:t,swipeAreaClassName:i,hideTopBar:o,title:a}=this.props,{deltaY:r,swipeAreaTouched:c,contentTouched:h,veilTouched:l}=this.state,u={"with-transition":!r||l},p={"with-transition":u["with-transition"]},m={"without-scroll":r>0&&h||c},v={"always-full-height":this.props.alwaysFullHeight};return(0,n.jsxs)(s.Fragment,{children:[(0,n.jsx)("div",{ref:this.veilRef,className:d("veil",u),onClick:this.onVeilClick,onTransitionEnd:this.onVeilTransitionEnd,role:"presentation","data-qa":"sheet-veil"}),(0,n.jsxs)("div",{ref:this.sheetRef,className:d("sheet",p),role:"dialog","aria-modal":"true","aria-label":a,children:[!o&&(0,n.jsx)("div",{ref:this.sheetTopRef,className:d("sheet-top"),children:(0,n.jsx)("div",{className:d("sheet-top-resizer")})}),(0,n.jsx)("div",{className:d("sheet-swipe-area",i),onTouchStart:this.onSwipeAreaTouchStart,onTouchMove:this.onSwipeAriaTouchMove,onTouchEnd:this.onSwipeAriaTouchEnd}),(0,n.jsx)("div",{ref:this.sheetScrollContainerRef,className:d("sheet-scroll-container",m),onTouchStart:this.onContentTouchStart,onTouchMove:this.onContentTouchMove,onTouchEnd:this.onContentTouchEnd,onTransitionEnd:this.onContentTransitionEnd,children:(0,n.jsx)("div",{ref:this.sheetMarginBoxRef,className:d("sheet-margin-box",v),children:(0,n.jsx)("div",{className:d("sheet-margin-box-border-compensation"),children:(0,n.jsxs)("div",{className:d("sheet-content",t),children:[a&&(0,n.jsx)("div",{className:d("sheet-content-title"),children:a}),e]})})})})]})]})}get veilOpacity(){return this.veilRef.current?.style.opacity||0}get sheetTopHeight(){return this.sheetTopRef.current?.getBoundingClientRect().height||0}get sheetHeight(){return this.sheetRef.current?.getBoundingClientRect().height||0}get sheetScrollTop(){return this.sheetScrollContainerRef.current?.scrollTop||0}get sheetContentHeight(){return this.sheetMarginBoxRef.current?.getBoundingClientRect().height||0}setInitialStyles(e){this.sheetScrollContainerRef.current&&this.sheetMarginBoxRef.current&&(this.sheetScrollContainerRef.current.style.height=`${e}px`)}setStyles=({status:e,deltaHeight:t=0})=>{if(!this.sheetRef.current||!this.veilRef.current)return;const i=this.sheetHeight-t,n="showing"===e?`translate3d(0, -${i}px, 0)`:"translate3d(0, 0, 0)";let s=0;"showing"===e&&(s=0===t?1:i/this.sheetHeight),this.veilRef.current.style.opacity=String(s),this.sheetRef.current.style.transform=n,this.isPrefersReducedMotion&&(this.sheetRef.current.style.opacity=String(s),this.sheetRef.current.style.transform=`translate3d(0, -${i}px, 0)`)};getAvailableContentHeight=e=>{let t=.9;"number"==typeof this.props.maxContentHeightCoefficient&&this.props.maxContentHeightCoefficient>=0&&this.props.maxContentHeightCoefficient<=1?t=this.props.maxContentHeightCoefficient:"number"==typeof this.props.maxContentHeightCoefficient&&(0,l.m)('[Sheet] The value of the "maxContentHeightCoefficient" property must be between 0 and 1');const i=window.innerHeight*t-this.sheetTopHeight;return this.props.alwaysFullHeight||e>=i?i:e};show=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"showing"}),this.setHash()}))};hide=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"hiding"}),this.removeHash()}))};onSwipeAreaTouchStart=e=>{this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,swipeAreaTouched:!0})};onContentTouchStart=e=>{this.props.allowHideOnContentScroll&&!this.state.swipeAreaTouched&&(this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,startScrollTop:this.sheetScrollTop,contentTouched:!0}))};onSwipeAriaTouchMove=e=>{const t=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),this.setState({deltaY:t}),t<=0||this.setStyles({status:"showing",deltaHeight:t})};onContentTouchMove=e=>{if(!this.props.allowHideOnContentScroll)return;if(!this.state.startY)return void this.onContentTouchStart(e);const{startScrollTop:t,swipeAreaTouched:i}=this.state;if(i||this.sheetScrollTop>0||t>0&&t!==this.sheetScrollTop)return;const n=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),n<=0?this.setState({deltaY:0}):(this.setState({deltaY:n}),this.setStyles({status:"showing",deltaHeight:n}))};onTouchEndAction=e=>{const t=this.velocityTracker.getYAcceleration();this.sheetHeight<=e?this.props.hideSheet():e>50&&t<=.08&&t>=-.02||t>.08?this.hide():0!==e&&this.show()};onSwipeAriaTouchEnd=()=>{const{deltaY:e}=this.state;this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,swipeAreaTouched:!1})};onContentTouchEnd=()=>{const{deltaY:e,swipeAreaTouched:t}=this.state;this.props.allowHideOnContentScroll&&!t&&(this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,contentTouched:!1}))};onVeilClick=()=>{this.state.isAnimating||(this.setState({veilTouched:!0}),this.hide())};onVeilTransitionEnd=()=>{this.setState({isAnimating:!1}),"0"!==this.veilOpacity?this.state.delayedResize&&(this.onResizeWindow(),this.setState({delayedResize:!1})):this.props.hideSheet()};onContentTransitionEnd=e=>{"height"===e.propertyName&&this.sheetScrollContainerRef.current&&(this.sheetScrollContainerRef.current.style.transition="none")};onResizeWindow=()=>{this.state.isAnimating?this.setState({delayedResize:!0}):(this.setState({inWindowResizeScope:!0}),this.resizeWindowTimer&&window.clearTimeout(this.resizeWindowTimer),this.resizeWindowTimer=window.setTimeout((()=>{this.onResize()}),50))};onResize=()=>{if(!this.sheetRef.current||!this.sheetScrollContainerRef.current)return;const e=this.sheetContentHeight;if(e===this.state.prevSheetHeight&&!this.state.inWindowResizeScope)return;const t=this.getAvailableContentHeight(e);this.sheetScrollContainerRef.current.style.transition=this.state.prevSheetHeight>e?"height 0s ease 0.3s":"none",this.sheetScrollContainerRef.current.style.height=`${t}px`,this.sheetRef.current.style.transform=`translate3d(0, -${t+this.sheetTopHeight}px, 0)`,this.setState({prevSheetHeight:e,inWindowResizeScope:!1})};addListeners(){window.addEventListener("resize",this.onResizeWindow),this.sheetMarginBoxRef.current&&(this.observer=new ResizeObserver((()=>{this.state.inWindowResizeScope||this.onResize()})),this.observer.observe(this.sheetMarginBoxRef.current))}removeListeners(){window.removeEventListener("resize",this.onResizeWindow),this.observer&&this.observer.disconnect()}setHash(){const{id:e,platform:t,location:i,history:n}=this.props;if(t===r.O.BROWSER)return;const s={...i,hash:e};switch(t){case r.O.IOS:i.hash&&m.push(i.hash),n.replace(s);break;case r.O.ANDROID:n.push(s)}}removeHash(){const{id:e,platform:t,location:i,history:n}=this.props;if(t!==r.O.BROWSER&&i.hash===`#${e}`)switch(t){case r.O.IOS:n.replace({...i,hash:m.pop()??""});break;case r.O.ANDROID:n.goBack()}}shouldClose(e){const{id:t,platform:i,location:n,history:s}=this.props;return i!==r.O.BROWSER&&"POP"===s.action&&e.location.hash!==n.hash&&n.hash!==`#${t}`}get isPrefersReducedMotion(){return Boolean(window?.matchMedia("(prefers-reduced-motion: reduce)").matches)}}const f=function(e){const t=(0,c.x)(e);return class extends s.Component{static displayName=`withMobile(${t})`;static contextType=h.G;render(){return(0,n.jsx)(e,{...this.props,mobile:this.context.mobile,platform:this.context.platform,useHistory:this.context.useHistory,useLocation:this.context.useLocation})}}}(function(e){const t=t=>{const{useHistory:i,useLocation:s,...o}=t;return(0,n.jsx)(e,{...o,history:i(),location:s()})};return t.displayName=`withRouterWrapper(${e.displayName||e.name||"Component"})`,t}(v)),C=({children:e,onClose:t,visible:i,id:r,title:c,className:h,contentClassName:l,swipeAreaClassName:u,allowHideOnContentScroll:p,hideTopBar:m,maxContentHeightCoefficient:v,alwaysFullHeight:C,container:g,disablePortal:y,qa:x})=>{const[w,S]=s.useState(i),[b,T]=s.useState(i);return!b&&i&&S(!0),i!==b&&T(i),w?(0,n.jsx)(a.Z,{container:g,disablePortal:y,children:(0,n.jsx)(o.zR,{"data-qa":x,className:d(null,h),lockScroll:w,style:{overflow:void 0},children:(0,n.jsx)(f,{id:r,content:e,contentClassName:l,swipeAreaClassName:u,title:c,visible:i,allowHideOnContentScroll:p,hideTopBar:m,hideSheet:()=>{t&&t(),S(!1)},maxContentHeightCoefficient:v,alwaysFullHeight:C})})}):null}},47926:(e,t,i)=>{function n(e){return e.displayName||e.name||"Component"}i.d(t,{x:()=>n})},51404:(e,t,i)=>{i.d(t,{BF:()=>C,D4:()=>v,G_:()=>l,RP:()=>b,V3:()=>f,X3:()=>T,Ye:()=>h,_o:()=>x,a$:()=>R,bG:()=>m,eA:()=>S,f:()=>d,gj:()=>u,id:()=>g,lb:()=>y,ly:()=>c,nv:()=>w,xS:()=>p});var n=i(9736),s=i(41655),o=i.n(s),a=i(18472),r=i(31229),c=function(){return Boolean(r.mH.aiChatConfig)},h=function(){var e;return(null===(e=r.mH.aiChatConfig)||void 0===e?void 0:e.model)||""},l=function(e){return e.aiChat.mode},d=function(e){return e.aiChat.currentQuestion},u=function(e){return e.aiChat.currentAnswer},p=function(e){return e.aiChat.loading},m=function(e){return e.aiChat.sending},v=function(e){return e.aiChat.isOpen},f=function(e){return e.aiChat.conversationId},C=function(e){return e.aiChat.conversations},g=function(e){return e.aiChat.conversation},y=function(e){return e.aiChat.error},x=function(e){return e.aiChat.attachedFiles},w=function(e){return e.aiChat.conversations.loading},S=function(e){return e.aiChat.conversations.hasMore},b=(0,a.Mz)([l,g,u],(function(e,t,i){var n=t.items;return"chat"===e&&(n.length>0||Boolean(i))})),T=(0,a.Mz)([l],(function(e){return"history"===e})),R=(0,a.Mz)([function(e){return e.aiChat.conversations.items}],(function(e){var t=new Map;return e.forEach((function(e){var i=o()(1e3*e.created_at).startOf("day").format("YYYY-MM-DD");t.has(i)||t.set(i,[]),t.get(i).push(e)})),Array.from(t.entries()).map((function(e){var t=(0,n.A)(e,2);return{date:t[0],items:t[1]}}))}))},53364:(e,t,i)=>{i.d(t,{A:()=>p});var n=i(40319),s=i(29121),o=i(12937),a=i(66134),r=i(10785),c=i(77810),h=i(22483),l=i(53332),d=i(26264),u=i(64922);function p(e){var t;return t=function(t){function i(){return(0,s.A)(this,i),(0,a.A)(this,i,arguments)}return(0,r.A)(i,t),(0,o.A)(i,[{key:"render",value:function(){return h.createPortal((0,u.jsx)(e,(0,n.A)({},this.props)),document.getElementById(d.g))}}])}(c.Component),t.displayName="WithSplit(".concat((0,l.Mn)(e),")"),t}},60723:(e,t,i)=>{i.d(t,{J:()=>p});var n=i(64922),s=i(77810),o=i(12663),a=i(72890),r=i(3179),c=i(34564),h=i(45760),l=i(47999);const d=(0,l.om)("label"),u={xs:12,s:14,m:16},p=s.forwardRef((function(e,t){const{type:i="default",theme:l="normal",size:p="xs",width:m,title:v,icon:f,children:C,onCloseClick:g,className:y,disabled:x,copyText:w,closeButtonLabel:S,copyButtonLabel:b,interactive:T=!1,value:R,onCopy:N,onClick:j,qa:A,loading:H=!1}=e,z=Boolean(""!==C&&s.Children.count(C)>0),k="close"===i&&z,M="copy"===i&&z,E="info"===i,Y="function"==typeof j,O=Boolean(M&&w),B=(Y||O||E||T)&&!x,W=u[p],P=f&&(0,n.jsx)("div",{className:d("addon",{side:z?"start":void 0,type:"icon"}),children:f}),I=z&&(0,n.jsxs)("div",{className:d("text"),children:[(0,n.jsx)("div",{className:d("content"),children:C}),Boolean(R)&&(0,n.jsxs)("div",{className:d("value"),children:[(0,n.jsx)("div",{className:d("separator"),children:":"}),(0,n.jsx)("div",{className:d("key"),children:R})]})]}),L=e=>{let i;return M?i=(0,n.jsx)("button",{type:"button","aria-label":b||void 0,onClick:Y?j:void 0,disabled:x,className:d("addon",{side:"end",type:"button",action:Y?"click":"copy"}),"data-qa":"copy-button",children:(0,n.jsx)(r.u,{status:e||"pending",size:W})}):E?i=(0,n.jsx)("div",{className:d("addon",{side:"end",type:"icon"}),children:(0,n.jsx)(h.I,{size:W,data:o.A})}):k&&(i=(0,n.jsx)("button",{type:"button",onClick:g,"aria-label":S||void 0,disabled:x,className:d("addon",{side:"end",type:"button",action:"close"}),"data-qa":"close-button",children:(0,n.jsx)(h.I,{size:W,data:a.A})})),(0,n.jsxs)("div",{ref:t,className:d({theme:l,size:p,width:m,interactive:B,disabled:x},y),title:v,"data-qa":A,children:[!x&&H&&(0,n.jsx)("div",{className:d("animation-container")}),P,Y?(0,n.jsx)("button",{disabled:x,type:"button",onClick:j,className:d("main-button"),"data-qa":"main-button",children:I}):I,i]})};return O&&w&&!Y?(0,n.jsx)(c.$,{text:w,onCopy:N,timeout:1e3,children:e=>L(e)}):L()}))},63657:(e,t,i)=>{i.d(t,{p:()=>l});var n=i(9736),s=i(77810),o=i(14371),a=i(53364),r=i(53246),c=i(64922),h=(0,a.A)((function(e){return e.children}));function l(e,t){var i=t.renderContent,a=s.useState(!1),l=(0,n.A)(a,2),d=l[0],u=l[1],p=(0,o.w)(),m=s.useCallback((function(){p((0,r.Po)(e)),u(!0)}),[u,p,e]),v=s.useCallback((function(){u(!1),p((0,r.Dw)())}),[u,p]);return{closeWidget:v,openWidget:m,widgetOpened:d,widgetContent:d?(0,c.jsx)(h,{children:i({onClose:v,visible:d})}):null}}},81178:(e,t,i)=>{i.d(t,{t:()=>v});var n=i(64922),s=i(77810),o=i(47999),a=i(56854);const r=s.createContext({activeTabId:void 0});r.displayName="TabsContext";var c=i(60723);const h=(0,o.om)("tabs-legacy");function l({id:e,className:t,title:i,meta:o,hint:a,icon:l,counter:d,label:u,active:p,disabled:m,hasOverflow:v,extraProps:f,onClick:C,qa:g}){const{activeTabId:y}=s.useContext(r),x="boolean"==typeof p?p:y===e,w=s.useMemo((()=>void 0!==a?a:"string"==typeof i?i:void 0),[a,i]);return(0,n.jsxs)("div",{...f,role:"tab","aria-selected":x,"aria-disabled":!0===m,tabIndex:m?-1:0,className:h("item",{active:x,disabled:m,overflow:Boolean(v)},t),title:w,onClick:()=>{C(e)},onKeyDown:t=>{" "===t.key&&C(e)},"data-qa":g,children:[(0,n.jsxs)("div",{className:h("item-content"),children:[l&&(0,n.jsx)("div",{className:h("item-icon"),children:l}),(0,n.jsx)("div",{className:h("item-title"),children:i||e}),void 0!==d&&(0,n.jsx)("div",{className:h("item-counter"),children:d}),u&&(0,n.jsx)(c.J,{className:h("item-label"),theme:u.theme,children:u.content})]}),o&&(0,n.jsx)("div",{className:h("item-meta"),children:o})]})}l.displayName="Tabs.Item";const d=(0,o.om)("tabs-legacy");var u;!function(e){e.Horizontal="horizontal",e.Vertical="vertical"}(u||(u={}));const p=[],m=s.forwardRef((({direction:e=u.Horizontal,size:t="m",activeTab:i,allowNotSelected:o=!1,items:c=p,children:h,className:m,onSelectTab:v,wrapTo:f,qa:C,...g},y)=>{const x=((e,t,i)=>e||(t||0===i?.length?void 0:i?.[0]?.id))(i,o,c),w=s.useMemo((()=>({activeTabId:x})),[x]),S=s.useMemo((()=>{const e=e=>{v&&v(e)};return c.map(((t,i)=>{const s=(0,n.jsx)(l,{...t,onClick:e},t.id);return f?f(t,s,i):s}))}),[c,v,f]);return(0,n.jsx)("div",{...(0,a.$)(g,{labelable:!0}),role:"tablist",className:d({direction:e,size:t},m),"data-qa":C,ref:y,children:(0,n.jsx)(r.Provider,{value:w,children:h||S})})}));m.displayName="Tabs";const v=Object.assign(m,{Item:l})}}]);
2
- //# sourceMappingURL=app-navigation-page-layout.27364587.chunk.js.map
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[6748],{21346:(e,t,i)=>{i.r(t),i.d(t,{AppNavigationPageLayout:()=>f,default:()=>C});var n=i(40319),s=i(18801),o=i(77810),a=i(28477),r=i(63657),c=i(33882),h=i(14371),l=i(51404),d=i(64922),u=(0,c.A)(o.lazy((function(){return Promise.all([i.e(355),i.e(3536),i.e(2701),i.e(827),i.e(2763),i.e(908),i.e(2563),i.e(8398)]).then(i.bind(i,23132))}))),p=function(){var e=(0,h.d)(l.D4),t=(0,h.d)(l.ly),i=(0,r.p)("chat",{renderContent:function(){return(0,d.jsx)(u,{})}}),n=i.widgetContent,s=i.openWidget,a=i.closeWidget;return(0,o.useEffect)((function(){t&&(e?s:a)()}),[a,e,s,t]),t?n:null},m=["onChangeCompact","className","compact"],v=o.lazy((function(){return Promise.all([i.e(4724),i.e(2563),i.e(9999)]).then(i.bind(i,25773))}));function f(e){var t=e.onChangeCompact,i=e.className,r=e.compact,c=(0,s.A)(e,m);return(0,d.jsxs)(a.P,{compact:r,className:i,children:[(0,d.jsx)(o.Suspense,{fallback:(0,d.jsx)(a.e,{}),children:(0,d.jsx)(v,(0,n.A)((0,n.A)({},c),{},{onChangeCompact:t}))}),(0,d.jsx)(a.P.Content,{children:e.children}),(0,d.jsx)(p,{})]})}const C=o.memo(f)},37733:(e,t,i)=>{i.d(t,{c:()=>C});var n=i(64922),s=i(77810),o=i(85804),a=i(32),r=i(71044),c=i(47926),h=i(7424),l=i(83086);const d=(0,i(47999).om)("sheet");class u{x;y;timeStamp;constructor(e,t){this.x=e,this.y=t,this.timeStamp=Date.now()}}class p{pointsLen;points=[];constructor(e=5){this.pointsLen=e,this.clear()}clear(){this.points=new Array(this.pointsLen)}addMovement({x:e,y:t}){this.points.pop(),this.points.unshift(new u(e,t))}getYAcceleration(e=1){const t=this.points[0],i=this.points[e];return t&&i?(t.y-i.y)/Math.pow(t.timeStamp-i.timeStamp,2):0}}let m=[];class v extends s.Component{static defaultProps={id:"sheet",allowHideOnContentScroll:!0};veilRef=s.createRef();sheetRef=s.createRef();sheetTopRef=s.createRef();sheetMarginBoxRef=s.createRef();sheetScrollContainerRef=s.createRef();velocityTracker=new p;observer=null;resizeWindowTimer=null;state={startScrollTop:0,startY:0,deltaY:0,prevSheetHeight:0,swipeAreaTouched:!1,contentTouched:!1,veilTouched:!1,isAnimating:!1,inWindowResizeScope:!1,delayedResize:!1};componentDidMount(){this.addListeners(),this.show();const e=this.getAvailableContentHeight(this.sheetContentHeight);this.setInitialStyles(e),this.setState({prevSheetHeight:e})}componentDidUpdate(e){const{visible:t,location:i}=this.props;!e.visible&&t&&this.show(),(e.visible&&!t||this.shouldClose(e))&&this.hide(),e.location.pathname!==i.pathname&&(m=[])}componentWillUnmount(){this.removeListeners()}render(){const{content:e,contentClassName:t,swipeAreaClassName:i,hideTopBar:o,title:a}=this.props,{deltaY:r,swipeAreaTouched:c,contentTouched:h,veilTouched:l}=this.state,u={"with-transition":!r||l},p={"with-transition":u["with-transition"]},m={"without-scroll":r>0&&h||c},v={"always-full-height":this.props.alwaysFullHeight};return(0,n.jsxs)(s.Fragment,{children:[(0,n.jsx)("div",{ref:this.veilRef,className:d("veil",u),onClick:this.onVeilClick,onTransitionEnd:this.onVeilTransitionEnd,role:"presentation","data-qa":"sheet-veil"}),(0,n.jsxs)("div",{ref:this.sheetRef,className:d("sheet",p),role:"dialog","aria-modal":"true","aria-label":a,children:[!o&&(0,n.jsx)("div",{ref:this.sheetTopRef,className:d("sheet-top"),children:(0,n.jsx)("div",{className:d("sheet-top-resizer")})}),(0,n.jsx)("div",{className:d("sheet-swipe-area",i),onTouchStart:this.onSwipeAreaTouchStart,onTouchMove:this.onSwipeAriaTouchMove,onTouchEnd:this.onSwipeAriaTouchEnd}),(0,n.jsx)("div",{ref:this.sheetScrollContainerRef,className:d("sheet-scroll-container",m),onTouchStart:this.onContentTouchStart,onTouchMove:this.onContentTouchMove,onTouchEnd:this.onContentTouchEnd,onTransitionEnd:this.onContentTransitionEnd,children:(0,n.jsx)("div",{ref:this.sheetMarginBoxRef,className:d("sheet-margin-box",v),children:(0,n.jsx)("div",{className:d("sheet-margin-box-border-compensation"),children:(0,n.jsxs)("div",{className:d("sheet-content",t),children:[a&&(0,n.jsx)("div",{className:d("sheet-content-title"),children:a}),e]})})})})]})]})}get veilOpacity(){return this.veilRef.current?.style.opacity||0}get sheetTopHeight(){return this.sheetTopRef.current?.getBoundingClientRect().height||0}get sheetHeight(){return this.sheetRef.current?.getBoundingClientRect().height||0}get sheetScrollTop(){return this.sheetScrollContainerRef.current?.scrollTop||0}get sheetContentHeight(){return this.sheetMarginBoxRef.current?.getBoundingClientRect().height||0}setInitialStyles(e){this.sheetScrollContainerRef.current&&this.sheetMarginBoxRef.current&&(this.sheetScrollContainerRef.current.style.height=`${e}px`)}setStyles=({status:e,deltaHeight:t=0})=>{if(!this.sheetRef.current||!this.veilRef.current)return;const i=this.sheetHeight-t,n="showing"===e?`translate3d(0, -${i}px, 0)`:"translate3d(0, 0, 0)";let s=0;"showing"===e&&(s=0===t?1:i/this.sheetHeight),this.veilRef.current.style.opacity=String(s),this.sheetRef.current.style.transform=n,this.isPrefersReducedMotion&&(this.sheetRef.current.style.opacity=String(s),this.sheetRef.current.style.transform=`translate3d(0, -${i}px, 0)`)};getAvailableContentHeight=e=>{let t=.9;"number"==typeof this.props.maxContentHeightCoefficient&&this.props.maxContentHeightCoefficient>=0&&this.props.maxContentHeightCoefficient<=1?t=this.props.maxContentHeightCoefficient:"number"==typeof this.props.maxContentHeightCoefficient&&(0,l.m)('[Sheet] The value of the "maxContentHeightCoefficient" property must be between 0 and 1');const i=window.innerHeight*t-this.sheetTopHeight;return this.props.alwaysFullHeight||e>=i?i:e};show=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"showing"}),this.setHash()}))};hide=()=>{this.setState({isAnimating:!0},(()=>{this.setStyles({status:"hiding"}),this.removeHash()}))};onSwipeAreaTouchStart=e=>{this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,swipeAreaTouched:!0})};onContentTouchStart=e=>{this.props.allowHideOnContentScroll&&!this.state.swipeAreaTouched&&(this.velocityTracker.clear(),this.setState({startY:e.nativeEvent.touches[0].clientY,startScrollTop:this.sheetScrollTop,contentTouched:!0}))};onSwipeAriaTouchMove=e=>{const t=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),this.setState({deltaY:t}),t<=0||this.setStyles({status:"showing",deltaHeight:t})};onContentTouchMove=e=>{if(!this.props.allowHideOnContentScroll)return;if(!this.state.startY)return void this.onContentTouchStart(e);const{startScrollTop:t,swipeAreaTouched:i}=this.state;if(i||this.sheetScrollTop>0||t>0&&t!==this.sheetScrollTop)return;const n=e.nativeEvent.touches[0].clientY-this.state.startY;this.velocityTracker.addMovement({x:e.nativeEvent.touches[0].clientX,y:e.nativeEvent.touches[0].clientY}),n<=0?this.setState({deltaY:0}):(this.setState({deltaY:n}),this.setStyles({status:"showing",deltaHeight:n}))};onTouchEndAction=e=>{const t=this.velocityTracker.getYAcceleration();this.sheetHeight<=e?this.props.hideSheet():e>50&&t<=.08&&t>=-.02||t>.08?this.hide():0!==e&&this.show()};onSwipeAriaTouchEnd=()=>{const{deltaY:e}=this.state;this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,swipeAreaTouched:!1})};onContentTouchEnd=()=>{const{deltaY:e,swipeAreaTouched:t}=this.state;this.props.allowHideOnContentScroll&&!t&&(this.onTouchEndAction(e),this.setState({startY:0,deltaY:0,contentTouched:!1}))};onVeilClick=()=>{this.state.isAnimating||(this.setState({veilTouched:!0}),this.hide())};onVeilTransitionEnd=()=>{this.setState({isAnimating:!1}),"0"!==this.veilOpacity?this.state.delayedResize&&(this.onResizeWindow(),this.setState({delayedResize:!1})):this.props.hideSheet()};onContentTransitionEnd=e=>{"height"===e.propertyName&&this.sheetScrollContainerRef.current&&(this.sheetScrollContainerRef.current.style.transition="none")};onResizeWindow=()=>{this.state.isAnimating?this.setState({delayedResize:!0}):(this.setState({inWindowResizeScope:!0}),this.resizeWindowTimer&&window.clearTimeout(this.resizeWindowTimer),this.resizeWindowTimer=window.setTimeout((()=>{this.onResize()}),50))};onResize=()=>{if(!this.sheetRef.current||!this.sheetScrollContainerRef.current)return;const e=this.sheetContentHeight;if(e===this.state.prevSheetHeight&&!this.state.inWindowResizeScope)return;const t=this.getAvailableContentHeight(e);this.sheetScrollContainerRef.current.style.transition=this.state.prevSheetHeight>e?"height 0s ease 0.3s":"none",this.sheetScrollContainerRef.current.style.height=`${t}px`,this.sheetRef.current.style.transform=`translate3d(0, -${t+this.sheetTopHeight}px, 0)`,this.setState({prevSheetHeight:e,inWindowResizeScope:!1})};addListeners(){window.addEventListener("resize",this.onResizeWindow),this.sheetMarginBoxRef.current&&(this.observer=new ResizeObserver((()=>{this.state.inWindowResizeScope||this.onResize()})),this.observer.observe(this.sheetMarginBoxRef.current))}removeListeners(){window.removeEventListener("resize",this.onResizeWindow),this.observer&&this.observer.disconnect()}setHash(){const{id:e,platform:t,location:i,history:n}=this.props;if(t===r.O.BROWSER)return;const s={...i,hash:e};switch(t){case r.O.IOS:i.hash&&m.push(i.hash),n.replace(s);break;case r.O.ANDROID:n.push(s)}}removeHash(){const{id:e,platform:t,location:i,history:n}=this.props;if(t!==r.O.BROWSER&&i.hash===`#${e}`)switch(t){case r.O.IOS:n.replace({...i,hash:m.pop()??""});break;case r.O.ANDROID:n.goBack()}}shouldClose(e){const{id:t,platform:i,location:n,history:s}=this.props;return i!==r.O.BROWSER&&"POP"===s.action&&e.location.hash!==n.hash&&n.hash!==`#${t}`}get isPrefersReducedMotion(){return Boolean(window?.matchMedia("(prefers-reduced-motion: reduce)").matches)}}const f=function(e){const t=(0,c.x)(e);return class extends s.Component{static displayName=`withMobile(${t})`;static contextType=h.G;render(){return(0,n.jsx)(e,{...this.props,mobile:this.context.mobile,platform:this.context.platform,useHistory:this.context.useHistory,useLocation:this.context.useLocation})}}}(function(e){const t=t=>{const{useHistory:i,useLocation:s,...o}=t;return(0,n.jsx)(e,{...o,history:i(),location:s()})};return t.displayName=`withRouterWrapper(${e.displayName||e.name||"Component"})`,t}(v)),C=({children:e,onClose:t,visible:i,id:r,title:c,className:h,contentClassName:l,swipeAreaClassName:u,allowHideOnContentScroll:p,hideTopBar:m,maxContentHeightCoefficient:v,alwaysFullHeight:C,container:g,disablePortal:y,qa:x})=>{const[w,S]=s.useState(i),[b,T]=s.useState(i);return!b&&i&&S(!0),i!==b&&T(i),w?(0,n.jsx)(a.Z,{container:g,disablePortal:y,children:(0,n.jsx)(o.zR,{"data-qa":x,className:d(null,h),lockScroll:w,style:{overflow:void 0},children:(0,n.jsx)(f,{id:r,content:e,contentClassName:l,swipeAreaClassName:u,title:c,visible:i,allowHideOnContentScroll:p,hideTopBar:m,hideSheet:()=>{t&&t(),S(!1)},maxContentHeightCoefficient:v,alwaysFullHeight:C})})}):null}},47926:(e,t,i)=>{function n(e){return e.displayName||e.name||"Component"}i.d(t,{x:()=>n})},51404:(e,t,i)=>{i.d(t,{BF:()=>C,D4:()=>v,G_:()=>l,RP:()=>b,V3:()=>f,X3:()=>T,Ye:()=>h,_o:()=>x,a$:()=>R,bG:()=>m,eA:()=>S,f:()=>d,gj:()=>u,id:()=>g,lb:()=>y,ly:()=>c,nv:()=>w,xS:()=>p});var n=i(9736),s=i(41655),o=i.n(s),a=i(18472),r=i(31229),c=function(){return Boolean(r.mH.aiChatConfig)},h=function(){var e;return(null===(e=r.mH.aiChatConfig)||void 0===e?void 0:e.model)||""},l=function(e){return e.aiChat.mode},d=function(e){return e.aiChat.currentQuestion},u=function(e){return e.aiChat.currentAnswer},p=function(e){return e.aiChat.loading},m=function(e){return e.aiChat.sending},v=function(e){return e.aiChat.isOpen},f=function(e){return e.aiChat.conversationId},C=function(e){return e.aiChat.conversations},g=function(e){return e.aiChat.conversation},y=function(e){return e.aiChat.error},x=function(e){return e.aiChat.attachedFiles},w=function(e){return e.aiChat.conversations.loading},S=function(e){return e.aiChat.conversations.hasMore},b=(0,a.Mz)([l,g,u,m],(function(e,t,i,n){var s=t.items;return"chat"===e&&(s.length>0||Boolean(i)||n)})),T=(0,a.Mz)([l],(function(e){return"history"===e})),R=(0,a.Mz)([function(e){return e.aiChat.conversations.items}],(function(e){var t=new Map;return e.forEach((function(e){var i=o()(1e3*e.created_at).startOf("day").format("YYYY-MM-DD");t.has(i)||t.set(i,[]),t.get(i).push(e)})),Array.from(t.entries()).map((function(e){var t=(0,n.A)(e,2);return{date:t[0],items:t[1]}}))}))},53364:(e,t,i)=>{i.d(t,{A:()=>p});var n=i(40319),s=i(29121),o=i(12937),a=i(66134),r=i(10785),c=i(77810),h=i(22483),l=i(53332),d=i(26264),u=i(64922);function p(e){var t;return t=function(t){function i(){return(0,s.A)(this,i),(0,a.A)(this,i,arguments)}return(0,r.A)(i,t),(0,o.A)(i,[{key:"render",value:function(){return h.createPortal((0,u.jsx)(e,(0,n.A)({},this.props)),document.getElementById(d.g))}}])}(c.Component),t.displayName="WithSplit(".concat((0,l.Mn)(e),")"),t}},60723:(e,t,i)=>{i.d(t,{J:()=>p});var n=i(64922),s=i(77810),o=i(12663),a=i(72890),r=i(3179),c=i(34564),h=i(45760),l=i(47999);const d=(0,l.om)("label"),u={xs:12,s:14,m:16},p=s.forwardRef((function(e,t){const{type:i="default",theme:l="normal",size:p="xs",width:m,title:v,icon:f,children:C,onCloseClick:g,className:y,disabled:x,copyText:w,closeButtonLabel:S,copyButtonLabel:b,interactive:T=!1,value:R,onCopy:N,onClick:j,qa:A,loading:H=!1}=e,z=Boolean(""!==C&&s.Children.count(C)>0),k="close"===i&&z,M="copy"===i&&z,E="info"===i,Y="function"==typeof j,O=Boolean(M&&w),B=(Y||O||E||T)&&!x,W=u[p],P=f&&(0,n.jsx)("div",{className:d("addon",{side:z?"start":void 0,type:"icon"}),children:f}),I=z&&(0,n.jsxs)("div",{className:d("text"),children:[(0,n.jsx)("div",{className:d("content"),children:C}),Boolean(R)&&(0,n.jsxs)("div",{className:d("value"),children:[(0,n.jsx)("div",{className:d("separator"),children:":"}),(0,n.jsx)("div",{className:d("key"),children:R})]})]}),L=e=>{let i;return M?i=(0,n.jsx)("button",{type:"button","aria-label":b||void 0,onClick:Y?j:void 0,disabled:x,className:d("addon",{side:"end",type:"button",action:Y?"click":"copy"}),"data-qa":"copy-button",children:(0,n.jsx)(r.u,{status:e||"pending",size:W})}):E?i=(0,n.jsx)("div",{className:d("addon",{side:"end",type:"icon"}),children:(0,n.jsx)(h.I,{size:W,data:o.A})}):k&&(i=(0,n.jsx)("button",{type:"button",onClick:g,"aria-label":S||void 0,disabled:x,className:d("addon",{side:"end",type:"button",action:"close"}),"data-qa":"close-button",children:(0,n.jsx)(h.I,{size:W,data:a.A})})),(0,n.jsxs)("div",{ref:t,className:d({theme:l,size:p,width:m,interactive:B,disabled:x},y),title:v,"data-qa":A,children:[!x&&H&&(0,n.jsx)("div",{className:d("animation-container")}),P,Y?(0,n.jsx)("button",{disabled:x,type:"button",onClick:j,className:d("main-button"),"data-qa":"main-button",children:I}):I,i]})};return O&&w&&!Y?(0,n.jsx)(c.$,{text:w,onCopy:N,timeout:1e3,children:e=>L(e)}):L()}))},63657:(e,t,i)=>{i.d(t,{p:()=>l});var n=i(9736),s=i(77810),o=i(14371),a=i(53364),r=i(53246),c=i(64922),h=(0,a.A)((function(e){return e.children}));function l(e,t){var i=t.renderContent,a=s.useState(!1),l=(0,n.A)(a,2),d=l[0],u=l[1],p=(0,o.w)(),m=s.useCallback((function(){p((0,r.Po)(e)),u(!0)}),[u,p,e]),v=s.useCallback((function(){u(!1),p((0,r.Dw)())}),[u,p]);return{closeWidget:v,openWidget:m,widgetOpened:d,widgetContent:d?(0,c.jsx)(h,{children:i({onClose:v,visible:d})}):null}}},81178:(e,t,i)=>{i.d(t,{t:()=>v});var n=i(64922),s=i(77810),o=i(47999),a=i(56854);const r=s.createContext({activeTabId:void 0});r.displayName="TabsContext";var c=i(60723);const h=(0,o.om)("tabs-legacy");function l({id:e,className:t,title:i,meta:o,hint:a,icon:l,counter:d,label:u,active:p,disabled:m,hasOverflow:v,extraProps:f,onClick:C,qa:g}){const{activeTabId:y}=s.useContext(r),x="boolean"==typeof p?p:y===e,w=s.useMemo((()=>void 0!==a?a:"string"==typeof i?i:void 0),[a,i]);return(0,n.jsxs)("div",{...f,role:"tab","aria-selected":x,"aria-disabled":!0===m,tabIndex:m?-1:0,className:h("item",{active:x,disabled:m,overflow:Boolean(v)},t),title:w,onClick:()=>{C(e)},onKeyDown:t=>{" "===t.key&&C(e)},"data-qa":g,children:[(0,n.jsxs)("div",{className:h("item-content"),children:[l&&(0,n.jsx)("div",{className:h("item-icon"),children:l}),(0,n.jsx)("div",{className:h("item-title"),children:i||e}),void 0!==d&&(0,n.jsx)("div",{className:h("item-counter"),children:d}),u&&(0,n.jsx)(c.J,{className:h("item-label"),theme:u.theme,children:u.content})]}),o&&(0,n.jsx)("div",{className:h("item-meta"),children:o})]})}l.displayName="Tabs.Item";const d=(0,o.om)("tabs-legacy");var u;!function(e){e.Horizontal="horizontal",e.Vertical="vertical"}(u||(u={}));const p=[],m=s.forwardRef((({direction:e=u.Horizontal,size:t="m",activeTab:i,allowNotSelected:o=!1,items:c=p,children:h,className:m,onSelectTab:v,wrapTo:f,qa:C,...g},y)=>{const x=((e,t,i)=>e||(t||0===i?.length?void 0:i?.[0]?.id))(i,o,c),w=s.useMemo((()=>({activeTabId:x})),[x]),S=s.useMemo((()=>{const e=e=>{v&&v(e)};return c.map(((t,i)=>{const s=(0,n.jsx)(l,{...t,onClick:e},t.id);return f?f(t,s,i):s}))}),[c,v,f]);return(0,n.jsx)("div",{...(0,a.$)(g,{labelable:!0}),role:"tablist",className:d({direction:e,size:t},m),"data-qa":C,ref:y,children:(0,n.jsx)(r.Provider,{value:w,children:h||S})})}));m.displayName="Tabs";const v=Object.assign(m,{Item:l})}}]);
2
+ //# sourceMappingURL=app-navigation-page-layout.afb1c1ba.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/app-navigation-page-layout.afb1c1ba.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatSidePanel.tsx","webpack://@ytsaurus/ui/./src/ui/containers/AppNavigation/AppNavigationPageLayout.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Sheet/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Sheet/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Sheet/SheetContent.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/mobile/withMobile.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Sheet/Sheet.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/utils/getComponentName.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/ai/chat.ts","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Label/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Label/Label.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/legacy/Tabs/TabsContext.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/legacy/Tabs/TabsItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/legacy/Tabs/Tabs.tsx"],"sourcesContent":["import React, {FC, useEffect} from 'react';\nimport {useSidePanel} from '../../hooks/use-side-panel';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {useSelector} from '../../store/redux-hooks';\nimport {selectAiChatConfigured, selectChatOpen} from '../../store/selectors/ai/chat';\n\nconst ChatLazy = withLazyLoading(\n React.lazy(() => import(/* webpackChunkName: 'code-assistant-chat' */ './Chat')),\n);\n\nexport const ChatSidePanel: FC = () => {\n const open = useSelector(selectChatOpen);\n const isConfigured = useSelector(selectAiChatConfigured);\n\n const {widgetContent, openWidget, closeWidget} = useSidePanel('chat', {\n renderContent: () => <ChatLazy />,\n });\n\n useEffect(() => {\n if (!isConfigured) {\n return;\n }\n const action = open ? openWidget : closeWidget;\n action();\n }, [closeWidget, open, openWidget, isConfigured]);\n\n if (!isConfigured) {\n return null;\n }\n\n return widgetContent;\n};\n","import React from 'react';\nimport {AsideFallback, MenuItem, PageLayout} from '@gravity-ui/navigation';\n\nimport {ClusterConfig} from '../../../shared/yt-types';\nimport {AuthWay} from '../../../shared/constants';\nimport {ChatSidePanel} from '../AiChat/ChatSidePanel';\n\nexport interface AppNavigationProps {\n initialCompact?: boolean;\n className: string;\n children?: React.ReactNode;\n\n clusterConfig?: ClusterConfig;\n logoClassName: string;\n\n menuItems: Array<\n Omit<MenuItem, 'title' | 'type'> & {itemUrl?: string; current?: boolean; title: string}\n >;\n currentUser: string;\n\n authWay: AuthWay;\n\n panelVisible: boolean;\n panelContent: React.ReactNode;\n panelClassName: string;\n onClosePanel: () => void;\n\n settingsContent: React.ReactNode;\n settingsVisible: boolean;\n toggleSettingsVisible: () => void;\n\n compact: boolean;\n onChangeCompact: (compact: boolean) => void;\n}\n\nconst Aside = React.lazy(\n () => import(/* webpackChunkName: \"app-navigation\" */ './AppNavigationComponent'),\n);\n\nexport function AppNavigationPageLayout(props: AppNavigationProps) {\n const {onChangeCompact, className, compact, ...rest} = props;\n\n return (\n <PageLayout compact={compact} className={className}>\n <React.Suspense fallback={<AsideFallback />}>\n <Aside {...rest} onChangeCompact={onChangeCompact} />\n </React.Suspense>\n\n <PageLayout.Content>{props.children}</PageLayout.Content>\n <ChatSidePanel />\n </PageLayout>\n );\n}\n\nexport default React.memo(AppNavigationPageLayout);\n","import {block} from '../utils/cn';\n\nexport const sheetBlock = block('sheet');\n\nexport const SheetQa = {\n VEIL: 'sheet-veil',\n};\n","class Point {\n x: number;\n y: number;\n timeStamp: number;\n\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n this.timeStamp = Date.now();\n }\n}\n\nexport class VelocityTracker {\n pointsLen: number;\n points: Point[] = [];\n\n constructor(len = 5) {\n this.pointsLen = len;\n this.clear();\n }\n\n clear() {\n this.points = new Array(this.pointsLen);\n }\n\n addMovement({x, y}: {x: number; y: number}) {\n this.points.pop();\n this.points.unshift(new Point(x, y));\n }\n\n getYAcceleration(lastPointCount = 1) {\n const endPoint = this.points[0];\n const startPoint = this.points[lastPointCount];\n\n if (!endPoint || !startPoint) {\n return 0;\n }\n\n return (endPoint.y - startPoint.y) / Math.pow(endPoint.timeStamp - startPoint.timeStamp, 2);\n }\n}\n","'use client';\n\nimport * as React from 'react';\n\nimport {Platform, withMobile} from '../mobile';\nimport type {History, Location, MobileContextProps} from '../mobile';\nimport {warnOnce} from '../utils/warn';\n\nimport {SheetQa, sheetBlock} from './constants';\nimport {VelocityTracker} from './utils';\n\nimport './Sheet.scss';\n\nconst TRANSITION_DURATION = '0.3s';\nconst HIDE_THRESHOLD = 50;\nconst ACCELERATION_Y_MAX = 0.08;\nconst ACCELERATION_Y_MIN = -0.02;\nconst DEFAULT_MAX_CONTENT_HEIGHT_FROM_VIEWPORT_COEFFICIENT = 0.9;\nconst WINDOW_RESIZE_TIMEOUT = 50;\n\nlet hashHistory: string[] = [];\n\nfunction warnAboutOutOfRange() {\n warnOnce(\n '[Sheet] The value of the \"maxContentHeightCoefficient\" property must be between 0 and 1',\n );\n}\n\ntype Status = 'showing' | 'hiding';\n\ninterface SheetContentBaseProps {\n hideSheet: () => void;\n content: React.ReactNode;\n visible: boolean;\n id?: string;\n title?: string;\n contentClassName?: string;\n swipeAreaClassName?: string;\n hideTopBar?: boolean;\n maxContentHeightCoefficient?: number;\n alwaysFullHeight?: boolean;\n}\n\ninterface SheetContentDefaultProps {\n id: string;\n allowHideOnContentScroll: boolean;\n}\n\ntype SheetContentProps = SheetContentBaseProps & Partial<SheetContentDefaultProps>;\n\ninterface RouteComponentProps {\n history: History;\n location: Location;\n}\n\ntype SheetContentInnerProps = SheetContentProps &\n RouteComponentProps &\n Omit<MobileContextProps, 'useHistory' | 'useLocation'>;\n\ninterface SheetContentState {\n startScrollTop: number;\n startY: number;\n deltaY: number;\n prevSheetHeight: number;\n swipeAreaTouched: boolean;\n contentTouched: boolean;\n veilTouched: boolean;\n isAnimating: boolean;\n inWindowResizeScope: boolean;\n delayedResize: boolean;\n}\n\nclass SheetContent extends React.Component<SheetContentInnerProps, SheetContentState> {\n static defaultProps: SheetContentDefaultProps = {\n id: 'sheet',\n allowHideOnContentScroll: true,\n };\n\n veilRef = React.createRef<HTMLDivElement>();\n sheetRef = React.createRef<HTMLDivElement>();\n sheetTopRef = React.createRef<HTMLDivElement>();\n sheetMarginBoxRef = React.createRef<HTMLDivElement>();\n sheetScrollContainerRef = React.createRef<HTMLDivElement>();\n velocityTracker = new VelocityTracker();\n observer: ResizeObserver | null = null;\n resizeWindowTimer: number | null = null;\n\n state: SheetContentState = {\n startScrollTop: 0,\n startY: 0,\n deltaY: 0,\n prevSheetHeight: 0,\n swipeAreaTouched: false,\n contentTouched: false,\n veilTouched: false,\n isAnimating: false,\n inWindowResizeScope: false,\n delayedResize: false,\n };\n\n componentDidMount() {\n this.addListeners();\n this.show();\n\n const initialHeight = this.getAvailableContentHeight(this.sheetContentHeight);\n\n this.setInitialStyles(initialHeight);\n this.setState({\n prevSheetHeight: initialHeight,\n });\n }\n\n componentDidUpdate(prevProps: SheetContentInnerProps) {\n const {visible, location} = this.props;\n\n if (!prevProps.visible && visible) {\n this.show();\n }\n\n if ((prevProps.visible && !visible) || this.shouldClose(prevProps)) {\n this.hide();\n }\n\n if (prevProps.location.pathname !== location.pathname) {\n hashHistory = [];\n }\n }\n\n componentWillUnmount() {\n this.removeListeners();\n }\n\n render() {\n const {content, contentClassName, swipeAreaClassName, hideTopBar, title} = this.props;\n\n const {deltaY, swipeAreaTouched, contentTouched, veilTouched} = this.state;\n\n const veilTransitionMod = {\n 'with-transition': !deltaY || veilTouched,\n };\n\n const sheetTransitionMod = {\n 'with-transition': veilTransitionMod['with-transition'],\n };\n\n const contentMod = {\n 'without-scroll': (deltaY > 0 && contentTouched) || swipeAreaTouched,\n };\n\n const marginBoxMod = {\n 'always-full-height': this.props.alwaysFullHeight,\n };\n\n return (\n <React.Fragment>\n <div\n ref={this.veilRef}\n className={sheetBlock('veil', veilTransitionMod)}\n onClick={this.onVeilClick}\n onTransitionEnd={this.onVeilTransitionEnd}\n role=\"presentation\"\n data-qa={SheetQa.VEIL}\n />\n <div\n ref={this.sheetRef}\n className={sheetBlock('sheet', sheetTransitionMod)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n {!hideTopBar && (\n <div ref={this.sheetTopRef} className={sheetBlock('sheet-top')}>\n <div className={sheetBlock('sheet-top-resizer')} />\n </div>\n )}\n {/* TODO: extract to external component SwipeArea */}\n <div\n className={sheetBlock('sheet-swipe-area', swipeAreaClassName)}\n onTouchStart={this.onSwipeAreaTouchStart}\n onTouchMove={this.onSwipeAriaTouchMove}\n onTouchEnd={this.onSwipeAriaTouchEnd}\n />\n {/* TODO: extract to external component ContentArea */}\n <div\n ref={this.sheetScrollContainerRef}\n className={sheetBlock('sheet-scroll-container', contentMod)}\n onTouchStart={this.onContentTouchStart}\n onTouchMove={this.onContentTouchMove}\n onTouchEnd={this.onContentTouchEnd}\n onTransitionEnd={this.onContentTransitionEnd}\n >\n <div\n ref={this.sheetMarginBoxRef}\n className={sheetBlock('sheet-margin-box', marginBoxMod)}\n >\n <div className={sheetBlock('sheet-margin-box-border-compensation')}>\n <div className={sheetBlock('sheet-content', contentClassName)}>\n {title && (\n <div className={sheetBlock('sheet-content-title')}>\n {title}\n </div>\n )}\n {content}\n </div>\n </div>\n </div>\n </div>\n </div>\n </React.Fragment>\n );\n }\n\n private get veilOpacity() {\n return this.veilRef.current?.style.opacity || 0;\n }\n\n private get sheetTopHeight() {\n return this.sheetTopRef.current?.getBoundingClientRect().height || 0;\n }\n\n private get sheetHeight() {\n return this.sheetRef.current?.getBoundingClientRect().height || 0;\n }\n\n private get sheetScrollTop() {\n return this.sheetScrollContainerRef.current?.scrollTop || 0;\n }\n\n private get sheetContentHeight() {\n return this.sheetMarginBoxRef.current?.getBoundingClientRect().height || 0;\n }\n\n private setInitialStyles(initialHeight: number) {\n if (this.sheetScrollContainerRef.current && this.sheetMarginBoxRef.current) {\n this.sheetScrollContainerRef.current.style.height = `${initialHeight}px`;\n }\n }\n\n private setStyles = ({status, deltaHeight = 0}: {status: Status; deltaHeight?: number}) => {\n if (!this.sheetRef.current || !this.veilRef.current) {\n return;\n }\n\n const visibleHeight = this.sheetHeight - deltaHeight;\n const translate =\n status === 'showing'\n ? `translate3d(0, -${visibleHeight}px, 0)`\n : 'translate3d(0, 0, 0)';\n let opacity = 0;\n\n if (status === 'showing') {\n opacity = deltaHeight === 0 ? 1 : visibleHeight / this.sheetHeight;\n }\n\n this.veilRef.current.style.opacity = String(opacity);\n\n this.sheetRef.current.style.transform = translate;\n\n if (this.isPrefersReducedMotion) {\n this.sheetRef.current.style.opacity = String(opacity);\n this.sheetRef.current.style.transform = `translate3d(0, -${visibleHeight}px, 0)`;\n }\n };\n\n private getAvailableContentHeight = (sheetHeight: number) => {\n let heightCoefficient = DEFAULT_MAX_CONTENT_HEIGHT_FROM_VIEWPORT_COEFFICIENT;\n\n if (\n typeof this.props.maxContentHeightCoefficient === 'number' &&\n this.props.maxContentHeightCoefficient >= 0 &&\n this.props.maxContentHeightCoefficient <= 1\n ) {\n heightCoefficient = this.props.maxContentHeightCoefficient;\n } else if (typeof this.props.maxContentHeightCoefficient === 'number') {\n warnAboutOutOfRange();\n }\n\n const availableViewportHeight =\n window.innerHeight * heightCoefficient - this.sheetTopHeight;\n\n if (this.props.alwaysFullHeight) {\n return availableViewportHeight;\n }\n\n const availableContentHeight =\n sheetHeight >= availableViewportHeight ? availableViewportHeight : sheetHeight;\n\n return availableContentHeight;\n };\n\n private show = () => {\n this.setState({isAnimating: true}, () => {\n this.setStyles({status: 'showing'});\n this.setHash();\n });\n };\n\n private hide = () => {\n this.setState({isAnimating: true}, () => {\n this.setStyles({status: 'hiding'});\n this.removeHash();\n });\n };\n\n private onSwipeAreaTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n this.velocityTracker.clear();\n\n this.setState({\n startY: e.nativeEvent.touches[0].clientY,\n swipeAreaTouched: true,\n });\n };\n\n private onContentTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n if (!this.props.allowHideOnContentScroll || this.state.swipeAreaTouched) {\n return;\n }\n\n this.velocityTracker.clear();\n\n this.setState({\n startY: e.nativeEvent.touches[0].clientY,\n startScrollTop: this.sheetScrollTop,\n contentTouched: true,\n });\n };\n\n private onSwipeAriaTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n const delta = e.nativeEvent.touches[0].clientY - this.state.startY;\n\n this.velocityTracker.addMovement({\n x: e.nativeEvent.touches[0].clientX,\n y: e.nativeEvent.touches[0].clientY,\n });\n\n this.setState({deltaY: delta});\n\n if (delta <= 0) {\n return;\n }\n\n this.setStyles({status: 'showing', deltaHeight: delta});\n };\n\n private onContentTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n if (!this.props.allowHideOnContentScroll) {\n return;\n }\n\n if (!this.state.startY) {\n this.onContentTouchStart(e);\n return;\n }\n\n const {startScrollTop, swipeAreaTouched} = this.state;\n\n if (\n swipeAreaTouched ||\n this.sheetScrollTop > 0 ||\n (startScrollTop > 0 && startScrollTop !== this.sheetScrollTop)\n ) {\n return;\n }\n\n const delta = e.nativeEvent.touches[0].clientY - this.state.startY;\n\n this.velocityTracker.addMovement({\n x: e.nativeEvent.touches[0].clientX,\n y: e.nativeEvent.touches[0].clientY,\n });\n\n // if allowHideOnContentScroll is true and delta <= 0, it's a content scroll\n // animation is not needed\n if (delta <= 0) {\n this.setState({deltaY: 0});\n return;\n }\n\n this.setState({deltaY: delta});\n this.setStyles({status: 'showing', deltaHeight: delta});\n };\n\n private onTouchEndAction = (deltaY: number) => {\n const accelerationY = this.velocityTracker.getYAcceleration();\n\n if (this.sheetHeight <= deltaY) {\n this.props.hideSheet();\n } else if (\n (deltaY > HIDE_THRESHOLD &&\n accelerationY <= ACCELERATION_Y_MAX &&\n accelerationY >= ACCELERATION_Y_MIN) ||\n accelerationY > ACCELERATION_Y_MAX\n ) {\n this.hide();\n } else if (deltaY !== 0) {\n this.show();\n }\n };\n\n private onSwipeAriaTouchEnd = () => {\n const {deltaY} = this.state;\n\n this.onTouchEndAction(deltaY);\n\n this.setState({\n startY: 0,\n deltaY: 0,\n swipeAreaTouched: false,\n });\n };\n\n private onContentTouchEnd = () => {\n const {deltaY, swipeAreaTouched} = this.state;\n\n if (!this.props.allowHideOnContentScroll || swipeAreaTouched) {\n return;\n }\n\n this.onTouchEndAction(deltaY);\n\n this.setState({\n startY: 0,\n deltaY: 0,\n contentTouched: false,\n });\n };\n\n private onVeilClick = () => {\n if (this.state.isAnimating) {\n return;\n }\n\n this.setState({veilTouched: true});\n this.hide();\n };\n\n private onVeilTransitionEnd = () => {\n this.setState({isAnimating: false});\n\n if (this.veilOpacity === '0') {\n this.props.hideSheet();\n return;\n }\n\n if (this.state.delayedResize) {\n this.onResizeWindow();\n this.setState({delayedResize: false});\n }\n };\n\n private onContentTransitionEnd = (e: React.TransitionEvent<HTMLDivElement>) => {\n if (e.propertyName === 'height') {\n if (this.sheetScrollContainerRef.current) {\n this.sheetScrollContainerRef.current.style.transition = 'none';\n }\n }\n };\n\n private onResizeWindow = () => {\n if (this.state.isAnimating) {\n this.setState({delayedResize: true});\n return;\n }\n\n this.setState({inWindowResizeScope: true});\n\n if (this.resizeWindowTimer) {\n window.clearTimeout(this.resizeWindowTimer);\n }\n\n this.resizeWindowTimer = window.setTimeout(() => {\n this.onResize();\n }, WINDOW_RESIZE_TIMEOUT);\n };\n\n private onResize = () => {\n if (!this.sheetRef.current || !this.sheetScrollContainerRef.current) {\n return;\n }\n\n const sheetContentHeight = this.sheetContentHeight;\n\n if (sheetContentHeight === this.state.prevSheetHeight && !this.state.inWindowResizeScope) {\n return;\n }\n\n const availableContentHeight = this.getAvailableContentHeight(sheetContentHeight);\n\n this.sheetScrollContainerRef.current.style.transition =\n this.state.prevSheetHeight > sheetContentHeight\n ? `height 0s ease ${TRANSITION_DURATION}`\n : 'none';\n\n this.sheetScrollContainerRef.current.style.height = `${availableContentHeight}px`;\n this.sheetRef.current.style.transform = `translate3d(0, -${availableContentHeight + this.sheetTopHeight}px, 0)`;\n this.setState({prevSheetHeight: sheetContentHeight, inWindowResizeScope: false});\n };\n\n private addListeners() {\n window.addEventListener('resize', this.onResizeWindow);\n\n if (this.sheetMarginBoxRef.current) {\n this.observer = new ResizeObserver(() => {\n if (!this.state.inWindowResizeScope) {\n this.onResize();\n }\n });\n this.observer.observe(this.sheetMarginBoxRef.current);\n }\n }\n\n private removeListeners() {\n window.removeEventListener('resize', this.onResizeWindow);\n\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n private setHash() {\n const {id, platform, location, history} = this.props;\n\n if (platform === Platform.BROWSER) {\n return;\n }\n\n const newLocation = {...location, hash: id};\n\n switch (platform) {\n case Platform.IOS:\n if (location.hash) {\n hashHistory.push(location.hash);\n }\n history.replace(newLocation);\n break;\n case Platform.ANDROID:\n history.push(newLocation);\n break;\n }\n }\n\n private removeHash() {\n const {id, platform, location, history} = this.props;\n\n if (platform === Platform.BROWSER || location.hash !== `#${id}`) {\n return;\n }\n\n switch (platform) {\n case Platform.IOS:\n history.replace({...location, hash: hashHistory.pop() ?? ''});\n break;\n case Platform.ANDROID:\n history.goBack();\n break;\n }\n }\n\n private shouldClose(prevProps: SheetContentInnerProps) {\n const {id, platform, location, history} = this.props;\n\n return (\n platform !== Platform.BROWSER &&\n history.action === 'POP' &&\n prevProps.location.hash !== location.hash &&\n location.hash !== `#${id}`\n );\n }\n\n private get isPrefersReducedMotion() {\n return Boolean(window?.matchMedia('(prefers-reduced-motion: reduce)').matches);\n }\n}\n\nfunction withRouterWrapper(Component: React.ComponentType<SheetContentInnerProps>) {\n const ComponentWithRouter = (props: MobileContextProps & SheetContentProps) => {\n const {useHistory, useLocation, ...remainingProps} = props;\n return <Component {...remainingProps} history={useHistory()} location={useLocation()} />;\n };\n const componentName = Component.displayName || Component.name || 'Component';\n\n ComponentWithRouter.displayName = `withRouterWrapper(${componentName})`;\n return ComponentWithRouter;\n}\nexport const SheetContentContainer = withMobile(withRouterWrapper(SheetContent));\n","import * as React from 'react';\n\nimport {getComponentName} from '../utils/getComponentName';\n\nimport {MobileContext} from './MobileContext';\nimport type {MobileContextProps} from './MobileContext';\n\nexport interface WithMobileProps extends MobileContextProps {}\n\nexport function withMobile<T extends WithMobileProps>(\n WrappedComponent: React.ComponentType<T>,\n): React.ComponentType<Omit<T, keyof WithMobileProps>> {\n const componentName = getComponentName(WrappedComponent);\n\n return class WithMobileComponent extends React.Component<Omit<T, keyof WithMobileProps>> {\n static displayName = `withMobile(${componentName})`;\n static contextType = MobileContext;\n declare context: React.ContextType<typeof MobileContext>;\n\n render() {\n return (\n <WrappedComponent\n {...(this.props as T)}\n mobile={this.context.mobile}\n platform={this.context.platform}\n useHistory={this.context.useHistory}\n useLocation={this.context.useLocation}\n />\n );\n }\n };\n}\n","'use client';\n\nimport * as React from 'react';\n\nimport {FloatingOverlay} from '@floating-ui/react';\n\nimport {Portal} from '../Portal/Portal';\nimport type {PortalProps} from '../Portal/Portal';\nimport type {QAProps} from '../types';\n\nimport {SheetContentContainer} from './SheetContent';\nimport {sheetBlock} from './constants';\n\nimport './Sheet.scss';\n\nexport interface SheetProps extends Pick<PortalProps, 'container' | 'disablePortal'>, QAProps {\n children?: React.ReactNode;\n onClose?: () => void;\n /** Show/hide sheet */\n visible: boolean;\n /** ID of the sheet, used as hash in URL. It's important to specify different `id` values if there can be more than one sheet on the page */\n id?: string;\n /** Title of the sheet window */\n title?: string;\n /** Class name for the sheet window */\n className?: string;\n /** Class name for the sheet content */\n contentClassName?: string;\n /** Class name for the swipe area */\n swipeAreaClassName?: string;\n /** Enable the behavior in which you can close the sheet window with a swipe down if the content is scrolled to its top (`contentNode.scrollTop === 0`) or has no scroll at all */\n allowHideOnContentScroll?: boolean;\n /** Hide top bar with resize handle */\n hideTopBar?: boolean;\n /** Coefficient that determines the maximum height of the `Sheet` relative to the height of the viewport (range 0-1) */\n maxContentHeightCoefficient?: number;\n /** `Sheet` height will always have the maximum value */\n alwaysFullHeight?: boolean;\n}\n\nexport const Sheet = ({\n children,\n onClose,\n visible,\n id,\n title,\n className,\n contentClassName,\n swipeAreaClassName,\n allowHideOnContentScroll,\n hideTopBar,\n maxContentHeightCoefficient,\n alwaysFullHeight,\n container,\n disablePortal,\n qa,\n}: SheetProps) => {\n const [open, setOpen] = React.useState(visible);\n const [prevVisible, setPrevVisible] = React.useState(visible);\n\n if (!prevVisible && visible) {\n setOpen(true);\n }\n\n if (visible !== prevVisible) {\n setPrevVisible(visible);\n }\n\n const hideSheet = () => {\n if (onClose) {\n onClose();\n }\n setOpen(false);\n };\n\n if (!open) {\n return null;\n }\n\n return (\n <Portal container={container} disablePortal={disablePortal}>\n <FloatingOverlay\n data-qa={qa}\n className={sheetBlock(null, className)}\n lockScroll={open}\n style={{overflow: undefined}}\n >\n <SheetContentContainer\n id={id}\n content={children}\n contentClassName={contentClassName}\n swipeAreaClassName={swipeAreaClassName}\n title={title}\n visible={visible}\n allowHideOnContentScroll={allowHideOnContentScroll}\n hideTopBar={hideTopBar}\n hideSheet={hideSheet}\n maxContentHeightCoefficient={maxContentHeightCoefficient}\n alwaysFullHeight={alwaysFullHeight}\n />\n </FloatingOverlay>\n </Portal>\n );\n};\n","export function getComponentName<T>(Component: React.ComponentType<T>) {\n return Component.displayName || Component.name || 'Component';\n}\n","import moment from 'moment';\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\nimport {Conversation} from '../../../../shared/ai-chat';\nimport {uiSettings} from '../../../config/ui-settings';\n\nexport const selectAiChatConfigured = () => Boolean(uiSettings.aiChatConfig);\nexport const selectAiChatModel = () => uiSettings.aiChatConfig?.model || '';\nexport const selectChatMode = (state: RootState) => state.aiChat.mode;\nexport const selectChatQuestion = (state: RootState) => state.aiChat.currentQuestion;\nexport const selectCurrentAnswer = (state: RootState) => state.aiChat.currentAnswer;\nexport const selectChatLoading = (state: RootState) => state.aiChat.loading;\nexport const selectChatSending = (state: RootState) => state.aiChat.sending;\nexport const selectChatOpen = (state: RootState) => state.aiChat.isOpen;\nexport const selectConversationId = (state: RootState) => state.aiChat.conversationId;\nexport const selectConversations = (state: RootState) => state.aiChat.conversations;\nexport const selectConversation = (state: RootState) => state.aiChat.conversation;\n\nexport const selectChatError = (state: RootState) => state.aiChat.error;\nexport const selectAttachedFiles = (state: RootState) => state.aiChat.attachedFiles;\n\nexport const selectConversationsItems = (state: RootState) => state.aiChat.conversations.items;\nexport const selectConversationsLoading = (state: RootState) => state.aiChat.conversations.loading;\nexport const selectConversationsHasMore = (state: RootState) => state.aiChat.conversations.hasMore;\n\nexport const selectChatIsVisible = createSelector(\n [selectChatMode, selectConversation, selectCurrentAnswer, selectChatSending],\n (mode, {items}, currentAnswer, isSending) => {\n return mode === 'chat' && (items.length > 0 || Boolean(currentAnswer) || isSending);\n },\n);\n\nexport const selectChatHistoryIsVisible = createSelector([selectChatMode], (mode) => {\n return mode === 'history';\n});\n\nexport type ConversationGroup = {\n date: string;\n items: Conversation[];\n};\n\nexport const selectConversationsGroupedByDate = createSelector(\n [selectConversationsItems],\n (items): ConversationGroup[] => {\n const groupMap = new Map<string, Conversation[]>();\n\n items.forEach((conversation) => {\n const dateKey = moment(conversation.created_at * 1000)\n .startOf('day')\n .format('YYYY-MM-DD');\n\n if (!groupMap.has(dateKey)) {\n groupMap.set(dateKey, []);\n }\n groupMap.get(dateKey)!.push(conversation);\n });\n\n return Array.from(groupMap.entries()).map(([date, items]) => ({\n date,\n items,\n }));\n },\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","export const LabelQa = {\n copyButton: 'copy-button',\n closeButton: 'close-button',\n mainButton: 'main-button',\n};\n","'use client';\n\nimport * as React from 'react';\n\nimport {CircleInfo, Xmark} from '@gravity-ui/icons';\n\nimport {ClipboardIcon} from '../ClipboardIcon';\nimport {CopyToClipboard} from '../CopyToClipboard';\nimport type {CopyToClipboardStatus} from '../CopyToClipboard';\nimport {Icon} from '../Icon';\nimport type {QAProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport {LabelQa} from './constants';\n\nimport './Label.scss';\n\nconst b = block('label');\n\nconst iconSizeMap: Record<NonNullable<LabelProps['size']>, number> = {\n xs: 12,\n s: 14,\n m: 16,\n} as const;\n\nexport interface LabelProps extends QAProps {\n /** Label icon (at start) */\n icon?: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Handler for click on close button */\n onCloseClick?(event: React.MouseEvent<HTMLButtonElement>): void;\n /** Text to copy */\n copyText?: string;\n /** `aria-label` of close button */\n closeButtonLabel?: string;\n /** `aria-label` of copy button */\n copyButtonLabel?: string;\n /** Handler for copy event */\n onCopy?(text: string, result: boolean): void;\n /** Handler for click on label itself */\n onClick?(event: React.MouseEvent<HTMLElement>): void;\n /** Class name */\n className?: string;\n /** Content */\n children?: React.ReactNode;\n /** Display hover */\n interactive?: boolean;\n /** Label value (shows as \"children : value\") */\n value?: React.ReactNode;\n /** Label color */\n theme?: 'normal' | 'info' | 'danger' | 'warning' | 'success' | 'utility' | 'unknown' | 'clear';\n /** Label type (plain, with copy text button, with close button, or with info icon) */\n type?: 'default' | 'copy' | 'close' | 'info';\n /** Label size */\n size?: 'xs' | 's' | 'm';\n /** Container width behavior */\n width?: 'auto';\n /** Browser title for Label */\n title?: string;\n loading?: boolean;\n}\n\nexport const Label = React.forwardRef(function Label(\n props: LabelProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n type = 'default',\n theme = 'normal',\n size = 'xs',\n width,\n title,\n icon,\n children,\n onCloseClick,\n className,\n disabled,\n copyText,\n closeButtonLabel,\n copyButtonLabel,\n interactive = false,\n value,\n onCopy,\n onClick,\n qa,\n loading = false,\n } = props;\n const hasContent = Boolean(children !== '' && React.Children.count(children) > 0);\n\n const typeClose = type === 'close' && hasContent;\n const typeCopy = type === 'copy' && hasContent;\n const typeInfo = type === 'info';\n\n const hasOnClick = typeof onClick === 'function';\n const hasCopy = Boolean(typeCopy && copyText);\n const isInteractive = (hasOnClick || hasCopy || typeInfo || interactive) && !disabled;\n\n const iconSize = iconSizeMap[size];\n\n const startIcon = icon && (\n <div className={b('addon', {side: hasContent ? 'start' : undefined, type: 'icon'})}>\n {icon}\n </div>\n );\n const content = hasContent && (\n <div className={b('text')}>\n <div className={b('content')}>{children}</div>\n {Boolean(value) && (\n <div className={b('value')}>\n <div className={b('separator')}>:</div>\n <div className={b('key')}>{value}</div>\n </div>\n )}\n </div>\n );\n\n const renderLabel = (status?: CopyToClipboardStatus) => {\n let actionButton: React.ReactNode;\n\n if (typeCopy) {\n actionButton = (\n <button\n type=\"button\"\n aria-label={copyButtonLabel || undefined}\n onClick={hasOnClick ? onClick : undefined}\n disabled={disabled}\n className={b('addon', {\n side: 'end',\n type: 'button',\n action: hasOnClick ? 'click' : 'copy',\n })}\n data-qa={LabelQa.copyButton}\n >\n <ClipboardIcon status={status || 'pending'} size={iconSize} />\n </button>\n );\n } else if (typeInfo) {\n actionButton = (\n <div\n className={b('addon', {\n side: 'end',\n type: 'icon',\n })}\n >\n <Icon size={iconSize} data={CircleInfo} />\n </div>\n );\n } else if (typeClose) {\n actionButton = (\n <button\n type=\"button\"\n onClick={onCloseClick}\n aria-label={closeButtonLabel || undefined}\n disabled={disabled}\n className={b('addon', {\n side: 'end',\n type: 'button',\n action: 'close',\n })}\n data-qa={LabelQa.closeButton}\n >\n <Icon size={iconSize} data={Xmark} />\n </button>\n );\n }\n\n return (\n <div\n ref={ref}\n className={b(\n {\n theme,\n size,\n width,\n interactive: isInteractive,\n disabled,\n },\n className,\n )}\n title={title}\n data-qa={qa}\n >\n {!disabled && loading && <div className={b('animation-container')} />}\n {startIcon}\n {hasOnClick ? (\n <button\n disabled={disabled}\n type=\"button\"\n onClick={onClick}\n className={b('main-button')}\n data-qa={LabelQa.mainButton}\n >\n {content}\n </button>\n ) : (\n content\n )}\n {actionButton}\n </div>\n );\n };\n\n if (hasCopy && copyText && !hasOnClick) {\n return (\n <CopyToClipboard text={copyText} onCopy={onCopy} timeout={1000}>\n {(status) => renderLabel(status)}\n </CopyToClipboard>\n );\n }\n\n return renderLabel();\n});\n","import React from 'react';\nimport {useDispatch} from '../store/redux-hooks';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch, name]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\n}\n","'use client';\nimport * as React from 'react';\n\nexport const TabsContext = React.createContext<{activeTabId: string | undefined}>({\n activeTabId: undefined,\n});\n\nTabsContext.displayName = 'TabsContext';\n","'use client';\n\nimport * as React from 'react';\n\nimport {Label} from '../../Label';\nimport type {LabelProps} from '../../Label';\nimport type {QAProps} from '../../types';\nimport {block} from '../../utils/cn';\n\nimport {TabsContext} from './TabsContext';\n\nconst b = block('tabs-legacy');\n\ntype ExtraProps = Omit<\n React.HTMLProps<HTMLDivElement>,\n | 'role'\n | 'aria-selected'\n | 'aria-disabled'\n | 'tabIndex'\n | 'className'\n | 'title'\n | 'onClick'\n | 'onKeyDown'\n>;\n\nexport interface TabsItemProps extends QAProps {\n id: string;\n className?: string;\n title: string | React.ReactNode;\n meta?: string;\n hint?: string;\n active?: boolean;\n disabled?: boolean;\n hasOverflow?: boolean;\n icon?: React.ReactNode;\n counter?: number | string;\n label?: {\n content: React.ReactNode;\n theme?: LabelProps['theme'];\n };\n extraProps?: ExtraProps;\n onClick(tabId: string): void;\n}\n\nexport function TabsItem({\n id,\n className,\n title,\n meta,\n hint,\n icon,\n counter,\n label,\n active,\n disabled,\n hasOverflow,\n extraProps,\n onClick,\n qa,\n}: TabsItemProps) {\n const {activeTabId} = React.useContext(TabsContext);\n const isActive = typeof active === 'boolean' ? active : activeTabId === id;\n\n const handleClick = () => {\n onClick(id);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === ' ') {\n onClick(id);\n }\n };\n\n const htmlTitle = React.useMemo(() => {\n if (hint !== undefined) {\n return hint;\n }\n\n if (typeof title === 'string') {\n return title;\n }\n\n return undefined;\n }, [hint, title]);\n\n return (\n <div\n {...extraProps}\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled === true}\n tabIndex={disabled ? -1 : 0}\n className={b(\n 'item',\n {active: isActive, disabled, overflow: Boolean(hasOverflow)},\n className,\n )}\n title={htmlTitle}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n data-qa={qa}\n >\n <div className={b('item-content')}>\n {icon && <div className={b('item-icon')}>{icon}</div>}\n <div className={b('item-title')}>{title || id}</div>\n {counter !== undefined && <div className={b('item-counter')}>{counter}</div>}\n {label && (\n <Label className={b('item-label')} theme={label.theme}>\n {label.content}\n </Label>\n )}\n </div>\n {meta && <div className={b('item-meta')}>{meta}</div>}\n </div>\n );\n}\n\nTabsItem.displayName = 'Tabs.Item';\n","'use client';\n\nimport * as React from 'react';\n\nimport type {AriaLabelingProps, QAProps} from '../../types';\nimport {block} from '../../utils/cn';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\n\nimport {TabsContext} from './TabsContext';\nimport {TabsItem} from './TabsItem';\nimport type {TabsItemProps as TabsItemInternalProps} from './TabsItem';\n\nimport './Tabs.scss';\n\nconst b = block('tabs-legacy');\n\nexport enum TabsDirection {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n\nexport type TabsSize = 'm' | 'l' | 'xl';\n\nexport interface TabsItemProps\n extends Omit<TabsItemInternalProps, 'active' | 'direction' | 'onClick'> {}\n\nexport interface TabsProps extends AriaLabelingProps, QAProps {\n /**\n * Tabs direction\n * @deprecated Vertical tabs are deprecated\n */\n direction?: TabsDirection;\n /** Tabs size */\n size?: TabsSize;\n /** Active tab ID */\n activeTab?: string;\n /** By default if activeTab is not set, first tab will be active */\n allowNotSelected?: boolean;\n /** Tabs props list */\n items?: TabsItemProps[];\n children?: React.ReactNode;\n /** Additional CSS-class */\n className?: string;\n /** Select tab handler */\n onSelectTab?(tabId: string): void;\n /** Allows to wrap `TabItem` into another component or render custom tab.\n * Ignored when tabs rendered via `children` */\n wrapTo?(item: TabsItemProps, node: React.ReactNode, index: number): React.ReactNode;\n}\n\nconst getActiveTabId = (\n activeTab: TabsProps['activeTab'],\n allowNotSelected: TabsProps['allowNotSelected'],\n items: TabsProps['items'],\n) => {\n if (activeTab) {\n return activeTab;\n }\n\n if (allowNotSelected || items?.length === 0) {\n return undefined;\n }\n\n return items?.[0]?.id;\n};\n\nconst emptyTabsList: TabsItemProps[] = [];\n\nconst TabsComponent = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n direction = TabsDirection.Horizontal,\n size = 'm',\n activeTab,\n allowNotSelected = false,\n items = emptyTabsList,\n children,\n className,\n onSelectTab,\n wrapTo,\n qa,\n ...restProps\n },\n ref,\n ) => {\n const activeTabId = getActiveTabId(activeTab, allowNotSelected, items);\n\n const tabsContextValue = React.useMemo(() => ({activeTabId}), [activeTabId]);\n\n const tabs = React.useMemo(() => {\n const handleTabClick = (tabId: string) => {\n if (onSelectTab) {\n onSelectTab(tabId);\n }\n };\n\n return items.map((item, index) => {\n const tabItemNode = <TabsItem key={item.id} {...item} onClick={handleTabClick} />;\n\n if (wrapTo) {\n return wrapTo(item, tabItemNode, index);\n }\n\n return tabItemNode;\n });\n }, [items, onSelectTab, wrapTo]);\n\n return (\n <div\n {...filterDOMProps(restProps, {labelable: true})}\n role=\"tablist\"\n className={b({direction, size}, className)}\n data-qa={qa}\n ref={ref}\n >\n <TabsContext.Provider value={tabsContextValue}>\n {children || tabs}\n </TabsContext.Provider>\n </div>\n );\n },\n);\n\nTabsComponent.displayName = 'Tabs';\n\n/**\n * @deprecated\n */\nexport const Tabs = Object.assign(TabsComponent, {Item: TabsItem});\n"],"names":["ChatLazy","withLazyLoading","React","ChatSidePanel","open","useSelector","selectChatOpen","isConfigured","selectAiChatConfigured","_useSidePanel","useSidePanel","renderContent","_jsx","widgetContent","openWidget","closeWidget","useEffect","Aside","AppNavigationPageLayout","props","onChangeCompact","className","compact","rest","_objectWithoutProperties","_excluded","_jsxs","PageLayout","children","fallback","AsideFallback","_objectSpread","Content","sheetBlock","Point","x","y","timeStamp","constructor","this","Date","now","VelocityTracker","pointsLen","points","len","clear","Array","addMovement","pop","unshift","getYAcceleration","lastPointCount","endPoint","startPoint","Math","pow","hashHistory","SheetContent","static","id","allowHideOnContentScroll","veilRef","sheetRef","sheetTopRef","sheetMarginBoxRef","sheetScrollContainerRef","velocityTracker","observer","resizeWindowTimer","state","startScrollTop","startY","deltaY","prevSheetHeight","swipeAreaTouched","contentTouched","veilTouched","isAnimating","inWindowResizeScope","delayedResize","componentDidMount","addListeners","show","initialHeight","getAvailableContentHeight","sheetContentHeight","setInitialStyles","setState","componentDidUpdate","prevProps","visible","location","shouldClose","hide","pathname","componentWillUnmount","removeListeners","render","content","contentClassName","swipeAreaClassName","hideTopBar","title","veilTransitionMod","sheetTransitionMod","contentMod","marginBoxMod","alwaysFullHeight","ref","onClick","onVeilClick","onTransitionEnd","onVeilTransitionEnd","role","onTouchStart","onSwipeAreaTouchStart","onTouchMove","onSwipeAriaTouchMove","onTouchEnd","onSwipeAriaTouchEnd","onContentTouchStart","onContentTouchMove","onContentTouchEnd","onContentTransitionEnd","veilOpacity","current","style","opacity","sheetTopHeight","getBoundingClientRect","height","sheetHeight","sheetScrollTop","scrollTop","setStyles","status","deltaHeight","visibleHeight","translate","String","transform","isPrefersReducedMotion","heightCoefficient","maxContentHeightCoefficient","warn","availableViewportHeight","window","innerHeight","setHash","removeHash","e","nativeEvent","touches","clientY","delta","clientX","onTouchEndAction","accelerationY","hideSheet","onResizeWindow","propertyName","transition","clearTimeout","setTimeout","onResize","availableContentHeight","addEventListener","ResizeObserver","observe","removeEventListener","disconnect","platform","history","BROWSER","newLocation","hash","IOS","push","replace","ANDROID","goBack","action","Boolean","matchMedia","matches","SheetContentContainer","WrappedComponent","componentName","getComponentName","MobileContext","mobile","context","useHistory","useLocation","withMobile","Component","ComponentWithRouter","remainingProps","displayName","name","withRouterWrapper","Sheet","onClose","container","disablePortal","qa","setOpen","prevVisible","setPrevVisible","Portal","lockScroll","overflow","undefined","uiSettings","aiChatConfig","selectAiChatModel","_uiSettings$aiChatCon","model","selectChatMode","aiChat","mode","selectChatQuestion","currentQuestion","selectCurrentAnswer","currentAnswer","selectChatLoading","loading","selectChatSending","sending","isOpen","selectConversationId","conversationId","selectConversations","conversations","selectConversation","conversation","selectChatError","error","selectAttachedFiles","attachedFiles","selectConversationsLoading","selectConversationsHasMore","hasMore","selectChatIsVisible","createSelector","_ref","isSending","items","length","selectChatHistoryIsVisible","selectConversationsGroupedByDate","groupMap","Map","forEach","dateKey","moment","created_at","startOf","format","has","set","get","from","entries","map","_ref2","_ref3","_slicedToArray","date","withSplit","_WithSplit","_React$Component","WithSplit","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","ReactDOM","document","getElementById","SPLIT_PANE_ID","concat","getDisplayName","b","iconSizeMap","xs","s","m","Label","type","theme","size","width","icon","onCloseClick","disabled","copyText","closeButtonLabel","copyButtonLabel","interactive","onCopy","hasContent","count","typeClose","typeCopy","typeInfo","hasOnClick","hasCopy","isInteractive","iconSize","startIcon","side","renderLabel","actionButton","ClipboardIcon","Icon","I","data","CircleInfo","Xmark","CopyToClipboard","text","timeout","SidePanelPortal","_React$useState","_React$useState2","widgetOpened","setWidgetOpened","dispatch","useDispatch","splitScreen","mergeScreen","TabsContext","activeTabId","TabsItem","meta","hint","counter","label","active","hasOverflow","extraProps","isActive","htmlTitle","tabIndex","onKeyDown","event","TabsDirection","emptyTabsList","TabsComponent","direction","Horizontal","activeTab","allowNotSelected","onSelectTab","wrapTo","restProps","getActiveTabId","tabsContextValue","tabs","handleTabClick","tabId","item","index","tabItemNode","filterDOMProps","labelable","Provider","Tabs","Object","assign","Item"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[9999],{13609:(e,t,n)=>{n.d(t,{D:()=>x,o:()=>j}),n(77810);var l=n(1435),i=n(1335),a=n(45760),o=n(87111),s=n(92611);const c=JSON.parse('{"context_tooltip":"AI chat","action_button":"Ask AI"}'),r=JSON.parse('{"context_tooltip":"AI чат","action_button":"Спросить AI"}'),u=(0,s.Kc)("yt:ai.chat.toggle-button",{en:c,ru:r});var d=n(14371),p=n(51404),h=n(83205),m=function(){var e=(0,d.w)();return{isConfigured:(0,d.d)(p.ly),toggle:function(){e((0,h.iJ)())}}},g=n(64922),x=function(e){var t=e.hideText,n=m(),s=n.isConfigured,c=n.toggle;return s?(0,g.jsx)(l.m,{content:u("context_tooltip"),children:(0,g.jsxs)(i.$,{view:"outlined-utility",size:"l",onClick:c,children:[(0,g.jsx)(a.I,{data:o.A,size:16}),!t&&u("action_button")]})}):null},f=n(28477),v=n(38458),j=function(e){var t=e.compact,n=m(),l=n.isConfigured,i=n.toggle,a=(0,d.d)(v.yc);return l&&a?(0,g.jsx)(f.F,{compact:t,item:{id:"ai-chat",title:u("context_tooltip"),icon:o.A,onItemClick:i}},"ai-chat"):null}},25773:(e,t,n)=>{n.r(t),n.d(t,{default:()=>k});var l=n(9736),i=n(77810),a=n(64965),o=n(76872),s=n(28477),c=n(97012),r=n(14371),u=n(40319),d=n(64922);const p=function(e){return(0,d.jsxs)("svg",(0,u.A)((0,u.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 34 34"},e),{},{children:[(0,d.jsx)("rect",{width:32,height:32,x:1,y:1,fill:"#FFB23E",rx:4}),(0,d.jsx)("rect",{width:33,height:33,x:.5,y:.5,stroke:"#fff",strokeOpacity:.1,rx:4.5}),(0,d.jsx)("path",{fill:"#000",fillRule:"evenodd",d:"M13.344 12.395c2.08-2.926 5.396-4.56 6.967-4.246 1.008.202.397 1.294-.33 2.53-.19.322-.377.619-.544.886-.474.757-.798 1.273-.633 1.44 2.613-2.513 4.292-2.793 5.692-2.793 1.386 0 .734 1 .021 2.092l-.021.033c-.103.158-.21.315-.313.466-.4.589-.742 1.09-.589 1.257 1.507-1.073 3.066-1.332 3.799-1.18.733.151.948.47-.063 2.034l-.967 1.451.045.072c.343.551.866 1.393.866 2.733 0 2.26-1.45 4.509-2.595 5.879-.467.559-1.174.84-1.902.84-.815 0-1.367-.754-1.703-1.496-.64-1.408-2.665-1.133-4.295.752-.381.44-.914.744-1.497.744-.925 0-1.831-.362-2.317-1.15-.467-.758-.834-1.58-.956-2.012-.859 1.326-3.21 2.055-4.891.92-1.996-1.347-1.983-3.64-1.12-5.039l1.754.997c-.258 1.017.124 1.718.858 1.718 1.06 0 1.476-1.286 2.07-3.124.539-1.663 1.224-3.779 2.664-5.804m1.285 7.304c.584-1.322.584-2.603 0-2.862-.585-.259-1.533.603-2.118 1.925-.146.33-.255.657-.328.966h2.433zm4.308-2.862c.585.259.585 1.54 0 2.862l-.013.029h-2.433a5.6 5.6 0 0 1 .329-.966c.584-1.322 1.532-2.184 2.117-1.925",clipRule:"evenodd"})]}))};var h=n(60111);const m=function(e){return(0,d.jsxs)("svg",(0,u.A)((0,u.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:[(0,d.jsx)("g",{clipPath:"url(#bug_svg__a)",children:(0,d.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.865.031a.75.75 0 0 1 .918.53l.531 1.981a5.55 5.55 0 0 1 2.384.225 2.5 2.5 0 1 1 3.535 3.535 5.5 5.5 0 0 1 .225 2.384l1.98.53a.75.75 0 0 1-.388 1.45l-1.98-.531q-.271.64-.687 1.188l1.45 1.45a.75.75 0 0 1-1.06 1.06l-1.45-1.45a5.5 5.5 0 0 1-1.188.687l.53 1.98a.75.75 0 1 1-1.448.388l-.531-1.98a5.5 5.5 0 0 1-6.144-6.143l-1.98-.532A.75.75 0 0 1 .95 5.334l1.98.531q.27-.64.687-1.188l-1.45-1.45a.75.75 0 0 1 1.06-1.06l1.45 1.45a5.5 5.5 0 0 1 1.188-.687L5.335.95a.75.75 0 0 1 .53-.919M8 12a4 4 0 1 0-3.309-1.752L8.42 6.52a.75.75 0 0 1 1.06 1.06l-3.728 3.73c.64.435 1.414.69 2.248.69",clipRule:"evenodd"})}),(0,d.jsx)("defs",{children:(0,d.jsx)("clipPath",{id:"bug_svg__a",children:(0,d.jsx)("path",{fill:"currentColor",d:"M0 0h16v16H0z"})})})]}))};var g=n(76426);const x=n.p+"assets/images/user-avatar.24a15921.svg";var f=n(33547),v=n(7787),j=n(52797),C=n(74036),w=n(13609),b=n(97082),_=(0,o.A)("yt-app-navigation");function y(e){var t=e.logoClassName,n=e.menuItems,o=e.currentUser,u=e.authWay,y=e.panelContent,k=e.panelVisible,A=e.panelClassName,N=e.onClosePanel,I=e.settingsVisible,M=e.settingsContent,B=e.toggleSettingsVisible,S=e.onChangeCompact,z=(0,r.w)(),F=i.useMemo((function(){return[{id:"panel",content:y,visible:k,className:A},{id:"settings",content:M,visible:I}]}),[k,y,I,M]),R=(0,i.useState)(!1),q=(0,l.A)(R,2),P=q[0],T=q[1],W=(0,r.d)(j.kV),D=(0,r.d)(b.T$),H=(0,a.W6)(),V=Boolean(o),K=W&&Boolean(o);return"passwd"===u&&(V=Boolean(W)&&Boolean(o),K=W&&Boolean(o)),(0,d.jsx)(s.c,{multipleTooltip:!0,panelItems:F,onClosePanel:N,menuItems:n,headerDecoration:!0,logo:{text:function(){return"YTsaurus"},textSize:22,icon:p,iconSize:36,iconClassName:t,wrapper:function(e){return(0,d.jsx)(g.A,{url:"/",theme:"primary",target:"_blank",children:e})}},onChangeCompact:K?S:void 0,renderFooter:function(e){var t=e.compact,n=[v.Ay.makeSupportContent({login:o},(function(e){var n=e.onSupportClick,l=e.supportContent;return(0,d.jsxs)(i.Fragment,{children:[(0,d.jsx)(s.F,{compact:t,item:{id:"support",title:"Report a bug",icon:m,onItemClick:n}},"support"),l]})})),(0,d.jsx)(w.o,{compact:t},"ai-chat")];return K&&n.push((0,d.jsx)(s.F,{compact:t,item:{id:"settings",title:"Settings",onItemClick:B,icon:h.A}},"settings")),V&&n.push((0,d.jsx)(s.F,{compact:t,item:{id:"user",title:o,onItemClick:function(){T(!P)},itemWrapper:function(e,t){return t({title:e.title,icon:(0,d.jsx)("img",{className:_("user-icon"),width:40,height:40,src:x})})}},enableTooltip:!P,popupVisible:P,onClosePopup:function(){return T(!1)},renderPopupContent:function(){return(0,d.jsx)("div",{className:_("settings-ul"),children:(0,d.jsxs)(c.W,{children:["passwd"===u&&(0,d.jsx)(c.W.Item,{onClick:function(){return H.push("/".concat(f.YT.cluster,"/change-password"))},children:"Change password"}),D&&(0,d.jsx)(c.W.Item,{onClick:function(){return(0,C.t)().then((function(e){z(e.openManageTokensModal()),T(!1)}))},children:"Manage tokens"}),(0,d.jsx)(c.W.Item,{href:"/api/yt/logout",children:"Logout"})]})})}},"user")),(0,d.jsx)(d.Fragment,{children:n})}})}const k=i.memo(y)},38458:(e,t,n)=>{n.d(t,{Kr:()=>o,pt:()=>s,yc:()=>a});var l=n(18472),i=n(95942),a=(0,l.Mz)([i.u],(function(e){return e["global::development::showAiChat"]})),o=(0,l.Mz)([i.u],(function(e){return e["global::development::yqlTypes"]})),s=(0,l.Mz)([i.u],(function(e){return e["global::development::redirectToBetaSwitched"]}))},60111:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(40319),i=n(64922);const a=function(e){return(0,i.jsx)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0",clipRule:"evenodd"})}))}},87111:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(40319),i=n(64922);const a=function(e){return(0,i.jsxs)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18"},e),{},{children:[(0,i.jsx)("g",{clipPath:"url(#ai-chat-icon_svg__a)",children:(0,i.jsx)("path",{fill:"url(#ai-chat-icon_svg__b)",d:"M14.625 11.25c.382 0 .716.256.815.625.261.975.96 1.674 1.935 1.935a.844.844 0 0 1 0 1.63 2.66 2.66 0 0 0-1.935 1.935.844.844 0 0 1-1.63 0 2.66 2.66 0 0 0-1.935-1.935.844.844 0 0 1 0-1.63 2.66 2.66 0 0 0 1.935-1.935l.048-.133a.84.84 0 0 1 .767-.492M7.875 0c.55 0 1.02.398 1.11.94.313 1.879.916 3.151 1.795 4.03s2.151 1.482 4.03 1.795a1.125 1.125 0 0 1 0 2.22c-1.879.313-3.151.916-4.03 1.795s-1.482 2.151-1.795 4.03a1.125 1.125 0 0 1-2.22 0c-.313-1.879-.916-3.151-1.795-4.03S2.82 9.298.94 8.985a1.125 1.125 0 0 1 0-2.22C2.82 6.452 4.091 5.85 4.97 4.97S6.452 2.82 6.765.94l.021-.1C6.914.35 7.36 0 7.875 0"})}),(0,i.jsxs)("defs",{children:[(0,i.jsxs)("linearGradient",{id:"ai-chat-icon_svg__b",x1:4.53,x2:16.294,y1:10.142,y2:5.661,gradientUnits:"userSpaceOnUse",children:[(0,i.jsx)("stop",{stopColor:"#5B82F6"}),(0,i.jsx)("stop",{offset:.881,stopColor:"#DD68F7"})]}),(0,i.jsx)("clipPath",{id:"ai-chat-icon_svg__a",children:(0,i.jsx)("path",{fill:"#fff",d:"M0 0h18v18H0z"})})]})]}))}},97012:(e,t,n)=>{n.d(t,{W:()=>g});var l=n(64922),i=n(77810),a=n(47999),o=n(56854),s=n(49533);const c=(0,a.om)("menu"),r=i.forwardRef((function({label:e,children:t,style:n,className:i,qa:a},o){const r=(0,s.u)();return(0,l.jsx)("li",{ref:o,className:c("list-group-item"),children:(0,l.jsxs)("div",{style:n,className:c("group",i),"data-qa":a,children:[e&&(0,l.jsx)("div",{id:r,className:c("group-label"),children:e}),(0,l.jsx)("ul",{role:"group","aria-labelledby":r,className:c("group-list"),children:t})]})})}));var u=n(91689),d=n(5770);const p=(0,a.om)("menu"),h=i.forwardRef((function({iconStart:e,iconEnd:t,title:n,disabled:a,active:o,selected:s,href:c,target:r,rel:h,onClick:m,style:g,className:x,contentClassName:f,theme:v,extraProps:j,children:C,qa:w},b){const{onKeyDown:_}=(0,u.N)(m),y=i.useCallback((e=>{d.o.publish({componentId:"MenuItem",eventId:"click",domEvent:e})}),[]),k={role:"menuitem",onKeyDown:m&&!a?_:void 0},A={title:n,onClick:a?void 0:m,onClickCapture:a?void 0:y,style:g,tabIndex:a?-1:0,className:p("item",{disabled:a,active:o,selected:s,theme:v,interactive:Boolean(m)||Boolean(c)},x),"data-qa":w},N=[e&&(0,l.jsx)("div",{className:p("item-icon"),children:e},"icon-start"),(0,l.jsx)("div",{className:p("item-content",f),children:C},"content"),t&&(0,l.jsx)("div",{className:p("item-icon-end"),children:t},"icon-end")];let I;return I=c?(0,l.jsx)("a",{...k,...j,...A,href:c,target:r,rel:h,children:N}):(0,l.jsx)("div",{...k,...j,...A,children:N}),(0,l.jsx)("li",{ref:b,className:p("list-item"),children:I})})),m=(0,a.om)("menu"),g=i.forwardRef((function({size:e="m",children:t,style:n,className:i,qa:a,...s},c){return(0,l.jsx)("ul",{...(0,o.$)(s,{labelable:!0}),ref:c,role:"menu",style:n,className:m({size:e},i),"data-qa":a,children:t})}));g.Item=h,g.Group=r}}]);
2
- //# sourceMappingURL=app-navigation.b86557c0.chunk.js.map
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[9999],{13609:(e,t,n)=>{n.d(t,{D:()=>x,o:()=>j}),n(77810);var l=n(1435),i=n(1335),a=n(45760),o=n(87111),s=n(92611);const c=JSON.parse('{"context_tooltip":"AI chat","action_button":"Ask AI"}'),r=JSON.parse('{"context_tooltip":"AI чат","action_button":"Спросить AI"}'),u=(0,s.Kc)("yt:ai.chat.toggle-button",{en:c,ru:r});var d=n(14371),p=n(51404),h=n(72563),m=function(){var e=(0,d.w)();return{isConfigured:(0,d.d)(p.ly),toggle:function(){e((0,h.iJ)())}}},g=n(64922),x=function(e){var t=e.hideText,n=m(),s=n.isConfigured,c=n.toggle;return s?(0,g.jsx)(l.m,{content:u("context_tooltip"),children:(0,g.jsxs)(i.$,{view:"outlined-utility",size:"l",onClick:c,children:[(0,g.jsx)(a.I,{data:o.A,size:16}),!t&&u("action_button")]})}):null},f=n(28477),v=n(38458),j=function(e){var t=e.compact,n=m(),l=n.isConfigured,i=n.toggle,a=(0,d.d)(v.yc);return l&&a?(0,g.jsx)(f.F,{compact:t,item:{id:"ai-chat",title:u("context_tooltip"),icon:o.A,onItemClick:i}},"ai-chat"):null}},25773:(e,t,n)=>{n.r(t),n.d(t,{default:()=>k});var l=n(9736),i=n(77810),a=n(64965),o=n(76872),s=n(28477),c=n(97012),r=n(14371),u=n(40319),d=n(64922);const p=function(e){return(0,d.jsxs)("svg",(0,u.A)((0,u.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 34 34"},e),{},{children:[(0,d.jsx)("rect",{width:32,height:32,x:1,y:1,fill:"#FFB23E",rx:4}),(0,d.jsx)("rect",{width:33,height:33,x:.5,y:.5,stroke:"#fff",strokeOpacity:.1,rx:4.5}),(0,d.jsx)("path",{fill:"#000",fillRule:"evenodd",d:"M13.344 12.395c2.08-2.926 5.396-4.56 6.967-4.246 1.008.202.397 1.294-.33 2.53-.19.322-.377.619-.544.886-.474.757-.798 1.273-.633 1.44 2.613-2.513 4.292-2.793 5.692-2.793 1.386 0 .734 1 .021 2.092l-.021.033c-.103.158-.21.315-.313.466-.4.589-.742 1.09-.589 1.257 1.507-1.073 3.066-1.332 3.799-1.18.733.151.948.47-.063 2.034l-.967 1.451.045.072c.343.551.866 1.393.866 2.733 0 2.26-1.45 4.509-2.595 5.879-.467.559-1.174.84-1.902.84-.815 0-1.367-.754-1.703-1.496-.64-1.408-2.665-1.133-4.295.752-.381.44-.914.744-1.497.744-.925 0-1.831-.362-2.317-1.15-.467-.758-.834-1.58-.956-2.012-.859 1.326-3.21 2.055-4.891.92-1.996-1.347-1.983-3.64-1.12-5.039l1.754.997c-.258 1.017.124 1.718.858 1.718 1.06 0 1.476-1.286 2.07-3.124.539-1.663 1.224-3.779 2.664-5.804m1.285 7.304c.584-1.322.584-2.603 0-2.862-.585-.259-1.533.603-2.118 1.925-.146.33-.255.657-.328.966h2.433zm4.308-2.862c.585.259.585 1.54 0 2.862l-.013.029h-2.433a5.6 5.6 0 0 1 .329-.966c.584-1.322 1.532-2.184 2.117-1.925",clipRule:"evenodd"})]}))};var h=n(60111);const m=function(e){return(0,d.jsxs)("svg",(0,u.A)((0,u.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:[(0,d.jsx)("g",{clipPath:"url(#bug_svg__a)",children:(0,d.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.865.031a.75.75 0 0 1 .918.53l.531 1.981a5.55 5.55 0 0 1 2.384.225 2.5 2.5 0 1 1 3.535 3.535 5.5 5.5 0 0 1 .225 2.384l1.98.53a.75.75 0 0 1-.388 1.45l-1.98-.531q-.271.64-.687 1.188l1.45 1.45a.75.75 0 0 1-1.06 1.06l-1.45-1.45a5.5 5.5 0 0 1-1.188.687l.53 1.98a.75.75 0 1 1-1.448.388l-.531-1.98a5.5 5.5 0 0 1-6.144-6.143l-1.98-.532A.75.75 0 0 1 .95 5.334l1.98.531q.27-.64.687-1.188l-1.45-1.45a.75.75 0 0 1 1.06-1.06l1.45 1.45a5.5 5.5 0 0 1 1.188-.687L5.335.95a.75.75 0 0 1 .53-.919M8 12a4 4 0 1 0-3.309-1.752L8.42 6.52a.75.75 0 0 1 1.06 1.06l-3.728 3.73c.64.435 1.414.69 2.248.69",clipRule:"evenodd"})}),(0,d.jsx)("defs",{children:(0,d.jsx)("clipPath",{id:"bug_svg__a",children:(0,d.jsx)("path",{fill:"currentColor",d:"M0 0h16v16H0z"})})})]}))};var g=n(76426);const x=n.p+"assets/images/user-avatar.24a15921.svg";var f=n(33547),v=n(7787),j=n(52797),C=n(74036),w=n(13609),b=n(97082),_=(0,o.A)("yt-app-navigation");function y(e){var t=e.logoClassName,n=e.menuItems,o=e.currentUser,u=e.authWay,y=e.panelContent,k=e.panelVisible,A=e.panelClassName,N=e.onClosePanel,I=e.settingsVisible,M=e.settingsContent,B=e.toggleSettingsVisible,S=e.onChangeCompact,z=(0,r.w)(),F=i.useMemo((function(){return[{id:"panel",content:y,visible:k,className:A},{id:"settings",content:M,visible:I}]}),[k,y,I,M]),R=(0,i.useState)(!1),q=(0,l.A)(R,2),P=q[0],T=q[1],W=(0,r.d)(j.kV),D=(0,r.d)(b.T$),H=(0,a.W6)(),V=Boolean(o),K=W&&Boolean(o);return"passwd"===u&&(V=Boolean(W)&&Boolean(o),K=W&&Boolean(o)),(0,d.jsx)(s.c,{multipleTooltip:!0,panelItems:F,onClosePanel:N,menuItems:n,headerDecoration:!0,logo:{text:function(){return"YTsaurus"},textSize:22,icon:p,iconSize:36,iconClassName:t,wrapper:function(e){return(0,d.jsx)(g.A,{url:"/",theme:"primary",target:"_blank",children:e})}},onChangeCompact:K?S:void 0,renderFooter:function(e){var t=e.compact,n=[v.Ay.makeSupportContent({login:o},(function(e){var n=e.onSupportClick,l=e.supportContent;return(0,d.jsxs)(i.Fragment,{children:[(0,d.jsx)(s.F,{compact:t,item:{id:"support",title:"Report a bug",icon:m,onItemClick:n}},"support"),l]})})),(0,d.jsx)(w.o,{compact:t},"ai-chat")];return K&&n.push((0,d.jsx)(s.F,{compact:t,item:{id:"settings",title:"Settings",onItemClick:B,icon:h.A}},"settings")),V&&n.push((0,d.jsx)(s.F,{compact:t,item:{id:"user",title:o,onItemClick:function(){T(!P)},itemWrapper:function(e,t){return t({title:e.title,icon:(0,d.jsx)("img",{className:_("user-icon"),width:40,height:40,src:x})})}},enableTooltip:!P,popupVisible:P,onClosePopup:function(){return T(!1)},renderPopupContent:function(){return(0,d.jsx)("div",{className:_("settings-ul"),children:(0,d.jsxs)(c.W,{children:["passwd"===u&&(0,d.jsx)(c.W.Item,{onClick:function(){return H.push("/".concat(f.YT.cluster,"/change-password"))},children:"Change password"}),D&&(0,d.jsx)(c.W.Item,{onClick:function(){return(0,C.t)().then((function(e){z(e.openManageTokensModal()),T(!1)}))},children:"Manage tokens"}),(0,d.jsx)(c.W.Item,{href:"/api/yt/logout",children:"Logout"})]})})}},"user")),(0,d.jsx)(d.Fragment,{children:n})}})}const k=i.memo(y)},38458:(e,t,n)=>{n.d(t,{Kr:()=>o,pt:()=>s,yc:()=>a});var l=n(18472),i=n(95942),a=(0,l.Mz)([i.u],(function(e){return e["global::development::showAiChat"]})),o=(0,l.Mz)([i.u],(function(e){return e["global::development::yqlTypes"]})),s=(0,l.Mz)([i.u],(function(e){return e["global::development::redirectToBetaSwitched"]}))},60111:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(40319),i=n(64922);const a=function(e){return(0,i.jsx)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0",clipRule:"evenodd"})}))}},87111:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(40319),i=n(64922);const a=function(e){return(0,i.jsxs)("svg",(0,l.A)((0,l.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18"},e),{},{children:[(0,i.jsx)("g",{clipPath:"url(#ai-chat-icon_svg__a)",children:(0,i.jsx)("path",{fill:"url(#ai-chat-icon_svg__b)",d:"M14.625 11.25c.382 0 .716.256.815.625.261.975.96 1.674 1.935 1.935a.844.844 0 0 1 0 1.63 2.66 2.66 0 0 0-1.935 1.935.844.844 0 0 1-1.63 0 2.66 2.66 0 0 0-1.935-1.935.844.844 0 0 1 0-1.63 2.66 2.66 0 0 0 1.935-1.935l.048-.133a.84.84 0 0 1 .767-.492M7.875 0c.55 0 1.02.398 1.11.94.313 1.879.916 3.151 1.795 4.03s2.151 1.482 4.03 1.795a1.125 1.125 0 0 1 0 2.22c-1.879.313-3.151.916-4.03 1.795s-1.482 2.151-1.795 4.03a1.125 1.125 0 0 1-2.22 0c-.313-1.879-.916-3.151-1.795-4.03S2.82 9.298.94 8.985a1.125 1.125 0 0 1 0-2.22C2.82 6.452 4.091 5.85 4.97 4.97S6.452 2.82 6.765.94l.021-.1C6.914.35 7.36 0 7.875 0"})}),(0,i.jsxs)("defs",{children:[(0,i.jsxs)("linearGradient",{id:"ai-chat-icon_svg__b",x1:4.53,x2:16.294,y1:10.142,y2:5.661,gradientUnits:"userSpaceOnUse",children:[(0,i.jsx)("stop",{stopColor:"#5B82F6"}),(0,i.jsx)("stop",{offset:.881,stopColor:"#DD68F7"})]}),(0,i.jsx)("clipPath",{id:"ai-chat-icon_svg__a",children:(0,i.jsx)("path",{fill:"#fff",d:"M0 0h18v18H0z"})})]})]}))}},97012:(e,t,n)=>{n.d(t,{W:()=>g});var l=n(64922),i=n(77810),a=n(47999),o=n(56854),s=n(49533);const c=(0,a.om)("menu"),r=i.forwardRef((function({label:e,children:t,style:n,className:i,qa:a},o){const r=(0,s.u)();return(0,l.jsx)("li",{ref:o,className:c("list-group-item"),children:(0,l.jsxs)("div",{style:n,className:c("group",i),"data-qa":a,children:[e&&(0,l.jsx)("div",{id:r,className:c("group-label"),children:e}),(0,l.jsx)("ul",{role:"group","aria-labelledby":r,className:c("group-list"),children:t})]})})}));var u=n(91689),d=n(5770);const p=(0,a.om)("menu"),h=i.forwardRef((function({iconStart:e,iconEnd:t,title:n,disabled:a,active:o,selected:s,href:c,target:r,rel:h,onClick:m,style:g,className:x,contentClassName:f,theme:v,extraProps:j,children:C,qa:w},b){const{onKeyDown:_}=(0,u.N)(m),y=i.useCallback((e=>{d.o.publish({componentId:"MenuItem",eventId:"click",domEvent:e})}),[]),k={role:"menuitem",onKeyDown:m&&!a?_:void 0},A={title:n,onClick:a?void 0:m,onClickCapture:a?void 0:y,style:g,tabIndex:a?-1:0,className:p("item",{disabled:a,active:o,selected:s,theme:v,interactive:Boolean(m)||Boolean(c)},x),"data-qa":w},N=[e&&(0,l.jsx)("div",{className:p("item-icon"),children:e},"icon-start"),(0,l.jsx)("div",{className:p("item-content",f),children:C},"content"),t&&(0,l.jsx)("div",{className:p("item-icon-end"),children:t},"icon-end")];let I;return I=c?(0,l.jsx)("a",{...k,...j,...A,href:c,target:r,rel:h,children:N}):(0,l.jsx)("div",{...k,...j,...A,children:N}),(0,l.jsx)("li",{ref:b,className:p("list-item"),children:I})})),m=(0,a.om)("menu"),g=i.forwardRef((function({size:e="m",children:t,style:n,className:i,qa:a,...s},c){return(0,l.jsx)("ul",{...(0,o.$)(s,{labelable:!0}),ref:c,role:"menu",style:n,className:m({size:e},i),"data-qa":a,children:t})}));g.Item=h,g.Group=r}}]);
2
+ //# sourceMappingURL=app-navigation.38835895.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"js/app-navigation.b86557c0.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/useChatToggle.ts","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/ChatToggleButton.tsx","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/ChatToggleFooterButton.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/appLogo.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bug.svg","webpack://@ytsaurus/ui/./src/ui/containers/AppNavigation/AppNavigationComponent.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/settings/settings-development.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/gear.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/ai-chat-icon.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/MenuGroup.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/MenuItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/Menu.tsx"],"sourcesContent":["import {addI18Keysets} from '../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:ai.chat.toggle-button', {en, ru});\n","import {useDispatch, useSelector} from '../../../store/redux-hooks';\nimport {selectAiChatConfigured} from '../../../store/selectors/ai/chat';\nimport {toggleChatSidePanel} from '../../../store/actions/ai/chat';\n\nexport const useChatToggle = () => {\n const dispatch = useDispatch();\n const isConfigured = useSelector(selectAiChatConfigured);\n\n const handleToggle = () => {\n dispatch(toggleChatSidePanel());\n };\n\n return {\n isConfigured,\n toggle: handleToggle,\n };\n};\n","import React, {FC} from 'react';\nimport {Button, Icon, Tooltip} from '@gravity-ui/uikit';\nimport AiIcon from '../../../assets/img/svg/icons/ai-chat-icon.svg';\nimport i18n from './i18n';\nimport {useChatToggle} from './useChatToggle';\n\ntype Props = {\n hideText?: boolean;\n};\n\nexport const ChatToggleButton: FC<Props> = ({hideText}) => {\n const {isConfigured, toggle} = useChatToggle();\n\n if (!isConfigured) return null;\n\n return (\n <Tooltip content={i18n('context_tooltip')}>\n <Button view=\"outlined-utility\" size=\"l\" onClick={toggle}>\n <Icon data={AiIcon} size={16} />\n {!hideText && i18n('action_button')}\n </Button>\n </Tooltip>\n );\n};\n","import React, {FC} from 'react';\nimport {FooterItem} from '@gravity-ui/navigation';\nimport AiIcon from '../../../assets/img/svg/icons/ai-chat-icon.svg';\nimport i18n from './i18n';\nimport {useChatToggle} from './useChatToggle';\nimport {useSelector} from '../../../store/redux-hooks';\nimport {selectShowAiChat} from '../../../store/selectors/settings/settings-development';\n\ntype Props = {\n compact: boolean;\n};\n\nexport const ChatToggleFooterButton: FC<Props> = ({compact}) => {\n const {isConfigured, toggle} = useChatToggle();\n const showAiChat = useSelector(selectShowAiChat);\n\n if (!isConfigured || !showAiChat) return null;\n\n return (\n <FooterItem\n key=\"ai-chat\"\n compact={compact}\n item={{\n id: 'ai-chat',\n title: i18n('context_tooltip'),\n icon: AiIcon,\n onItemClick: toggle,\n }}\n />\n );\n};\n","const SvgAppLogo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 34 34\" {...props}><rect width={32} height={32} x={1} y={1} fill=\"#FFB23E\" rx={4} /><rect width={33} height={33} x={0.5} y={0.5} stroke=\"#fff\" strokeOpacity={0.1} rx={4.5} /><path fill=\"#000\" fillRule=\"evenodd\" d=\"M13.344 12.395c2.08-2.926 5.396-4.56 6.967-4.246 1.008.202.397 1.294-.33 2.53-.19.322-.377.619-.544.886-.474.757-.798 1.273-.633 1.44 2.613-2.513 4.292-2.793 5.692-2.793 1.386 0 .734 1 .021 2.092l-.021.033c-.103.158-.21.315-.313.466-.4.589-.742 1.09-.589 1.257 1.507-1.073 3.066-1.332 3.799-1.18.733.151.948.47-.063 2.034l-.967 1.451.045.072c.343.551.866 1.393.866 2.733 0 2.26-1.45 4.509-2.595 5.879-.467.559-1.174.84-1.902.84-.815 0-1.367-.754-1.703-1.496-.64-1.408-2.665-1.133-4.295.752-.381.44-.914.744-1.497.744-.925 0-1.831-.362-2.317-1.15-.467-.758-.834-1.58-.956-2.012-.859 1.326-3.21 2.055-4.891.92-1.996-1.347-1.983-3.64-1.12-5.039l1.754.997c-.258 1.017.124 1.718.858 1.718 1.06 0 1.476-1.286 2.07-3.124.539-1.663 1.224-3.779 2.664-5.804m1.285 7.304c.584-1.322.584-2.603 0-2.862-.585-.259-1.533.603-2.118 1.925-.146.33-.255.657-.328.966h2.433zm4.308-2.862c.585.259.585 1.54 0 2.862l-.013.029h-2.433a5.6 5.6 0 0 1 .329-.966c.584-1.322 1.532-2.184 2.117-1.925\" clipRule=\"evenodd\" /></svg>;\nexport default SvgAppLogo;","const SvgBug = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#bug_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.865.031a.75.75 0 0 1 .918.53l.531 1.981a5.55 5.55 0 0 1 2.384.225 2.5 2.5 0 1 1 3.535 3.535 5.5 5.5 0 0 1 .225 2.384l1.98.53a.75.75 0 0 1-.388 1.45l-1.98-.531q-.271.64-.687 1.188l1.45 1.45a.75.75 0 0 1-1.06 1.06l-1.45-1.45a5.5 5.5 0 0 1-1.188.687l.53 1.98a.75.75 0 1 1-1.448.388l-.531-1.98a5.5 5.5 0 0 1-6.144-6.143l-1.98-.532A.75.75 0 0 1 .95 5.334l1.98.531q.27-.64.687-1.188l-1.45-1.45a.75.75 0 0 1 1.06-1.06l1.45 1.45a5.5 5.5 0 0 1 1.188-.687L5.335.95a.75.75 0 0 1 .53-.919M8 12a4 4 0 1 0-3.309-1.752L8.42 6.52a.75.75 0 0 1 1.06 1.06l-3.728 3.73c.64.435 1.414.69 2.248.69\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"bug_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgBug;","import React, {useState} from 'react';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {FooterItem, PageLayoutAside} from '@gravity-ui/navigation';\nimport {Menu} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../store/redux-hooks';\n\nimport Logo from '../../assets/img/svg/appLogo.svg';\nimport GearIcon from '@gravity-ui/icons/svgs/gear.svg';\nimport BugIcon from '@gravity-ui/icons/svgs/bug.svg';\nimport Link from '../../components/Link/Link';\nimport unknown from '../../assets/img/user-avatar.svg';\nimport {AppNavigationProps} from './AppNavigationPageLayout';\nimport {YT} from '../../config/yt-config';\nimport UIFactory from '../../UIFactory';\nimport {getSettingsCluster} from '../../store/selectors/global';\nimport {importManageTokens} from '../ManageTokens';\nimport {ChatToggleFooterButton} from '../AiChat/ChatToggleButton';\n\nimport './AppNavigationComponent.scss';\nimport {getAllowManageTokens} from '../../store/selectors/manage-tokens';\n\nconst block = cn('yt-app-navigation');\n\nfunction AppNavigationComponent({\n logoClassName,\n menuItems,\n currentUser,\n authWay,\n\n panelContent,\n panelVisible,\n panelClassName,\n onClosePanel,\n\n settingsVisible,\n settingsContent,\n toggleSettingsVisible,\n\n onChangeCompact,\n}: Omit<AppNavigationProps, 'compact' | 'rememberSize' | 'className'>) {\n const dispatch = useDispatch();\n const panelItems = React.useMemo(() => {\n return [\n {\n id: 'panel',\n content: panelContent,\n visible: panelVisible,\n className: panelClassName,\n },\n {\n id: 'settings',\n content: settingsContent,\n visible: settingsVisible,\n },\n ];\n }, [panelVisible, panelContent, settingsVisible, settingsContent]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const settingsCluster = useSelector(getSettingsCluster);\n const isManageTokensMenuVisible = useSelector(getAllowManageTokens);\n const history = useHistory();\n\n let showUserIcon = Boolean(currentUser);\n let showSettings = settingsCluster && Boolean(currentUser);\n\n if (authWay === 'passwd') {\n showUserIcon = Boolean(settingsCluster) && Boolean(currentUser);\n showSettings = settingsCluster && Boolean(currentUser);\n }\n\n return (\n <PageLayoutAside\n multipleTooltip\n panelItems={panelItems}\n onClosePanel={onClosePanel}\n menuItems={menuItems}\n headerDecoration\n logo={{\n text: () => 'YTsaurus',\n textSize: 22,\n icon: Logo,\n iconSize: 36,\n iconClassName: logoClassName,\n wrapper: (node) => {\n return (\n <Link url={'/'} theme={'primary'} target=\"_blank\">\n {node}\n </Link>\n );\n },\n }}\n onChangeCompact={showSettings ? onChangeCompact : undefined}\n renderFooter={({compact}) => {\n const footerItems = [\n UIFactory.makeSupportContent(\n {login: currentUser},\n ({onSupportClick, supportContent}) => (\n <React.Fragment>\n <FooterItem\n key=\"support\"\n compact={compact}\n item={{\n id: 'support',\n title: 'Report a bug',\n icon: BugIcon,\n onItemClick: onSupportClick,\n }}\n />\n {supportContent}\n </React.Fragment>\n ),\n ),\n <ChatToggleFooterButton key=\"ai-chat\" compact={compact} />,\n ];\n\n if (showSettings) {\n footerItems.push(\n <FooterItem\n key=\"settings\"\n compact={compact}\n item={{\n id: 'settings',\n title: 'Settings',\n onItemClick: toggleSettingsVisible,\n icon: GearIcon,\n }}\n />,\n );\n }\n\n if (showUserIcon) {\n footerItems.push(\n <FooterItem\n key=\"user\"\n compact={compact}\n item={{\n id: 'user',\n title: currentUser,\n onItemClick: () => {\n setPopupVisible(!popupVisible);\n },\n itemWrapper: ({title}: any, makeItem: any) => {\n return makeItem({\n title,\n icon: (\n <img\n className={block('user-icon')}\n width={40}\n height={40}\n src={unknown}\n />\n ),\n });\n },\n }}\n enableTooltip={!popupVisible}\n popupVisible={popupVisible}\n onClosePopup={() => setPopupVisible(false)}\n renderPopupContent={() => {\n return (\n <div className={block('settings-ul')}>\n <Menu>\n {authWay === 'passwd' && (\n <Menu.Item\n onClick={() =>\n history.push(\n `/${YT.cluster}/change-password`,\n )\n }\n >\n Change password\n </Menu.Item>\n )}\n {isManageTokensMenuVisible && (\n <Menu.Item\n onClick={() =>\n importManageTokens().then((actions) => {\n dispatch(\n actions.openManageTokensModal(),\n );\n setPopupVisible(false);\n })\n }\n >\n Manage tokens\n </Menu.Item>\n )}\n <Menu.Item href={'/api/yt/logout'}>Logout</Menu.Item>\n </Menu>\n </div>\n );\n }}\n />,\n );\n }\n\n return <>{footerItems}</>;\n }}\n />\n );\n}\n\nexport default React.memo(AppNavigationComponent);\n","import {createSelector} from 'reselect';\nimport {getSettingsData} from './settings-base';\n\nexport const selectShowAiChat = createSelector([getSettingsData], (data) => {\n return data['global::development::showAiChat'];\n});\n\nexport const shouldUseYqlTypes = createSelector([getSettingsData], (data) => {\n return data['global::development::yqlTypes'];\n});\n\nexport const isRedirectToBetaSwitched = createSelector([getSettingsData], (data) => {\n return data['global::development::redirectToBetaSwitched'];\n});\n","const SvgGear = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgGear;","const SvgAiChatIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 18 18\" {...props}><g clipPath=\"url(#ai-chat-icon_svg__a)\"><path fill=\"url(#ai-chat-icon_svg__b)\" d=\"M14.625 11.25c.382 0 .716.256.815.625.261.975.96 1.674 1.935 1.935a.844.844 0 0 1 0 1.63 2.66 2.66 0 0 0-1.935 1.935.844.844 0 0 1-1.63 0 2.66 2.66 0 0 0-1.935-1.935.844.844 0 0 1 0-1.63 2.66 2.66 0 0 0 1.935-1.935l.048-.133a.84.84 0 0 1 .767-.492M7.875 0c.55 0 1.02.398 1.11.94.313 1.879.916 3.151 1.795 4.03s2.151 1.482 4.03 1.795a1.125 1.125 0 0 1 0 2.22c-1.879.313-3.151.916-4.03 1.795s-1.482 2.151-1.795 4.03a1.125 1.125 0 0 1-2.22 0c-.313-1.879-.916-3.151-1.795-4.03S2.82 9.298.94 8.985a1.125 1.125 0 0 1 0-2.22C2.82 6.452 4.091 5.85 4.97 4.97S6.452 2.82 6.765.94l.021-.1C6.914.35 7.36 0 7.875 0\" /></g><defs><linearGradient id=\"ai-chat-icon_svg__b\" x1={4.53} x2={16.294} y1={10.142} y2={5.661} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#5B82F6\" /><stop offset={0.881} stopColor=\"#DD68F7\" /></linearGradient><clipPath id=\"ai-chat-icon_svg__a\"><path fill=\"#fff\" d=\"M0 0h18v18H0z\" /></clipPath></defs></svg>;\nexport default SvgAiChatIcon;","import * as React from 'react';\n\nimport {useUniqId} from '../../hooks';\nimport type {DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\n\nconst b = block('menu');\n\nexport interface MenuGroupProps extends DOMProps, QAProps {\n label?: string;\n children?: React.ReactNode;\n}\n\nexport const MenuGroup = React.forwardRef<HTMLLIElement, MenuGroupProps>(function MenuGroup(\n {label, children, style, className, qa},\n ref,\n) {\n const labelId = useUniqId();\n\n return (\n <li ref={ref} className={b('list-group-item')}>\n <div style={style} className={b('group', className)} data-qa={qa}>\n {label && (\n <div id={labelId} className={b('group-label')}>\n {label}\n </div>\n )}\n <ul role=\"group\" aria-labelledby={labelId} className={b('group-list')}>\n {children}\n </ul>\n </div>\n </li>\n );\n});\n","'use client';\n\nimport * as React from 'react';\n\nimport {useActionHandlers} from '../../hooks';\nimport type {DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\nimport {eventBroker} from '../utils/event-broker';\n\nconst b = block('menu');\n\nexport interface MenuItemProps extends DOMProps, QAProps {\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n title?: string;\n disabled?: boolean;\n active?: boolean;\n selected?: boolean;\n href?: string;\n target?: string;\n contentClassName?: string;\n rel?: string;\n onClick?: React.MouseEventHandler<HTMLDivElement | HTMLAnchorElement>;\n theme?: 'normal' | 'danger';\n extraProps?:\n | React.HTMLAttributes<HTMLDivElement>\n | React.AnchorHTMLAttributes<HTMLAnchorElement>;\n children?: React.ReactNode;\n}\n\nexport const MenuItem = React.forwardRef<HTMLElement, MenuItemProps>(function MenuItem(\n {\n iconStart,\n iconEnd,\n title,\n disabled,\n active,\n selected,\n href,\n target,\n rel,\n onClick,\n style,\n className,\n contentClassName,\n theme,\n extraProps,\n children,\n qa,\n },\n ref,\n) {\n const {onKeyDown} = useActionHandlers(onClick);\n\n const handleClickCapture = React.useCallback((event: React.SyntheticEvent) => {\n eventBroker.publish({\n componentId: 'MenuItem',\n eventId: 'click',\n domEvent: event,\n });\n }, []);\n\n const defaultProps = {\n role: 'menuitem',\n onKeyDown: onClick && !disabled ? onKeyDown : undefined,\n };\n\n const commonProps = {\n title,\n onClick: disabled ? undefined : onClick,\n onClickCapture: disabled ? undefined : handleClickCapture,\n style,\n tabIndex: disabled ? -1 : 0,\n className: b(\n 'item',\n {disabled, active, selected, theme, interactive: Boolean(onClick) || Boolean(href)},\n className,\n ),\n 'data-qa': qa,\n };\n const content = [\n iconStart && (\n <div key=\"icon-start\" className={b('item-icon')}>\n {iconStart}\n </div>\n ),\n <div key=\"content\" className={b('item-content', contentClassName)}>\n {children}\n </div>,\n iconEnd && (\n <div key={'icon-end'} className={b('item-icon-end')}>\n {iconEnd}\n </div>\n ),\n ];\n let item;\n\n if (href) {\n item = (\n <a\n {...defaultProps}\n {...(extraProps as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...commonProps}\n href={href}\n target={target}\n rel={rel}\n >\n {content}\n </a>\n );\n } else {\n item = (\n <div\n {...defaultProps}\n {...(extraProps as React.HTMLAttributes<HTMLDivElement>)}\n {...commonProps}\n >\n {content}\n </div>\n );\n }\n\n return (\n <li ref={ref as React.ForwardedRef<HTMLLIElement>} className={b('list-item')}>\n {item}\n </li>\n );\n});\n","'use client';\n\nimport * as React from 'react';\n\nimport type {AriaLabelingProps, DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {MenuGroup} from './MenuGroup';\nimport type {MenuGroupProps} from './MenuGroup';\nimport {MenuItem} from './MenuItem';\nimport type {MenuItemProps} from './MenuItem';\n\nimport './Menu.scss';\n\nconst b = block('menu');\n\nexport type MenuSize = 's' | 'm' | 'l' | 'xl';\n\nexport interface MenuProps extends AriaLabelingProps, DOMProps, QAProps {\n size?: MenuSize;\n children?: React.ReactNode;\n}\n\nexport type {MenuItemProps, MenuGroupProps};\n\ninterface MenuComponent\n extends React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLUListElement>> {\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n}\n\n// TODO: keyboard navigation, Up/Down arrows and Enter\nexport const Menu = React.forwardRef<HTMLUListElement, MenuProps>(function Menu(\n {size = 'm', children, style, className, qa, ...restProps},\n ref,\n) {\n return (\n <ul\n {...filterDOMProps(restProps, {labelable: true})}\n ref={ref}\n role=\"menu\"\n // tabIndex={0}\n style={style}\n className={b({size}, className)}\n data-qa={qa}\n >\n {children}\n </ul>\n );\n}) as MenuComponent;\n\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n"],"names":["addI18Keysets","en","ru","useChatToggle","dispatch","useDispatch","isConfigured","useSelector","selectAiChatConfigured","toggle","toggleChatSidePanel","ChatToggleButton","_ref","hideText","_useChatToggle","_jsx","Tooltip","content","i18n","children","_jsxs","Button","view","size","onClick","Icon","data","AiIcon","ChatToggleFooterButton","compact","showAiChat","selectShowAiChat","FooterItem","item","id","title","icon","onItemClick","props","_objectSpread","xmlns","fill","viewBox","width","height","x","y","rx","stroke","strokeOpacity","fillRule","d","clipRule","clipPath","block","cn","AppNavigationComponent","logoClassName","menuItems","currentUser","authWay","panelContent","panelVisible","panelClassName","onClosePanel","settingsVisible","settingsContent","toggleSettingsVisible","onChangeCompact","panelItems","React","visible","className","_useState","useState","_useState2","_slicedToArray","popupVisible","setPopupVisible","settingsCluster","getSettingsCluster","isManageTokensMenuVisible","getAllowManageTokens","history","useHistory","showUserIcon","Boolean","showSettings","PageLayoutAside","multipleTooltip","headerDecoration","logo","text","textSize","Logo","iconSize","iconClassName","wrapper","node","Link","url","theme","target","undefined","renderFooter","_ref2","footerItems","UIFactory","makeSupportContent","login","_ref3","onSupportClick","supportContent","BugIcon","push","GearIcon","itemWrapper","_ref4","makeItem","src","unknown","enableTooltip","onClosePopup","renderPopupContent","Menu","Item","concat","YT","cluster","importManageTokens","then","actions","openManageTokensModal","href","_Fragment","createSelector","getSettingsData","shouldUseYqlTypes","isRedirectToBetaSwitched","x1","x2","y1","y2","gradientUnits","stopColor","offset","b","MenuGroup","label","style","qa","ref","labelId","useUniqId","u","role","MenuItem","iconStart","iconEnd","disabled","active","selected","rel","contentClassName","extraProps","onKeyDown","useActionHandlers","handleClickCapture","event","publish","componentId","eventId","domEvent","defaultProps","commonProps","onClickCapture","tabIndex","interactive","restProps","filterDOMProps","labelable","Group"],"sourceRoot":""}
1
+ {"version":3,"file":"js/app-navigation.38835895.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/useChatToggle.ts","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/ChatToggleButton.tsx","webpack://@ytsaurus/ui/./src/ui/containers/AiChat/ChatToggleButton/ChatToggleFooterButton.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/appLogo.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bug.svg","webpack://@ytsaurus/ui/./src/ui/containers/AppNavigation/AppNavigationComponent.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/settings/settings-development.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/gear.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/ai-chat-icon.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/MenuGroup.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/MenuItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Menu/Menu.tsx"],"sourcesContent":["import {addI18Keysets} from '../../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:ai.chat.toggle-button', {en, ru});\n","import {useDispatch, useSelector} from '../../../store/redux-hooks';\nimport {selectAiChatConfigured} from '../../../store/selectors/ai/chat';\nimport {toggleChatSidePanel} from '../../../store/actions/ai/chat';\n\nexport const useChatToggle = () => {\n const dispatch = useDispatch();\n const isConfigured = useSelector(selectAiChatConfigured);\n\n const handleToggle = () => {\n dispatch(toggleChatSidePanel());\n };\n\n return {\n isConfigured,\n toggle: handleToggle,\n };\n};\n","import React, {FC} from 'react';\nimport {Button, Icon, Tooltip} from '@gravity-ui/uikit';\nimport AiIcon from '../../../assets/img/svg/icons/ai-chat-icon.svg';\nimport i18n from './i18n';\nimport {useChatToggle} from './useChatToggle';\n\ntype Props = {\n hideText?: boolean;\n};\n\nexport const ChatToggleButton: FC<Props> = ({hideText}) => {\n const {isConfigured, toggle} = useChatToggle();\n\n if (!isConfigured) return null;\n\n return (\n <Tooltip content={i18n('context_tooltip')}>\n <Button view=\"outlined-utility\" size=\"l\" onClick={toggle}>\n <Icon data={AiIcon} size={16} />\n {!hideText && i18n('action_button')}\n </Button>\n </Tooltip>\n );\n};\n","import React, {FC} from 'react';\nimport {FooterItem} from '@gravity-ui/navigation';\nimport AiIcon from '../../../assets/img/svg/icons/ai-chat-icon.svg';\nimport i18n from './i18n';\nimport {useChatToggle} from './useChatToggle';\nimport {useSelector} from '../../../store/redux-hooks';\nimport {selectShowAiChat} from '../../../store/selectors/settings/settings-development';\n\ntype Props = {\n compact: boolean;\n};\n\nexport const ChatToggleFooterButton: FC<Props> = ({compact}) => {\n const {isConfigured, toggle} = useChatToggle();\n const showAiChat = useSelector(selectShowAiChat);\n\n if (!isConfigured || !showAiChat) return null;\n\n return (\n <FooterItem\n key=\"ai-chat\"\n compact={compact}\n item={{\n id: 'ai-chat',\n title: i18n('context_tooltip'),\n icon: AiIcon,\n onItemClick: toggle,\n }}\n />\n );\n};\n","const SvgAppLogo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 34 34\" {...props}><rect width={32} height={32} x={1} y={1} fill=\"#FFB23E\" rx={4} /><rect width={33} height={33} x={0.5} y={0.5} stroke=\"#fff\" strokeOpacity={0.1} rx={4.5} /><path fill=\"#000\" fillRule=\"evenodd\" d=\"M13.344 12.395c2.08-2.926 5.396-4.56 6.967-4.246 1.008.202.397 1.294-.33 2.53-.19.322-.377.619-.544.886-.474.757-.798 1.273-.633 1.44 2.613-2.513 4.292-2.793 5.692-2.793 1.386 0 .734 1 .021 2.092l-.021.033c-.103.158-.21.315-.313.466-.4.589-.742 1.09-.589 1.257 1.507-1.073 3.066-1.332 3.799-1.18.733.151.948.47-.063 2.034l-.967 1.451.045.072c.343.551.866 1.393.866 2.733 0 2.26-1.45 4.509-2.595 5.879-.467.559-1.174.84-1.902.84-.815 0-1.367-.754-1.703-1.496-.64-1.408-2.665-1.133-4.295.752-.381.44-.914.744-1.497.744-.925 0-1.831-.362-2.317-1.15-.467-.758-.834-1.58-.956-2.012-.859 1.326-3.21 2.055-4.891.92-1.996-1.347-1.983-3.64-1.12-5.039l1.754.997c-.258 1.017.124 1.718.858 1.718 1.06 0 1.476-1.286 2.07-3.124.539-1.663 1.224-3.779 2.664-5.804m1.285 7.304c.584-1.322.584-2.603 0-2.862-.585-.259-1.533.603-2.118 1.925-.146.33-.255.657-.328.966h2.433zm4.308-2.862c.585.259.585 1.54 0 2.862l-.013.029h-2.433a5.6 5.6 0 0 1 .329-.966c.584-1.322 1.532-2.184 2.117-1.925\" clipRule=\"evenodd\" /></svg>;\nexport default SvgAppLogo;","const SvgBug = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#bug_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.865.031a.75.75 0 0 1 .918.53l.531 1.981a5.55 5.55 0 0 1 2.384.225 2.5 2.5 0 1 1 3.535 3.535 5.5 5.5 0 0 1 .225 2.384l1.98.53a.75.75 0 0 1-.388 1.45l-1.98-.531q-.271.64-.687 1.188l1.45 1.45a.75.75 0 0 1-1.06 1.06l-1.45-1.45a5.5 5.5 0 0 1-1.188.687l.53 1.98a.75.75 0 1 1-1.448.388l-.531-1.98a5.5 5.5 0 0 1-6.144-6.143l-1.98-.532A.75.75 0 0 1 .95 5.334l1.98.531q.27-.64.687-1.188l-1.45-1.45a.75.75 0 0 1 1.06-1.06l1.45 1.45a5.5 5.5 0 0 1 1.188-.687L5.335.95a.75.75 0 0 1 .53-.919M8 12a4 4 0 1 0-3.309-1.752L8.42 6.52a.75.75 0 0 1 1.06 1.06l-3.728 3.73c.64.435 1.414.69 2.248.69\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"bug_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgBug;","import React, {useState} from 'react';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {FooterItem, PageLayoutAside} from '@gravity-ui/navigation';\nimport {Menu} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from '../../store/redux-hooks';\n\nimport Logo from '../../assets/img/svg/appLogo.svg';\nimport GearIcon from '@gravity-ui/icons/svgs/gear.svg';\nimport BugIcon from '@gravity-ui/icons/svgs/bug.svg';\nimport Link from '../../components/Link/Link';\nimport unknown from '../../assets/img/user-avatar.svg';\nimport {AppNavigationProps} from './AppNavigationPageLayout';\nimport {YT} from '../../config/yt-config';\nimport UIFactory from '../../UIFactory';\nimport {getSettingsCluster} from '../../store/selectors/global';\nimport {importManageTokens} from '../ManageTokens';\nimport {ChatToggleFooterButton} from '../AiChat/ChatToggleButton';\n\nimport './AppNavigationComponent.scss';\nimport {getAllowManageTokens} from '../../store/selectors/manage-tokens';\n\nconst block = cn('yt-app-navigation');\n\nfunction AppNavigationComponent({\n logoClassName,\n menuItems,\n currentUser,\n authWay,\n\n panelContent,\n panelVisible,\n panelClassName,\n onClosePanel,\n\n settingsVisible,\n settingsContent,\n toggleSettingsVisible,\n\n onChangeCompact,\n}: Omit<AppNavigationProps, 'compact' | 'rememberSize' | 'className'>) {\n const dispatch = useDispatch();\n const panelItems = React.useMemo(() => {\n return [\n {\n id: 'panel',\n content: panelContent,\n visible: panelVisible,\n className: panelClassName,\n },\n {\n id: 'settings',\n content: settingsContent,\n visible: settingsVisible,\n },\n ];\n }, [panelVisible, panelContent, settingsVisible, settingsContent]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const settingsCluster = useSelector(getSettingsCluster);\n const isManageTokensMenuVisible = useSelector(getAllowManageTokens);\n const history = useHistory();\n\n let showUserIcon = Boolean(currentUser);\n let showSettings = settingsCluster && Boolean(currentUser);\n\n if (authWay === 'passwd') {\n showUserIcon = Boolean(settingsCluster) && Boolean(currentUser);\n showSettings = settingsCluster && Boolean(currentUser);\n }\n\n return (\n <PageLayoutAside\n multipleTooltip\n panelItems={panelItems}\n onClosePanel={onClosePanel}\n menuItems={menuItems}\n headerDecoration\n logo={{\n text: () => 'YTsaurus',\n textSize: 22,\n icon: Logo,\n iconSize: 36,\n iconClassName: logoClassName,\n wrapper: (node) => {\n return (\n <Link url={'/'} theme={'primary'} target=\"_blank\">\n {node}\n </Link>\n );\n },\n }}\n onChangeCompact={showSettings ? onChangeCompact : undefined}\n renderFooter={({compact}) => {\n const footerItems = [\n UIFactory.makeSupportContent(\n {login: currentUser},\n ({onSupportClick, supportContent}) => (\n <React.Fragment>\n <FooterItem\n key=\"support\"\n compact={compact}\n item={{\n id: 'support',\n title: 'Report a bug',\n icon: BugIcon,\n onItemClick: onSupportClick,\n }}\n />\n {supportContent}\n </React.Fragment>\n ),\n ),\n <ChatToggleFooterButton key=\"ai-chat\" compact={compact} />,\n ];\n\n if (showSettings) {\n footerItems.push(\n <FooterItem\n key=\"settings\"\n compact={compact}\n item={{\n id: 'settings',\n title: 'Settings',\n onItemClick: toggleSettingsVisible,\n icon: GearIcon,\n }}\n />,\n );\n }\n\n if (showUserIcon) {\n footerItems.push(\n <FooterItem\n key=\"user\"\n compact={compact}\n item={{\n id: 'user',\n title: currentUser,\n onItemClick: () => {\n setPopupVisible(!popupVisible);\n },\n itemWrapper: ({title}: any, makeItem: any) => {\n return makeItem({\n title,\n icon: (\n <img\n className={block('user-icon')}\n width={40}\n height={40}\n src={unknown}\n />\n ),\n });\n },\n }}\n enableTooltip={!popupVisible}\n popupVisible={popupVisible}\n onClosePopup={() => setPopupVisible(false)}\n renderPopupContent={() => {\n return (\n <div className={block('settings-ul')}>\n <Menu>\n {authWay === 'passwd' && (\n <Menu.Item\n onClick={() =>\n history.push(\n `/${YT.cluster}/change-password`,\n )\n }\n >\n Change password\n </Menu.Item>\n )}\n {isManageTokensMenuVisible && (\n <Menu.Item\n onClick={() =>\n importManageTokens().then((actions) => {\n dispatch(\n actions.openManageTokensModal(),\n );\n setPopupVisible(false);\n })\n }\n >\n Manage tokens\n </Menu.Item>\n )}\n <Menu.Item href={'/api/yt/logout'}>Logout</Menu.Item>\n </Menu>\n </div>\n );\n }}\n />,\n );\n }\n\n return <>{footerItems}</>;\n }}\n />\n );\n}\n\nexport default React.memo(AppNavigationComponent);\n","import {createSelector} from 'reselect';\nimport {getSettingsData} from './settings-base';\n\nexport const selectShowAiChat = createSelector([getSettingsData], (data) => {\n return data['global::development::showAiChat'];\n});\n\nexport const shouldUseYqlTypes = createSelector([getSettingsData], (data) => {\n return data['global::development::yqlTypes'];\n});\n\nexport const isRedirectToBetaSwitched = createSelector([getSettingsData], (data) => {\n return data['global::development::redirectToBetaSwitched'];\n});\n","const SvgGear = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgGear;","const SvgAiChatIcon = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 18 18\" {...props}><g clipPath=\"url(#ai-chat-icon_svg__a)\"><path fill=\"url(#ai-chat-icon_svg__b)\" d=\"M14.625 11.25c.382 0 .716.256.815.625.261.975.96 1.674 1.935 1.935a.844.844 0 0 1 0 1.63 2.66 2.66 0 0 0-1.935 1.935.844.844 0 0 1-1.63 0 2.66 2.66 0 0 0-1.935-1.935.844.844 0 0 1 0-1.63 2.66 2.66 0 0 0 1.935-1.935l.048-.133a.84.84 0 0 1 .767-.492M7.875 0c.55 0 1.02.398 1.11.94.313 1.879.916 3.151 1.795 4.03s2.151 1.482 4.03 1.795a1.125 1.125 0 0 1 0 2.22c-1.879.313-3.151.916-4.03 1.795s-1.482 2.151-1.795 4.03a1.125 1.125 0 0 1-2.22 0c-.313-1.879-.916-3.151-1.795-4.03S2.82 9.298.94 8.985a1.125 1.125 0 0 1 0-2.22C2.82 6.452 4.091 5.85 4.97 4.97S6.452 2.82 6.765.94l.021-.1C6.914.35 7.36 0 7.875 0\" /></g><defs><linearGradient id=\"ai-chat-icon_svg__b\" x1={4.53} x2={16.294} y1={10.142} y2={5.661} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#5B82F6\" /><stop offset={0.881} stopColor=\"#DD68F7\" /></linearGradient><clipPath id=\"ai-chat-icon_svg__a\"><path fill=\"#fff\" d=\"M0 0h18v18H0z\" /></clipPath></defs></svg>;\nexport default SvgAiChatIcon;","import * as React from 'react';\n\nimport {useUniqId} from '../../hooks';\nimport type {DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\n\nconst b = block('menu');\n\nexport interface MenuGroupProps extends DOMProps, QAProps {\n label?: string;\n children?: React.ReactNode;\n}\n\nexport const MenuGroup = React.forwardRef<HTMLLIElement, MenuGroupProps>(function MenuGroup(\n {label, children, style, className, qa},\n ref,\n) {\n const labelId = useUniqId();\n\n return (\n <li ref={ref} className={b('list-group-item')}>\n <div style={style} className={b('group', className)} data-qa={qa}>\n {label && (\n <div id={labelId} className={b('group-label')}>\n {label}\n </div>\n )}\n <ul role=\"group\" aria-labelledby={labelId} className={b('group-list')}>\n {children}\n </ul>\n </div>\n </li>\n );\n});\n","'use client';\n\nimport * as React from 'react';\n\nimport {useActionHandlers} from '../../hooks';\nimport type {DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\nimport {eventBroker} from '../utils/event-broker';\n\nconst b = block('menu');\n\nexport interface MenuItemProps extends DOMProps, QAProps {\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n title?: string;\n disabled?: boolean;\n active?: boolean;\n selected?: boolean;\n href?: string;\n target?: string;\n contentClassName?: string;\n rel?: string;\n onClick?: React.MouseEventHandler<HTMLDivElement | HTMLAnchorElement>;\n theme?: 'normal' | 'danger';\n extraProps?:\n | React.HTMLAttributes<HTMLDivElement>\n | React.AnchorHTMLAttributes<HTMLAnchorElement>;\n children?: React.ReactNode;\n}\n\nexport const MenuItem = React.forwardRef<HTMLElement, MenuItemProps>(function MenuItem(\n {\n iconStart,\n iconEnd,\n title,\n disabled,\n active,\n selected,\n href,\n target,\n rel,\n onClick,\n style,\n className,\n contentClassName,\n theme,\n extraProps,\n children,\n qa,\n },\n ref,\n) {\n const {onKeyDown} = useActionHandlers(onClick);\n\n const handleClickCapture = React.useCallback((event: React.SyntheticEvent) => {\n eventBroker.publish({\n componentId: 'MenuItem',\n eventId: 'click',\n domEvent: event,\n });\n }, []);\n\n const defaultProps = {\n role: 'menuitem',\n onKeyDown: onClick && !disabled ? onKeyDown : undefined,\n };\n\n const commonProps = {\n title,\n onClick: disabled ? undefined : onClick,\n onClickCapture: disabled ? undefined : handleClickCapture,\n style,\n tabIndex: disabled ? -1 : 0,\n className: b(\n 'item',\n {disabled, active, selected, theme, interactive: Boolean(onClick) || Boolean(href)},\n className,\n ),\n 'data-qa': qa,\n };\n const content = [\n iconStart && (\n <div key=\"icon-start\" className={b('item-icon')}>\n {iconStart}\n </div>\n ),\n <div key=\"content\" className={b('item-content', contentClassName)}>\n {children}\n </div>,\n iconEnd && (\n <div key={'icon-end'} className={b('item-icon-end')}>\n {iconEnd}\n </div>\n ),\n ];\n let item;\n\n if (href) {\n item = (\n <a\n {...defaultProps}\n {...(extraProps as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...commonProps}\n href={href}\n target={target}\n rel={rel}\n >\n {content}\n </a>\n );\n } else {\n item = (\n <div\n {...defaultProps}\n {...(extraProps as React.HTMLAttributes<HTMLDivElement>)}\n {...commonProps}\n >\n {content}\n </div>\n );\n }\n\n return (\n <li ref={ref as React.ForwardedRef<HTMLLIElement>} className={b('list-item')}>\n {item}\n </li>\n );\n});\n","'use client';\n\nimport * as React from 'react';\n\nimport type {AriaLabelingProps, DOMProps, QAProps} from '../types';\nimport {block} from '../utils/cn';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {MenuGroup} from './MenuGroup';\nimport type {MenuGroupProps} from './MenuGroup';\nimport {MenuItem} from './MenuItem';\nimport type {MenuItemProps} from './MenuItem';\n\nimport './Menu.scss';\n\nconst b = block('menu');\n\nexport type MenuSize = 's' | 'm' | 'l' | 'xl';\n\nexport interface MenuProps extends AriaLabelingProps, DOMProps, QAProps {\n size?: MenuSize;\n children?: React.ReactNode;\n}\n\nexport type {MenuItemProps, MenuGroupProps};\n\ninterface MenuComponent\n extends React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLUListElement>> {\n Item: typeof MenuItem;\n Group: typeof MenuGroup;\n}\n\n// TODO: keyboard navigation, Up/Down arrows and Enter\nexport const Menu = React.forwardRef<HTMLUListElement, MenuProps>(function Menu(\n {size = 'm', children, style, className, qa, ...restProps},\n ref,\n) {\n return (\n <ul\n {...filterDOMProps(restProps, {labelable: true})}\n ref={ref}\n role=\"menu\"\n // tabIndex={0}\n style={style}\n className={b({size}, className)}\n data-qa={qa}\n >\n {children}\n </ul>\n );\n}) as MenuComponent;\n\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n"],"names":["addI18Keysets","en","ru","useChatToggle","dispatch","useDispatch","isConfigured","useSelector","selectAiChatConfigured","toggle","toggleChatSidePanel","ChatToggleButton","_ref","hideText","_useChatToggle","_jsx","Tooltip","content","i18n","children","_jsxs","Button","view","size","onClick","Icon","data","AiIcon","ChatToggleFooterButton","compact","showAiChat","selectShowAiChat","FooterItem","item","id","title","icon","onItemClick","props","_objectSpread","xmlns","fill","viewBox","width","height","x","y","rx","stroke","strokeOpacity","fillRule","d","clipRule","clipPath","block","cn","AppNavigationComponent","logoClassName","menuItems","currentUser","authWay","panelContent","panelVisible","panelClassName","onClosePanel","settingsVisible","settingsContent","toggleSettingsVisible","onChangeCompact","panelItems","React","visible","className","_useState","useState","_useState2","_slicedToArray","popupVisible","setPopupVisible","settingsCluster","getSettingsCluster","isManageTokensMenuVisible","getAllowManageTokens","history","useHistory","showUserIcon","Boolean","showSettings","PageLayoutAside","multipleTooltip","headerDecoration","logo","text","textSize","Logo","iconSize","iconClassName","wrapper","node","Link","url","theme","target","undefined","renderFooter","_ref2","footerItems","UIFactory","makeSupportContent","login","_ref3","onSupportClick","supportContent","BugIcon","push","GearIcon","itemWrapper","_ref4","makeItem","src","unknown","enableTooltip","onClosePopup","renderPopupContent","Menu","Item","concat","YT","cluster","importManageTokens","then","actions","openManageTokensModal","href","_Fragment","createSelector","getSettingsData","shouldUseYqlTypes","isRedirectToBetaSwitched","x1","x2","y1","y2","gradientUnits","stopColor","offset","b","MenuGroup","label","style","qa","ref","labelId","useUniqId","u","role","MenuItem","iconStart","iconEnd","disabled","active","selected","rel","contentClassName","extraProps","onKeyDown","useActionHandlers","handleClickCapture","event","publish","componentId","eventId","domEvent","defaultProps","commonProps","onClickCapture","tabIndex","interactive","restProps","filterDOMProps","labelable","Group"],"sourceRoot":""}