SILENT KILLERPanel

Current Path: > home > transcarter > public_html > wp-includes > js > dist


Operation   : Linux host59.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
Software     : Apache
Server IP    : 198.54.126.42 | Your IP: 216.73.216.135
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: /home/transcarter/public_html/wp-includes/js/dist

NameTypeSizeLast ModifiedActions
development Directory - -
vendor Directory - -
a11y.js File 8561 bytes January 31 2024 12:59:56.
a11y.min.js File 2358 bytes January 31 2024 12:59:56.
annotations.js File 23548 bytes June 25 2024 12:49:28.
annotations.min.js File 5521 bytes May 23 2024 18:39:28.
api-fetch.js File 23370 bytes January 31 2024 12:59:56.
api-fetch.min.js File 5496 bytes January 31 2024 12:59:56.
autop.js File 16205 bytes February 09 2024 18:22:22.
autop.min.js File 5614 bytes January 31 2024 12:59:56.
blob.js File 4795 bytes January 31 2024 12:59:56.
blob.min.js File 1108 bytes January 31 2024 12:59:56.
block-directory.js File 80813 bytes June 18 2024 12:19:30.
block-directory.min.js File 20764 bytes June 18 2024 12:19:30.
block-editor.js File 2542990 bytes September 04 2024 15:49:20.
block-editor.min.js File 813072 bytes September 04 2024 15:49:20.
block-library.js File 2142107 bytes July 02 2024 14:16:44.
block-library.min.js File 834874 bytes July 02 2024 14:16:44.
block-serialization-default-parser.js File 15228 bytes January 31 2024 12:59:56.
block-serialization-default-parser.min.js File 2400 bytes January 31 2024 12:59:56.
blocks.js File 552276 bytes June 25 2024 12:49:28.
blocks.min.js File 171256 bytes June 25 2024 12:49:28.
commands.js File 179711 bytes June 18 2024 12:19:30.
commands.min.js File 46289 bytes June 18 2024 12:19:30.
components.js File 2408391 bytes June 25 2024 12:49:28.
components.min.js File 696167 bytes June 25 2024 12:49:28.
compose.js File 201941 bytes May 31 2024 17:59:00.
compose.min.js File 37489 bytes May 31 2024 17:59:00.
core-commands.js File 22545 bytes July 09 2024 13:42:26.
core-commands.min.js File 8109 bytes July 09 2024 13:42:26.
core-data.js File 252145 bytes July 09 2024 13:42:26.
core-data.min.js File 60938 bytes July 09 2024 13:42:26.
customize-widgets.js File 99444 bytes June 18 2024 12:19:30.
customize-widgets.min.js File 35014 bytes June 18 2024 12:19:30.
data-controls.js File 7314 bytes January 31 2024 12:59:56.
data-controls.min.js File 1472 bytes January 31 2024 12:59:56.
data.js File 158267 bytes June 18 2024 12:19:30.
data.min.js File 27095 bytes June 18 2024 12:19:30.
date.js File 817351 bytes February 15 2024 16:53:16.
date.min.js File 783428 bytes February 15 2024 16:53:16.
deprecated.js File 4736 bytes January 31 2024 12:59:56.
deprecated.min.js File 684 bytes January 31 2024 12:59:56.
dom-ready.js File 2464 bytes January 31 2024 12:59:56.
dom-ready.min.js File 457 bytes January 31 2024 12:59:56.
dom.js File 62931 bytes May 23 2024 18:39:28.
dom.min.js File 12487 bytes January 31 2024 12:59:56.
edit-post.js File 116708 bytes September 04 2024 15:49:20.
edit-post.min.js File 40212 bytes September 04 2024 15:49:20.
edit-site.js File 1514248 bytes September 04 2024 15:49:20.
edit-site.min.js File 589755 bytes September 04 2024 15:49:20.
edit-widgets.js File 178358 bytes June 18 2024 12:19:30.
edit-widgets.min.js File 59013 bytes June 18 2024 12:19:30.
editor.js File 1002960 bytes September 04 2024 15:49:20.
editor.min.js File 326065 bytes September 04 2024 15:49:20.
element.js File 67201 bytes May 23 2024 18:39:28.
element.min.js File 11978 bytes February 15 2024 16:53:16.
escape-html.js File 6211 bytes January 31 2024 12:59:56.
escape-html.min.js File 1000 bytes January 31 2024 12:59:56.
format-library.js File 69136 bytes June 18 2024 12:19:30.
format-library.min.js File 22834 bytes June 18 2024 12:19:30.
hooks.js File 19728 bytes January 31 2024 12:59:56.
hooks.min.js File 4307 bytes January 31 2024 12:59:56.
html-entities.js File 3706 bytes May 23 2024 18:39:28.
html-entities.min.js File 788 bytes January 31 2024 12:59:56.
i18n.js File 49908 bytes February 15 2024 16:53:16.
i18n.min.js File 9141 bytes February 15 2024 16:53:16.
interactivity-router.asset.php File 84 bytes May 31 2024 17:59:00.
interactivity-router.js File 11985 bytes May 31 2024 17:59:00.
interactivity-router.min.asset.php File 84 bytes May 31 2024 17:59:00.
interactivity-router.min.js File 3032 bytes May 31 2024 17:59:00.
interactivity.js File 97913 bytes June 25 2024 12:49:28.
interactivity.min.js File 36686 bytes June 25 2024 12:49:28.
is-shallow-equal.js File 4350 bytes January 31 2024 12:59:56.
is-shallow-equal.min.js File 1018 bytes January 31 2024 12:59:56.
keyboard-shortcuts.js File 24752 bytes May 31 2024 17:59:00.
keyboard-shortcuts.min.js File 3017 bytes May 31 2024 17:59:00.
keycodes.js File 14103 bytes February 09 2024 18:22:22.
keycodes.min.js File 2642 bytes January 31 2024 12:59:56.
list-reusable-blocks.js File 30603 bytes June 11 2024 09:07:32.
list-reusable-blocks.min.js File 4784 bytes June 11 2024 09:07:32.
media-utils.js File 22808 bytes March 12 2024 13:08:24.
media-utils.min.js File 7362 bytes March 12 2024 13:08:24.
notices.js File 22157 bytes January 31 2024 12:59:56.
notices.min.js File 2070 bytes January 31 2024 12:59:56.
nux.js File 13507 bytes May 31 2024 17:59:00.
nux.min.js File 3425 bytes May 31 2024 17:59:00.
patterns.js File 64436 bytes July 18 2024 15:54:18.
patterns.min.js File 21267 bytes July 18 2024 15:54:18.
plugins.js File 18146 bytes May 31 2024 17:59:00.
plugins.min.js File 4146 bytes May 31 2024 17:59:00.
preferences-persistence.js File 30288 bytes May 23 2024 18:39:28.
preferences-persistence.min.js File 5625 bytes May 23 2024 18:39:28.
preferences.js File 26318 bytes June 18 2024 12:19:30.
preferences.min.js File 7078 bytes June 18 2024 12:19:30.
primitives.js File 6888 bytes May 31 2024 17:59:00.
primitives.min.js File 1655 bytes May 31 2024 17:59:00.
priority-queue.js File 14248 bytes February 15 2024 16:53:16.
priority-queue.min.js File 3378 bytes February 15 2024 16:53:16.
private-apis.js File 8868 bytes June 18 2024 12:19:30.
private-apis.min.js File 2786 bytes June 18 2024 12:19:30.
redux-routine.js File 23987 bytes May 31 2024 17:59:00.
redux-routine.min.js File 8900 bytes May 31 2024 17:59:00.
reusable-blocks.js File 21354 bytes June 18 2024 12:19:30.
reusable-blocks.min.js File 6323 bytes June 18 2024 12:19:30.
rich-text.js File 117878 bytes May 23 2024 18:39:28.
rich-text.min.js File 29805 bytes May 23 2024 18:39:28.
router.js File 26906 bytes June 18 2024 12:19:30.
router.min.js File 4390 bytes June 18 2024 12:19:30.
server-side-render.js File 14958 bytes May 31 2024 17:59:00.
server-side-render.min.js File 4378 bytes May 31 2024 17:59:00.
shortcode.js File 15275 bytes January 31 2024 12:59:56.
shortcode.min.js File 2900 bytes January 31 2024 12:59:56.
style-engine.js File 38437 bytes May 23 2024 18:39:28.
style-engine.min.js File 5928 bytes May 23 2024 18:39:28.
token-list.js File 6591 bytes January 31 2024 12:59:56.
token-list.min.js File 1264 bytes January 31 2024 12:59:56.
undo-manager.js File 8414 bytes February 15 2024 16:53:16.
undo-manager.min.js File 1682 bytes February 15 2024 16:53:16.
url.js File 34279 bytes May 23 2024 18:39:28.
url.min.js File 8226 bytes May 23 2024 18:39:28.
viewport.js File 10696 bytes May 31 2024 17:59:00.
viewport.min.js File 1868 bytes May 31 2024 17:59:00.
warning.js File 2521 bytes May 31 2024 17:59:00.
warning.min.js File 311 bytes January 31 2024 12:59:56.
widgets.js File 54573 bytes May 31 2024 17:59:00.
widgets.min.js File 20147 bytes May 31 2024 17:59:00.
wordcount.js File 14979 bytes January 31 2024 12:59:56.
wordcount.min.js File 2480 bytes January 31 2024 12:59:56.

