@tanstack/table-devtools
Version:
Devtools for TanStack Table.
157 lines (155 loc) • 4.31 kB
JavaScript
import { useTableDevtoolsContext } from "../TableContextProvider.js";
import { useStyles } from "../styles/use-styles.js";
import { ColumnsPanel } from "./ColumnsPanel.js";
import { FeaturesPanel } from "./FeaturesPanel.js";
import { RowsPanel } from "./RowsPanel.js";
import { StatePanel } from "./StatePanel.js";
import { OptionsPanel } from "./OptionsPanel.js";
import { For, Match, Show, Switch } from "solid-js";
import { className, createComponent, delegateEvents, effect, insert, memo, template } from "solid-js/web";
import { Header, HeaderLogo, MainPanel, Select } from "@tanstack/devtools-ui";
//#region src/components/Shell.tsx
var _tmpl$ = /*#__PURE__*/ template(`<div><div></div><div>`);
var _tmpl$2 = /*#__PURE__*/ template(`<button type=button>`);
const EMPTY_PANEL_KEY = "__table-devtools-empty__";
const tabs = [
{
id: "features",
label: "Features"
},
{
id: "options",
label: "Options"
},
{
id: "state",
label: "State"
},
{
id: "rows",
label: "Rows"
},
{
id: "columns",
label: "Columns"
}
];
function Shell() {
const styles = useStyles();
const { activeTab, setActiveTab, selectedTargetId, setSelectedTargetId, targets } = useTableDevtoolsContext();
const tableOptions = () => targets().map((target) => ({
value: target.id,
label: target.id
}));
return createComponent(MainPanel, { get children() {
return [createComponent(Header, { get children() {
return createComponent(HeaderLogo, {
flavor: {
light: "#06b6d4",
dark: "#2563eb"
},
onClick: () => {
window.open("https://tanstack.com/table", "_blank");
},
children: "TanStack Table"
});
} }), (() => {
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
insert(_el$, createComponent(Show, {
get when() {
return memo(() => tableOptions().length > 0)() && tableOptions();
},
children: (tableOptions) => createComponent(Show, {
get when() {
return selectedTargetId() ?? EMPTY_PANEL_KEY;
},
children: (selectedTargetId) => createComponent(Select, {
label: "Table",
get options() {
return tableOptions();
},
get value() {
return selectedTargetId();
},
onChange: (value) => setSelectedTargetId(value)
})
})
}), _el$2);
insert(_el$2, createComponent(For, {
each: tabs,
children: (tab) => (() => {
var _el$4 = _tmpl$2();
_el$4.$$click = () => setActiveTab(tab.id);
insert(_el$4, () => tab.label);
effect(() => className(_el$4, `${styles().tabButton} ${activeTab() === tab.id ? styles().tabButtonActive : ""}`));
return _el$4;
})()
}));
insert(_el$3, createComponent(Show, {
get when() {
return selectedTargetId() ?? EMPTY_PANEL_KEY;
},
keyed: true,
children: (_selectedTargetId) => createComponent(Switch, { get children() {
return [
createComponent(Match, {
get when() {
return activeTab() === "features";
},
get children() {
return createComponent(FeaturesPanel, {});
}
}),
createComponent(Match, {
get when() {
return activeTab() === "state";
},
get children() {
return createComponent(StatePanel, {});
}
}),
createComponent(Match, {
get when() {
return activeTab() === "options";
},
get children() {
return createComponent(OptionsPanel, {});
}
}),
createComponent(Match, {
get when() {
return activeTab() === "rows";
},
get children() {
return createComponent(RowsPanel, {});
}
}),
createComponent(Match, {
get when() {
return activeTab() === "columns";
},
get children() {
return createComponent(ColumnsPanel, {});
}
})
];
} })
}));
effect((_p$) => {
var _v$ = styles().mainContainer, _v$2 = styles().tabBar, _v$3 = styles().contentArea;
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
_v$3 !== _p$.a && className(_el$3, _p$.a = _v$3);
return _p$;
}, {
e: void 0,
t: void 0,
a: void 0
});
return _el$;
})()];
} });
}
delegateEvents(["click"]);
//#endregion
export { Shell };