/******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 9756: /***/ (function(module) { /** * Memize options object. * * @typedef MemizeOptions * * @property {number} [maxSize] Maximum size of the cache. */ /** * Internal cache entry. * * @typedef MemizeCacheNode * * @property {?MemizeCacheNode|undefined} [prev] Previous node. * @property {?MemizeCacheNode|undefined} [next] Next node. * @property {Array<*>} args Function arguments for cache * entry. * @property {*} val Function result. */ /** * Properties of the enhanced function for controlling cache. * * @typedef MemizeMemoizedFunction * * @property {()=>void} clear Clear the cache. */ /** * Accepts a function to be memoized, and returns a new memoized function, with * optional options. * * @template {Function} F * * @param {F} fn Function to memoize. * @param {MemizeOptions} [options] Options object. * * @return {F & MemizeMemoizedFunction} Memoized function. */ function memize( fn, options ) { var size = 0; /** @type {?MemizeCacheNode|undefined} */ var head; /** @type {?MemizeCacheNode|undefined} */ var tail; options = options || {}; function memoized( /* ...args */ ) { var node = head, len = arguments.length, args, i; searchCache: while ( node ) { // Perform a shallow equality test to confirm that whether the node // under test is a candidate for the arguments passed. Two arrays // are shallowly equal if their length matches and each entry is // strictly equal between the two sets. Avoid abstracting to a // function which could incur an arguments leaking deoptimization. // Check whether node arguments match arguments length if ( node.args.length !== arguments.length ) { node = node.next; continue; } // Check whether node arguments match arguments values for ( i = 0; i < len; i++ ) { if ( node.args[ i ] !== arguments[ i ] ) { node = node.next; continue searchCache; } } // At this point we can assume we've found a match // Surface matched node to head if not already if ( node !== head ) { // As tail, shift to previous. Must only shift if not also // head, since if both head and tail, there is no previous. if ( node === tail ) { tail = node.prev; } // Adjust siblings to point to each other. If node was tail, // this also handles new tail's empty `next` assignment. /** @type {MemizeCacheNode} */ ( node.prev ).next = node.next; if ( node.next ) { node.next.prev = node.prev; } node.next = head; node.prev = null; /** @type {MemizeCacheNode} */ ( head ).prev = node; head = node; } // Return immediately return node.val; } // No cached value found. Continue to insertion phase: // Create a copy of arguments (avoid leaking deoptimization) args = new Array( len ); for ( i = 0; i < len; i++ ) { args[ i ] = arguments[ i ]; } node = { args: args, // Generate the result from original function val: fn.apply( null, args ), }; // Don't need to check whether node is already head, since it would // have been returned above already if it was // Shift existing head down list if ( head ) { head.prev = node; node.next = head; } else { // If no head, follows that there's no tail (at initial or reset) tail = node; } // Trim tail if we're reached max size and are pending cache insertion if ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) { tail = /** @type {MemizeCacheNode} */ ( tail ).prev; /** @type {MemizeCacheNode} */ ( tail ).next = null; } else { size++; } head = node; return node.val; } memoized.clear = function() { head = null; tail = null; size = 0; }; if ( false ) {} // Ignore reason: There's not a clear solution to create an intersection of // the function with additional properties, where the goal is to retain the // function signature of the incoming argument and add control properties // on the return value. // @ts-ignore return memoized; } module.exports = memize; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* 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); } /******/ }(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. !function() { "use strict"; /* unused harmony exports next, replace, string, regexp, attrs, fromMatch */ /* harmony import */ var memize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9756); /* harmony import */ var memize__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(memize__WEBPACK_IMPORTED_MODULE_0__); /** * External dependencies */ /** * Shortcode attributes object. * * @typedef {Object} WPShortcodeAttrs * * @property {Object} named Object with named attributes. * @property {Array} numeric Array with numeric attributes. */ /** * Shortcode object. * * @typedef {Object} WPShortcode * * @property {string} tag Shortcode tag. * @property {WPShortcodeAttrs} attrs Shortcode attributes. * @property {string} content Shortcode content. * @property {string} type Shortcode type: `self-closing`, * `closed`, or `single`. */ /** * @typedef {Object} WPShortcodeMatch * * @property {number} index Index the shortcode is found at. * @property {string} content Matched content. * @property {WPShortcode} shortcode Shortcode instance of the match. */ /** * Find the next matching shortcode. * * @param {string} tag Shortcode tag. * @param {string} text Text to search. * @param {number} index Index to start search from. * * @return {WPShortcodeMatch | undefined} Matched information. */ function next(tag, text) { let index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; const re = regexp(tag); re.lastIndex = index; const match = re.exec(text); if (!match) { return; } // If we matched an escaped shortcode, try again. if ('[' === match[1] && ']' === match[7]) { return next(tag, text, re.lastIndex); } const result = { index: match.index, content: match[0], shortcode: fromMatch(match) }; // If we matched a leading `[`, strip it from the match and increment the // index accordingly. if (match[1]) { result.content = result.content.slice(1); result.index++; } // If we matched a trailing `]`, strip it from the match. if (match[7]) { result.content = result.content.slice(0, -1); } return result; } /** * Replace matching shortcodes in a block of text. * * @param {string} tag Shortcode tag. * @param {string} text Text to search. * @param {Function} callback Function to process the match and return * replacement string. * * @return {string} Text with shortcodes replaced. */ function replace(tag, text, callback) { return text.replace(regexp(tag), function (match, left, $3, attrs, slash, content, closing, right) { // If both extra brackets exist, the shortcode has been properly // escaped. if (left === '[' && right === ']') { return match; } // Create the match object and pass it through the callback. const result = callback(fromMatch(arguments)); // Make sure to return any of the extra brackets if they weren't used to // escape the shortcode. return result || result === '' ? left + result + right : match; }); } /** * Generate a string from shortcode parameters. * * Creates a shortcode instance and returns a string. * * Accepts the same `options` as the `shortcode()` constructor, containing a * `tag` string, a string or object of `attrs`, a boolean indicating whether to * format the shortcode using a `single` tag, and a `content` string. * * @param {Object} options * * @return {string} String representation of the shortcode. */ function string(options) { return new shortcode(options).string(); } /** * Generate a RegExp to identify a shortcode. * * The base regex is functionally equivalent to the one found in * `get_shortcode_regex()` in `wp-includes/shortcodes.php`. * * Capture groups: * * 1. An extra `[` to allow for escaping shortcodes with double `[[]]` * 2. The shortcode name * 3. The shortcode argument list * 4. The self closing `/` * 5. The content of a shortcode when it wraps some content. * 6. The closing tag. * 7. An extra `]` to allow for escaping shortcodes with double `[[]]` * * @param {string} tag Shortcode tag. * * @return {RegExp} Shortcode RegExp. */ function regexp(tag) { return new RegExp('\\[(\\[?)(' + tag + ')(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)', 'g'); } /** * Parse shortcode attributes. * * Shortcodes accept many types of attributes. These can chiefly be divided into * named and numeric attributes: * * Named attributes are assigned on a key/value basis, while numeric attributes * are treated as an array. * * Named attributes can be formatted as either `name="value"`, `name='value'`, * or `name=value`. Numeric attributes can be formatted as `"value"` or just * `value`. * * @param {string} text Serialised shortcode attributes. * * @return {WPShortcodeAttrs} Parsed shortcode attributes. */ const attrs = memize__WEBPACK_IMPORTED_MODULE_0___default()(text => { const named = {}; const numeric = []; // This regular expression is reused from `shortcode_parse_atts()` in // `wp-includes/shortcodes.php`. // // Capture groups: // // 1. An attribute name, that corresponds to... // 2. a value in double quotes. // 3. An attribute name, that corresponds to... // 4. a value in single quotes. // 5. An attribute name, that corresponds to... // 6. an unquoted value. // 7. A numeric attribute in double quotes. // 8. A numeric attribute in single quotes. // 9. An unquoted numeric attribute. const pattern = /([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g; // Map zero-width spaces to actual spaces. text = text.replace(/[\u00a0\u200b]/g, ' '); let match; // Match and normalize attributes. while (match = pattern.exec(text)) { if (match[1]) { named[match[1].toLowerCase()] = match[2]; } else if (match[3]) { named[match[3].toLowerCase()] = match[4]; } else if (match[5]) { named[match[5].toLowerCase()] = match[6]; } else if (match[7]) { numeric.push(match[7]); } else if (match[8]) { numeric.push(match[8]); } else if (match[9]) { numeric.push(match[9]); } } return { named, numeric }; }); /** * Generate a Shortcode Object from a RegExp match. * * Accepts a `match` object from calling `regexp.exec()` on a `RegExp` generated * by `regexp()`. `match` can also be set to the `arguments` from a callback * passed to `regexp.replace()`. * * @param {Array} match Match array. * * @return {WPShortcode} Shortcode instance. */ function fromMatch(match) { let type; if (match[4]) { type = 'self-closing'; } else if (match[6]) { type = 'closed'; } else { type = 'single'; } return new shortcode({ tag: match[2], attrs: match[3], type, content: match[5] }); } /** * Creates a shortcode instance. * * To access a raw representation of a shortcode, pass an `options` object, * containing a `tag` string, a string or object of `attrs`, a string indicating * the `type` of the shortcode ('single', 'self-closing', or 'closed'), and a * `content` string. * * @param {Object} options Options as described. * * @return {WPShortcode} Shortcode instance. */ const shortcode = Object.assign(function (options) { const { tag, attrs: attributes, type, content } = options || {}; Object.assign(this, { tag, type, content }); // Ensure we have a correctly formatted `attrs` object. this.attrs = { named: {}, numeric: [] }; if (!attributes) { return; } const attributeTypes = ['named', 'numeric']; // Parse a string of attributes. if (typeof attributes === 'string') { this.attrs = attrs(attributes); // Identify a correctly formatted `attrs` object. } else if (attributes.length === attributeTypes.length && attributeTypes.every((t, key) => t === attributes[key])) { this.attrs = attributes; // Handle a flat object of attributes. } else { Object.entries(attributes).forEach(_ref => { let [key, value] = _ref; this.set(key, value); }); } }, { next, replace, string, regexp, attrs, fromMatch }); Object.assign(shortcode.prototype, { /** * Get a shortcode attribute. * * Automatically detects whether `attr` is named or numeric and routes it * accordingly. * * @param {(number|string)} attr Attribute key. * * @return {string} Attribute value. */ get(attr) { return this.attrs[typeof attr === 'number' ? 'numeric' : 'named'][attr]; }, /** * Set a shortcode attribute. * * Automatically detects whether `attr` is named or numeric and routes it * accordingly. * * @param {(number|string)} attr Attribute key. * @param {string} value Attribute value. * * @return {WPShortcode} Shortcode instance. */ set(attr, value) { this.attrs[typeof attr === 'number' ? 'numeric' : 'named'][attr] = value; return this; }, /** * Transform the shortcode into a string. * * @return {string} String representation of the shortcode. */ string() { let text = '[' + this.tag; this.attrs.numeric.forEach(value => { if (/\s/.test(value)) { text += ' "' + value + '"'; } else { text += ' ' + value; } }); Object.entries(this.attrs.named).forEach(_ref2 => { let [name, value] = _ref2; text += ' ' + name + '="' + value + '"'; }); // If the tag is marked as `single` or `self-closing`, close the tag and // ignore any additional content. if ('single' === this.type) { return text + ']'; } else if ('self-closing' === this.type) { return text + ' /]'; } // Complete the opening tag. text += ']'; if (this.content) { text += this.content; } // Add the closing tag. return text + '[/' + this.tag + ']'; } }); /* harmony default export */ __webpack_exports__["default"] = (shortcode); }(); (window.wp = window.wp || {}).shortcode = __webpack_exports__["default"]; /******/ })() ;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
development | Folder | 0777 |
|
|
vendor | Folder | 0777 |
|
|
a11y.js | File | 8.55 KB | 0777 |
|
a11y.min.js | File | 2.45 KB | 0777 |
|
annotations.js | File | 31.69 KB | 0777 |
|
annotations.min.js | File | 7.08 KB | 0777 |
|
api-fetch.js | File | 21.46 KB | 0777 |
|
api-fetch.min.js | File | 5.2 KB | 0777 |
|
autop.js | File | 15.89 KB | 0777 |
|
autop.min.js | File | 5.6 KB | 0777 |
|
blob.js | File | 3.72 KB | 0777 |
|
blob.min.js | File | 954 B | 0777 |
|
block-directory.js | File | 73.3 KB | 0777 |
|
block-directory.min.js | File | 21.4 KB | 0777 |
|
block-editor.js | File | 1.92 MB | 0777 |
|
block-editor.min.js | File | 651.35 KB | 0777 |
|
block-library.js | File | 1.81 MB | 0777 |
|
block-library.min.js | File | 767.23 KB | 0777 |
|
block-serialization-default-parser.js | File | 14.94 KB | 0777 |
|
block-serialization-default-parser.min.js | File | 2.39 KB | 0777 |
|
blocks.js | File | 529.32 KB | 0777 |
|
blocks.min.js | File | 166.17 KB | 0777 |
|
components.js | File | 2.12 MB | 0777 |
|
components.min.js | File | 643.32 KB | 0777 |
|
compose.js | File | 184.7 KB | 0777 |
|
compose.min.js | File | 36.21 KB | 0777 |
|
core-data.js | File | 217.96 KB | 0777 |
|
core-data.min.js | File | 54.39 KB | 0777 |
|
customize-widgets.js | File | 107.75 KB | 0777 |
|
customize-widgets.min.js | File | 38.84 KB | 0777 |
|
data-controls.js | File | 6.8 KB | 0777 |
|
data-controls.min.js | File | 1.59 KB | 0777 |
|
data.js | File | 142.11 KB | 0777 |
|
data.min.js | File | 25.5 KB | 0777 |
|
date.js | File | 797.51 KB | 0777 |
|
date.min.js | File | 765.54 KB | 0777 |
|
deprecated.js | File | 4.74 KB | 0777 |
|
deprecated.min.js | File | 812 B | 0777 |
|
dom-ready.js | File | 2.45 KB | 0777 |
|
dom-ready.min.js | File | 498 B | 0777 |
|
dom.js | File | 61.5 KB | 0777 |
|
dom.min.js | File | 12.81 KB | 0777 |
|
edit-post.js | File | 350.62 KB | 0777 |
|
edit-post.min.js | File | 122.77 KB | 0777 |
|
edit-site.js | File | 651.93 KB | 0777 |
|
edit-site.min.js | File | 239.37 KB | 0777 |
|
edit-widgets.js | File | 163.07 KB | 0777 |
|
edit-widgets.min.js | File | 57.27 KB | 0777 |
|
editor.js | File | 431.18 KB | 0777 |
|
editor.min.js | File | 148.82 KB | 0777 |
|
element.js | File | 62.29 KB | 0777 |
|
element.min.js | File | 12.63 KB | 0777 |
|
escape-html.js | File | 6.22 KB | 0777 |
|
escape-html.min.js | File | 1.11 KB | 0777 |
|
format-library.js | File | 60.49 KB | 0777 |
|
format-library.min.js | File | 20.75 KB | 0777 |
|
hooks.js | File | 20.09 KB | 0777 |
|
hooks.min.js | File | 4.79 KB | 0777 |
|
html-entities.js | File | 3.63 KB | 0777 |
|
html-entities.min.js | File | 837 B | 0777 |
|
i18n.js | File | 50.63 KB | 0777 |
|
i18n.min.js | File | 9.99 KB | 0777 |
|
is-shallow-equal.js | File | 4.33 KB | 0777 |
|
is-shallow-equal.min.js | File | 1.07 KB | 0777 |
|
keyboard-shortcuts.js | File | 22.47 KB | 0777 |
|
keyboard-shortcuts.min.js | File | 4.38 KB | 0777 |
|
keycodes.js | File | 29.57 KB | 0777 |
|
keycodes.min.js | File | 4.3 KB | 0777 |
|
list-reusable-blocks.js | File | 25.78 KB | 0777 |
|
list-reusable-blocks.min.js | File | 4.83 KB | 0777 |
|
media-utils.js | File | 22.52 KB | 0777 |
|
media-utils.min.js | File | 7.43 KB | 0777 |
|
notices.js | File | 19.59 KB | 0777 |
|
notices.min.js | File | 2.37 KB | 0777 |
|
nux.js | File | 21.21 KB | 0777 |
|
nux.min.js | File | 4.86 KB | 0777 |
|
plugins.js | File | 19.81 KB | 0777 |
|
plugins.min.js | File | 4.82 KB | 0777 |
|
preferences-persistence.js | File | 34.15 KB | 0777 |
|
preferences-persistence.min.js | File | 6.56 KB | 0777 |
|
preferences.js | File | 12.12 KB | 0777 |
|
preferences.min.js | File | 2.89 KB | 0777 |
|
primitives.js | File | 9.36 KB | 0777 |
|
primitives.min.js | File | 2.41 KB | 0777 |
|
priority-queue.js | File | 13.99 KB | 0777 |
|
priority-queue.min.js | File | 3.36 KB | 0777 |
|
private-apis.js | File | 8.43 KB | 0777 |
|
private-apis.min.js | File | 2.56 KB | 0777 |
|
redux-routine.js | File | 23.83 KB | 0777 |
|
redux-routine.min.js | File | 9.03 KB | 0777 |
|
reusable-blocks.js | File | 18.09 KB | 0777 |
|
reusable-blocks.min.js | File | 5.63 KB | 0777 |
|
rich-text.js | File | 128.69 KB | 0777 |
|
rich-text.min.js | File | 33.04 KB | 0777 |
|
server-side-render.js | File | 15.23 KB | 0777 |
|
server-side-render.min.js | File | 4.79 KB | 0777 |
|
shortcode.js | File | 16.62 KB | 0777 |
|
shortcode.min.js | File | 3.2 KB | 0777 |
|
style-engine.js | File | 16.84 KB | 0777 |
|
style-engine.min.js | File | 4.75 KB | 0777 |
|
token-list.js | File | 6.83 KB | 0777 |
|
token-list.min.js | File | 1.48 KB | 0777 |
|
url.js | File | 32.79 KB | 0777 |
|
url.min.js | File | 8.98 KB | 0777 |
|
viewport.js | File | 11.23 KB | 0777 |
|
viewport.min.js | File | 2.29 KB | 0777 |
|
warning.js | File | 2.51 KB | 0777 |
|
warning.min.js | File | 392 B | 0777 |
|
widgets.js | File | 55.86 KB | 0777 |
|
widgets.min.js | File | 21.49 KB | 0777 |
|
wordcount.js | File | 14.96 KB | 0777 |
|
wordcount.min.js | File | 2.57 KB | 0777 |
|