2022-04-11 14:04:30 +02:00
/******/ ( function ( ) { // webpackBootstrap
/******/ "use strict" ;
/******/ // The require scope
/******/ var _ _webpack _require _ _ = { } ;
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ ! function ( ) {
/******/ // define getter functions for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , definition ) {
/******/ for ( var key in definition ) {
/******/ if ( _ _webpack _require _ _ . o ( definition , key ) && ! _ _webpack _require _ _ . o ( exports , key ) ) {
/******/ Object . defineProperty ( exports , key , { enumerable : true , get : definition [ key ] } ) ;
/******/ }
/******/ }
/******/ } ;
/******/ } ( ) ;
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ ! function ( ) {
/******/ _ _webpack _require _ _ . o = function ( obj , prop ) { return Object . prototype . hasOwnProperty . call ( obj , prop ) ; }
/******/ } ( ) ;
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ ! function ( ) {
/******/ // define __esModule on exports
/******/ _ _webpack _require _ _ . r = function ( exports ) {
/******/ if ( typeof Symbol !== 'undefined' && Symbol . toStringTag ) {
/******/ Object . defineProperty ( exports , Symbol . toStringTag , { value : 'Module' } ) ;
/******/ }
/******/ Object . defineProperty ( exports , '__esModule' , { value : true } ) ;
2018-12-14 05:41:57 +01:00
/******/ } ;
2022-04-11 14:04:30 +02:00
/******/ } ( ) ;
/******/
2018-12-14 05:41:57 +01:00
/************************************************************************/
2022-04-11 14:04:30 +02:00
var _ _webpack _exports _ _ = { } ;
2020-06-29 13:50:29 +02:00
// ESM COMPAT FLAG
2020-01-08 12:57:23 +01:00
_ _webpack _require _ _ . r ( _ _webpack _exports _ _ ) ;
2020-06-29 13:50:29 +02:00
// EXPORTS
2022-04-11 14:04:30 +02:00
_ _webpack _require _ _ . d ( _ _webpack _exports _ _ , {
"addQueryArgs" : function ( ) { return /* reexport */ addQueryArgs ; } ,
"buildQueryString" : function ( ) { return /* reexport */ buildQueryString ; } ,
"cleanForSlug" : function ( ) { return /* reexport */ cleanForSlug ; } ,
"filterURLForDisplay" : function ( ) { return /* reexport */ filterURLForDisplay ; } ,
"getAuthority" : function ( ) { return /* reexport */ getAuthority ; } ,
"getFilename" : function ( ) { return /* reexport */ getFilename ; } ,
"getFragment" : function ( ) { return /* reexport */ getFragment ; } ,
"getPath" : function ( ) { return /* reexport */ getPath ; } ,
"getPathAndQueryString" : function ( ) { return /* reexport */ getPathAndQueryString ; } ,
"getProtocol" : function ( ) { return /* reexport */ getProtocol ; } ,
"getQueryArg" : function ( ) { return /* reexport */ getQueryArg ; } ,
"getQueryArgs" : function ( ) { return /* reexport */ getQueryArgs ; } ,
"getQueryString" : function ( ) { return /* reexport */ getQueryString ; } ,
"hasQueryArg" : function ( ) { return /* reexport */ hasQueryArg ; } ,
"isEmail" : function ( ) { return /* reexport */ isEmail ; } ,
"isURL" : function ( ) { return /* reexport */ isURL ; } ,
"isValidAuthority" : function ( ) { return /* reexport */ isValidAuthority ; } ,
"isValidFragment" : function ( ) { return /* reexport */ isValidFragment ; } ,
"isValidPath" : function ( ) { return /* reexport */ isValidPath ; } ,
"isValidProtocol" : function ( ) { return /* reexport */ isValidProtocol ; } ,
"isValidQueryString" : function ( ) { return /* reexport */ isValidQueryString ; } ,
"normalizePath" : function ( ) { return /* reexport */ normalizePath ; } ,
"prependHTTP" : function ( ) { return /* reexport */ prependHTTP ; } ,
"removeQueryArgs" : function ( ) { return /* reexport */ removeQueryArgs ; } ,
"safeDecodeURI" : function ( ) { return /* reexport */ safeDecodeURI ; } ,
"safeDecodeURIComponent" : function ( ) { return /* reexport */ safeDecodeURIComponent ; }
} ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-url.js
2020-01-08 12:57:23 +01:00
/ * *
* Determines whether the given string looks like a URL .
*
* @ param { string } url The string to scrutinise .
*
* @ example
* ` ` ` js
* const isURL = isURL ( 'https://wordpress.org' ) ; // true
* ` ` `
*
2020-02-10 23:33:27 +01:00
* @ see https : //url.spec.whatwg.org/
* @ see https : //url.spec.whatwg.org/#valid-url-string
*
2020-01-08 12:57:23 +01:00
* @ return { boolean } Whether or not it looks like a URL .
* /
function isURL ( url ) {
2020-02-10 23:33:27 +01:00
// A URL can be considered value if the `URL` constructor is able to parse
// it. The constructor throws an error for an invalid URL.
try {
new URL ( url ) ;
return true ;
2021-05-19 17:09:27 +02:00
} catch {
2020-02-10 23:33:27 +01:00
return false ;
}
2020-01-08 12:57:23 +01:00
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-email.js
2021-05-19 17:09:27 +02:00
const EMAIL _REGEXP = /^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i ;
2020-01-08 12:57:23 +01:00
/ * *
* Determines whether the given string looks like an email .
*
* @ param { string } email The string to scrutinise .
*
* @ example
* ` ` ` js
* const isEmail = isEmail ( 'hello@wordpress.org' ) ; // true
* ` ` `
*
* @ return { boolean } Whether or not it looks like an email .
* /
function isEmail ( email ) {
return EMAIL _REGEXP . test ( email ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-protocol.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns the protocol part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
* const protocol1 = getProtocol ( 'tel:012345678' ) ; // 'tel:'
* const protocol2 = getProtocol ( 'https://wordpress.org' ) ; // 'https:'
* ` ` `
*
* @ return { string | void } The protocol part of the URL .
* /
function getProtocol ( url ) {
2021-05-19 17:09:27 +02:00
const matches = /^([^\s:]+:)/ . exec ( url ) ;
2020-01-08 12:57:23 +01:00
if ( matches ) {
return matches [ 1 ] ;
}
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-valid-protocol.js
2020-01-08 12:57:23 +01:00
/ * *
* Tests if a url protocol is valid .
*
* @ param { string } protocol The url protocol .
*
* @ example
* ` ` ` js
* const isValid = isValidProtocol ( 'https:' ) ; // true
* const isNotValid = isValidProtocol ( 'https :' ) ; // false
* ` ` `
*
* @ return { boolean } True if the argument is a valid protocol ( e . g . http : , tel : ) .
* /
function isValidProtocol ( protocol ) {
if ( ! protocol ) {
return false ;
}
return /^[a-z\-.\+]+[0-9]*:$/i . test ( protocol ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-authority.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns the authority part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
* const authority1 = getAuthority ( 'https://wordpress.org/help/' ) ; // 'wordpress.org'
* const authority2 = getAuthority ( 'https://localhost:8080/test/' ) ; // 'localhost:8080'
* ` ` `
*
* @ return { string | void } The authority part of the URL .
* /
function getAuthority ( url ) {
2021-05-19 17:09:27 +02:00
const matches = /^[^\/\s:]+:(?:\/\/)?\/?([^\/\s#?]+)[\/#?]{0,1}\S*$/ . exec ( url ) ;
2020-01-08 12:57:23 +01:00
if ( matches ) {
return matches [ 1 ] ;
}
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-valid-authority.js
2020-01-08 12:57:23 +01:00
/ * *
* Checks for invalid characters within the provided authority .
*
* @ param { string } authority A string containing the URL authority .
*
* @ example
* ` ` ` js
* const isValid = isValidAuthority ( 'wordpress.org' ) ; // true
* const isNotValid = isValidAuthority ( 'wordpress#org' ) ; // false
* ` ` `
*
* @ return { boolean } True if the argument contains a valid authority .
* /
function isValidAuthority ( authority ) {
if ( ! authority ) {
return false ;
}
return /^[^\s#?]+$/ . test ( authority ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-path.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns the path part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
* const path1 = getPath ( 'http://localhost:8080/this/is/a/test?query=true' ) ; // 'this/is/a/test'
* const path2 = getPath ( 'https://wordpress.org/help/faq/' ) ; // 'help/faq'
* ` ` `
*
* @ return { string | void } The path part of the URL .
* /
function getPath ( url ) {
2021-05-19 17:09:27 +02:00
const matches = /^[^\/\s:]+:(?:\/\/)?[^\/\s#?]+[\/]([^\s#?]+)[#?]{0,1}\S*$/ . exec ( url ) ;
2020-01-08 12:57:23 +01:00
if ( matches ) {
return matches [ 1 ] ;
}
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-valid-path.js
2020-01-08 12:57:23 +01:00
/ * *
* Checks for invalid characters within the provided path .
*
* @ param { string } path The URL path .
*
* @ example
* ` ` ` js
* const isValid = isValidPath ( 'test/path/' ) ; // true
* const isNotValid = isValidPath ( '/invalid?test/path/' ) ; // false
* ` ` `
*
* @ return { boolean } True if the argument contains a valid path
* /
function isValidPath ( path ) {
if ( ! path ) {
return false ;
}
return /^[^\s#?]+$/ . test ( path ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-query-string.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns the query string part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
2020-06-26 15:33:47 +02:00
* const queryString = getQueryString ( 'http://localhost:8080/this/is/a/test?query=true#fragment' ) ; // 'query=true'
2020-01-08 12:57:23 +01:00
* ` ` `
*
* @ return { string | void } The query string part of the URL .
* /
function getQueryString ( url ) {
2021-05-19 17:09:27 +02:00
let query ;
2020-01-08 12:57:23 +01:00
2020-06-26 15:33:47 +02:00
try {
2021-01-28 03:04:13 +01:00
query = new URL ( url , 'http://example.com' ) . search . substring ( 1 ) ;
2020-06-26 15:33:47 +02:00
} catch ( error ) { }
if ( query ) {
return query ;
2020-01-08 12:57:23 +01:00
}
}
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/build-query-string.js
2021-01-28 03:04:13 +01:00
/ * *
* Generates URL - encoded query string using input query data .
*
* It is intended to behave equivalent as PHP ' s ` http_build_query ` , configured
* with encoding type PHP _QUERY _RFC3986 ( spaces as ` %20 ` ) .
*
* @ example
* ` ` ` js
* const queryString = buildQueryString ( {
* simple : 'is ok' ,
* arrays : [ 'are' , 'fine' , 'too' ] ,
* objects : {
* evenNested : {
* ok : 'yes' ,
* } ,
* } ,
* } ) ;
* // "simple=is%20ok&arrays%5B0%5D=are&arrays%5B1%5D=fine&arrays%5B2%5D=too&objects%5BevenNested%5D%5Bok%5D=yes"
* ` ` `
*
* @ param { Record < string , * > } data Data to encode .
*
* @ return { string } Query string .
* /
function buildQueryString ( data ) {
2021-05-19 17:09:27 +02:00
let string = '' ;
const stack = Object . entries ( data ) ;
let pair ;
2021-01-28 03:04:13 +01:00
while ( pair = stack . shift ( ) ) {
2021-05-19 17:09:27 +02:00
let [ key , value ] = pair ; // Support building deeply nested data, from array or object values.
2021-01-28 03:04:13 +01:00
2021-05-19 17:09:27 +02:00
const hasNestedData = Array . isArray ( value ) || value && value . constructor === Object ;
2021-01-28 03:04:13 +01:00
if ( hasNestedData ) {
// Push array or object values onto the stack as composed of their
// original key and nested index or key, retaining order by a
// combination of Array#reverse and Array#unshift onto the stack.
2021-05-19 17:09:27 +02:00
const valuePairs = Object . entries ( value ) . reverse ( ) ;
for ( const [ member , memberValue ] of valuePairs ) {
stack . unshift ( [ ` ${ key } [ ${ member } ] ` , memberValue ] ) ;
2021-01-28 03:04:13 +01:00
}
} else if ( value !== undefined ) {
// Null is treated as special case, equivalent to empty string.
if ( value === null ) {
value = '' ;
}
string += '&' + [ key , value ] . map ( encodeURIComponent ) . join ( '=' ) ;
}
} // Loop will concatenate with leading `&`, but it's only expected for all
// but the first query parameter. This strips the leading `&`, while still
// accounting for the case that the string may in-fact be empty.
return string . substr ( 1 ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-valid-query-string.js
2020-01-08 12:57:23 +01:00
/ * *
* Checks for invalid characters within the provided query string .
*
* @ param { string } queryString The query string .
*
* @ example
* ` ` ` js
* const isValid = isValidQueryString ( 'query=true&another=false' ) ; // true
* const isNotValid = isValidQueryString ( 'query=true?another=false' ) ; // false
* ` ` `
*
* @ return { boolean } True if the argument contains a valid query string .
* /
function isValidQueryString ( queryString ) {
if ( ! queryString ) {
return false ;
}
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
return /^[^\s#?\/]+$/ . test ( queryString ) ;
}
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-path-and-query-string.js
2020-06-26 15:33:47 +02:00
/ * *
* Internal dependencies
* /
/ * *
* Returns the path part and query string part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
* const pathAndQueryString1 = getPathAndQueryString ( 'http://localhost:8080/this/is/a/test?query=true' ) ; // '/this/is/a/test?query=true'
* const pathAndQueryString2 = getPathAndQueryString ( 'https://wordpress.org/help/faq/' ) ; // '/help/faq'
* ` ` `
*
* @ return { string } The path part and query string part of the URL .
* /
function getPathAndQueryString ( url ) {
2021-05-19 17:09:27 +02:00
const path = getPath ( url ) ;
const queryString = getQueryString ( url ) ;
let value = '/' ;
2020-06-26 15:33:47 +02:00
if ( path ) value += path ;
2021-05-19 17:09:27 +02:00
if ( queryString ) value += ` ? ${ queryString } ` ;
2020-06-26 15:33:47 +02:00
return value ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-fragment.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns the fragment part of the URL .
*
* @ param { string } url The full URL
*
* @ example
* ` ` ` js
* const fragment1 = getFragment ( 'http://localhost:8080/this/is/a/test?query=true#fragment' ) ; // '#fragment'
* const fragment2 = getFragment ( 'https://wordpress.org#another-fragment?query=true' ) ; // '#another-fragment'
* ` ` `
*
* @ return { string | void } The fragment part of the URL .
* /
function getFragment ( url ) {
2021-05-19 17:09:27 +02:00
const matches = /^\S+?(#[^\s\?]*)/ . exec ( url ) ;
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
if ( matches ) {
return matches [ 1 ] ;
}
}
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/is-valid-fragment.js
2020-01-08 12:57:23 +01:00
/ * *
* Checks for invalid characters within the provided fragment .
*
* @ param { string } fragment The url fragment .
*
* @ example
* ` ` ` js
* const isValid = isValidFragment ( '#valid-fragment' ) ; // true
* const isNotValid = isValidFragment ( '#invalid-#fragment' ) ; // false
* ` ` `
*
* @ return { boolean } True if the argument contains a valid fragment .
* /
function isValidFragment ( fragment ) {
if ( ! fragment ) {
return false ;
}
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
return /^#[^\s#?\/]*$/ . test ( fragment ) ;
}
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-query-args.js
2021-01-28 03:04:13 +01:00
/ * *
* Internal dependencies
* /
/** @typedef {import('./get-query-arg').QueryArgParsed} QueryArgParsed */
/ * *
* @ typedef { Record < string , QueryArgParsed > } QueryArgs
* /
/ * *
* Sets a value in object deeply by a given array of path segments . Mutates the
* object reference .
*
* @ param { Record < string , * > } object Object in which to assign .
* @ param { string [ ] } path Path segment at which to set value .
* @ param { * } value Value to set .
* /
function setPath ( object , path , value ) {
2021-05-19 17:09:27 +02:00
const length = path . length ;
const lastIndex = length - 1 ;
2021-01-28 03:04:13 +01:00
2021-05-19 17:09:27 +02:00
for ( let i = 0 ; i < length ; i ++ ) {
let key = path [ i ] ;
2021-01-28 03:04:13 +01:00
if ( ! key && Array . isArray ( object ) ) {
// If key is empty string and next value is array, derive key from
// the current length of the array.
key = object . length . toString ( ) ;
2022-04-12 17:12:47 +02:00
}
2021-01-28 03:04:13 +01:00
2022-04-12 17:12:47 +02:00
key = [ '__proto__' , 'constructor' , 'prototype' ] . includes ( key ) ? key . toUpperCase ( ) : key ; // If the next key in the path is numeric (or empty string), it will be
// created as an array. Otherwise, it will be created as an object.
2021-01-28 03:04:13 +01:00
2021-05-19 17:09:27 +02:00
const isNextKeyArrayIndex = ! isNaN ( Number ( path [ i + 1 ] ) ) ;
2021-01-28 03:04:13 +01:00
object [ key ] = i === lastIndex ? // If at end of path, assign the intended value.
value : // Otherwise, advance to the next object in the path, creating
// it if it does not yet exist.
object [ key ] || ( isNextKeyArrayIndex ? [ ] : { } ) ;
if ( Array . isArray ( object [ key ] ) && ! isNextKeyArrayIndex ) {
// If we current key is non-numeric, but the next value is an
// array, coerce the value to an object.
2021-05-19 17:09:27 +02:00
object [ key ] = { ... object [ key ]
} ;
2021-01-28 03:04:13 +01:00
} // Update working reference object to the next in the path.
object = object [ key ] ;
}
}
/ * *
* Returns an object of query arguments of the given URL . If the given URL is
* invalid or has no querystring , an empty object is returned .
*
* @ param { string } url URL .
*
* @ example
* ` ` ` js
* const foo = getQueryArgs ( 'https://wordpress.org?foo=bar&bar=baz' ) ;
* // { "foo": "bar", "bar": "baz" }
* ` ` `
*
* @ return { QueryArgs } Query args object .
* /
function getQueryArgs ( url ) {
2021-11-15 13:50:17 +01:00
return ( getQueryString ( url ) || '' // Normalize space encoding, accounting for PHP URL encoding
2021-01-28 03:04:13 +01:00
// corresponding to `application/x-www-form-urlencoded`.
//
// See: https://tools.ietf.org/html/rfc1866#section-8.2.1
2021-11-15 13:50:17 +01:00
) . replace ( /\+/g , '%20' ) . split ( '&' ) . reduce ( ( accumulator , keyValue ) => {
2021-05-19 17:09:27 +02:00
const [ key , value = '' ] = keyValue . split ( '=' ) // Filtering avoids decoding as `undefined` for value, where
2021-01-28 03:04:13 +01:00
// default is restored in destructuring assignment.
2021-05-19 17:09:27 +02:00
. filter ( Boolean ) . map ( decodeURIComponent ) ;
2021-01-28 03:04:13 +01:00
if ( key ) {
2021-05-19 17:09:27 +02:00
const segments = key . replace ( /\]/g , '' ) . split ( '[' ) ;
2021-01-28 03:04:13 +01:00
setPath ( accumulator , segments , value ) ;
}
return accumulator ;
2022-04-12 17:12:47 +02:00
} , Object . create ( null ) ) ;
2021-01-28 03:04:13 +01:00
}
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/add-query-args.js
2020-01-08 12:57:23 +01:00
/ * *
2021-01-28 03:04:13 +01:00
* Internal dependencies
2020-01-08 12:57:23 +01:00
* /
2018-12-14 05:41:57 +01:00
2021-01-28 03:04:13 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* Appends arguments as querystring to the provided URL . If the URL already
* includes query arguments , the arguments are merged with ( and take precedent
* over ) the existing set .
*
2021-11-08 15:29:21 +01:00
* @ param { string } [ url = '' ] URL to which arguments should be appended . If omitted ,
* only the resulting querystring is returned .
* @ param { Object } [ args ] Query arguments to apply to URL .
2020-01-08 12:57:23 +01:00
*
* @ example
* ` ` ` js
* const newURL = addQueryArgs ( 'https://google.com' , { q : 'test' } ) ; // https://google.com/?q=test
* ` ` `
*
* @ return { string } URL with arguments applied .
* /
2018-12-14 05:41:57 +01:00
2021-11-15 13:50:17 +01:00
function addQueryArgs ( ) {
let url = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : '' ;
let args = arguments . length > 1 ? arguments [ 1 ] : undefined ;
2020-01-08 12:57:23 +01:00
// If no arguments are to be appended, return original URL.
if ( ! args || ! Object . keys ( args ) . length ) {
return url ;
}
2018-12-14 05:41:57 +01:00
2021-05-19 17:09:27 +02:00
let baseUrl = url ; // Determine whether URL already had query arguments.
2018-12-14 05:41:57 +01:00
2021-05-19 17:09:27 +02:00
const queryStringIndex = url . indexOf ( '?' ) ;
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
if ( queryStringIndex !== - 1 ) {
// Merge into existing query arguments.
2021-01-28 03:04:13 +01:00
args = Object . assign ( getQueryArgs ( url ) , args ) ; // Change working base URL to omit previous query arguments.
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
baseUrl = baseUrl . substr ( 0 , queryStringIndex ) ;
}
2018-12-14 05:41:57 +01:00
2021-01-28 03:04:13 +01:00
return baseUrl + '?' + buildQueryString ( args ) ;
2020-01-08 12:57:23 +01:00
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-query-arg.js
2020-01-08 12:57:23 +01:00
/ * *
2021-01-28 03:04:13 +01:00
* Internal dependencies
2020-01-08 12:57:23 +01:00
* /
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* @ typedef { { [ key : string ] : QueryArgParsed } } QueryArgObject
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* @ typedef { string | string [ ] | QueryArgObject } QueryArgParsed
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* Returns a single query argument of the url
*
* @ param { string } url URL .
* @ param { string } arg Query arg name .
*
* @ example
* ` ` ` js
* const foo = getQueryArg ( 'https://wordpress.org?foo=bar&bar=baz' , 'foo' ) ; // bar
* ` ` `
*
2021-01-28 03:04:13 +01:00
* @ return { QueryArgParsed | void } Query arg value .
2020-01-08 12:57:23 +01:00
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
function getQueryArg ( url , arg ) {
2021-01-28 03:04:13 +01:00
return getQueryArgs ( url ) [ arg ] ;
2020-01-08 12:57:23 +01:00
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/has-query-arg.js
2020-01-08 12:57:23 +01:00
/ * *
* Internal dependencies
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* Determines whether the URL contains a given query arg .
*
* @ param { string } url URL .
* @ param { string } arg Query arg name .
*
* @ example
* ` ` ` js
* const hasBar = hasQueryArg ( 'https://wordpress.org?foo=bar&bar=baz' , 'bar' ) ; // true
* ` ` `
*
* @ return { boolean } Whether or not the URL contains the query arg .
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
function hasQueryArg ( url , arg ) {
return getQueryArg ( url , arg ) !== undefined ;
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/remove-query-args.js
2020-01-08 12:57:23 +01:00
/ * *
2021-01-28 03:04:13 +01:00
* Internal dependencies
2020-01-08 12:57:23 +01:00
* /
2018-12-18 04:14:52 +01:00
2021-01-28 03:04:13 +01:00
2020-01-08 12:57:23 +01:00
/ * *
* Removes arguments from the query string of the url
*
* @ param { string } url URL .
* @ param { ... string } args Query Args .
*
* @ example
* ` ` ` js
* const newUrl = removeQueryArgs ( 'https://wordpress.org?foo=bar&bar=baz&baz=foobar' , 'foo' , 'bar' ) ; // https://wordpress.org?baz=foobar
* ` ` `
*
* @ return { string } Updated URL .
* /
2018-12-18 04:14:52 +01:00
2021-11-15 13:50:17 +01:00
function removeQueryArgs ( url ) {
2021-05-19 17:09:27 +02:00
const queryStringIndex = url . indexOf ( '?' ) ;
2021-01-28 03:04:13 +01:00
if ( queryStringIndex === - 1 ) {
return url ;
}
2021-05-19 17:09:27 +02:00
const query = getQueryArgs ( url ) ;
const baseURL = url . substr ( 0 , queryStringIndex ) ;
2021-11-15 13:50:17 +01:00
for ( var _len = arguments . length , args = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
args [ _key - 1 ] = arguments [ _key ] ;
}
2021-05-19 17:09:27 +02:00
args . forEach ( arg => delete query [ arg ] ) ;
const queryString = buildQueryString ( query ) ;
2021-01-28 03:04:13 +01:00
return queryString ? baseURL + '?' + queryString : baseURL ;
2020-01-08 12:57:23 +01:00
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/prepend-http.js
2020-01-08 12:57:23 +01:00
/ * *
* Internal dependencies
* /
2018-12-18 04:14:52 +01:00
2021-05-19 17:09:27 +02:00
const USABLE _HREF _REGEXP = /^(?:[a-z]+:|#|\?|\.|\/)/i ;
2020-01-08 12:57:23 +01:00
/ * *
* Prepends "http://" to a url , if it looks like something that is meant to be a TLD .
*
* @ param { string } url The URL to test .
*
* @ example
* ` ` ` js
* const actualURL = prependHTTP ( 'wordpress.org' ) ; // http://wordpress.org
* ` ` `
*
* @ return { string } The updated URL .
* /
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
function prependHTTP ( url ) {
if ( ! url ) {
return url ;
}
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
url = url . trim ( ) ;
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
if ( ! USABLE _HREF _REGEXP . test ( url ) && ! isEmail ( url ) ) {
return 'http://' + url ;
}
2018-12-14 05:41:57 +01:00
2020-01-08 12:57:23 +01:00
return url ;
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/safe-decode-uri.js
2020-01-08 12:57:23 +01:00
/ * *
* Safely decodes a URI with ` decodeURI ` . Returns the URI unmodified if
* ` decodeURI ` throws an error .
*
* @ param { string } uri URI to decode .
*
* @ example
* ` ` ` js
* const badUri = safeDecodeURI ( '%z' ) ; // does not throw an Error, simply returns '%z'
* ` ` `
*
* @ return { string } Decoded URI if possible .
* /
function safeDecodeURI ( uri ) {
try {
return decodeURI ( uri ) ;
} catch ( uriError ) {
return uri ;
}
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/safe-decode-uri-component.js
2020-01-08 12:57:23 +01:00
/ * *
* Safely decodes a URI component with ` decodeURIComponent ` . Returns the URI component unmodified if
* ` decodeURIComponent ` throws an error .
*
* @ param { string } uriComponent URI component to decode .
*
* @ return { string } Decoded URI component if possible .
* /
function safeDecodeURIComponent ( uriComponent ) {
try {
return decodeURIComponent ( uriComponent ) ;
} catch ( uriComponentError ) {
return uriComponent ;
}
}
2018-12-18 04:14:52 +01:00
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/filter-url-for-display.js
2020-01-08 12:57:23 +01:00
/ * *
* Returns a URL for display .
*
2021-11-08 15:29:21 +01:00
* @ param { string } url Original URL .
2021-01-28 03:04:13 +01:00
* @ param { number | null } maxLength URL length .
2020-01-08 12:57:23 +01:00
*
* @ example
* ` ` ` js
* const displayUrl = filterURLForDisplay ( 'https://www.wordpress.org/gutenberg/' ) ; // wordpress.org/gutenberg
2021-01-28 03:04:13 +01:00
* const imageUrl = filterURLForDisplay ( 'https://www.wordpress.org/wp-content/uploads/img.png' , 20 ) ; // …ent/uploads/img.png
2020-01-08 12:57:23 +01:00
* ` ` `
*
* @ return { string } Displayed URL .
* /
2021-11-15 13:50:17 +01:00
function filterURLForDisplay ( url ) {
let maxLength = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : null ;
2020-01-08 12:57:23 +01:00
// Remove protocol and www prefixes.
2021-05-19 17:09:27 +02:00
let filteredURL = url . replace ( /^(?:https?:)\/\/(?:www\.)?/ , '' ) ; // Ends with / and only has that single slash, strip it.
2018-12-18 04:14:52 +01:00
2020-01-08 12:57:23 +01:00
if ( filteredURL . match ( /^[^\/]+\/$/ ) ) {
2021-01-28 03:04:13 +01:00
filteredURL = filteredURL . replace ( '/' , '' ) ;
2020-01-08 12:57:23 +01:00
}
2021-05-19 17:09:27 +02:00
const mediaRegexp = /([\w|:])*\.(?:jpg|jpeg|gif|png|svg)/ ;
2021-01-28 03:04:13 +01:00
if ( ! maxLength || filteredURL . length <= maxLength || ! filteredURL . match ( mediaRegexp ) ) {
return filteredURL ;
} // If the file is not greater than max length, return last portion of URL.
filteredURL = filteredURL . split ( '?' ) [ 0 ] ;
2021-05-19 17:09:27 +02:00
const urlPieces = filteredURL . split ( '/' ) ;
const file = urlPieces [ urlPieces . length - 1 ] ;
2021-01-28 03:04:13 +01:00
if ( file . length <= maxLength ) {
return '…' + filteredURL . slice ( - maxLength ) ;
} // If the file is greater than max length, truncate the file.
2021-05-19 17:09:27 +02:00
const index = file . lastIndexOf ( '.' ) ;
const [ fileName , extension ] = [ file . slice ( 0 , index ) , file . slice ( index + 1 ) ] ;
const truncatedFile = fileName . slice ( - 3 ) + '.' + extension ;
2021-01-28 03:04:13 +01:00
return file . slice ( 0 , maxLength - truncatedFile . length - 1 ) + '…' + truncatedFile ;
2020-01-08 12:57:23 +01:00
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: external "lodash"
var external _lodash _namespaceObject = window [ "lodash" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/clean-for-slug.js
2020-02-06 22:03:31 +01:00
/ * *
* External dependencies
* /
/ * *
* Performs some basic cleanup of a string for use as a post slug .
*
* This replicates some of what ` sanitize_title() ` does in WordPress core , but
* is only designed to approximate what the slug will be .
*
* Converts Latin - 1 Supplement and Latin Extended - A letters to basic Latin
2020-06-26 15:33:47 +02:00
* letters . Removes combining diacritical marks . Converts whitespace , periods ,
* and forward slashes to hyphens . Removes any remaining non - word characters
* except hyphens . Converts remaining string to lowercase . It does not account
* for octets , HTML entities , or other encoded characters .
2020-02-06 22:03:31 +01:00
*
* @ param { string } string Title or slug to be processed .
*
* @ return { string } Processed string .
* /
function cleanForSlug ( string ) {
if ( ! string ) {
return '' ;
}
2022-04-12 17:12:47 +02:00
return ( 0 , external _lodash _namespaceObject . trim ) ( ( 0 , external _lodash _namespaceObject . deburr ) ( string ) . replace ( /[\s\./]+/g , '-' ) . replace ( /[^\p{L}\p{N}_-]+/gu , '' ) . toLowerCase ( ) , '-' ) ;
2020-02-06 22:03:31 +01:00
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/get-filename.js
2021-11-08 15:29:21 +01:00
/ * *
* Returns the filename part of the URL .
*
* @ param { string } url The full URL .
*
* @ example
* ` ` ` js
* const filename1 = getFilename ( 'http://localhost:8080/this/is/a/test.jpg' ) ; // 'test.jpg'
* const filename2 = getFilename ( '/this/is/a/test.png' ) ; // 'test.png'
* ` ` `
*
* @ return { string | void } The filename part of the URL .
* /
function getFilename ( url ) {
let filename ;
try {
filename = new URL ( url , 'http://example.com' ) . pathname . split ( '/' ) . pop ( ) ;
} catch ( error ) { }
if ( filename ) {
return filename ;
}
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/normalize-path.js
2021-11-08 15:29:21 +01:00
/ * *
* Given a path , returns a normalized path where equal query parameter values
* will be treated as identical , regardless of order they appear in the original
* text .
*
* @ param { string } path Original path .
*
* @ return { string } Normalized path .
* /
function normalizePath ( path ) {
const splitted = path . split ( '?' ) ;
const query = splitted [ 1 ] ;
const base = splitted [ 0 ] ;
if ( ! query ) {
return base ;
2022-04-12 17:12:47 +02:00
} // 'b=1%2C2&c=2&a=5'
2021-11-08 15:29:21 +01:00
2022-04-12 17:12:47 +02:00
return base + '?' + query // [ 'b=1%2C2', 'c=2', 'a=5' ]
. split ( '&' ) // [ [ 'b, '1%2C2' ], [ 'c', '2' ], [ 'a', '5' ] ]
. map ( entry => entry . split ( '=' ) ) // [ [ 'b', '1,2' ], [ 'c', '2' ], [ 'a', '5' ] ]
. map ( pair => pair . map ( decodeURIComponent ) ) // [ [ 'a', '5' ], [ 'b, '1,2' ], [ 'c', '2' ] ]
. sort ( ( a , b ) => a [ 0 ] . localeCompare ( b [ 0 ] ) ) // [ [ 'a', '5' ], [ 'b, '1%2C2' ], [ 'c', '2' ] ]
. map ( pair => pair . map ( encodeURIComponent ) ) // [ 'a=5', 'b=1%2C2', 'c=2' ]
. map ( pair => pair . join ( '=' ) ) // 'a=5&b=1%2C2&c=2'
2021-11-08 15:29:21 +01:00
. join ( '&' ) ;
}
2022-04-11 14:04:30 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/url/build-module/index.js
2018-12-14 05:41:57 +01:00
2019-06-27 13:28:19 +02:00
2018-12-14 05:41:57 +01:00
2018-12-18 04:14:52 +01:00
2018-12-14 05:41:57 +01:00
2021-11-08 15:29:21 +01:00
2021-01-28 03:04:13 +01:00
2018-12-14 05:41:57 +01:00
2022-04-11 14:04:30 +02:00
( window . wp = window . wp || { } ) . url = _ _webpack _exports _ _ ;
/******/ } ) ( )
;