UNPKG

react-watermark-component

Version:

react-watermark-component is a component that can generate a water mark background image.

138 lines (106 loc) 12.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _class, _temp2; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _WaterMarkCanvas = require('./WaterMarkCanvas'); var _WaterMarkCanvas2 = _interopRequireDefault(_WaterMarkCanvas); var _SecurityDefense = require('./SecurityDefense'); var _SecurityDefense2 = _interopRequireDefault(_SecurityDefense); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 defaultOptions = { chunkWidth: 200, chunkHeight: 60, textAlign: 'left', textBaseline: 'bottom', globalAlpha: 0.17, font: '14px Microsoft Yahei', rotateAngle: -0.26, fillStyle: '#666' }; var waterMarkStyle = 'position: absolute;left: 0;right: 0;top:0;bottom:0;opacity: 0.7;z-index: 9999;pointer-events: none;overflow: hidden;background-color: transparent;background-repeat: repeat;'; var noop = function noop() {}; var WaterMark = (_temp2 = _class = function (_React$Component) { _inherits(WaterMark, _React$Component); function WaterMark() { var _ref; var _temp, _this, _ret; _classCallCheck(this, WaterMark); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WaterMark.__proto__ || Object.getPrototypeOf(WaterMark)).call.apply(_ref, [this].concat(args))), _this), _this.getStyles = function () { var _this$props = _this.props, waterMarkText = _this$props.waterMarkText, options = _this$props.options; var newOptions = Object.assign({}, defaultOptions, options); return (0, _WaterMarkCanvas2.default)(waterMarkText, newOptions); }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(WaterMark, [{ key: 'componentDidMount', value: function componentDidMount() { var dom = document.getElementById('water-mark-observer'); var parent = document.getElementById('water-mark-wrapper'); var securityAlarm = this.props.securityAlarm; var security = new _SecurityDefense2.default(waterMarkStyle, this.getStyles, securityAlarm); security.registerNodeRemoveListener(dom, parent); security.registerNodeAttrChangeListener(dom); } }, { key: 'render', value: function render() { var children = this.props.children; var styles = { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0, opacity: 0.7, zIndex: 9999, pointerEvents: 'none', overflow: 'hidden', backgroundImage: 'url("' + this.getStyles() + '")', backgroundColor: 'transparent', backgroundRepeat: 'repeat' }; return _react2.default.createElement( 'div', { style: { position: 'relative' }, id: 'water-mark-wrapper' }, _react2.default.createElement('div', { style: styles, id: 'water-mark-observer' }), children ); } }]); return WaterMark; }(_react2.default.Component), _class.propTypes = { children: _propTypes2.default.element.isRequired, waterMarkText: _propTypes2.default.string.isRequired, securityAlarm: _propTypes2.default.func, options: _propTypes2.default.shape({ chunkWidth: _propTypes2.default.number, chunkHeight: _propTypes2.default.number, textAlign: _propTypes2.default.string, textBaseline: _propTypes2.default.string, globalAlpha: _propTypes2.default.number, font: _propTypes2.default.string, rotateAngle: _propTypes2.default.number, fillStyle: _propTypes2.default.string }) }, _temp2); WaterMark.defaultProps = { securityAlarm: noop, options: defaultOptions }; exports.default = WaterMark; module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0T3B0aW9ucyIsImNodW5rV2lkdGgiLCJjaHVua0hlaWdodCIsInRleHRBbGlnbiIsInRleHRCYXNlbGluZSIsImdsb2JhbEFscGhhIiwiZm9udCIsInJvdGF0ZUFuZ2xlIiwiZmlsbFN0eWxlIiwid2F0ZXJNYXJrU3R5bGUiLCJub29wIiwiV2F0ZXJNYXJrIiwiZ2V0U3R5bGVzIiwicHJvcHMiLCJ3YXRlck1hcmtUZXh0Iiwib3B0aW9ucyIsIm5ld09wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJkb20iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicGFyZW50Iiwic2VjdXJpdHlBbGFybSIsInNlY3VyaXR5IiwiU2VjdXJpdHlEZWZlbnNlIiwicmVnaXN0ZXJOb2RlUmVtb3ZlTGlzdGVuZXIiLCJyZWdpc3Rlck5vZGVBdHRyQ2hhbmdlTGlzdGVuZXIiLCJjaGlsZHJlbiIsInN0eWxlcyIsInBvc2l0aW9uIiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwib3BhY2l0eSIsInpJbmRleCIsInBvaW50ZXJFdmVudHMiLCJvdmVyZmxvdyIsImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsImJhY2tncm91bmRSZXBlYXQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImVsZW1lbnQiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiZnVuYyIsInNoYXBlIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGlCQUFpQjtBQUNyQkMsY0FBWSxHQURTO0FBRXJCQyxlQUFhLEVBRlE7QUFHckJDLGFBQVcsTUFIVTtBQUlyQkMsZ0JBQWMsUUFKTztBQUtyQkMsZUFBYSxJQUxRO0FBTXJCQyxRQUFNLHNCQU5lO0FBT3JCQyxlQUFhLENBQUMsSUFQTztBQVFyQkMsYUFBVztBQVJVLENBQXZCOztBQVdBLElBQU1DLGlCQUFpQiw4S0FBdkI7QUFDQSxJQUFNQyxPQUFPLFNBQVBBLElBQU8sR0FBWSxDQUFFLENBQTNCOztJQUVNQyxTOzs7Ozs7Ozs7Ozs7Ozs0TEEwQkpDLFMsR0FBWSxZQUFNO0FBQUEsd0JBQ21CLE1BQUtDLEtBRHhCO0FBQUEsVUFDUkMsYUFEUSxlQUNSQSxhQURRO0FBQUEsVUFDT0MsT0FEUCxlQUNPQSxPQURQOztBQUVoQixVQUFNQyxhQUFhQyxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQmxCLGNBQWxCLEVBQWtDZSxPQUFsQyxDQUFuQjtBQUNBLGFBQU8sK0JBQW1CRCxhQUFuQixFQUFrQ0UsVUFBbEMsQ0FBUDtBQUNELEs7Ozs7O3dDQWJtQjtBQUNsQixVQUFNRyxNQUFNQyxTQUFTQyxjQUFULENBQXdCLHFCQUF4QixDQUFaO0FBQ0EsVUFBTUMsU0FBU0YsU0FBU0MsY0FBVCxDQUF3QixvQkFBeEIsQ0FBZjtBQUZrQixVQUdWRSxhQUhVLEdBR1EsS0FBS1YsS0FIYixDQUdWVSxhQUhVOztBQUlsQixVQUFNQyxXQUFXLElBQUlDLHlCQUFKLENBQW9CaEIsY0FBcEIsRUFBb0MsS0FBS0csU0FBekMsRUFBb0RXLGFBQXBELENBQWpCO0FBQ0FDLGVBQVNFLDBCQUFULENBQW9DUCxHQUFwQyxFQUF5Q0csTUFBekM7QUFDQUUsZUFBU0csOEJBQVQsQ0FBd0NSLEdBQXhDO0FBQ0Q7Ozs2QkFRUTtBQUFBLFVBQ0NTLFFBREQsR0FDYyxLQUFLZixLQURuQixDQUNDZSxRQUREOztBQUVQLFVBQU1DLFNBQVM7QUFDYkMsa0JBQVUsVUFERztBQUViQyxjQUFNLENBRk87QUFHYkMsZUFBTyxDQUhNO0FBSWJDLGFBQUssQ0FKUTtBQUtiQyxnQkFBUSxDQUxLO0FBTWJDLGlCQUFTLEdBTkk7QUFPYkMsZ0JBQVEsSUFQSztBQVFiQyx1QkFBZSxNQVJGO0FBU2JDLGtCQUFVLFFBVEc7QUFVYkMsbUNBQXlCLEtBQUszQixTQUFMLEVBQXpCLE9BVmE7QUFXYjRCLHlCQUFpQixhQVhKO0FBWWJDLDBCQUFrQjtBQVpMLE9BQWY7O0FBZUEsYUFDRTtBQUFBO0FBQUEsVUFBSyxPQUFPLEVBQUVYLFVBQVUsVUFBWixFQUFaLEVBQXNDLElBQUcsb0JBQXpDO0FBQ0UsK0NBQUssT0FBT0QsTUFBWixFQUFvQixJQUFHLHFCQUF2QixHQURGO0FBRUdEO0FBRkgsT0FERjtBQU1EOzs7O0VBdkRxQmMsZ0JBQU1DLFMsVUFDckJDLFMsR0FBWTtBQUNqQmhCLFlBQVVpQixvQkFBVUMsT0FBVixDQUFrQkMsVUFEWDtBQUVqQmpDLGlCQUFlK0Isb0JBQVVHLE1BQVYsQ0FBaUJELFVBRmY7QUFHakJ4QixpQkFBZXNCLG9CQUFVSSxJQUhSO0FBSWpCbEMsV0FBUzhCLG9CQUFVSyxLQUFWLENBQWdCO0FBQ3ZCakQsZ0JBQVk0QyxvQkFBVU0sTUFEQztBQUV2QmpELGlCQUFhMkMsb0JBQVVNLE1BRkE7QUFHdkJoRCxlQUFXMEMsb0JBQVVHLE1BSEU7QUFJdkI1QyxrQkFBY3lDLG9CQUFVRyxNQUpEO0FBS3ZCM0MsaUJBQWF3QyxvQkFBVU0sTUFMQTtBQU12QjdDLFVBQU11QyxvQkFBVUcsTUFOTztBQU92QnpDLGlCQUFhc0Msb0JBQVVNLE1BUEE7QUFRdkIzQyxlQUFXcUMsb0JBQVVHO0FBUkUsR0FBaEI7QUFKUSxDOzs7QUF5RHJCckMsVUFBVXlDLFlBQVYsR0FBeUI7QUFDdkI3QixpQkFBZWIsSUFEUTtBQUV2QkssV0FBU2Y7QUFGYyxDQUF6Qjs7a0JBS2VXLFMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgZ2V0V2F0ZXJNYXJrQ2FudmFzIGZyb20gJy4vV2F0ZXJNYXJrQ2FudmFzJ1xuaW1wb3J0IFNlY3VyaXR5RGVmZW5zZSBmcm9tICcuL1NlY3VyaXR5RGVmZW5zZSdcblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGNodW5rV2lkdGg6IDIwMCxcbiAgY2h1bmtIZWlnaHQ6IDYwLFxuICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyxcbiAgZ2xvYmFsQWxwaGE6IDAuMTcsXG4gIGZvbnQ6ICcxNHB4IE1pY3Jvc29mdCBZYWhlaScsXG4gIHJvdGF0ZUFuZ2xlOiAtMC4yNixcbiAgZmlsbFN0eWxlOiAnIzY2Nidcbn1cblxuY29uc3Qgd2F0ZXJNYXJrU3R5bGUgPSAncG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDA7cmlnaHQ6IDA7dG9wOjA7Ym90dG9tOjA7b3BhY2l0eTogMC43O3otaW5kZXg6IDk5OTk7cG9pbnRlci1ldmVudHM6IG5vbmU7b3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OydcbmNvbnN0IG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxuXG5jbGFzcyBXYXRlck1hcmsgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuZWxlbWVudC5pc1JlcXVpcmVkLFxuICAgIHdhdGVyTWFya1RleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBzZWN1cml0eUFsYXJtOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgY2h1bmtXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGNodW5rSGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgdGV4dEFsaWduOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgdGV4dEJhc2VsaW5lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZ2xvYmFsQWxwaGE6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBmb250OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgcm90YXRlQW5nbGU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBmaWxsU3R5bGU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dhdGVyLW1hcmstb2JzZXJ2ZXInKVxuICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3YXRlci1tYXJrLXdyYXBwZXInKVxuICAgIGNvbnN0IHsgc2VjdXJpdHlBbGFybSB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHNlY3VyaXR5ID0gbmV3IFNlY3VyaXR5RGVmZW5zZSh3YXRlck1hcmtTdHlsZSwgdGhpcy5nZXRTdHlsZXMsIHNlY3VyaXR5QWxhcm0pXG4gICAgc2VjdXJpdHkucmVnaXN0ZXJOb2RlUmVtb3ZlTGlzdGVuZXIoZG9tLCBwYXJlbnQpXG4gICAgc2VjdXJpdHkucmVnaXN0ZXJOb2RlQXR0ckNoYW5nZUxpc3RlbmVyKGRvbSlcbiAgfVxuXG4gIGdldFN0eWxlcyA9ICgpID0+IHtcbiAgICBjb25zdCB7IHdhdGVyTWFya1RleHQsIG9wdGlvbnMgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBuZXdPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpXG4gICAgcmV0dXJuIGdldFdhdGVyTWFya0NhbnZhcyh3YXRlck1hcmtUZXh0LCBuZXdPcHRpb25zKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIG9wYWNpdHk6IDAuNyxcbiAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcIiR7dGhpcy5nZXRTdHlsZXMoKX1cIilgLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ3JlcGVhdCdcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17eyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9fSBpZD1cIndhdGVyLW1hcmstd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXN9IGlkPVwid2F0ZXItbWFyay1vYnNlcnZlclwiIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5XYXRlck1hcmsuZGVmYXVsdFByb3BzID0ge1xuICBzZWN1cml0eUFsYXJtOiBub29wLFxuICBvcHRpb25zOiBkZWZhdWx0T3B0aW9uc1xufVxuXG5leHBvcnQgZGVmYXVsdCBXYXRlck1hcmtcbiJdfQ==