diff options
Diffstat (limited to 'devtools/client/responsive.html/components/viewport.js')
-rw-r--r-- | devtools/client/responsive.html/components/viewport.js | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/devtools/client/responsive.html/components/viewport.js b/devtools/client/responsive.html/components/viewport.js new file mode 100644 index 000000000..fe41b41ee --- /dev/null +++ b/devtools/client/responsive.html/components/viewport.js @@ -0,0 +1,114 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { DOM: dom, createClass, createFactory, PropTypes } = + require("devtools/client/shared/vendor/react"); + +const Types = require("../types"); +const ResizableViewport = createFactory(require("./resizable-viewport")); +const ViewportDimension = createFactory(require("./viewport-dimension")); + +module.exports = createClass({ + + displayName: "Viewport", + + propTypes: { + devices: PropTypes.shape(Types.devices).isRequired, + location: Types.location.isRequired, + screenshot: PropTypes.shape(Types.screenshot).isRequired, + swapAfterMount: PropTypes.bool.isRequired, + viewport: PropTypes.shape(Types.viewport).isRequired, + onBrowserMounted: PropTypes.func.isRequired, + onChangeDevice: PropTypes.func.isRequired, + onContentResize: PropTypes.func.isRequired, + onRemoveDevice: PropTypes.func.isRequired, + onResizeViewport: PropTypes.func.isRequired, + onRotateViewport: PropTypes.func.isRequired, + onUpdateDeviceModalOpen: PropTypes.func.isRequired, + }, + + onChangeDevice(device) { + let { + viewport, + onChangeDevice, + } = this.props; + + onChangeDevice(viewport.id, device); + }, + + onRemoveDevice() { + let { + viewport, + onRemoveDevice, + } = this.props; + + onRemoveDevice(viewport.id); + }, + + onResizeViewport(width, height) { + let { + viewport, + onResizeViewport, + } = this.props; + + onResizeViewport(viewport.id, width, height); + }, + + onRotateViewport() { + let { + viewport, + onRotateViewport, + } = this.props; + + onRotateViewport(viewport.id); + }, + + render() { + let { + devices, + location, + screenshot, + swapAfterMount, + viewport, + onBrowserMounted, + onContentResize, + onUpdateDeviceModalOpen, + } = this.props; + + let { + onChangeDevice, + onRemoveDevice, + onRotateViewport, + onResizeViewport, + } = this; + + return dom.div( + { + className: "viewport", + }, + ViewportDimension({ + viewport, + onRemoveDevice, + onResizeViewport, + }), + ResizableViewport({ + devices, + location, + screenshot, + swapAfterMount, + viewport, + onBrowserMounted, + onChangeDevice, + onContentResize, + onRemoveDevice, + onResizeViewport, + onRotateViewport, + onUpdateDeviceModalOpen, + }) + ); + }, + +}); |