Reading File: /home/transcarter/public_html/wp-includes/js/dist/reusable-blocks.js

/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	// The require scope
/******/ 	var __webpack_require__ = {};
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (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 */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (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__, {
  ReusableBlocksMenuItems: () => (/* reexport */ ReusableBlocksMenuItems),
  store: () => (/* reexport */ store)
});

// NAMESPACE OBJECT: ./node_modules/@wordpress/reusable-blocks/build-module/store/actions.js
var actions_namespaceObject = {};
__webpack_require__.r(actions_namespaceObject);
__webpack_require__.d(actions_namespaceObject, {
  __experimentalConvertBlockToStatic: () => (__experimentalConvertBlockToStatic),
  __experimentalConvertBlocksToReusable: () => (__experimentalConvertBlocksToReusable),
  __experimentalDeleteReusableBlock: () => (__experimentalDeleteReusableBlock),
  __experimentalSetEditingReusableBlock: () => (__experimentalSetEditingReusableBlock)
});

// NAMESPACE OBJECT: ./node_modules/@wordpress/reusable-blocks/build-module/store/selectors.js
var selectors_namespaceObject = {};
__webpack_require__.r(selectors_namespaceObject);
__webpack_require__.d(selectors_namespaceObject, {
  __experimentalIsEditingReusableBlock: () => (__experimentalIsEditingReusableBlock)
});

;// CONCATENATED MODULE: external ["wp","data"]
const external_wp_data_namespaceObject = window["wp"]["data"];
;// CONCATENATED MODULE: external ["wp","blockEditor"]
const external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
;// CONCATENATED MODULE: external ["wp","blocks"]
const external_wp_blocks_namespaceObject = window["wp"]["blocks"];
;// CONCATENATED MODULE: external ["wp","i18n"]
const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/store/actions.js
/**
 * WordPress dependencies
 */




/**
 * Returns a generator converting a reusable block into a static block.
 *
 * @param {string} clientId The client ID of the block to attach.
 */
const __experimentalConvertBlockToStatic = clientId => ({
  registry
}) => {
  const oldBlock = registry.select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId);
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', oldBlock.attributes.ref);
  const newBlocks = (0,external_wp_blocks_namespaceObject.parse)(typeof reusableBlock.content === 'function' ? reusableBlock.content(reusableBlock) : reusableBlock.content);
  registry.dispatch(external_wp_blockEditor_namespaceObject.store).replaceBlocks(oldBlock.clientId, newBlocks);
};

