diff --git a/packages/ui-default/components/scratchpad/ScratchpadSidebar.tsx b/packages/ui-default/components/scratchpad/ScratchpadSidebar.tsx
new file mode 100644
index 000000000..37f1870ee
--- /dev/null
+++ b/packages/ui-default/components/scratchpad/ScratchpadSidebar.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+
+export default function ScratchpadSidebar({ name }) {
+ const Component = window.Hydro.scratchpad?.[name];
+ const [state, setState] = React.useState(0);
+ if (Component) return ;
+ setTimeout(() => setState(state + 1), 1000);
+ return
No registered providers.
;
+}
diff --git a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx
index e6cf016ce..a2875d084 100644
--- a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx
+++ b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx
@@ -16,6 +16,7 @@ import Toolbar, {
const mapStateToProps = (state) => ({
pretestVisible: state.ui.pretest.visible,
+ sidebarVisible: state.ui.sidebar.visible,
recordsVisible: state.ui.records.visible,
isPosting: state.ui.isPosting,
isRunning: state.pretest.isRunning,
@@ -183,6 +184,16 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool
{i18n('Records')}
)}
+ {/* this.props.togglePanel('sidebar')}
+ data-global-hotkey="alt+w"
+ data-tooltip={`${i18n('Toggle Sidebar')} (Alt+L)`}
+ >
+
+ {' '}
+ {i18n('Pretest')}
+ */}
);
}
diff --git a/packages/ui-default/components/scratchpad/index.jsx b/packages/ui-default/components/scratchpad/index.jsx
index 82ebf2654..410db49e0 100644
--- a/packages/ui-default/components/scratchpad/index.jsx
+++ b/packages/ui-default/components/scratchpad/index.jsx
@@ -8,8 +8,9 @@ import ScratchpadToolbar from './ScratchpadToolbarContainer';
import ScratchpadEditor from './ScratchpadEditorContainer';
import ScratchpadPretest from './ScratchpadPretestContainer';
import ScratchpadRecords from './ScratchpadRecordsContainer';
+import ScratchpadSidebar from './ScratchpadSidebar';
-function buildNestedPane([a, ...panes]) {
+function buildNestedPane([a, ...panes], mode = 'horizontal') {
const elements = [
a,
...panes.filter((p) => p.props.visible),
@@ -18,7 +19,7 @@ function buildNestedPane([a, ...panes]) {
return elements
.reduce((prev, curr) => (
this.handleChangeSize('main', size)}
>
-
+ this.handleChangeSize('sidebar', size)}
+ >
+
+
+
{buildNestedPane([
diff --git a/packages/ui-default/components/scratchpad/reducers/ui.ts b/packages/ui-default/components/scratchpad/reducers/ui.ts
index 2bfe8f6a3..3ab5a4203 100644
--- a/packages/ui-default/components/scratchpad/reducers/ui.ts
+++ b/packages/ui-default/components/scratchpad/reducers/ui.ts
@@ -11,6 +11,10 @@ export default function reducer(state = {
: false,
size: 200,
},
+ sidebar: {
+ visible: false,
+ size: 100,
+ },
records: {
visible: UiContext.canViewRecord && localStorage.getItem('scratchpad/records') === 'true',
size: 100,
diff --git a/packages/ui-default/modules.js b/packages/ui-default/modules.js
index d089c8c6a..3f16f533b 100644
--- a/packages/ui-default/modules.js
+++ b/packages/ui-default/modules.js
@@ -1,5 +1,6 @@
import $ from 'jquery';
import _ from 'lodash';
+import React from 'react';
import './utils/delay';
import './utils/emulateAnchorClick';
@@ -23,6 +24,6 @@ import './components/notification';
import './components/nprogress';
import './components/monaco/loader';
-window.node_modules = { _, $ };
+window.node_modules = { _, $, React };
window.$ = $;
window.jQuery = $;