@@ -84,7 +84,7 @@ const createWatermark = watermark => {
84
84
const div = document . createElement ( 'div' ) ;
85
85
const { base64, styleSize } = bg ;
86
86
div . style . backgroundImage = `url(${ base64 } )` ;
87
- div . style . backgroundSize = `${ styleSize } px ${ styleSize } px` ;
87
+ div . style . backgroundSize = `${ styleSize . toFixed ( 3 ) } px ${ styleSize . toFixed ( 3 ) } px` ;
88
88
div . style . backgroundRepeat = 'repeat' ;
89
89
div . style . pointerEvents = 'none' ;
90
90
div . style . opacity = '1' ;
@@ -98,6 +98,77 @@ const createWatermark = watermark => {
98
98
mark . remove ( ) ;
99
99
}
100
100
el . appendChild ( div ) ;
101
+
102
+ options . bg = bg ;
103
+ requestAnimationFrame ( ( ) => monitor ( watermark ) ) ;
104
+ }
105
+
106
+ const monitor = watermark => {
107
+ const { el, options, ob } = watermark ;
108
+ if ( el === null ) {
109
+ return ;
110
+ }
111
+
112
+ if ( el . children . length !== 2 ) {
113
+ clearWatermark ( watermark ) ;
114
+ return ;
115
+ }
116
+
117
+ const mark = el . children [ 1 ] ;
118
+ if ( mark . className !== 'bb-watermark-bg' ) {
119
+ clearWatermark ( watermark ) ;
120
+ return ;
121
+ }
122
+
123
+ const style = getComputedStyle ( mark ) ;
124
+ const { display, opacity, position, inset, zIndex, zoom, transform, backgroundRepeat, backgroundImage, backgroundSize } = style ;
125
+ if ( display !== 'block' ) {
126
+ clearWatermark ( watermark ) ;
127
+ return ;
128
+ }
129
+ if ( opacity !== '1' ) {
130
+ clearWatermark ( watermark ) ;
131
+ return ;
132
+ }
133
+ if ( position !== 'absolute' ) {
134
+ clearWatermark ( watermark ) ;
135
+ return ;
136
+ }
137
+ if ( inset !== '0px' ) {
138
+ clearWatermark ( watermark ) ;
139
+ return ;
140
+ }
141
+ if ( zIndex !== '999' ) {
142
+ clearWatermark ( watermark ) ;
143
+ return ;
144
+ }
145
+ if ( zoom !== '1' ) {
146
+ clearWatermark ( watermark ) ;
147
+ return ;
148
+ }
149
+ if ( transform !== 'none' ) {
150
+ clearWatermark ( watermark ) ;
151
+ return ;
152
+ }
153
+ if ( backgroundRepeat !== 'repeat' ) {
154
+ clearWatermark ( watermark ) ;
155
+ return ;
156
+ }
157
+ if ( backgroundImage !== `url("${ options . bg . base64 } ")` ) {
158
+ clearWatermark ( watermark ) ;
159
+ return ;
160
+ }
161
+ if ( backgroundSize !== `${ options . bg . styleSize . toFixed ( 3 ) } px ${ options . bg . styleSize . toFixed ( 3 ) } px` ) {
162
+ clearWatermark ( watermark ) ;
163
+ return ;
164
+ }
165
+ requestAnimationFrame ( ( ) => monitor ( watermark ) ) ;
166
+ }
167
+
168
+ const clearWatermark = watermark => {
169
+ const { el, ob } = watermark ;
170
+ ob . disconnect ( ) ;
171
+ el . innerHTML = '' ;
101
172
}
102
173
103
174
const getWatermark = props => {
0 commit comments