@helpscout/artboard
Version:
A tool kit for React UI development and design
223 lines (169 loc) • 8.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _templateObject = _taggedTemplateLiteral(['\n position: absolute;\n top: 0;\n left: 2px;\n height: 100%;\n display: flex;\n min-height: 0;\n align-items: center;\n justify-content: center;\n'], ['\n position: absolute;\n top: 0;\n left: 2px;\n height: 100%;\n display: flex;\n min-height: 0;\n align-items: center;\n justify-content: center;\n']),
_templateObject2 = _taggedTemplateLiteral(['\n transform: rotate(-90deg);\n will-change: contents;\n'], ['\n transform: rotate(-90deg);\n will-change: contents;\n']),
_templateObject3 = _taggedTemplateLiteral(['\n position: absolute;\n top: 2px;\n width: 100%;\n text-align: center;\n will-change: contents;\n'], ['\n position: absolute;\n top: 2px;\n width: 100%;\n text-align: center;\n will-change: contents;\n']);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _fancy = require('@helpscout/fancy');
var _fancy2 = _interopRequireDefault(_fancy);
var _classNames = require('@helpscout/react-utils/dist/classNames');
var _classNames2 = _interopRequireDefault(_classNames);
var _resizeObserverPolyfill = require('resize-observer-polyfill');
var _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);
var _GuideContext = require('../GuideContext');
var _GuideContext2 = _interopRequireDefault(_GuideContext);
var _Guide = require('./Guide.Container');
var _Guide2 = _interopRequireDefault(_Guide);
var _polished = require('polished');
var _utils = require('../utils');
var _Guide3 = require('./Guide.utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Guide = function (_React$PureComponent) {
_inherits(Guide, _React$PureComponent);
function Guide(props) {
_classCallCheck(this, Guide);
var _this = _possibleConstructorReturn(this, (Guide.__proto__ || Object.getPrototypeOf(Guide)).call(this, props));
_this.resizeHandler = function (entries) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var entry = _step.value;
var _entry$contentRect = entry.contentRect,
width = _entry$contentRect.width,
height = _entry$contentRect.height;
_this.setState({
height: Math.round(height),
width: Math.round(width)
});
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
};
_this.setNodeRef = function (node) {
return _this.node = node;
};
_this.state = {
width: props.width,
height: props.height
};
_this.resizeObserver = new _resizeObserverPolyfill2.default(_this.resizeHandler);
return _this;
}
_createClass(Guide, [{
key: 'componentDidMount',
value: function componentDidMount() {
/* istanbul ignore else */
if (this.node) {
this.resizeObserver.observe(this.node);
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
/* istanbul ignore next */
if (this.node) {
this.resizeObserver.unobserve(this.node);
}
}
/* istanbul ignore next */
}, {
key: 'render',
value: function render() {
var _this2 = this;
var _props = this.props,
className = _props.className,
children = _props.children,
showGuide = _props.showGuide,
rest = _objectWithoutProperties(_props, ['className', 'children', 'showGuide']);
var _state = this.state,
height = _state.height,
width = _state.width;
return _react2.default.createElement(
_GuideContext2.default.Consumer,
null,
function (contextProps) {
var mergedProps = (0, _utils.getPreparedProps)(_extends({}, rest, contextProps));
// @ts-ignore
var showValues = mergedProps.showValues;
return _react2.default.createElement(
GuideUI,
Object.assign({}, mergedProps, {
innerRef: _this2.setNodeRef,
className: (0, _classNames2.default)((0, _utils.cx)('Guide'), className)
}),
showValues && _react2.default.createElement(
'div',
{ className: (0, _utils.cx)('Guide__sizeWrapper') },
_react2.default.createElement(
HeightUI,
{ className: (0, _utils.cx)('Guide__height') },
_react2.default.createElement(
HeightTextUI,
null,
height
)
),
_react2.default.createElement(
WidthUI,
{ className: (0, _utils.cx)('Guide__width') },
width
)
)
);
}
);
}
}]);
return Guide;
}(_react2.default.PureComponent);
Guide.defaultProps = _Guide3.defaultProps;
var GuideUI = (0, _fancy2.default)('div')(function (_ref) {
var children = _ref.children,
props = _objectWithoutProperties(_ref, ['children']);
return _extends({}, props, {
background: (0, _polished.rgba)(props.color, props.opacity),
fontFamily: '"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace',
fontSize: 8,
lineHeight: 1,
opacity: 1,
'*': {
pointerEvents: 'none'
},
willChange: 'width, height'
});
});
var HeightUI = (0, _fancy2.default)('div')(_templateObject);
var HeightTextUI = (0, _fancy2.default)('div')(_templateObject2);
var WidthUI = (0, _fancy2.default)('div')(_templateObject3);
var connectedGuide = function (props) {
return _react2.default.createElement(
_Guide2.default,
props,
_react2.default.createElement(Guide, props)
);
};
exports.default = connectedGuide;