From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../inspector/flexbox/components/FlexContainer.js | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 devtools/client/inspector/flexbox/components/FlexContainer.js (limited to 'devtools/client/inspector/flexbox/components/FlexContainer.js') diff --git a/devtools/client/inspector/flexbox/components/FlexContainer.js b/devtools/client/inspector/flexbox/components/FlexContainer.js new file mode 100644 index 0000000000..c8c264defa --- /dev/null +++ b/devtools/client/inspector/flexbox/components/FlexContainer.js @@ -0,0 +1,125 @@ +/* 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 { + createElement, + createRef, + Fragment, + 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 { + getFormatStr, +} = require("resource://devtools/client/inspector/layout/utils/l10n.js"); + +loader.lazyRequireGetter( + this, + "getNodeRep", + "resource://devtools/client/inspector/shared/node-reps.js" +); + +const Types = require("resource://devtools/client/inspector/flexbox/types.js"); + +const { + highlightNode, + unhighlightNode, +} = require("resource://devtools/client/inspector/boxmodel/actions/box-model-highlighter.js"); + +class FlexContainer extends PureComponent { + static get propTypes() { + return { + dispatch: PropTypes.func.isRequired, + color: PropTypes.string.isRequired, + flexContainer: PropTypes.shape(Types.flexContainer).isRequired, + getSwatchColorPickerTooltip: PropTypes.func.isRequired, + onSetFlexboxOverlayColor: PropTypes.func.isRequired, + }; + } + + constructor(props) { + super(props); + + this.swatchEl = createRef(); + + this.setFlexboxColor = this.setFlexboxColor.bind(this); + } + + componentDidMount() { + const tooltip = this.props.getSwatchColorPickerTooltip(); + + let previousColor; + tooltip.addSwatch(this.swatchEl.current, { + onCommit: this.setFlexboxColor, + onPreview: this.setFlexboxColor, + onRevert: () => { + this.props.onSetFlexboxOverlayColor(previousColor); + }, + onShow: () => { + previousColor = this.props.color; + }, + }); + } + + componentWillUnmount() { + const tooltip = this.props.getSwatchColorPickerTooltip(); + tooltip.removeSwatch(this.swatchEl.current); + } + + setFlexboxColor() { + const color = this.swatchEl.current.dataset.color; + this.props.onSetFlexboxOverlayColor(color); + } + + render() { + const { color, flexContainer, dispatch } = this.props; + const { nodeFront, properties } = flexContainer; + + return createElement( + Fragment, + null, + dom.div( + { + className: "flex-header-container-label", + }, + getNodeRep(nodeFront, { + onDOMNodeMouseOut: () => dispatch(unhighlightNode()), + onDOMNodeMouseOver: () => dispatch(highlightNode(nodeFront)), + }), + dom.button({ + className: "layout-color-swatch", + "data-color": color, + ref: this.swatchEl, + style: { + backgroundColor: color, + }, + title: getFormatStr("layout.colorSwatch.tooltip", color), + }) + ), + dom.div( + { className: "flex-header-container-properties" }, + dom.div( + { + className: "inspector-badge", + role: "figure", + title: `flex-direction: ${properties["flex-direction"]}`, + }, + properties["flex-direction"] + ), + dom.div( + { + className: "inspector-badge", + role: "figure", + title: `flex-wrap: ${properties["flex-wrap"]}`, + }, + properties["flex-wrap"] + ) + ) + ); + } +} + +module.exports = FlexContainer; -- cgit v1.2.3