Source code

Revision control

Copy as Markdown

Other Tools

/* 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 {
createFactory,
PureComponent,
} = require("resource://devtools/client/shared/vendor/react.js");
const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
const BoxModelInfo = createFactory(
require("resource://devtools/client/inspector/boxmodel/components/BoxModelInfo.js")
);
const BoxModelMain = createFactory(
require("resource://devtools/client/inspector/boxmodel/components/BoxModelMain.js")
);
const BoxModelProperties = createFactory(
require("resource://devtools/client/inspector/boxmodel/components/BoxModelProperties.js")
);
const Types = require("resource://devtools/client/inspector/boxmodel/types.js");
class BoxModel extends PureComponent {
static get propTypes() {
return {
boxModel: PropTypes.shape(Types.boxModel).isRequired,
dispatch: PropTypes.func.isRequired,
onShowBoxModelEditor: PropTypes.func.isRequired,
onShowRulePreviewTooltip: PropTypes.func.isRequired,
onToggleGeometryEditor: PropTypes.func.isRequired,
showBoxModelProperties: PropTypes.bool.isRequired,
setSelectedNode: PropTypes.func.isRequired,
};
}
constructor(props) {
super(props);
this.onKeyDown = this.onKeyDown.bind(this);
}
onKeyDown(event) {
const { target } = event;
if (target == this.boxModelContainer) {
this.boxModelMain.onKeyDown(event);
}
}
render() {
const {
boxModel,
dispatch,
onShowBoxModelEditor,
onShowRulePreviewTooltip,
onToggleGeometryEditor,
setSelectedNode,
showBoxModelProperties,
} = this.props;
return dom.div(
{
className: "boxmodel-container",
tabIndex: 0,
ref: div => {
this.boxModelContainer = div;
},
onKeyDown: this.onKeyDown,
},
BoxModelMain({
boxModel,
boxModelContainer: this.boxModelContainer,
dispatch,
onShowBoxModelEditor,
onShowRulePreviewTooltip,
ref: boxModelMain => {
this.boxModelMain = boxModelMain;
},
}),
BoxModelInfo({
boxModel,
onToggleGeometryEditor,
}),
showBoxModelProperties
? BoxModelProperties({
boxModel,
dispatch,
setSelectedNode,
})
: null
);
}
}
module.exports = BoxModel;