ydb-embedded-ui 8.22.0 → 8.22.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.
@@ -1,15 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { CircleQuestion, Gear, Person } from '@gravity-ui/icons';
4
- import { AsideHeader, FooterItem, HotkeysPanel } from '@gravity-ui/navigation';
5
- import { Hotkey } from '@gravity-ui/uikit';
6
- import hotkeys from 'hotkeys-js';
4
+ import { AsideHeader, FooterItem } from '@gravity-ui/navigation';
7
5
  import { useHistory } from 'react-router-dom';
8
6
  import { cn } from '../../utils/cn';
9
7
  import { ASIDE_HEADER_COMPACT_KEY } from '../../utils/constants';
10
8
  import { useSetting } from '../../utils/hooks';
11
9
  import { InformationPopup } from './InformationPopup';
12
- import { HOTKEYS, SHORTCUTS_HOTKEY } from './constants';
10
+ import { useHotkeysPanel } from './hooks/useHotkeysPanel';
13
11
  import i18n from './i18n';
14
12
  import userSecret from '../../assets/icons/user-secret.svg';
15
13
  import ydbLogoIcon from '../../assets/icons/ydb.svg';
@@ -33,23 +31,6 @@ var Panel;
33
31
  Panel["Information"] = "Information";
34
32
  Panel["Hotkeys"] = "Hotkeys";
35
33
  })(Panel || (Panel = {}));