/**
 * Returns a generator converting one or more static blocks into a pattern.
 *
 * @param {string[]}             clientIds The client IDs of the block to detach.
 * @param {string}               title     Pattern title.
 * @param {undefined|'unsynced'} syncType  They way block is synced, current undefined (synced) and 'unsynced'.
 */
const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({
  registry,
  dispatch
}) => {
  const meta = syncType === 'unsynced' ? {
    wp_pattern_sync_status: syncType
  } : undefined;
  const reusableBlock = {
    title: title || (0,external_wp_i18n_namespaceObject.__)('Untitled pattern block'),
    content: (0,external_wp_blocks_namespaceObject.serialize)(registry.select(external_wp_blockEditor_namespaceObject.store).getBlocksByClientId(clientIds)),
    status: 'publish',
    meta
  };
  const updatedRecord = await registry.dispatch('core').saveEntityRecord('postType', 'wp_block', reusableBlock);
  if (syncType === 'unsynced') {
    return;
  }
  const newBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/block', {
    ref: updatedRecord.id
  });
  registry.dispatch(external_wp_blockEditor_namespaceObject.store).replaceBlocks(clientIds, newBlock);
  dispatch.__experimentalSetEditingReusableBlock(newBlock.clientId, true);
};

/**
 * Returns a generator deleting a reusable block.
 *
 * @param {string} id The ID of the reusable block to delete.
 */
