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
JavaScript
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=
;