1+ ( function ( ) {
2+ 'use strict' ;
3+ if ( window . __snapfillDetectorInit ) return ;
4+ window . __snapfillDetectorInit = true ;
5+
6+ var AC = {
7+ 'given-name' :'firstName' , 'first-name' :'firstName' , 'family-name' :'lastName' , 'last-name' :'lastName' ,
8+ 'honorific-prefix' :'honorific' , 'name' :'firstName' ,
9+ 'cc-number' :'ccNumber' , 'cc-name' :'ccName' , 'cc-exp' :'ccExpiry' ,
10+ 'cc-exp-month' :'ccExpiryMonth' , 'cc-exp-year' :'ccExpiryYear' , 'cc-csc' :'ccCCV' , 'cc-type' :'ccType' ,
11+ email :'email' , tel :'phoneNumber' , 'tel-national' :'phoneNumber' , 'tel-country-code' :'phoneCountryCode' ,
12+ 'address-line1' :'postalAddressLine1' , 'address-line2' :'postalAddressLine2' ,
13+ 'address-level2' :'postalSuburb' , 'address-level1' :'postalState' ,
14+ 'postal-code' :'postalPostCode' , country :'postalCountry' , 'country-name' :'postalCountry' ,
15+ 'street-address' :'postalAddressLine1'
16+ } ;
17+
18+ var RX = [
19+ { p :/ c a r d .? n u m | c c .? n u m | c c - ? n u m b e r | \b p a n \b / i, f :'ccNumber' } ,
20+ { p :/ c a r d .? n a m e | n a m e .? o n .? c a r d | c c .? n a m e | c a r d h o l d e r / i, f :'ccName' } ,
21+ { p :/ c v v | c v c | c c v | s e c u r i t y .? c o d e | c a r d .? c o d e | c a r d .? v e r i f | c v d | c s v / i, f :'ccCCV' } ,
22+ { p :/ e x p .* m o n t h | c c .? m o n t h | c a r d .? m o n t h / i, f :'ccExpiryMonth' } ,
23+ { p :/ e x p .* y e a r | c c .? y e a r | c a r d .? y e a r / i, f :'ccExpiryYear' } ,
24+ { p :/ e x p i r .* d a t | e x p .? d a t | c c .? e x p (? ! .* (?: m o n t h | y e a r ) ) / i, f :'ccExpiry' } ,
25+ { p :/ c a r d .? t y p e | c c .? t y p e | p a y m e n t .? m e t h o d / i, f :'ccType' } ,
26+ { p :/ f i r s t .? n a m e | g i v e n .? n a m e | \b f n a m e \b | N a m e _ F i r s t | N a m e \. f i r s t / i, f :'firstName' } ,
27+ { p :/ l a s t .? n a m e | f a m i l y .? n a m e | s u r n a m e | \b l n a m e \b | N a m e _ L a s t | N a m e \. l a s t / i, f :'lastName' } ,
28+ { p :/ m i d d l e .? n a m e | N a m e _ M i d d l e | N a m e \. m i d d l e | \b m n a m e \b | m i d d l e .? i n i t i a l / i, f :'middleName' } ,
29+ { p :/ h o n o r i f i c | N a m e _ P r e f i x | n a m e .? p r e f i x | s a l u t a t i o n / i, f :'honorific' } ,
30+ { p :/ n a m e .? s u f f i x | N a m e _ S u f f i x | \b s u f f i x \b / i, f :'nameSuffix' } ,
31+ { p :/ f u l l .? n a m e | y o u r .? n a m e | c u s t o m e r .? n a m e | \b n a m e \b / i, f :'fullName' } ,
32+ { p :/ e .? m a i l / i, f :'email' } ,
33+ { p :/ p h o n e .? c o u n t r y | p h o n e .? c o d e | d i a l .? c o d e | t e l .? c o d e / i, f :'phoneCountryCode' } ,
34+ { p :/ p h o n e | m o b i l e | \b t e l \b | t e l e p h o n e | T e l e c o m .? P h o n e / i, f :'phoneNumber' } ,
35+ { p :/ s t r e e t .? l i n e .? 2 | a d d r e s s .? 2 | a d d r e s s .? l i n e .? 2 | \b a p t \b | \b s u i t e \b | \b u n i t \b | \b a d d r 2 \b / i, f :'postalAddressLine2' } ,
36+ { p :/ s t r e e t .? l i n e .? 1 | a d d r e s s .? 1 | a d d r e s s .? l i n e .? 1 | s t r e e t .? a d d r | \b a d d r 1 \b / i, f :'postalAddressLine1' } ,
37+ { p :/ s t r e e t .? l i n e | s t r e e t .? a d d r | \b a d d r e s s \b / i, f :'postalAddressLine1' } ,
38+ { p :/ s t r e e t .? n u m / i, f :'postalStreetNumber' } ,
39+ { p :/ s t r e e t .? n a m e / i, f :'postalStreetName' } ,
40+ { p :/ s t r e e t .? t y p e / i, f :'postalStreetType' } ,
41+ { p :/ c i t y | s u b u r b | \b t o w n \b | l o c a l i t y | P o s t a l _ C i t y / i, f :'postalSuburb' } ,
42+ { p :/ \b s t a t e \b | p r o v i n c e | \b r e g i o n \b | S t a t e P r o v / i, f :'postalState' } ,
43+ { p :/ \b z i p \b | p o s t a l .? c o d e | p o s t c o d e | \b p o s t .? c o d e \b | P o s t a l C o d e / i, f :'postalPostCode' } ,
44+ { p :/ c o u n t r y .? c o d e | c o u n t r y .? n a m e | \b c o u n t r y \b / i, f :'postalCountry' }
45+ ] ;
46+
47+ var TM = { email :'email' , tel :'phoneNumber' } ;
48+
49+ function isBill ( el ) {
50+ var n = el . getAttribute ( 'name' ) || '' , id = el . id || '' ;
51+ if ( / b i l l / i. test ( n ) || / b i l l / i. test ( id ) ) return true ;
52+ var p = el . parentElement ;
53+ for ( var i = 0 ; i < 5 && p ; i ++ ) {
54+ var c = p . className || '' , pi = p . id || '' , pn = p . getAttribute ( 'name' ) || '' ;
55+ if ( / b i l l / i. test ( c ) || / b i l l / i. test ( pi ) || / b i l l / i. test ( pn ) ) return true ;
56+ if ( p . tagName === 'FIELDSET' ) { var lg = p . querySelector ( 'legend' ) ; if ( lg && / b i l l / i. test ( lg . textContent ) ) return true ; }
57+ p = p . parentElement ; }
58+ return false ; }
59+
60+ function bc ( f , el ) { if ( f && f . startsWith ( 'postal' ) && isBill ( el ) ) return f . replace ( 'postal' , 'billing' ) ; return f ; }
61+
62+ function labelOf ( el ) {
63+ if ( el . id ) { try { var l = document . querySelector ( 'label[for="' + CSS . escape ( el . id ) + '"]' ) ; if ( l ) return l . textContent || '' ; } catch ( e ) { } }
64+ var pl = el . closest ( 'label' ) ; if ( pl ) return pl . textContent || '' ;
65+ var lb = el . getAttribute ( 'aria-labelledby' ) ; if ( lb ) { var le = document . getElementById ( lb ) ; if ( le ) return le . textContent || '' ; }
66+ var pv = el . previousElementSibling ;
67+ if ( pv && ( pv . tagName === 'LABEL' || pv . tagName === 'SPAN' || pv . tagName === 'TD' ) ) return pv . textContent || '' ;
68+ if ( el . parentElement && el . parentElement . tagName === 'TD' ) { var pt = el . parentElement . previousElementSibling ; if ( pt && pt . tagName === 'TD' ) return pt . textContent || '' ; }
69+ return '' ; }
70+
71+ function byAC ( el ) {
72+ if ( el . type === 'hidden' || el . type === 'submit' || el . type === 'button' || el . type === 'radio' || el . type === 'checkbox' ) return null ;
73+ if ( el . disabled || el . readOnly ) return null ;
74+ var ac = ( el . getAttribute ( 'autocomplete' ) || '' ) . trim ( ) . toLowerCase ( ) ;
75+ if ( ! ac || ac === 'off' || ac === 'on' ) return null ;
76+ var tk = ac . split ( / \s + / ) , sec = null , ft = null ;
77+ for ( var i = 0 ; i < tk . length ; i ++ ) { if ( tk [ i ] === 'shipping' || tk [ i ] === 'billing' ) sec = tk [ i ] ; else if ( AC [ tk [ i ] ] ) ft = tk [ i ] ; }
78+ if ( ! ft ) return null ;
79+ var m = AC [ ft ] ;
80+ if ( sec === 'billing' && m . startsWith ( 'postal' ) ) m = m . replace ( 'postal' , 'billing' ) ;
81+ if ( ! sec ) m = bc ( m , el ) || m ;
82+ return m ; }
83+
84+ function byRX ( el ) {
85+ if ( el . type === 'hidden' || el . type === 'submit' || el . type === 'button' || el . type === 'radio' || el . type === 'checkbox' ) return null ;
86+ if ( el . disabled || el . readOnly ) return null ;
87+ var s = [ el . getAttribute ( 'name' ) || '' , el . getAttribute ( 'id' ) || '' , el . getAttribute ( 'placeholder' ) || '' , el . getAttribute ( 'aria-label' ) || '' ] . join ( ' ' ) ;
88+ if ( s . trim ( ) ) { for ( var i = 0 ; i < RX . length ; i ++ ) if ( RX [ i ] . p . test ( s ) ) return bc ( RX [ i ] . f , el ) || RX [ i ] . f ; }
89+ var t = ( el . getAttribute ( 'type' ) || '' ) . toLowerCase ( ) ; if ( TM [ t ] ) return TM [ t ] ;
90+ var lt = labelOf ( el ) ;
91+ if ( lt . trim ( ) ) { for ( var j = 0 ; j < RX . length ; j ++ ) if ( RX [ j ] . p . test ( lt ) ) return bc ( RX [ j ] . f , el ) || RX [ j ] . f ; }
92+ return null ; }
93+
94+ function isVis ( el ) { if ( ! el ) return false ; var s = window . getComputedStyle ( el ) ; return s . display !== 'none' && s . visibility !== 'hidden' && s . opacity !== '0' && el . offsetParent !== null ; }
95+
96+ window . __snapfillFieldMap = new Map ( ) ;
97+
98+ function scan ( root ) {
99+ var els = ( root || document ) . querySelectorAll ( 'input, select, textarea' ) ;
100+ var df = new Set ( ) ;
101+ window . __snapfillFieldMap . clear ( ) ;
102+ els . forEach ( function ( el ) { var f = byAC ( el ) ; if ( f ) { df . add ( f ) ; if ( ! window . __snapfillFieldMap . has ( f ) || ! isVis ( window . __snapfillFieldMap . get ( f ) ) ) window . __snapfillFieldMap . set ( f , el ) ; } } ) ;
103+ els . forEach ( function ( el ) { var f = byRX ( el ) ; if ( f ) { df . add ( f ) ; if ( ! window . __snapfillFieldMap . has ( f ) || ! isVis ( window . __snapfillFieldMap . get ( f ) ) ) window . __snapfillFieldMap . set ( f , el ) ; } } ) ;
104+ return Array . from ( df ) ; }
105+
106+ var dt = null , lr = '' ;
107+ function report ( ) { clearTimeout ( dt ) ; dt = setTimeout ( function ( ) {
108+ var f = scan ( document ) , k = f . sort ( ) . join ( ',' ) ;
109+ if ( k !== lr ) { lr = k ;
110+ var msg = JSON . stringify ( { type :'formDetected' , fields :f } ) ;
111+ if ( window . ReactNativeWebView && window . ReactNativeWebView . postMessage ) window . ReactNativeWebView . postMessage ( msg ) ;
112+ else if ( window . parent !== window ) window . parent . postMessage ( { snapfill :true , type :'formDetected' , fields :f } , '*' ) ;
113+ } } , 500 ) ; }
114+
115+ var md = null ;
116+ new MutationObserver ( function ( ) { clearTimeout ( md ) ; md = setTimeout ( report , 300 ) ; } ) . observe ( document . body , { childList :true , subtree :true } ) ;
117+ report ( ) ;
118+ } ) ( ) ;
119+ ( function ( ) {
120+ 'use strict' ;
121+ if ( window . __snapfillCartInit ) return ;
122+ window . __snapfillCartInit = true ;
123+
124+ function p2c ( s ) {
125+ if ( typeof s === 'number' ) return Math . round ( s * 100 ) ;
126+ if ( ! s || typeof s !== 'string' ) return 0 ;
127+ var c = s . replace ( / [ ^ 0 - 9 . , \- ] / g, '' ) . trim ( ) ; if ( ! c ) return 0 ;
128+ var lc = c . lastIndexOf ( ',' ) , lp = c . lastIndexOf ( '.' ) ;
129+ var a ; if ( lc > lp ) a = parseFloat ( c . replace ( / \. / g, '' ) . replace ( ',' , '.' ) ) ; else a = parseFloat ( c . replace ( / , / g, '' ) ) ;
130+ return isNaN ( a ) ?0 :Math . round ( a * 100 ) ; }
131+
132+ function dCur ( s , m ) {
133+ if ( m ) return m . toUpperCase ( ) ; if ( ! s || typeof s !== 'string' ) return null ;
134+ if ( / A \$ / . test ( s ) ) return 'AUD' ; if ( / N Z \$ / . test ( s ) ) return 'NZD' ; if ( / U S \$ / . test ( s ) ) return 'USD' ;
135+ if ( / C A \$ | C \$ / . test ( s ) ) return 'CAD' ; if ( / £ / . test ( s ) ) return 'GBP' ; if ( / € / . test ( s ) ) return 'EUR' ; if ( / ¥ / . test ( s ) ) return 'JPY' ;
136+ var h = window . location . hostname ;
137+ if ( / \. c o \. u k $ | \. u k $ / . test ( h ) ) return 'GBP' ; if ( / \. c o m \. a u $ | \. a u $ / . test ( h ) ) return 'AUD' ;
138+ if ( / \. c o \. n z $ | \. n z $ / . test ( h ) ) return 'NZD' ; if ( / \. c a $ / . test ( h ) ) return 'CAD' ;
139+ return null ; }
140+
141+ function fromLD ( ) {
142+ var ss = document . querySelectorAll ( 'script[type="application/ld+json"]' ) , ps = [ ] , cur = null , tot = 0 ;
143+ ss . forEach ( function ( s ) { try { var d = JSON . parse ( s . textContent ) , items = Array . isArray ( d ) ?d :d [ '@graph' ] ?d [ '@graph' ] :[ d ] ;
144+ items . forEach ( function ( it ) { var t = it [ '@type' ] ;
145+ if ( t === 'Product' || t === 'IndividualProduct' ) { var o = it . offers || it . offer || { } ; if ( Array . isArray ( o ) ) o = o [ 0 ] || { } ;
146+ var pr = o . price || it . price || 0 , pc = o . priceCurrency || it . priceCurrency || null ; if ( pc ) cur = pc ;
147+ var img = it . image ; var iu = typeof img === 'string' ?img :Array . isArray ( img ) ?img [ 0 ] || null :img && img . url || null ;
148+ ps . push ( { name :it . name || null , quantity :1 , itemPrice :p2c ( pr ) , lineTotal :p2c ( pr ) , url :it . url || null , imageUrl :iu } ) ; }
149+ if ( t === 'Order' || t === 'Invoice' ) { tot = p2c ( ( it . totalPaymentDue && it . totalPaymentDue . value ) || it . total || 0 ) ;
150+ cur = ( it . totalPaymentDue && it . totalPaymentDue . priceCurrency ) || it . priceCurrency || cur ; } } ) ; } catch ( e ) { } } ) ;
151+ if ( ! ps . length ) return null ;
152+ if ( ! tot ) tot = ps . reduce ( function ( s , p ) { return s + p . lineTotal ; } , 0 ) ;
153+ return { total :tot , currency :cur , products :ps , source :'json-ld' } ; }
154+
155+ function fromMD ( ) {
156+ var pe = document . querySelectorAll ( '[itemtype*="schema.org/Product"]' ) ; if ( ! pe . length ) return null ;
157+ var ps = [ ] , cur = null ;
158+ pe . forEach ( function ( el ) { var ne = el . querySelector ( '[itemprop="name"]' ) , pe2 = el . querySelector ( '[itemprop="price"]' ) ,
159+ ce = el . querySelector ( '[itemprop="priceCurrency"]' ) , ie = el . querySelector ( '[itemprop="image"]' ) , ue = el . querySelector ( '[itemprop="url"]' ) ;
160+ var pr = pe2 ?pe2 . getAttribute ( 'content' ) || pe2 . textContent :'0' ;
161+ var dc = ce ?ce . getAttribute ( 'content' ) || ce . textContent :null ; if ( dc ) cur = dc ;
162+ ps . push ( { name :ne ?ne . textContent . trim ( ) :null , quantity :1 , itemPrice :p2c ( pr ) , lineTotal :p2c ( pr ) ,
163+ url :ue ?ue . getAttribute ( 'href' ) || ue . getAttribute ( 'content' ) :null ,
164+ imageUrl :ie ?ie . getAttribute ( 'src' ) || ie . getAttribute ( 'content' ) :null } ) ; } ) ;
165+ if ( ! ps . length ) return null ;
166+ var tot = ps . reduce ( function ( s , p ) { return s + p . lineTotal ; } , 0 ) ;
167+ return { total :tot , currency :cur , products :ps , source :'microdata' } ; }
168+
169+ function fromOG ( ) {
170+ var ot = document . querySelector ( 'meta[property="og:type"]' ) ;
171+ if ( ! ot || ot . getAttribute ( 'content' ) !== 'product' ) return null ;
172+ var ti = document . querySelector ( 'meta[property="og:title"]' ) ,
173+ pr = document . querySelector ( 'meta[property="product:price:amount"]' ) ,
174+ cu = document . querySelector ( 'meta[property="product:price:currency"]' ) ,
175+ im = document . querySelector ( 'meta[property="og:image"]' ) ,
176+ ur = document . querySelector ( 'meta[property="og:url"]' ) ;
177+ if ( ! pr ) return null ;
178+ var p = p2c ( pr . getAttribute ( 'content' ) ) , c = cu ?cu . getAttribute ( 'content' ) :null ;
179+ return { total :p , currency :c , products :[ { name :ti ?ti . getAttribute ( 'content' ) :null , quantity :1 , itemPrice :p , lineTotal :p ,
180+ url :ur ?ur . getAttribute ( 'content' ) :null , imageUrl :im ?im . getAttribute ( 'content' ) :null } ] , source :'opengraph' } ; }
181+
182+ function fromDOM ( ) {
183+ var cs = [ '[class*="cart"]' , '[class*="basket"]' , '[class*="order-summary"]' , '[class*="checkout-summary"]' ,
184+ '[id*="cart"]' , '[id*="basket"]' , '[id*="order-summary"]' , '[data-testid*="cart"]' , '[data-testid*="order"]' ] ;
185+ var cc = null ; for ( var i = 0 ; i < cs . length ; i ++ ) { cc = document . querySelector ( cs [ i ] ) ; if ( cc ) break ; }
186+ if ( ! cc ) return null ;
187+ var rx = / (?: [ $ £ € ] ) \s * [ \d , ] + \. ? \d { 0 , 2 } / g;
188+ var li = cc . querySelectorAll ( '[class*="item"],[class*="product"],[class*="line"],li,tr' ) ;
189+ var ps = [ ] , seen = new Set ( ) ;
190+ li . forEach ( function ( it ) {
191+ var ne = it . querySelector ( '[class*="name"],[class*="title"],[class*="description"],h2,h3,h4,a' ) || it . querySelector ( 'td:first-child,span:first-child' ) ;
192+ var nm = ne ?ne . textContent . trim ( ) :null ;
193+ if ( ! nm || nm . length < 2 || nm . length > 200 || seen . has ( nm ) ) return ;
194+ var pm = it . textContent . match ( rx ) ; if ( ! pm || ! pm . length ) return ;
195+ var ip = p2c ( pm [ pm . length - 1 ] ) ; if ( ip <= 0 ) return ;
196+ var qe = it . querySelector ( 'input[type="number"],[class*="qty"],[class*="quantity"]' ) ;
197+ var q = qe ?parseInt ( qe . value || qe . textContent , 10 ) || 1 :1 ;
198+ var ie = it . querySelector ( 'img' ) ;
199+ seen . add ( nm ) ;
200+ ps . push ( { name :nm . substring ( 0 , 200 ) , quantity :q , itemPrice :ip , lineTotal :ip * q , url :null , imageUrl :ie ?ie . src :null } ) ; } ) ;
201+ if ( ! ps . length ) return null ;
202+ var te = cc . querySelector ( '[class*="total"]:not([class*="sub"]),[class*="grand-total"],[class*="order-total"]' ) ;
203+ var tot = 0 ; if ( te ) { var tp = te . textContent . match ( rx ) ; if ( tp ) tot = p2c ( tp [ tp . length - 1 ] ) ; }
204+ if ( ! tot ) tot = ps . reduce ( function ( s , p ) { return s + p . lineTotal ; } , 0 ) ;
205+ var at = cc . textContent , ap = at . match ( rx ) , cur = ap ?dCur ( ap [ 0 ] , null ) :null ;
206+ return { total :tot , currency :cur , products :ps , source :'dom' } ; }
207+
208+ function detect ( ) { return fromLD ( ) || fromMD ( ) || fromOG ( ) || fromDOM ( ) ; }
209+ window . __snapfillDetectCart = detect ;
210+
211+ var dt = null , lr = '' ;
212+ function report ( ) { clearTimeout ( dt ) ; dt = setTimeout ( function ( ) {
213+ var c = detect ( ) ; if ( ! c ) return ;
214+ var k = JSON . stringify ( c ) ; if ( k !== lr ) { lr = k ;
215+ var msg = JSON . stringify ( { type :'cartDetected' , cart :{ total :c . total , currency :c . currency , products :c . products } } ) ;
216+ if ( window . ReactNativeWebView && window . ReactNativeWebView . postMessage ) window . ReactNativeWebView . postMessage ( msg ) ;
217+ else if ( window . parent !== window ) window . parent . postMessage ( { snapfill :true , type :'cartDetected' , cart :{ total :c . total , currency :c . currency , products :c . products } } , '*' ) ;
218+ } } , 500 ) ; }
219+
220+ var md = null ;
221+ new MutationObserver ( function ( ) { clearTimeout ( md ) ; md = setTimeout ( report , 500 ) ; } ) . observe ( document . body , { childList :true , subtree :true , characterData :true } ) ;
222+ report ( ) ;
223+ } ) ( ) ;
224+ ( function ( ) {
225+ 'use strict' ;
226+ if ( window . __snapfillValueInit ) return ;
227+ window . __snapfillValueInit = true ;
228+
229+ var ST = [ 'password' ] ;
230+ var SP = / s s n | s o c i a l .? s e c u r i t y | t a x .? i d / i;
231+ function isSens ( el ) { if ( ! el ) return false ; var t = ( el . getAttribute ( 'type' ) || '' ) . toLowerCase ( ) ; if ( ST . indexOf ( t ) >= 0 ) return true ;
232+ var s = [ el . getAttribute ( 'name' ) || '' , el . getAttribute ( 'id' ) || '' , el . getAttribute ( 'autocomplete' ) || '' ] . join ( ' ' ) ; return SP . test ( s ) ; }
233+
234+ var dt = null , attached = new Set ( ) ;
235+ function capture ( ) { clearTimeout ( dt ) ; dt = setTimeout ( function ( ) {
236+ if ( ! window . __snapfillFieldMap ) return ;
237+ var m = { } , h = false ;
238+ window . __snapfillFieldMap . forEach ( function ( el , f ) { if ( isSens ( el ) ) return ;
239+ var v = '' ; if ( el instanceof HTMLSelectElement ) { var s = el . options [ el . selectedIndex ] ; v = s ?s . value || s . textContent . trim ( ) :'' ; }
240+ else if ( el instanceof HTMLInputElement && ( el . type === 'checkbox' || el . type === 'radio' ) ) v = el . checked ?'true' :'false' ;
241+ else v = el . value || '' ;
242+ if ( v ) { m [ f ] = v ; h = true ; } } ) ;
243+ if ( h ) {
244+ var msg = JSON . stringify ( { type :'valuesCaptured' , mappings :m } ) ;
245+ if ( window . ReactNativeWebView && window . ReactNativeWebView . postMessage ) window . ReactNativeWebView . postMessage ( msg ) ;
246+ else if ( window . parent !== window ) window . parent . postMessage ( { snapfill :true , type :'valuesCaptured' , mappings :m } , '*' ) ;
247+ } } , 1000 ) ; }
248+
249+ function attach ( ) { if ( ! window . __snapfillFieldMap ) return ;
250+ window . __snapfillFieldMap . forEach ( function ( el ) {
251+ if ( attached . has ( el ) || isSens ( el ) ) return ;
252+ el . addEventListener ( 'input' , capture ) ; el . addEventListener ( 'change' , capture ) ; attached . add ( el ) ; } ) ; }
253+
254+ window . __snapfillAttachCapture = attach ;
255+ window . __snapfillCaptureNow = capture ;
256+ setTimeout ( attach , 600 ) ;
257+ } ) ( ) ;
0 commit comments