Skip to content

Commit 66b9bde

Browse files
siddharthkpCompuIves
authored andcommitted
Embeds: add secret url flag to hide dev tools (codesandbox#3018)
* add secret hideDevTools * adjust actions offset based on hidedevtools * update snapshots for new flag
1 parent 863c31a commit 66b9bde

File tree

7 files changed

+36
-8
lines changed

7 files changed

+36
-8
lines changed

packages/app/src/embed/components/Actions/elements.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import styled from 'styled-components';
22
import css from '@styled-system/css';
33
import { HeartIconSVG, ReloadIconSVG, NewWindowIconSVG } from './icons';
44

5-
// TODO: Check if we still need previewVisible
65
export const Container = styled.div(props =>
76
css({
87
position: 'absolute',
@@ -16,7 +15,7 @@ export const Container = styled.div(props =>
1615
},
1716

1817
// 28 is the height of console
19-
bottom: props.isDragging ? -32 : props.previewVisible ? 28 + 16 : 16,
18+
bottom: props.isDragging ? -32 : props.offsetBottom ? 28 + 16 : 16,
2019
opacity: props.isDragging ? 0 : 1,
2120
transitionProperty: 'opacity, bottom',
2221
transitionDuration: theme =>

packages/app/src/embed/components/Actions/index.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import {
1313
export function GlobalActions({
1414
sandbox,
1515
toggleLike,
16-
previewVisible,
16+
offsetBottom,
1717
isDragging,
1818
}) {
1919
return (
2020
<Container
2121
align="right"
22-
previewVisible={previewVisible}
22+
offsetBottom={offsetBottom}
2323
isDragging={isDragging}
2424
>
2525
{toggleLike ? (
@@ -46,9 +46,14 @@ export function GlobalActions({
4646
);
4747
}
4848

49-
export function NavigationActions({ refresh, openInNewWindow, isDragging }) {
49+
export function NavigationActions({
50+
refresh,
51+
openInNewWindow,
52+
offsetBottom,
53+
isDragging,
54+
}) {
5055
return (
51-
<Container align="left" previewVisible isDragging={isDragging}>
56+
<Container align="left" offsetBottom={offsetBottom} isDragging={isDragging}>
5257
<Tooltip content="Refresh preview">
5358
<Button onClick={refresh} aria-label="Refresh preview">
5459
<ReloadIcon />

packages/app/src/embed/components/App/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type State = {
4343
editorSize: number,
4444
forceRefresh: boolean,
4545
expandDevTools: boolean,
46+
hideDevTools: boolean,
4647
runOnClick: boolean,
4748
verticalMode: boolean,
4849
highlightedLines: Array<number>,
@@ -87,6 +88,7 @@ export default class App extends React.PureComponent<
8788
highlightedLines,
8889
forceRefresh,
8990
expandDevTools,
91+
hideDevTools,
9092
runOnClick,
9193
verticalMode = window.innerWidth < window.innerHeight,
9294
tabs,
@@ -111,6 +113,7 @@ export default class App extends React.PureComponent<
111113
editorSize,
112114
forceRefresh,
113115
expandDevTools,
116+
hideDevTools,
114117
tabs,
115118
theme,
116119
runOnClick:
@@ -385,6 +388,7 @@ export default class App extends React.PureComponent<
385388
highlightedLines={this.state.highlightedLines}
386389
forceRefresh={this.state.forceRefresh}
387390
expandDevTools={this.state.expandDevTools}
391+
hideDevTools={this.state.hideDevTools}
388392
tabs={this.state.tabs}
389393
runOnClick={runOnClick}
390394
verticalMode={verticalMode}

packages/app/src/embed/components/Content/index.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ type Props = {
6464
highlightedLines: number[];
6565
forceRefresh: boolean;
6666
expandDevTools: boolean;
67+
hideDevTools: boolean;
6768
runOnClick: boolean;
6869
verticalMode: boolean;
6970
tabs?: string[];
@@ -396,6 +397,7 @@ export default class Content extends React.PureComponent<Props, State> {
396397
currentModule,
397398
hideNavigation,
398399
expandDevTools,
400+
hideDevTools,
399401
verticalMode,
400402
sidebarOpen,
401403
toggleSidebar,
@@ -413,7 +415,7 @@ export default class Content extends React.PureComponent<Props, State> {
413415

414416
const templateDefinition = getTemplate(sandbox.template);
415417
const parsedConfigurations = parseSandboxConfigurations(sandbox);
416-
const views = getPreviewTabs(sandbox, parsedConfigurations);
418+
let views = getPreviewTabs(sandbox, parsedConfigurations);
417419

418420
const sandboxConfig = sandbox.modules.find(
419421
x => x.directoryShortid == null && x.title === 'sandbox.config.json'
@@ -430,6 +432,10 @@ export default class Content extends React.PureComponent<Props, State> {
430432
}
431433
}
432434

435+
if (hideDevTools) {
436+
views = [views[0]]; // show preview only
437+
}
438+
433439
if (view !== 'browser') {
434440
// Backwards compatability for sandbox.config.json
435441
if (view === 'console') {
@@ -448,7 +454,7 @@ export default class Content extends React.PureComponent<Props, State> {
448454
If the user wants to override the default, they can
449455
do that by using the explicit flag.
450456
*/
451-
if (typeof expandDevTools !== 'undefined') {
457+
if (typeof expandDevTools !== 'undefined' && views[1]) {
452458
views[1].open = expandDevTools;
453459
}
454460

@@ -495,6 +501,7 @@ export default class Content extends React.PureComponent<Props, State> {
495501
openInNewWindow={this.openInNewWindow}
496502
toggleLike={toggleLike}
497503
initialEditorSize={editorSize}
504+
hideDevTools={hideDevTools}
498505
>
499506
<>
500507
<Tabs>

packages/app/src/embed/components/SplitPane/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default function SplitView({
1515
sandbox,
1616
toggleLike,
1717
initialEditorSize = 50, // in percent
18+
hideDevTools,
1819
...props
1920
}) {
2021
/* Things this component should do
@@ -128,6 +129,7 @@ export default function SplitView({
128129
toggleLike={toggleLike}
129130
previewVisible={size < maxSize}
130131
isDragging={isDragging}
132+
offsetBottom={!hideDevTools && size < maxSize}
131133
/>
132134
<SplitPane
133135
split="vertical"
@@ -146,6 +148,7 @@ export default function SplitView({
146148
refresh={refresh}
147149
openInNewWindow={openInNewWindow}
148150
isDragging={isDragging}
151+
offsetBottom={!hideDevTools && size < maxSize}
149152
/>
150153
) : null}
151154
{isDragging ? <PointerOverlay /> : null}

packages/common/src/__snapshots__/url.test.js.snap

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Object {
77
"enableEslint": false,
88
"expandDevTools": false,
99
"forceRefresh": false,
10+
"hideDevTools": false,
1011
"hideNavigation": false,
1112
"isConsolePreviewWindow": false,
1213
"isEditorScreen": true,
@@ -27,6 +28,7 @@ Object {
2728
"enableEslint": false,
2829
"expandDevTools": false,
2930
"forceRefresh": false,
31+
"hideDevTools": false,
3032
"hideNavigation": true,
3133
"isConsolePreviewWindow": false,
3234
"isEditorScreen": true,
@@ -46,6 +48,7 @@ Object {
4648
"enableEslint": false,
4749
"expandDevTools": false,
4850
"forceRefresh": false,
51+
"hideDevTools": false,
4952
"hideNavigation": true,
5053
"isConsolePreviewWindow": false,
5154
"isEditorScreen": true,
@@ -65,6 +68,7 @@ Object {
6568
"enableEslint": false,
6669
"expandDevTools": false,
6770
"forceRefresh": false,
71+
"hideDevTools": false,
6872
"hideNavigation": false,
6973
"isConsolePreviewWindow": false,
7074
"isEditorScreen": true,
@@ -84,6 +88,7 @@ Object {
8488
"enableEslint": false,
8589
"expandDevTools": false,
8690
"forceRefresh": false,
91+
"hideDevTools": false,
8792
"hideNavigation": false,
8893
"isConsolePreviewWindow": false,
8994
"isEditorScreen": true,
@@ -104,6 +109,7 @@ Object {
104109
"enableEslint": false,
105110
"expandDevTools": false,
106111
"forceRefresh": false,
112+
"hideDevTools": false,
107113
"hideNavigation": false,
108114
"isConsolePreviewWindow": false,
109115
"isEditorScreen": true,
@@ -123,6 +129,7 @@ Object {
123129
"enableEslint": false,
124130
"expandDevTools": false,
125131
"forceRefresh": false,
132+
"hideDevTools": false,
126133
"hideNavigation": false,
127134
"isConsolePreviewWindow": false,
128135
"isEditorScreen": true,
@@ -142,6 +149,7 @@ Object {
142149
"enableEslint": false,
143150
"expandDevTools": false,
144151
"forceRefresh": false,
152+
"hideDevTools": false,
145153
"hideNavigation": false,
146154
"isConsolePreviewWindow": false,
147155
"isEditorScreen": false,

packages/common/src/url.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface SandboxOptions {
1818
enableEslint?: boolean;
1919
forceRefresh?: boolean;
2020
expandDevTools?: boolean;
21+
hideDevTools?: boolean;
2122
verticalMode?: boolean;
2223
runOnClick?: boolean;
2324
previewWindow?: 'tests' | 'console';
@@ -99,6 +100,7 @@ export const getSandboxOptions = (url: string) => {
99100
result.enableEslint = url.includes('eslint=1');
100101
result.forceRefresh = url.includes('forcerefresh=1');
101102
result.expandDevTools = url.includes('expanddevtools=1');
103+
result.hideDevTools = url.includes('hidedevtools=1');
102104
if (url.includes('verticallayout=')) {
103105
result.verticalMode = url.includes('verticallayout=1');
104106
}

0 commit comments

Comments
 (0)