summaryrefslogtreecommitdiffstats
path: root/wp-includes/js/dist/plugins.js
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/js/dist/plugins.js')
-rw-r--r--wp-includes/js/dist/plugins.js642
1 files changed, 642 insertions, 0 deletions
diff --git a/wp-includes/js/dist/plugins.js b/wp-includes/js/dist/plugins.js
new file mode 100644
index 0000000..f56876f
--- /dev/null
+++ b/wp-includes/js/dist/plugins.js
@@ -0,0 +1,642 @@
+/******/ (function() { // webpackBootstrap
+/******/ "use strict";
+/******/ // The require scope
+/******/ var __webpack_require__ = {};
+/******/
+/************************************************************************/
+/******/ /* 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); }
+/******/ }();
+/******/
+/******/ /* 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 });
+/******/ };
+/******/ }();
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ PluginArea: function() { return /* reexport */ plugin_area; },
+ getPlugin: function() { return /* reexport */ getPlugin; },
+ getPlugins: function() { return /* reexport */ getPlugins; },
+ registerPlugin: function() { return /* reexport */ registerPlugin; },
+ unregisterPlugin: function() { return /* reexport */ unregisterPlugin; },
+ usePluginContext: function() { return /* reexport */ usePluginContext; },
+ withPluginContext: function() { return /* reexport */ withPluginContext; }
+});
+
+;// CONCATENATED MODULE: external ["wp","element"]
+var external_wp_element_namespaceObject = window["wp"]["element"];
+;// CONCATENATED MODULE: ./node_modules/memize/dist/index.js
+/**
+ * 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 {(...args: any[]) => any} F
+ *
+ * @param {F} fn Function to memoize.
+ * @param {MemizeOptions} [options] Options object.
+ *
+ * @return {((...args: Parameters<F>) => ReturnType<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;
+ };
+
+ // 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;
+}
+
+
+
+;// CONCATENATED MODULE: external ["wp","hooks"]
+var external_wp_hooks_namespaceObject = window["wp"]["hooks"];
+;// CONCATENATED MODULE: external ["wp","isShallowEqual"]
+var external_wp_isShallowEqual_namespaceObject = window["wp"]["isShallowEqual"];
+var external_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_wp_isShallowEqual_namespaceObject);
+;// CONCATENATED MODULE: external ["wp","compose"]
+var external_wp_compose_namespaceObject = window["wp"]["compose"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/components/plugin-context/index.js
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
+
+const Context = (0,external_wp_element_namespaceObject.createContext)({
+ name: null,
+ icon: null
+});
+const PluginContextProvider = Context.Provider;
+
+/**
+ * A hook that returns the plugin context.
+ *
+ * @return {PluginContext} Plugin context
+ */
+function usePluginContext() {
+ return (0,external_wp_element_namespaceObject.useContext)(Context);
+}
+
+/**
+ * A Higher Order Component used to inject Plugin context to the
+ * wrapped component.
+ *
+ * @param mapContextToProps Function called on every context change,
+ * expected to return object of props to
+ * merge with the component's own props.
+ *
+ * @return {WPComponent} Enhanced component with injected context as props.
+ */
+const withPluginContext = mapContextToProps => (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(OriginalComponent => {
+ return props => (0,external_wp_element_namespaceObject.createElement)(Context.Consumer, null, context => (0,external_wp_element_namespaceObject.createElement)(OriginalComponent, {
+ ...props,
+ ...mapContextToProps(context, props)
+ }));
+}, 'withPluginContext');
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/components/plugin-error-boundary/index.js
+/**
+ * WordPress dependencies
+ */
+
+class PluginErrorBoundary extends external_wp_element_namespaceObject.Component {
+ /**
+ * @param {Object} props
+ */
+ constructor(props) {
+ super(props);
+ this.state = {
+ hasError: false
+ };
+ }
+ static getDerivedStateFromError() {
+ return {
+ hasError: true
+ };
+ }
+
+ /**
+ * @param {Error} error Error object passed by React.
+ */
+ componentDidCatch(error) {
+ const {
+ name,
+ onError
+ } = this.props;
+ if (onError) {
+ onError(name, error);
+ }
+ }
+ render() {
+ if (!this.state.hasError) {
+ return this.props.children;
+ }
+ return null;
+ }
+}
+
+;// CONCATENATED MODULE: external ["wp","primitives"]
+var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js
+
+/**
+ * WordPress dependencies
+ */
+
+const plugins = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
+ xmlns: "http://www.w3.org/2000/svg",
+ viewBox: "0 0 24 24"
+}, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
+ d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"
+}));
+/* harmony default export */ var library_plugins = (plugins);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/api/index.js
+/* eslint no-console: [ 'error', { allow: [ 'error' ] } ] */
+
+/**
+ * WordPress dependencies
+ */
+
+
+/**
+ * Plugin definitions keyed by plugin name.
+ */
+const api_plugins = {};
+
+/**
+ * Registers a plugin to the editor.
+ *
+ * @param name A string identifying the plugin. Must be
+ * unique across all registered plugins.
+ * @param settings The settings for this plugin.
+ *
+ * @example
+ * ```js
+ * // Using ES5 syntax
+ * var el = wp.element.createElement;
+ * var Fragment = wp.element.Fragment;
+ * var PluginSidebar = wp.editPost.PluginSidebar;
+ * var PluginSidebarMoreMenuItem = wp.editPost.PluginSidebarMoreMenuItem;
+ * var registerPlugin = wp.plugins.registerPlugin;
+ * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
+ *
+ * function Component() {
+ * return el(
+ * Fragment,
+ * {},
+ * el(
+ * PluginSidebarMoreMenuItem,
+ * {
+ * target: 'sidebar-name',
+ * },
+ * 'My Sidebar'
+ * ),
+ * el(
+ * PluginSidebar,
+ * {
+ * name: 'sidebar-name',
+ * title: 'My Sidebar',
+ * },
+ * 'Content of the sidebar'
+ * )
+ * );
+ * }
+ * registerPlugin( 'plugin-name', {
+ * icon: moreIcon,
+ * render: Component,
+ * scope: 'my-page',
+ * } );
+ * ```
+ *
+ * @example
+ * ```js
+ * // Using ESNext syntax
+ * import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/edit-post';
+ * import { registerPlugin } from '@wordpress/plugins';
+ * import { more } from '@wordpress/icons';
+ *
+ * const Component = () => (
+ * <>
+ * <PluginSidebarMoreMenuItem
+ * target="sidebar-name"
+ * >
+ * My Sidebar
+ * </PluginSidebarMoreMenuItem>
+ * <PluginSidebar
+ * name="sidebar-name"
+ * title="My Sidebar"
+ * >
+ * Content of the sidebar
+ * </PluginSidebar>
+ * </>
+ * );
+ *
+ * registerPlugin( 'plugin-name', {
+ * icon: more,
+ * render: Component,
+ * scope: 'my-page',
+ * } );
+ * ```
+ *
+ * @return The final plugin settings object.
+ */
+function registerPlugin(name, settings) {
+ if (typeof settings !== 'object') {
+ console.error('No settings object provided!');
+ return null;
+ }
+ if (typeof name !== 'string') {
+ console.error('Plugin name must be string.');
+ return null;
+ }
+ if (!/^[a-z][a-z0-9-]*$/.test(name)) {
+ console.error('Plugin name must include only lowercase alphanumeric characters or dashes, and start with a letter. Example: "my-plugin".');
+ return null;
+ }
+ if (api_plugins[name]) {
+ console.error(`Plugin "${name}" is already registered.`);
+ }
+ settings = (0,external_wp_hooks_namespaceObject.applyFilters)('plugins.registerPlugin', settings, name);
+ const {
+ render,
+ scope
+ } = settings;
+ if (typeof render !== 'function') {
+ console.error('The "render" property must be specified and must be a valid function.');
+ return null;
+ }
+ if (scope) {
+ if (typeof scope !== 'string') {
+ console.error('Plugin scope must be string.');
+ return null;
+ }
+ if (!/^[a-z][a-z0-9-]*$/.test(scope)) {
+ console.error('Plugin scope must include only lowercase alphanumeric characters or dashes, and start with a letter. Example: "my-page".');
+ return null;
+ }
+ }
+ api_plugins[name] = {
+ name,
+ icon: library_plugins,
+ ...settings
+ };
+ (0,external_wp_hooks_namespaceObject.doAction)('plugins.pluginRegistered', settings, name);
+ return settings;
+}
+
+/**
+ * Unregisters a plugin by name.
+ *
+ * @param name Plugin name.
+ *
+ * @example
+ * ```js
+ * // Using ES5 syntax
+ * var unregisterPlugin = wp.plugins.unregisterPlugin;
+ *
+ * unregisterPlugin( 'plugin-name' );
+ * ```
+ *
+ * @example
+ * ```js
+ * // Using ESNext syntax
+ * import { unregisterPlugin } from '@wordpress/plugins';
+ *
+ * unregisterPlugin( 'plugin-name' );
+ * ```
+ *
+ * @return The previous plugin settings object, if it has been
+ * successfully unregistered; otherwise `undefined`.
+ */
+function unregisterPlugin(name) {
+ if (!api_plugins[name]) {
+ console.error('Plugin "' + name + '" is not registered.');
+ return;
+ }
+ const oldPlugin = api_plugins[name];
+ delete api_plugins[name];
+ (0,external_wp_hooks_namespaceObject.doAction)('plugins.pluginUnregistered', oldPlugin, name);
+ return oldPlugin;
+}
+
+/**
+ * Returns a registered plugin settings.
+ *
+ * @param name Plugin name.
+ *
+ * @return Plugin setting.
+ */
+function getPlugin(name) {
+ return api_plugins[name];
+}
+
+/**
+ * Returns all registered plugins without a scope or for a given scope.
+ *
+ * @param scope The scope to be used when rendering inside
+ * a plugin area. No scope by default.
+ *
+ * @return The list of plugins without a scope or for a given scope.
+ */
+function getPlugins(scope) {
+ return Object.values(api_plugins).filter(plugin => plugin.scope === scope);
+}
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/components/plugin-area/index.js
+
+/**
+ * External dependencies
+ */
+
+
+/**
+ * WordPress dependencies
+ */
+
+
+
+
+/**
+ * Internal dependencies
+ */
+
+
+
+const getPluginContext = memize((icon, name) => ({
+ icon,
+ name
+}));
+
+/**
+ * A component that renders all plugin fills in a hidden div.
+ *
+ * @param props
+ * @param props.scope
+ * @param props.onError
+ * @example
+ * ```js
+ * // Using ES5 syntax
+ * var el = wp.element.createElement;
+ * var PluginArea = wp.plugins.PluginArea;
+ *
+ * function Layout() {
+ * return el(
+ * 'div',
+ * { scope: 'my-page' },
+ * 'Content of the page',
+ * PluginArea
+ * );
+ * }
+ * ```
+ *
+ * @example
+ * ```js
+ * // Using ESNext syntax
+ * import { PluginArea } from '@wordpress/plugins';
+ *
+ * const Layout = () => (
+ * <div>
+ * Content of the page
+ * <PluginArea scope="my-page" />
+ * </div>
+ * );
+ * ```
+ *
+ * @return {WPComponent} The component to be rendered.
+ */
+function PluginArea({
+ scope,
+ onError
+}) {
+ const store = (0,external_wp_element_namespaceObject.useMemo)(() => {
+ let lastValue = [];
+ return {
+ subscribe(listener) {
+ (0,external_wp_hooks_namespaceObject.addAction)('plugins.pluginRegistered', 'core/plugins/plugin-area/plugins-registered', listener);
+ (0,external_wp_hooks_namespaceObject.addAction)('plugins.pluginUnregistered', 'core/plugins/plugin-area/plugins-unregistered', listener);
+ return () => {
+ (0,external_wp_hooks_namespaceObject.removeAction)('plugins.pluginRegistered', 'core/plugins/plugin-area/plugins-registered');
+ (0,external_wp_hooks_namespaceObject.removeAction)('plugins.pluginUnregistered', 'core/plugins/plugin-area/plugins-unregistered');
+ };
+ },
+ getValue() {
+ const nextValue = getPlugins(scope);
+ if (!external_wp_isShallowEqual_default()(lastValue, nextValue)) {
+ lastValue = nextValue;
+ }
+ return lastValue;
+ }
+ };
+ }, [scope]);
+ const plugins = (0,external_wp_element_namespaceObject.useSyncExternalStore)(store.subscribe, store.getValue);
+ return (0,external_wp_element_namespaceObject.createElement)("div", {
+ style: {
+ display: 'none'
+ }
+ }, plugins.map(({
+ icon,
+ name,
+ render: Plugin
+ }) => (0,external_wp_element_namespaceObject.createElement)(PluginContextProvider, {
+ key: name,
+ value: getPluginContext(icon, name)
+ }, (0,external_wp_element_namespaceObject.createElement)(PluginErrorBoundary, {
+ name: name,
+ onError: onError
+ }, (0,external_wp_element_namespaceObject.createElement)(Plugin, null)))));
+}
+/* harmony default export */ var plugin_area = (PluginArea);
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/components/index.js
+
+
+
+;// CONCATENATED MODULE: ./node_modules/@wordpress/plugins/build-module/index.js
+
+
+
+(window.wp = window.wp || {}).plugins = __webpack_exports__;
+/******/ })()
+; \ No newline at end of file