PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.25
Advanced Ads – Ad Manager & AdSense v2.0.25
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 3 months ago common 1 month ago components 1 day ago css 1 day ago hooks 1 day ago layout 1 day ago notifications 3 months ago partials 3 months ago post-quick-edit 3 months ago screen-ads 1 week ago screen-dashboard 1 month ago screen-groups 1 month ago screen-licenses 1 day ago screen-placements 1 week ago screen-settings 3 months ago screen-support 1 day ago screen-tools 1 month ago store 1 day ago wp-dashboard 5 days ago main.css 1 day ago main.js 1 day ago router.js 1 day ago routes.js 1 day ago utils.js 1 day 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