Skip to content

Commit c587e0d

Browse files
authored
Add editor size to full editor (codesandbox#1079)
?editorsize is currently only propagated in embed. Now it works in the full editor too. Useful for doczjs/docz#284
1 parent 3918123 commit c587e0d

File tree

6 files changed

+36
-9
lines changed

6 files changed

+36
-9
lines changed

packages/app/src/app/pages/Sandbox/Editor/Content/Preview/FlyingContainer.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ class FlyingContainer extends React.Component<Props, State> {
5858
this.initialWidth = width;
5959
this.initialHeight = height;
6060

61-
this.props.signals.editor.setPreviewBounds({ width, height });
61+
if (
62+
this.props.store.editor.previewWindow.width == null &&
63+
this.props.store.editor.previewWindow.height == null
64+
) {
65+
this.props.signals.editor.setPreviewBounds({ width, height });
66+
}
6267
}
6368
};
6469

packages/app/src/app/pages/Sandbox/Editor/Content/Preview/index.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ type State = {
2525
class Preview extends React.Component<Props, State> {
2626
state = {
2727
aligned: window.innerHeight > window.innerWidth ? 'bottom' : 'right',
28-
previewSizeScalar: 0.5,
2928
running: !this.props.runOnClick,
3029
};
3130

@@ -109,11 +108,17 @@ class Preview extends React.Component<Props, State> {
109108
if (width !== this.props.width || height !== this.props.height) {
110109
if (this.state.aligned === 'bottom') {
111110
this.props.signals.editor.setPreviewBounds(
112-
this.getBottomCoordinates(props, this.state.previewSizeScalar)
111+
this.getBottomCoordinates(
112+
props,
113+
1 - this.props.store.editor.previewWindow.editorSize / 100
114+
)
113115
);
114116
} else {
115117
this.props.signals.editor.setPreviewBounds(
116-
this.getRightCoordinates(props, this.state.previewSizeScalar)
118+
this.getRightCoordinates(
119+
props,
120+
1 - this.props.store.editor.previewWindow.editorSize / 100
121+
)
117122
);
118123
}
119124
}
@@ -213,9 +218,13 @@ class Preview extends React.Component<Props, State> {
213218
) {
214219
this.setState({ aligned: null });
215220
} else if (aligned === 'right' && newSizes.width) {
216-
this.setState({ previewSizeScalar: newSizes.width / this.props.width });
221+
this.props.signals.editor.editorSizeUpdated({
222+
editorSize: (1 - newSizes.width / this.props.width) * 100,
223+
});
217224
} else if (aligned === 'bottom' && newSizes.height) {
218-
this.setState({ previewSizeScalar: newSizes.height / this.props.height });
225+
this.props.signals.editor.editorSizeUpdated({
226+
editorSize: (1 - newSizes.height / this.props.height) * 100,
227+
});
219228
}
220229
};
221230

@@ -257,15 +266,21 @@ class Preview extends React.Component<Props, State> {
257266
e.stopPropagation();
258267
}
259268
resize(this.getRightCoordinates());
260-
this.setState({ aligned: 'right', previewSizeScalar: 0.5 });
269+
this.setState({ aligned: 'right' });
270+
this.props.signals.editor.editorSizeUpdated({
271+
editorSize: 50,
272+
});
261273
};
262274
const alignBottom = e => {
263275
if (e) {
264276
e.preventDefault();
265277
e.stopPropagation();
266278
}
267279
resize(this.getBottomCoordinates());
268-
this.setState({ aligned: 'bottom', previewSizeScalar: 0.5 });
280+
this.setState({ aligned: 'bottom' });
281+
this.props.signals.editor.editorSizeUpdated({
282+
editorSize: 50,
283+
});
269284
};
270285

271286
return (

packages/app/src/app/store/actions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export function setUrlOptions({ state, router, utils }) {
8484
if (options.highlightedLines)
8585
state.set('editor.highlightedLines', options.highlightedLines);
8686
if (options.editorSize)
87-
state.set('preferences.settings.editorSize', options.editorSize);
87+
state.set('editor.previewWindow.editorSize', options.editorSize);
8888
if (options.hideNavigation)
8989
state.set('preferences.hideNavigation', options.hideNavigation);
9090
if (options.isInProjectView)

packages/app/src/app/store/modules/editor/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export default Module({
4343
previewWindow: {
4444
height: undefined,
4545
width: undefined,
46+
editorSize: 50,
4647
x: 0,
4748
y: 0,
4849
content: 'browser',
@@ -90,5 +91,6 @@ export default Module({
9091
setPreviewContent: sequences.setPreviewContent,
9192
currentTabChanged: sequences.changeCurrentTab,
9293
discardModuleChanges: sequences.discardModuleChanges,
94+
editorSizeUpdated: sequences.updateEditorSize,
9395
},
9496
});

packages/app/src/app/store/modules/editor/model.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ export default {
170170
quickActionsOpen: types.boolean,
171171
previewWindow: types.model({
172172
content: types.maybeNull(types.string),
173+
editorSize: types.maybe(types.number),
173174
width: types.maybeNull(types.number),
174175
height: types.maybeNull(types.number),
175176
x: types.maybeNull(types.number),

packages/app/src/app/store/modules/editor/sequences.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,3 +273,7 @@ export const setPreviewBounds = [actions.setPreviewBounds];
273273
export const setPreviewContent = [
274274
set(state`editor.previewWindow.content`, props`content`),
275275
];
276+
277+
export const updateEditorSize = [
278+
set(state`editor.previewWindow.editorSize`, props`editorSize`),
279+
];

0 commit comments

Comments
 (0)