36
- /**
37
- * HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
38
- * This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
39
- *
40
- * When a component is both mounted and set to visible at once, CSSTransition can't
41
- * properly sequence its transition classes (panel → panel-active) because it's already active when mounted
42
- * and counts transition as it has already happened.
43
- * This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
44
- * to make transition actually happen.
45
- */
46
- function HotkeysPanelWrapper({ visiblePanel, closePanel, }) {
47
- const [visible, setVisible] = React.useState(false);
48
- React.useEffect(() => {
49
- setVisible(visiblePanel === Panel.Hotkeys);
50
- }, [visiblePanel]);
51
- return (_jsx(HotkeysPanel, { visible: visible, hotkeys: HOTKEYS, className: b('hotkeys-panel'), title: _jsxs("div", { className: b('hotkeys-panel-title'), children: [i18n('help-center.footer.shortcuts'), _jsx(Hotkey, { value: SHORTCUTS_HOTKEY })] }), onClose: closePanel }));
52
- }
53
34
  export function AsideNavigation(props) {
54
35
  const history = useHistory();
55
36
  const [visiblePanel, setVisiblePanel] = React.useState();
@@ -64,19 +45,14 @@ export function AsideNavigation(props) {
64
45
  const closePanel = React.useCallback(() => {
65
46
  setVisiblePanel(undefined);
66
47
  }, []);
48
+ const { renderPanel: renderHotkeysPanel } = useHotkeysPanel({
49
+ isPanelVisible: visiblePanel === Panel.Hotkeys,
50
+ closePanel,
51
+ openPanel: openHotkeysPanel,
52
+ });
67
53
  const renderInformationPopup = () => {
68
54
  return _jsx(InformationPopup, { onKeyboardShortcutsClick: openHotkeysPanel });
69
55
  };
70
- React.useEffect(() => {
71
- // Register hotkey for keyboard shortcuts
72
- hotkeys(SHORTCUTS_HOTKEY, openHotkeysPanel);
73
- // Add listener for custom event from Monaco editor
74
- window.addEventListener('openKeyboardShortcutsPanel', openHotkeysPanel);
75
- return () => {
76
- hotkeys.unbind(SHORTCUTS_HOTKEY);
77
- window.removeEventListener('openKeyboardShortcutsPanel', openHotkeysPanel);
78
- };
79
- }, [openHotkeysPanel]);
80
56
  return (_jsx(React.Fragment, { children: _jsx(AsideHeader, { logo: {
81
57
  text: 'YDB',
82
58
  icon: ydbLogoIcon,
@@ -111,7 +87,7 @@ export function AsideNavigation(props) {
111
87
  id: 'hotkeys',
112
88
  visible: visiblePanel === Panel.Hotkeys,
113
89
  keepMounted: true,
114
- content: (_jsx(HotkeysPanelWrapper, { visiblePanel: visiblePanel, closePanel: closePanel })),
90
+ content: renderHotkeysPanel(),
115
91
  },
116
92
  ], onClosePanel: closePanel }) }));
117
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AsideNavigation.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/AsideNavigation.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsideNavigation.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/AsideNavigation.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Flex, Hotkey, Icon, Link, List, Text } from '@gravity-ui/uikit';
4
4
  import { settingsManager } from '../../../services/settings';
5
5
  import { cn } from '../../../utils/cn';
6
6
  import { LANGUAGE_KEY } from '../../../utils/constants';
7
- import { SHORTCUTS_HOTKEY } from '../constants';
7
+ import { SHORTCUTS_HOTKEY } from '../hooks/useHotkeysPanel';
8
8
  import i18n from '../i18n';
9
9
  import './InformationPopup.scss';
10
10
  const b = cn('information-popup');
@@ -1 +1 @@
1
- {"version":3,"file":"InformationPopup.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/InformationPopup/InformationPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,yBAAyB,CAAC;AAEjC,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;AAMlC,MAAM,UAAU,gBAAgB,CAAC,EAAC,wBAAwB,EAAwB;IAC9E,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACrF,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAC5B,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACrB,KAAC,IAAI,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,8BAE1D,EACP,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IACD,KAAK,EAAE;gCACH;oCACI,IAAI,EAAE,IAAI,CAAC,gCAAgC,CAAC;oCAC5C,GAAG,EAAE,oBAAoB,EAAE;iCAC9B;6BACJ,EACD,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,UAAU,EAAE,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAE,CAAC,CACzB,KAAC,IAAI,IACD,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EACzB,GAAG,EAAC,UAAU,EACd,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAEjD,IAAI,GACF,CACV,EACD,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,GAC1B,GACA,IACJ,EAEN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,MAAC,IAAI,IACD,cAAc,EAAC,eAAe,EAC9B,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,OAAO,EAAE,wBAAwB,aAEjC,MAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,GACtB,EACL,IAAI,CAAC,8BAA8B,CAAC,IAClC,EACP,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,GAAI,IAChC,GACL,IACJ,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"InformationPopup.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/InformationPopup/InformationPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,yBAAyB,CAAC;AAEjC,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;AAMlC,MAAM,UAAU,gBAAgB,CAAC,EAAC,wBAAwB,EAAwB;IAC9E,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACrF,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAC5B,eAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,aACrB,KAAC,IAAI,IAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,8BAE1D,EACP,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IACD,KAAK,EAAE;gCACH;oCACI,IAAI,EAAE,IAAI,CAAC,gCAAgC,CAAC;oCAC5C,GAAG,EAAE,oBAAoB,EAAE;iCAC9B;6BACJ,EACD,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,UAAU,EAAE,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAE,CAAC,CACzB,KAAC,IAAI,IACD,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EACzB,GAAG,EAAC,UAAU,EACd,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAEjD,IAAI,GACF,CACV,EACD,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,GAC1B,GACA,IACJ,EAEN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YACvB,MAAC,IAAI,IACD,cAAc,EAAC,eAAe,EAC9B,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,OAAO,EAAE,wBAAwB,aAEjC,MAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAC/B,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,GACtB,EACL,IAAI,CAAC,8BAA8B,CAAC,IAClC,EACP,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,GAAI,IAChC,GACL,IACJ,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,33 @@
1
+ export declare const isMac: () => boolean;
2
+ export declare const SHORTCUTS_HOTKEY: string;
3
+ export declare const HOTKEYS: {
4
+ title: string;
5
+ items: {
6
+ title: string;
7
+ value: string;
8
+ }[];
9
+ }[];
10
+ export interface HotkeysPanelProps {
11
+ visible: boolean;
12
+ closePanel: () => void;
13
+ }
14
+ /**
15
+ * HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
16
+ * This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
17
+ *
18
+ * When a component is both mounted and set to visible at once, CSSTransition can't
19
+ * properly sequence its transition classes (panel → panel-active) because it's already active when mounted
20
+ * and counts transition as it has already happened.
21
+ * This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
22
+ * to make transition actually happen.
23
+ */
24
+ export declare const HotkeysPanelWrapper: ({ visible: propsVisible, closePanel }: HotkeysPanelProps) => import("react/jsx-runtime").JSX.Element;
25
+ interface UseHotkeysPanel {
26
+ isPanelVisible: boolean;
27
+ openPanel: () => void;
28
+ closePanel: () => void;
29
+ }
30
+ export declare const useHotkeysPanel: ({ isPanelVisible, openPanel, closePanel }: UseHotkeysPanel) => {
31
+ renderPanel: () => import("react/jsx-runtime").JSX.Element;
32
+ };
33
+ export {};
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { HotkeysPanel as UIKitHotkeysPanel } from '@gravity-ui/navigation';
4
+ import { Hotkey } from '@gravity-ui/uikit';
5
+ import hotkeys from 'hotkeys-js';
6
+ import { cn } from '../../../utils/cn';
7
+ import i18n from '../i18n';
8
+ const b = cn('kv-navigation');
9
+ export const isMac = () => navigator.platform.toUpperCase().includes('MAC');
10
+ export const SHORTCUTS_HOTKEY = isMac() ? 'cmd+K' : 'ctrl+K';
11
+ export const HOTKEYS = [
12
+ {
13
+ title: 'Query Editor',
14
+ items: [
15
+ {
16
+ title: i18n('hotkeys.execute-query'),
17
+ value: isMac() ? 'cmd+enter' : 'ctrl+enter',
18
+ },
19
+ {
20
+ title: i18n('hotkeys.execute-selected-query'),
21
+ value: isMac() ? 'cmd+shift+enter' : 'ctrl+shift+enter',
22
+ },
23
+ {
24
+ title: i18n('hotkeys.previous-query'),
25
+ value: isMac() ? 'cmd+arrowUp' : 'ctrl+arrowUp',
26
+ },
27
+ {
28
+ title: i18n('hotkeys.next-query'),
29
+ value: isMac() ? 'cmd+arrowDown' : 'ctrl+arrowDown',
30
+ },
31
+ {
32
+ title: i18n('hotkeys.save-query'),
33
+ value: isMac() ? 'cmd+s' : 'ctrl+s',
34
+ },
35
+ {
36
+ title: i18n('hotkeys.save-selected-query'),
37
+ value: isMac() ? 'cmd+shift+s' : 'ctrl+shift+s',
38
+ },
39
+ ],
40
+ },
41
+ ];
42
+ /**
43
+ * HotkeysPanelWrapper creates a render cycle separation between mounting and visibility change.
44
+ * This is necessary for smooth animations as HotkeysPanel uses CSSTransition internally.
45
+ *
46
+ * When a component is both mounted and set to visible at once, CSSTransition can't
47
+ * properly sequence its transition classes (panel → panel-active) because it's already active when mounted
48
+ * and counts transition as it has already happened.
49
+ * This wrapper ensures the component mounts first, then sets visible=true in a subsequent render cycle
50
+ * to make transition actually happen.
51
+ */
52
+ export const HotkeysPanelWrapper = ({ visible: propsVisible, closePanel }) => {
53
+ const [visible, setVisible] = React.useState(false);
54
+ React.useEffect(() => {
55
+ setVisible(propsVisible);
56
+ }, [propsVisible]);
57
+ return (_jsx(UIKitHotkeysPanel, { visible: visible, hotkeys: HOTKEYS, className: b('hotkeys-panel'), title: _jsxs("div", { className: b('hotkeys-panel-title'), children: [i18n('hotkeys.title'), _jsx(Hotkey, { value: SHORTCUTS_HOTKEY })] }), onClose: closePanel }));
58
+ };
59
+ export const useHotkeysPanel = ({ isPanelVisible, openPanel, closePanel }) => {
60
+ React.useEffect(() => {
61
+ hotkeys(SHORTCUTS_HOTKEY, openPanel);
62
+ window.addEventListener('openKeyboardShortcutsPanel', openPanel);
63
+ return () => {
64
+ hotkeys.unbind(SHORTCUTS_HOTKEY);
65
+ window.removeEventListener('openKeyboardShortcutsPanel', openPanel);
66
+ };
67
+ }, [openPanel]);
68
+ const renderPanel = React.useCallback(() => _jsx(HotkeysPanelWrapper, { visible: isPanelVisible, closePanel: closePanel }), [isPanelVisible, closePanel]);
69
+ return {
70
+ renderPanel,
71
+ };
72
+ };
73
+ //# sourceMappingURL=useHotkeysPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHotkeysPanel.js","sourceRoot":"","sources":["../../../../src/containers/AsideNavigation/hooks/useHotkeysPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,YAAY,IAAI,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAC,EAAE,EAAC,MAAM,mBAAmB,CAAC;AACrC,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB;QACI,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE;YACH;gBACI,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC;gBACpC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;aAC9C;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,gCAAgC,CAAC;gBAC7C,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB;aAC1D;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC;gBACrC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC;gBACjC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;aACtD;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC;gBACjC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;aACtC;YACD;gBACI,KAAK,EAAE,IAAI,CAAC,6BAA6B,CAAC;gBAC1C,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;SACJ;KACJ;CACJ,CAAC;AAOF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoB,EAAE,EAAE;IAC1F,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CACH,KAAC,iBAAiB,IACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAC7B,KAAK,EACD,eAAK,SAAS,EAAE,CAAC,CAAC,qBAAqB,CAAC,aACnC,IAAI,CAAC,eAAe,CAAC,EACtB,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,GAAI,IACjC,EAEV,OAAO,EAAE,UAAU,GACrB,CACL,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAkB,EAAE,EAAE;IACxF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAEjE,OAAO,GAAG,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjC,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACjC,GAAG,EAAE,CAAC,KAAC,mBAAmB,IAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAI,EAC9E,CAAC,cAAc,EAAE,UAAU,CAAC,CAC/B,CAAC;IAEF,OAAO;QACH,WAAW;KACd,CAAC;AACN,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "navigation-item.information": "information",
2
+ "navigation-item.information": "Information",
3
3
  "navigation-item.settings": "Settings",
4
4
  "navigation-item.account": "Account",
5
5
  "help-center.header.title": "Documentation",
@@ -7,5 +7,12 @@
7
7
  "help-center.footer.shortcuts": "Keyboard shortcuts",
8
8
  "account.user": "YDB User",
9
9
  "account.login": "Login",
10
- "account.logout": "Logout"
10
+ "account.logout": "Logout",
11
+ "hotkeys.title": "Keyboard shortcuts",
12
+ "hotkeys.execute-query": "Execute query",
13
+ "hotkeys.execute-selected-query": "Execute selected query",
14
+ "hotkeys.previous-query": "Previous query",
15
+ "hotkeys.next-query": "Next query",
16
+ "hotkeys.save-query": "Save query",
17
+ "hotkeys.save-selected-query": "Save selected query"
11
18
  }
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "navigation-item.information" | "navigation-item.settings" | "navigation-item.account" | "help-center.header.title" | "help-center.item.documentation" | "help-center.footer.shortcuts" | "account.user" | "account.login" | "account.logout", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "navigation-item.information" | "navigation-item.settings" | "navigation-item.account" | "help-center.header.title" | "help-center.item.documentation" | "help-center.footer.shortcuts" | "account.user" | "account.login" | "account.logout" | "hotkeys.title" | "hotkeys.execute-query" | "hotkeys.execute-selected-query" | "hotkeys.previous-query" | "hotkeys.next-query" | "hotkeys.save-query" | "hotkeys.save-selected-query", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -1,20 +1,40 @@
1
1
  import React from 'react';
2
2
  import { AUTO_REFRESH_INTERVAL } from '../constants';
3
3
  import { useSetting } from './useSetting';
4
+ const IMMEDIATE_UPDATE_INTERVAL = 1;
5
+ const DISABLED_INTERVAL = 0;
4
6
  export function useAutoRefreshInterval() {
5
- const [settingValue, setSettingValue] = useSetting(AUTO_REFRESH_INTERVAL, 0);
6
- const [effectiveInterval, setEffectiveInterval] = React.useState(document.visibilityState === 'visible' ? settingValue : 0);
7
+ const [settingValue, setSettingValue] = useSetting(AUTO_REFRESH_INTERVAL, DISABLED_INTERVAL);
8
+ const [effectiveInterval, setEffectiveInterval] = React.useState(document.visibilityState === 'visible' ? settingValue : DISABLED_INTERVAL);
9
+ const lastHiddenTimeRef = React.useRef(null);
7
10
  React.useEffect(() => {
8
- // Update the effective interval when the setting changes
9
11
  setEffectiveInterval(document.visibilityState === 'visible' ? settingValue : 0);
10
- // Handle visibility change events
11
12
  const handleVisibilityChange = () => {
12
- setEffectiveInterval(document.visibilityState === 'visible' ? settingValue : 0);
13
+ const isVisible = document.visibilityState === 'visible';
14
+ if (isVisible) {
15
+ // If more than settingValue milliseconds have passed since the page was hidden,
16
+ // trigger an immediate update
17
+ const shouldTriggerImmediate = lastHiddenTimeRef.current &&
18
+ settingValue !== DISABLED_INTERVAL &&
19
+ Date.now() - lastHiddenTimeRef.current >= settingValue;
20
+ if (shouldTriggerImmediate) {
21
+ setEffectiveInterval(IMMEDIATE_UPDATE_INTERVAL);
22
+ setTimeout(() => {
23
+ setEffectiveInterval(settingValue);
24
+ }, 0);
25
+ }
26
+ else {
27
+ setEffectiveInterval(settingValue);
28
+ }
29
+ lastHiddenTimeRef.current = null;
30
+ }
31
+ else {
32
+ lastHiddenTimeRef.current = Date.now();
33
+ setEffectiveInterval(DISABLED_INTERVAL);
34
+ }
13
35
  };
14
36
  document.addEventListener('visibilitychange', handleVisibilityChange);
15
- return () => {
16
- document.removeEventListener('visibilitychange', handleVisibilityChange);
17
- };
37
+ return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
18
38
  }, [settingValue]);
19
39
  return [effectiveInterval, setSettingValue];
20
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoRefreshInterval.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAutoRefreshInterval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,UAAU,sBAAsB;IAClC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC5D,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,yDAAyD;QACzD,oBAAoB,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,kCAAkC;QAClC,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,oBAAoB,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QAEtE,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QAC7E,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"useAutoRefreshInterval.js","sourceRoot":"","sources":["../../../src/utils/hooks/useAutoRefreshInterval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,UAAU,sBAAsB;IAClC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;IAC7F,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC5D,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAC5E,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IAE5D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,oBAAoB,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC;YACzD,IAAI,SAAS,EAAE,CAAC;gBACZ,gFAAgF;gBAChF,8BAA8B;gBAC9B,MAAM,sBAAsB,GACxB,iBAAiB,CAAC,OAAO;oBACzB,YAAY,KAAK,iBAAiB;oBAClC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,OAAO,IAAI,YAAY,CAAC;gBAE3D,IAAI,sBAAsB,EAAE,CAAC;oBACzB,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;oBAEhD,UAAU,CAAC,GAAG,EAAE;wBACZ,oBAAoB,CAAC,YAAY,CAAC,CAAC;oBACvC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBACvC,CAAC;gBAED,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACtE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;IAC1F,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-embedded-ui",
3
- "version": "8.22.0",
3
+ "version": "8.22.1",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -1,8 +0,0 @@
1
- export declare const SHORTCUTS_HOTKEY: string;
2
- export declare const HOTKEYS: {
3
- title: string;
4
- items: {
5
- title: string;
6
- value: string;
7
- }[];
8
- }[];
@@ -1,34 +0,0 @@
1
- import { isMac } from './utils';
2
- export const SHORTCUTS_HOTKEY = isMac() ? 'cmd+K' : 'ctrl+K';
3
- export const HOTKEYS = [
4
- {
5
- title: 'Query Editor',
6
- items: [
7
- {
8
- title: 'Execute query',
9
- value: isMac() ? 'cmd+enter' : 'ctrl+enter',
10
- },
11
- {
12
- title: 'Execute selected query',
13
- value: isMac() ? 'cmd+shift+enter' : 'ctrl+shift+enter',
14
- },
15
- {
16
- title: 'Previous query',
17
- value: isMac() ? 'cmd+arrowUp' : 'ctrl+arrowUp',
18
- },
19
- {
20
- title: 'Next query',
21
- value: isMac() ? 'cmd+arrowDown' : 'ctrl+arrowDown',
22
- },
23
- {
24
- title: 'Save query',
25
- value: isMac() ? 'cmd+s' : 'ctrl+s',
26
- },
27
- {
28
- title: 'Save selected query',
29
- value: isMac() ? 'cmd+shift+s' : 'ctrl+shift+s',
30
- },
31
- ],
32
- },
33
- ];
34
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/constants.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB;QACI,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE;YACH;gBACI,KAAK,EAAE,eAAe;gBACtB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;aAC9C;YACD;gBACI,KAAK,EAAE,wBAAwB;gBAC/B,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB;aAC1D;YACD;gBACI,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;YACD;gBACI,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;aACtD;YACD;gBACI,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;aACtC;YACD;gBACI,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aAClD;SACJ;KACJ;CACJ,CAAC"}
@@ -1 +0,0 @@
1
- export declare const isMac: () => boolean;
@@ -1,2 +0,0 @@
1
- export const isMac = () => navigator.platform.toUpperCase().includes('MAC');
2
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/containers/AsideNavigation/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC"}