PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.26
Advanced Ads – Ad Manager & AdSense v2.0.26
2.0.26 2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / src / admin / router.js
advanced-ads / src / admin Last commit date
commands 5 months ago common 4 weeks ago components 1 month ago css 1 month ago hooks 1 month ago layout 4 weeks ago notifications 5 months ago partials 5 months ago post-quick-edit 5 months ago screen-ads 2 months ago screen-dashboard 2 months ago screen-groups 2 months ago screen-licenses 4 weeks ago screen-placements 2 months ago screen-settings 5 months ago screen-support 4 weeks ago screen-tools 2 months ago store 4 weeks ago wp-dashboard 1 month ago main.css 1 month ago main.js 1 month ago router.js 1 month ago routes.js 1 month ago utils.js 1 month ago
router.js
107 lines
1 /**
2 * External Dependencies
3 */
4 import { useMemo, useSyncExternalStore } from '@wordpress/element';
5
6 /**
7 * Internal Dependencies
8 */
9 import { routes } from './routes';
10
11 function getSearch() {
12 return globalThis.location.search;
13 }
14
15 function subscribe( callback ) {
16 globalThis.addEventListener( 'popstate', callback );
17 return () => globalThis.removeEventListener( 'popstate', callback );
18 }
19
20 function useSearchParams() {
21 const search = useSyncExternalStore( subscribe, getSearch );
22 return useMemo( () => new URLSearchParams( search ), [ search ] );
23 }
24
25 function useCurrentPath() {
26 const params = useSearchParams();
27 return params.get( 'path' ) ?? '/';
28 }
29
30 function useCurrentRoute() {
31 const params = useSearchParams();
32 const path = params.get( 'path' ) ?? '/';
33 const query = useMemo( () => Object.fromEntries( params ), [ params ] );
34
35 const route = useMemo(
36 () =>
37 routes.find( ( r ) => r.path === path ) ??
38 routes.find( ( r ) => r.name === 'not-found' ),
39 [ path ]
40 );
41
42 return { route, query };
43 }
44
45 function useArea( area ) {
46 const { route, query } = useCurrentRoute();
47 if ( ! area ) {
48 return { route, query };
49 }
50
51 if ( ! route?.areas?.[ area ] ) {
52 return null;
53 }
54
55 return route.areas[ area ]( { query } );
56 }
57
58 function normalizeAdminAppPathname( pathname ) {
59 const marker = '/wp-admin/admin.php';
60 const first = pathname.indexOf( marker );
61
62 if ( first === -1 ) {
63 return pathname;
64 }
65
66 const duplicate = pathname.indexOf( marker, first + 1 );
67
68 if ( duplicate === -1 ) {
69 return pathname;
70 }
71
72 return pathname.slice( 0, duplicate );
73 }
74
75 function buildUrl( path, query = {} ) {
76 const url = new URL( globalThis.location.href );
77 url.pathname = normalizeAdminAppPathname( url.pathname );
78 url.search = '';
79
80 const page = new URLSearchParams( globalThis.location.search ).get(
81 'page'
82 );
83 if ( page ) {
84 url.searchParams.set( 'page', page );
85 }
86 if ( path && path !== '/' ) {
87 url.searchParams.set( 'path', path );
88 }
89
90 Object.entries( query ).forEach( ( [ k, v ] ) => {
91 if ( v !== null ) {
92 url.searchParams.set( k, String( v ) );
93 }
94 } );
95
96 return url;
97 }
98
99 function navigate( path, query = {} ) {
100 const url = buildUrl( path, query );
101
102 globalThis.history.pushState( {}, '', url );
103 globalThis.dispatchEvent( new Event( 'popstate' ) );
104 }
105
106 export { buildUrl, useCurrentRoute, useCurrentPath, useArea, navigate };
107