165 lines
3.5 KiB
JavaScript
165 lines
3.5 KiB
JavaScript
/* 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("devtools/client/shared/vendor/react");
|
|
const { createEnum } = require("./utils/enum");
|
|
|
|
// React PropTypes are used to describe the expected "shape" of various common
|
|
// objects that get passed down as props to components.
|
|
|
|
/* GLOBAL */
|
|
|
|
/**
|
|
* The location of the document displayed in the viewport(s).
|
|
*/
|
|
exports.location = PropTypes.string;
|
|
|
|
/* 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,
|
|
|
|
};
|
|
|
|
/**
|
|
* An enum containing the possible values for the device list state
|
|
*/
|
|
exports.deviceListState = createEnum([
|
|
"INITIALIZED",
|
|
"LOADING",
|
|
"LOADED",
|
|
"ERROR",
|
|
]);
|
|
|
|
/**
|
|
* 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,
|
|
|
|
// Device list state, possible values are exported above in an enum
|
|
listState: PropTypes.oneOf(Object.keys(exports.deviceListState)),
|
|
|
|
};
|
|
|
|
/* 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,
|
|
|
|
};
|
|
|
|
/**
|
|
* Device pixel ratio for a given viewport.
|
|
*/
|
|
const pixelRatio = exports.pixelRatio = {
|
|
|
|
// The device pixel ratio value
|
|
value: PropTypes.number,
|
|
|
|
};
|
|
|
|
/**
|
|
* Touch simulation state for a given viewport.
|
|
*/
|
|
exports.touchSimulation = {
|
|
|
|
// Whether or not touch simulation is enabled
|
|
enabled: PropTypes.bool,
|
|
|
|
};
|
|
|
|
/**
|
|
* 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 width of the viewport
|
|
width: PropTypes.number,
|
|
|
|
// The height of the viewport
|
|
height: PropTypes.number,
|
|
|
|
// The devicePixelRatio of the viewport
|
|
pixelRatio: PropTypes.shape(pixelRatio),
|
|
|
|
};
|
|
|
|
/* ACTIONS IN PROGRESS */
|
|
|
|
/**
|
|
* The progression of the screenshot.
|
|
*/
|
|
exports.screenshot = {
|
|
|
|
// Whether screenshot capturing is in progress
|
|
isCapturing: PropTypes.bool,
|
|
|
|
};
|