UNPKG

react-watermark-component

Version:

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

61 lines (51 loc) 7.18 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var SecurityDefense = function SecurityDefense(waterMarkStyle, getImageUrl, securityAlarm) { var _this = this; _classCallCheck(this, SecurityDefense); this.getWaterMarkDom = function () { return document.getElementById(_this.randomId); }; this.registerNodeRemoveListener = function (dom, parent) { dom.addEventListener('DOMNodeRemoved', function () { _this.createWaterMarkDom(parent); if (_this.securityAlarm) { _this.securityAlarm(); } }, false); }; this.createWaterMarkDom = function (parent) { var newWaterMark = document.createElement('div'); _this.randomId = 'water-mark-observer-' + new Date().getTime(); newWaterMark.id = _this.randomId; _this.waterMarkStyle = _this.waterMarkStyle.concat('background-image: url("' + _this.getImageUrl() + '");'); newWaterMark.style = _this.waterMarkStyle; parent.appendChild(newWaterMark); var newDom = _this.getWaterMarkDom(); _this.registerNodeRemoveListener(newDom, parent); _this.registerNodeAttrChangeListener(newDom); }; this.registerNodeAttrChangeListener = function (target) { var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.type === 'attributes') { target.parentNode.removeChild(target); observer.disconnect(); } }); }); var config = { attributes: true, attributeFilter: ['style'] }; observer.observe(target, config); }; this.randomId = 'water-mark-observer'; this.waterMarkStyle = waterMarkStyle; this.getImageUrl = getImageUrl; this.securityAlarm = securityAlarm; }; exports.default = SecurityDefense; module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TZWN1cml0eURlZmVuc2UuanMiXSwibmFtZXMiOlsiU2VjdXJpdHlEZWZlbnNlIiwid2F0ZXJNYXJrU3R5bGUiLCJnZXRJbWFnZVVybCIsInNlY3VyaXR5QWxhcm0iLCJnZXRXYXRlck1hcmtEb20iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicmFuZG9tSWQiLCJyZWdpc3Rlck5vZGVSZW1vdmVMaXN0ZW5lciIsImRvbSIsInBhcmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjcmVhdGVXYXRlck1hcmtEb20iLCJuZXdXYXRlck1hcmsiLCJjcmVhdGVFbGVtZW50IiwiRGF0ZSIsImdldFRpbWUiLCJpZCIsImNvbmNhdCIsInN0eWxlIiwiYXBwZW5kQ2hpbGQiLCJuZXdEb20iLCJyZWdpc3Rlck5vZGVBdHRyQ2hhbmdlTGlzdGVuZXIiLCJ0YXJnZXQiLCJNdXRhdGlvbk9ic2VydmVyIiwid2luZG93IiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIk1vek11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlciIsIm11dGF0aW9ucyIsImZvckVhY2giLCJtdXRhdGlvbiIsInR5cGUiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJkaXNjb25uZWN0IiwiY29uZmlnIiwiYXR0cmlidXRlcyIsImF0dHJpYnV0ZUZpbHRlciIsIm9ic2VydmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0lBQXFCQSxlLEdBQ25CLHlCQUFZQyxjQUFaLEVBQTRCQyxXQUE1QixFQUF5Q0MsYUFBekMsRUFBd0Q7QUFBQTs7QUFBQTs7QUFBQSxPQU94REMsZUFQd0QsR0FPdEMsWUFBTTtBQUN0QixXQUFPQyxTQUFTQyxjQUFULENBQXdCLE1BQUtDLFFBQTdCLENBQVA7QUFDRCxHQVR1RDs7QUFBQSxPQVd4REMsMEJBWHdELEdBVzNCLFVBQUNDLEdBQUQsRUFBTUMsTUFBTixFQUFpQjtBQUM1Q0QsUUFBSUUsZ0JBQUosQ0FBcUIsZ0JBQXJCLEVBQXVDLFlBQU07QUFDM0MsWUFBS0Msa0JBQUwsQ0FBd0JGLE1BQXhCO0FBQ0EsVUFBSSxNQUFLUCxhQUFULEVBQXdCO0FBQ3RCLGNBQUtBLGFBQUw7QUFDRDtBQUNGLEtBTEQsRUFLRyxLQUxIO0FBTUQsR0FsQnVEOztBQUFBLE9Bb0J4RFMsa0JBcEJ3RCxHQW9CbkMsVUFBQ0YsTUFBRCxFQUFZO0FBQy9CLFFBQU1HLGVBQWVSLFNBQVNTLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBckI7QUFDQSxVQUFLUCxRQUFMLDRCQUF3QyxJQUFJUSxJQUFKLEVBQUQsQ0FBYUMsT0FBYixFQUF2QztBQUNBSCxpQkFBYUksRUFBYixHQUFrQixNQUFLVixRQUF2QjtBQUNBLFVBQUtOLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQmlCLE1BQXBCLDZCQUFxRCxNQUFLaEIsV0FBTCxFQUFyRCxTQUF0QjtBQUNBVyxpQkFBYU0sS0FBYixHQUFxQixNQUFLbEIsY0FBMUI7QUFDQVMsV0FBT1UsV0FBUCxDQUFtQlAsWUFBbkI7QUFDQSxRQUFNUSxTQUFTLE1BQUtqQixlQUFMLEVBQWY7QUFDQSxVQUFLSSwwQkFBTCxDQUFnQ2EsTUFBaEMsRUFBd0NYLE1BQXhDO0FBQ0EsVUFBS1ksOEJBQUwsQ0FBb0NELE1BQXBDO0FBQ0QsR0E5QnVEOztBQUFBLE9BZ0N4REMsOEJBaEN3RCxHQWdDdkIsVUFBQ0MsTUFBRCxFQUFZO0FBQzNDLFFBQUlDLG1CQUFtQkMsT0FBT0QsZ0JBQVAsSUFBMkJDLE9BQU9DLHNCQUFsQyxJQUE0REQsT0FBT0UsbUJBQTFGO0FBQ0EsUUFBSUMsV0FBVyxJQUFJSixnQkFBSixDQUFxQixVQUFDSyxTQUFELEVBQWU7QUFDakRBLGdCQUFVQyxPQUFWLENBQWtCLFVBQUNDLFFBQUQsRUFBYztBQUM5QixZQUFJQSxTQUFTQyxJQUFULEtBQWtCLFlBQXRCLEVBQW9DO0FBQ2xDVCxpQkFBT1UsVUFBUCxDQUFrQkMsV0FBbEIsQ0FBOEJYLE1BQTlCO0FBQ0FLLG1CQUFTTyxVQUFUO0FBQ0Q7QUFDRixPQUxEO0FBTUQsS0FQYyxDQUFmO0FBUUEsUUFBSUMsU0FBUyxFQUFFQyxZQUFZLElBQWQsRUFBb0JDLGlCQUFpQixDQUFDLE9BQUQsQ0FBckMsRUFBYjtBQUNBVixhQUFTVyxPQUFULENBQWlCaEIsTUFBakIsRUFBeUJhLE1BQXpCO0FBQ0QsR0E1Q3VEOztBQUN0RCxPQUFLN0IsUUFBTCxHQUFnQixxQkFBaEI7QUFDQSxPQUFLTixjQUFMLEdBQXNCQSxjQUF0QjtBQUNBLE9BQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsT0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDRCxDOztrQkFOa0JILGUiLCJmaWxlIjoiU2VjdXJpdHlEZWZlbnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VjdXJpdHlEZWZlbnNlIHtcbiAgY29uc3RydWN0b3Iod2F0ZXJNYXJrU3R5bGUsIGdldEltYWdlVXJsLCBzZWN1cml0eUFsYXJtKSB7XG4gICAgdGhpcy5yYW5kb21JZCA9ICd3YXRlci1tYXJrLW9ic2VydmVyJ1xuICAgIHRoaXMud2F0ZXJNYXJrU3R5bGUgPSB3YXRlck1hcmtTdHlsZVxuICAgIHRoaXMuZ2V0SW1hZ2VVcmwgPSBnZXRJbWFnZVVybFxuICAgIHRoaXMuc2VjdXJpdHlBbGFybSA9IHNlY3VyaXR5QWxhcm1cbiAgfVxuXG4gIGdldFdhdGVyTWFya0RvbSA9ICgpID0+IHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5yYW5kb21JZClcbiAgfVxuXG4gIHJlZ2lzdGVyTm9kZVJlbW92ZUxpc3RlbmVyID0gKGRvbSwgcGFyZW50KSA9PiB7XG4gICAgZG9tLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgKCkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVXYXRlck1hcmtEb20ocGFyZW50KVxuICAgICAgaWYgKHRoaXMuc2VjdXJpdHlBbGFybSkge1xuICAgICAgICB0aGlzLnNlY3VyaXR5QWxhcm0oKVxuICAgICAgfVxuICAgIH0sIGZhbHNlKVxuICB9XG5cbiAgY3JlYXRlV2F0ZXJNYXJrRG9tID0gKHBhcmVudCkgPT4ge1xuICAgIGNvbnN0IG5ld1dhdGVyTWFyayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGhpcy5yYW5kb21JZCA9IGB3YXRlci1tYXJrLW9ic2VydmVyLSR7KG5ldyBEYXRlKCkpLmdldFRpbWUoKX1gXG4gICAgbmV3V2F0ZXJNYXJrLmlkID0gdGhpcy5yYW5kb21JZFxuICAgIHRoaXMud2F0ZXJNYXJrU3R5bGUgPSB0aGlzLndhdGVyTWFya1N0eWxlLmNvbmNhdChgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiJHt0aGlzLmdldEltYWdlVXJsKCl9XCIpO2ApXG4gICAgbmV3V2F0ZXJNYXJrLnN0eWxlID0gdGhpcy53YXRlck1hcmtTdHlsZVxuICAgIHBhcmVudC5hcHBlbmRDaGlsZChuZXdXYXRlck1hcmspXG4gICAgY29uc3QgbmV3RG9tID0gdGhpcy5nZXRXYXRlck1hcmtEb20oKVxuICAgIHRoaXMucmVnaXN0ZXJOb2RlUmVtb3ZlTGlzdGVuZXIobmV3RG9tLCBwYXJlbnQpXG4gICAgdGhpcy5yZWdpc3Rlck5vZGVBdHRyQ2hhbmdlTGlzdGVuZXIobmV3RG9tKVxuICB9XG5cbiAgcmVnaXN0ZXJOb2RlQXR0ckNoYW5nZUxpc3RlbmVyID0gKHRhcmdldCkgPT4ge1xuICAgIGxldCBNdXRhdGlvbk9ic2VydmVyID0gd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIgfHwgd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIgfHwgd2luZG93Lk1vek11dGF0aW9uT2JzZXJ2ZXJcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICAgIHRhcmdldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRhcmdldClcbiAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICAgIGxldCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydzdHlsZSddIH1cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCwgY29uZmlnKVxuICB9XG59XG4iXX0=