MCPcopy Create free account
hub / github.com/bytebase/bytebase / onCurrentTabChanged

Function onCurrentTabChanged

frontend/src/views/sql-editor/Sheet/context.ts:917–965  ·  view source on GitHub ↗
(tab: SQLEditorTab | undefined)

Source from the content-addressed store, hash-verified

915};
916
917const onCurrentTabChanged = (tab: SQLEditorTab | undefined) => {
918 useSheetContextStore.getState().setSelectedKeys([]);
919 if (!tab) return;
920
921 let view: SheetViewMode = "draft";
922 let worksheetLikeItem: WorksheetLikeItem | undefined;
923 const tabId = tab.id;
924 const worksheetName = tab.worksheet;
925
926 if (worksheetName) {
927 const worksheet = useAppStore.getState().getWorksheetByName(worksheetName);
928 if (!worksheet) return;
929 worksheetLikeItem = {
930 name: worksheet.name,
931 title: worksheet.title,
932 folders: worksheet.folders,
933 type: "worksheet",
934 };
935 view = isWorksheetCreator(worksheet) ? "my" : "shared";
936 } else {
937 worksheetLikeItem = {
938 name: tabId,
939 folders: [],
940 title: "",
941 type: "draft",
942 };
943 }
944
945 const viewCtx = getViewContext(view);
946 const key = viewCtx.getKeyForWorksheet(worksheetLikeItem);
947 useSheetContextStore.getState().setSelectedKeys([key]);
948
949 const expanded = new Set(useSheetContextStore.getState().expandedKeys);
950 for (const path of viewCtx.getPathesForWorksheet(worksheetLikeItem)) {
951 expanded.add(path);
952 }
953 useSheetContextStore.getState().setExpandedKeys(expanded);
954
955 // Defer DOM scroll until after React paints.
956 queueMicrotask(() => {
957 const dom = document.querySelector(`[data-item-key="${key}"]`);
958 if (dom) {
959 scrollIntoView(dom, {
960 scrollMode: "if-needed",
961 block: "nearest",
962 });
963 }
964 });
965};
966
967// ---- public hook API -------------------------------------------------------
968

Callers 1

bindWatchersFunction · 0.85

Calls 3

isWorksheetCreatorFunction · 0.85
getViewContextFunction · 0.85
addMethod · 0.80

Tested by

no test coverage detected