diff options
Diffstat (limited to 'devtools/client/responsive/types.js')
-rw-r--r-- | devtools/client/responsive/types.js | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/devtools/client/responsive/types.js b/devtools/client/responsive/types.js new file mode 100644 index 0000000000..561f7803f6 --- /dev/null +++ b/devtools/client/responsive/types.js @@ -0,0 +1,139 @@ +/* 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 PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js"); +const { createEnum } = require("resource://devtools/client/shared/enum.js"); + +// React PropTypes are used to describe the expected "shape" of various common +// objects that get passed down as props to components. + +/* ENUMS */ + +/** + * An enum containing the possible states for loadable things. + */ +exports.loadableState = createEnum([ + "INITIALIZED", + "LOADING", + "LOADED", + "ERROR", +]); + +/* DEVICE */ + +/** + * A single device that can be displayed in the viewport. + */ +const device = { + // The name of the device + name: PropTypes.string, + + // The width of the device + width: PropTypes.number, + + // The height of the device + height: PropTypes.number, + + // The pixel ratio of the device + pixelRatio: PropTypes.number, + + // The user agent string of the device + userAgent: PropTypes.string, + + // Whether or not it is a touch device + touch: PropTypes.bool, + + // The operating system of the device + os: PropTypes.string, + + // Whether or not the device is displayed in the device selector + displayed: PropTypes.bool, +}; + +/** + * A list of devices and their types that can be displayed in the viewport. + */ +exports.devices = { + // An array of device types + types: PropTypes.arrayOf(PropTypes.string), + + // An array of phone devices + phones: PropTypes.arrayOf(PropTypes.shape(device)), + + // An array of tablet devices + tablets: PropTypes.arrayOf(PropTypes.shape(device)), + + // An array of laptop devices + laptops: PropTypes.arrayOf(PropTypes.shape(device)), + + // An array of television devices + televisions: PropTypes.arrayOf(PropTypes.shape(device)), + + // An array of console devices + consoles: PropTypes.arrayOf(PropTypes.shape(device)), + + // An array of watch devices + watches: PropTypes.arrayOf(PropTypes.shape(device)), + + // Whether or not the device modal is open + isModalOpen: PropTypes.bool, + + // Viewport id that triggered the modal to open + modalOpenedFromViewport: PropTypes.number, + + // Device list state, possible values are exported above in an enum + listState: PropTypes.oneOf(Object.keys(exports.loadableState)), +}; + +/* VIEWPORT */ + +/** + * Network throttling state for a given viewport. + */ +exports.networkThrottling = { + // Whether or not network throttling is enabled + enabled: PropTypes.bool, + + // Name of the selected throttling profile + profile: PropTypes.string, +}; + +/** + * A single viewport displaying a document. + */ +exports.viewport = { + // The id of the viewport + id: PropTypes.number, + + // The currently selected device applied to the viewport + device: PropTypes.string, + + // The currently selected device type applied to the viewport + deviceType: PropTypes.string, + + // The width of the viewport + width: PropTypes.number, + + // The height of the viewport + height: PropTypes.number, + + // The device pixel ratio of the viewport + pixelRatio: PropTypes.number, + + // The user context (container) ID for the viewport + // Defaults to 0 meaning the default context + userContextId: PropTypes.number, +}; + +/* ACTIONS IN PROGRESS */ + +/** + * The progression of the screenshot. + */ +exports.screenshot = { + // Whether screenshot capturing is in progress + isCapturing: PropTypes.bool, +}; |