11"use strict" ;
22Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
3- exports . window . __pan = exports . window . __pan || {
4- csrfToken : "%_PAN_CSRF_TOKEN_%" ,
5- routePrefix : "%_PAN_ROUTE_PREFIX_%" ,
6- observer : null ,
7- clickListener : null ,
8- mouseoverListener : null ,
9- inertiaStartListener : null ,
10- } ;
3+ exports . window . __pan =
4+ exports . window . __pan ||
5+ {
6+ csrfToken : "%_PAN_CSRF_TOKEN_%" ,
7+ routePrefix : "%_PAN_ROUTE_PREFIX_%" ,
8+ observer : null ,
9+ clickListener : null ,
10+ mouseoverListener : null ,
11+ inertiaStartListener : null ,
12+ } ;
1113if ( exports . window . __pan . observer ) {
1214 exports . window . __pan . observer . disconnect ( ) ;
1315 exports . window . __pan . observer = null ;
@@ -17,67 +19,56 @@ if (exports.window.__pan.clickListener) {
1719 exports . window . __pan . clickListener = null ;
1820}
1921if ( exports . window . __pan . mouseoverListener ) {
20- document . removeEventListener (
21- "mouseover" ,
22- exports . window . __pan . mouseoverListener ,
23- ) ;
22+ document . removeEventListener ( "mouseover" , exports . window . __pan . mouseoverListener ) ;
2423 exports . window . __pan . mouseoverListener = null ;
2524}
2625if ( exports . window . __pan . inertiaStartListener ) {
27- document . removeEventListener (
28- "inertia:start" ,
29- exports . window . __pan . inertiaStartListener ,
30- ) ;
26+ document . removeEventListener ( "inertia:start" , exports . window . __pan . inertiaStartListener ) ;
3127 exports . window . __pan . inertiaStartListener = null ;
3228}
3329( function ( ) {
34- var domObserver = function ( callback ) {
35- var observer = new MutationObserver ( callback ) ;
30+ const domObserver = ( callback ) => {
31+ const observer = new MutationObserver ( callback ) ;
3632 observer . observe ( document . body , {
3733 childList : true ,
3834 subtree : true ,
3935 attributes : true ,
4036 } ) ;
4137 exports . window . __pan . observer = observer ;
4238 } ;
43- var queue = [ ] ;
44- var queueTimeout = null ;
45- var impressed = [ ] ;
46- var hovered = [ ] ;
47- var clicked = [ ] ;
48- var commit = function ( ) {
39+ let queue = [ ] ;
40+ let queueTimeout = null ;
41+ let impressed = [ ] ;
42+ let hovered = [ ] ;
43+ let clicked = [ ] ;
44+ let sameNameElements = [ ] ;
45+ const commit = ( ) => {
4946 if ( queue . length === 0 ) {
5047 return ;
5148 }
52- var onGoingQueue = queue . slice ( ) ;
49+ const onGoingQueue = queue . slice ( ) ;
5350 queue = [ ] ;
54- navigator . sendBeacon (
55- "/" . concat ( exports . window . __pan . routePrefix , "/events" ) ,
56- new Blob (
57- [
58- JSON . stringify ( {
59- events : onGoingQueue ,
60- _token : exports . window . __pan . csrfToken ,
61- } ) ,
62- ] ,
63- {
64- type : "application/json" ,
65- } ,
66- ) ,
67- ) ;
51+ navigator . sendBeacon ( `/${ exports . window . __pan . routePrefix } /events` , new Blob ( [
52+ JSON . stringify ( {
53+ events : onGoingQueue ,
54+ _token : exports . window . __pan . csrfToken ,
55+ } ) ,
56+ ] , {
57+ type : "application/json" ,
58+ } ) ) ;
6859 } ;
69- var queueCommit = function ( ) {
60+ const queueCommit = function ( ) {
7061 queueTimeout && clearTimeout ( queueTimeout ) ;
7162 // @ts -ignore
7263 queueTimeout = setTimeout ( commit , 1000 ) ;
7364 } ;
74- var send = function ( el , event ) {
75- var target = el . target ;
76- var element = target . closest ( "[data-pan]" ) ;
65+ const send = function ( el , event ) {
66+ const target = el . target ;
67+ const element = target . closest ( "[data-pan]" ) ;
7768 if ( element === null ) {
7869 return ;
7970 }
80- var name = element . getAttribute ( "data-pan" ) ;
71+ const name = element . getAttribute ( "data-pan" ) ;
8172 if ( name === null ) {
8273 return ;
8374 }
@@ -99,19 +90,22 @@ if (exports.window.__pan.inertiaStartListener) {
9990 } ) ;
10091 queueCommit ( ) ;
10192 } ;
102- var detectImpressions = function ( ) {
103- var elementsBeingImpressed = document . querySelectorAll ( "[data-pan]" ) ;
104- elementsBeingImpressed . forEach ( function ( element ) {
105- if (
106- element . checkVisibility !== undefined &&
107- ! element . checkVisibility ( )
108- ) {
93+ const detectImpressions = function ( ) {
94+ const elementsBeingImpressed = document . querySelectorAll ( "[data-pan]" ) ;
95+ elementsBeingImpressed . forEach ( ( element ) => {
96+ if ( element . checkVisibility !== undefined &&
97+ ! element . checkVisibility ( ) ) {
10998 return ;
11099 }
111- var name = element . getAttribute ( "data-pan" ) ;
100+ const name = element . getAttribute ( "data-pan" ) ;
112101 if ( name === null ) {
113102 return ;
114103 }
104+ let nameElements = document . querySelectorAll ( `[data-pan='${ name } ']` ) ;
105+ if ( nameElements . length > 1 && ! sameNameElements . includes ( name ) ) {
106+ console . warn ( `PAN: Multiple (${ nameElements . length } ) elements with the same name '${ name } ' found` ) ;
107+ sameNameElements . push ( name ) ;
108+ }
115109 if ( impressed . includes ( name ) ) {
116110 return ;
117111 }
@@ -124,53 +118,32 @@ if (exports.window.__pan.inertiaStartListener) {
124118 queueCommit ( ) ;
125119 } ;
126120 domObserver ( function ( ) {
127- impressed . forEach ( function ( name ) {
128- var element = document . querySelector (
129- "[data-pan='" . concat ( name , "']" ) ,
130- ) ;
121+ impressed . forEach ( ( name ) => {
122+ const element = document . querySelector ( `[data-pan='${ name } ']` ) ;
131123 if ( element === null ) {
132- impressed = impressed . filter ( function ( n ) {
133- return n !== name ;
134- } ) ;
135- hovered = hovered . filter ( function ( n ) {
136- return n !== name ;
137- } ) ;
138- clicked = clicked . filter ( function ( n ) {
139- return n !== name ;
140- } ) ;
124+ impressed = impressed . filter ( ( n ) => n !== name ) ;
125+ hovered = hovered . filter ( ( n ) => n !== name ) ;
126+ clicked = clicked . filter ( ( n ) => n !== name ) ;
141127 }
142128 } ) ;
143129 detectImpressions ( ) ;
144130 } ) ;
145- exports . window . __pan . clickListener = function ( event ) {
146- return send ( event , "click" ) ;
147- } ;
131+ exports . window . __pan . clickListener = ( event ) => send ( event , "click" ) ;
148132 document . addEventListener ( "click" , exports . window . __pan . clickListener ) ;
149- exports . window . __pan . mouseoverListener = function ( event ) {
150- return send ( event , "hover" ) ;
151- } ;
152- document . addEventListener (
153- "mouseover" ,
154- exports . window . __pan . mouseoverListener ,
155- ) ;
156- exports . window . __pan . inertiaStartListener = function ( event ) {
133+ exports . window . __pan . mouseoverListener = ( event ) => send ( event , "hover" ) ;
134+ document . addEventListener ( "mouseover" , exports . window . __pan . mouseoverListener ) ;
135+ exports . window . __pan . inertiaStartListener = ( event ) => {
157136 impressed = [ ] ;
158137 hovered = [ ] ;
159138 clicked = [ ] ;
160139 detectImpressions ( ) ;
161140 } ;
162- document . addEventListener (
163- "inertia:start" ,
164- exports . window . __pan . inertiaStartListener ,
165- ) ;
141+ document . addEventListener ( "inertia:start" , exports . window . __pan . inertiaStartListener ) ;
166142 exports . window . __pan . beforeUnloadListener = function ( event ) {
167143 if ( queue . length === 0 ) {
168144 return ;
169145 }
170146 commit ( ) ;
171147 } ;
172- exports . window . addEventListener (
173- "beforeunload" ,
174- exports . window . __pan . beforeUnloadListener ,
175- ) ;
148+ exports . window . addEventListener ( "beforeunload" , exports . window . __pan . beforeUnloadListener ) ;
176149} ) ( ) ;
0 commit comments