const __experimentalDeleteReusableBlock = id => async ({
  registry
}) => {
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', id);

  // Don't allow a reusable block with a temporary ID to be deleted.
  if (!reusableBlock) {
    return;
  }

  // Remove any other blocks that reference this reusable block.
  const allBlocks = registry.select(external_wp_blockEditor_namespaceObject.store).getBlocks();
  const associatedBlocks = allBlocks.filter(block => (0,external_wp_blocks_namespaceObject.isReusableBlock)(block) && block.attributes.ref === id);
  const associatedBlockClientIds = associatedBlocks.map(block => block.clientId);

  // Remove the parsed block.
  if (associatedBlockClientIds.length) {
    registry.dispatch(external_wp_blockEditor_namespaceObject.store).removeBlocks(associatedBlockClientIds);
  }
  await registry.dispatch('core').deleteEntityRecord('postType', 'wp_block', id);
};

/**
 * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.
 *
 * @param {string}  clientId  The clientID of the reusable block to target.
 * @param {boolean} isEditing Whether the block should be in editing state.
 * @return {Object} Action descriptor.
 */
function __experimentalSetEditingReusableBlock(clientId, isEditing) {
  return {
    type: 'SET_EDITING_REUSABLE_BLOCK',
    clientId,
    isEditing
  };
}

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/store/reducer.js
/**
 * WordPress dependencies
 */

function isEditingReusableBlock(state = {}, action) {
  if (action?.type === 'SET_EDITING_REUSABLE_BLOCK') {
    return {
      ...state,
      [action.clientId]: action.isEditing
    };
  }
  return state;
}
/* harmony default export */ const reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
  isEditingReusableBlock
}));

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/store/selectors.js
/**
 * Returns true if reusable block is in the editing state.
 *
 * @param {Object} state    Global application state.
 * @param {number} clientId the clientID of the block.
 * @return {boolean} Whether the reusable block is in the editing state.
 */
function __experimentalIsEditingReusableBlock(state, clientId) {
  return state.isEditingReusableBlock[clientId];
}

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/store/index.js
/**
 * WordPress dependencies
 */


/**
 * Internal dependencies
 */



const STORE_NAME = 'core/reusable-blocks';

/**
 * Store definition for the reusable blocks namespace.
 *
 * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
 *
 * @type {Object}
 */
const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, {
  actions: actions_namespaceObject,
  reducer: reducer,
  selectors: selectors_namespaceObject
});
(0,external_wp_data_namespaceObject.register)(store);

;// CONCATENATED MODULE: external ["wp","element"]
const external_wp_element_namespaceObject = window["wp"]["element"];
;// CONCATENATED MODULE: external ["wp","components"]
const external_wp_components_namespaceObject = window["wp"]["components"];
;// CONCATENATED MODULE: external ["wp","primitives"]
const external_wp_primitives_namespaceObject = window["wp"]["primitives"];
;// CONCATENATED MODULE: external "ReactJSXRuntime"
const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"];
;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol.js
/**
 * WordPress dependencies
 */


const symbol = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, {
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 24 24",
  children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, {
    d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
  })
});
/* harmony default export */ const library_symbol = (symbol);

;// CONCATENATED MODULE: external ["wp","notices"]
const external_wp_notices_namespaceObject = window["wp"]["notices"];
;// CONCATENATED MODULE: external ["wp","coreData"]
const external_wp_coreData_namespaceObject = window["wp"]["coreData"];
;// CONCATENATED MODULE: external ["wp","privateApis"]
const external_wp_privateApis_namespaceObject = window["wp"]["privateApis"];
;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/lock-unlock.js
/**
 * WordPress dependencies
 */

