@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 +0,0 @@
1
- {"version":3,"file":"js/app-navigation-page-layout.27364587.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],\n (mode, {items}, currentAnswer) => {\n return mode === 'chat' && (items.length > 0 || Boolean(currentAnswer));\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","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":""}