const {
  unlock
} = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/reusable-blocks');

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js
/**
 * WordPress dependencies
 */










/**
 * Internal dependencies
 */





const {
  useReusableBlocksRenameHint,
  ReusableBlocksRenameHint
} = unlock(external_wp_blockEditor_namespaceObject.privateApis);

/**
 * Menu control to convert block(s) to reusable block.
 *
 * @param {Object}   props              Component props.
 * @param {string[]} props.clientIds    Client ids of selected blocks.
 * @param {string}   props.rootClientId ID of the currently selected top-level block.
 * @param {()=>void} props.onClose      Callback to close the menu.
 * @return {import('react').ComponentType} The menu control or null.
 */
function ReusableBlockConvertButton({
  clientIds,
  rootClientId,
  onClose
}) {
  const showRenameHint = useReusableBlocksRenameHint();
  const [syncType, setSyncType] = (0,external_wp_element_namespaceObject.useState)(undefined);
  const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false);
  const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)('');
  const canConvert = (0,external_wp_data_namespaceObject.useSelect)(select => {
    var _getBlocksByClientId;
    const {
      canUser
    } = select(external_wp_coreData_namespaceObject.store);
    const {
      getBlocksByClientId,
      canInsertBlockType,
      getBlockRootClientId
    } = select(external_wp_blockEditor_namespaceObject.store);
    const rootId = rootClientId || (clientIds.length > 0 ? getBlockRootClientId(clientIds[0]) : undefined);
    const blocks = (_getBlocksByClientId = getBlocksByClientId(clientIds)) !== null && _getBlocksByClientId !== void 0 ? _getBlocksByClientId : [];
    const isReusable = blocks.length === 1 && blocks[0] && (0,external_wp_blocks_namespaceObject.isReusableBlock)(blocks[0]) && !!select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', 'wp_block', blocks[0].attributes.ref);
    const _canConvert =
    // Hide when this is already a reusable block.
    !isReusable &&
    // Hide when reusable blocks are disabled.
    canInsertBlockType('core/block', rootId) && blocks.every(block =>
    // Guard against the case where a regular block has *just* been converted.
    !!block &&
    // Hide on invalid blocks.
    block.isValid &&
    // Hide when block doesn't support being made reusable.
    (0,external_wp_blocks_namespaceObject.hasBlockSupport)(block.name, 'reusable', true)) &&
    // Hide when current doesn't have permission to do that.
    !!canUser('create', 'blocks');
    return _canConvert;
  }, [clientIds, rootClientId]);
  const {
    __experimentalConvertBlocksToReusable: convertBlocksToReusable
  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
  const {
    createSuccessNotice,
    createErrorNotice
  } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
  const onConvert = (0,external_wp_element_namespaceObject.useCallback)(async function (reusableBlockTitle) {
    try {
      await convertBlocksToReusable(clientIds, reusableBlockTitle, syncType);
      createSuccessNotice(!syncType ? (0,external_wp_i18n_namespaceObject.sprintf)(
      // translators: %s: the name the user has given to the pattern.
      (0,external_wp_i18n_namespaceObject.__)('Synced pattern created: %s'), reusableBlockTitle) : (0,external_wp_i18n_namespaceObject.sprintf)(
      // translators: %s: the name the user has given to the pattern.
      (0,external_wp_i18n_namespaceObject.__)('Unsynced pattern created: %s'), reusableBlockTitle), {
        type: 'snackbar',
        id: 'convert-to-reusable-block-success'
      });
    } catch (error) {
      createErrorNotice(error.message, {
        type: 'snackbar',
        id: 'convert-to-reusable-block-error'
      });
    }
  }, [convertBlocksToReusable, clientIds, syncType, createSuccessNotice, createErrorNotice]);
  if (!canConvert) {
    return null;
  }
  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
      icon: library_symbol,
      onClick: () => setIsModalOpen(true),
      children: showRenameHint ? (0,external_wp_i18n_namespaceObject.__)('Create pattern/reusable block') : (0,external_wp_i18n_namespaceObject.__)('Create pattern')
    }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, {
      title: (0,external_wp_i18n_namespaceObject.__)('Create pattern'),
      onRequestClose: () => {
        setIsModalOpen(false);
        setTitle('');
      },
      overlayClassName: "reusable-blocks-menu-items__convert-modal",
      children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
        onSubmit: event => {
          event.preventDefault();
          onConvert(title);
          setIsModalOpen(false);
          setTitle('');
          onClose();
        },
        children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
          spacing: "5",
          children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReusableBlocksRenameHint, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, {
            __nextHasNoMarginBottom: true,
            label: (0,external_wp_i18n_namespaceObject.__)('Name'),
            value: title,
            onChange: setTitle,
            placeholder: (0,external_wp_i18n_namespaceObject.__)('My pattern')
          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, {
            label: (0,external_wp_i18n_namespaceObject._x)('Synced', 'pattern (singular)'),
            help: (0,external_wp_i18n_namespaceObject.__)('Sync this pattern across multiple locations.'),
            checked: !syncType,
            onChange: () => {
              setSyncType(!syncType ? 'unsynced' : undefined);
            }
          }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, {
            justify: "right",
            children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
              variant: "tertiary",
              onClick: () => {
                setIsModalOpen(false);
                setTitle('');
              },
              children: (0,external_wp_i18n_namespaceObject.__)('Cancel')
            }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
              variant: "primary",
              type: "submit",
              children: (0,external_wp_i18n_namespaceObject.__)('Create')
            })]
          })]
        })
      })
    })]
  });
}

;// CONCATENATED MODULE: external ["wp","url"]
const external_wp_url_namespaceObject = window["wp"]["url"];
;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js
/**
 * WordPress dependencies
 */








/**
 * Internal dependencies
 */




function ReusableBlocksManageButton({
  clientId
}) {
  const {
    canRemove,
    isVisible,
    managePatternsUrl
  } = (0,external_wp_data_namespaceObject.useSelect)(select => {
    const {
      getBlock,
      canRemoveBlock,
      getBlockCount
    } = select(external_wp_blockEditor_namespaceObject.store);
    const {
      canUser
    } = select(external_wp_coreData_namespaceObject.store);
    const reusableBlock = getBlock(clientId);
    return {
      canRemove: canRemoveBlock(clientId),
      isVisible: !!reusableBlock && (0,external_wp_blocks_namespaceObject.isReusableBlock)(reusableBlock) && !!canUser('update', 'blocks', reusableBlock.attributes.ref),
      innerBlockCount: getBlockCount(clientId),
      // The site editor and templates both check whether the user
      // has edit_theme_options capabilities. We can leverage that here
      // and omit the manage patterns link if the user can't access it.
      managePatternsUrl: canUser('create', 'templates') ? (0,external_wp_url_namespaceObject.addQueryArgs)('site-editor.php', {
        path: '/patterns'
      }) : (0,external_wp_url_namespaceObject.addQueryArgs)('edit.php', {
        post_type: 'wp_block'
      })
    };
  }, [clientId]);
  const {
    __experimentalConvertBlockToStatic: convertBlockToStatic
  } = (0,external_wp_data_namespaceObject.useDispatch)(store);
  if (!isVisible) {
    return null;
  }
  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
    children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
      href: managePatternsUrl,
      children: (0,external_wp_i18n_namespaceObject.__)('Manage patterns')
    }), canRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, {
      onClick: () => convertBlockToStatic(clientId),
      children: (0,external_wp_i18n_namespaceObject.__)('Detach')
    })]
  });
}
/* harmony default export */ const reusable_blocks_manage_button = (ReusableBlocksManageButton);

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/components/reusable-blocks-menu-items/index.js
/**
 * WordPress dependencies
 */


/**
 * Internal dependencies
 */





function ReusableBlocksMenuItems({
  rootClientId
}) {
  return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, {
    children: ({
      onClose,
      selectedClientIds
    }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
      children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReusableBlockConvertButton, {
        clientIds: selectedClientIds,
        rootClientId: rootClientId,
        onClose: onClose
      }), selectedClientIds.length === 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(reusable_blocks_manage_button, {
        clientId: selectedClientIds[0]
      })]
    })
  });
}

;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/components/index.js


;// CONCATENATED MODULE: ./node_modules/@wordpress/reusable-blocks/build-module/index.js



(window.wp = window.wp || {}).reusableBlocks = __webpack_exports__;
/******/ })()
;

SILENT KILLER Tool