wp/wp-includes/js/dist/annotations.js
changeset 21 48c4eec2b7e6
parent 19 3d72ae0968f4
child 22 8c2e4d02f4ef
--- a/wp/wp-includes/js/dist/annotations.js	Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/js/dist/annotations.js	Fri Sep 05 18:40:08 2025 +0200
@@ -1,36 +1,36 @@
-/******/ (function() { // webpackBootstrap
+/******/ (() => { // 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) {
+/******/ 		__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 */
-/******/ 	!function() {
-/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
-/******/ 	}();
+/******/ 	(() => {
+/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ 	})();
 /******/ 	
 /******/ 	/* webpack/runtime/make namespace object */
-/******/ 	!function() {
+/******/ 	(() => {
 /******/ 		// define __esModule on exports
-/******/ 		__webpack_require__.r = function(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__ = {};
@@ -39,33 +39,33 @@
 
 // EXPORTS
 __webpack_require__.d(__webpack_exports__, {
-  "store": function() { return /* reexport */ store; }
+  store: () => (/* reexport */ store)
 });
 
 // NAMESPACE OBJECT: ./node_modules/@wordpress/annotations/build-module/store/selectors.js
 var selectors_namespaceObject = {};
 __webpack_require__.r(selectors_namespaceObject);
 __webpack_require__.d(selectors_namespaceObject, {
-  "__experimentalGetAllAnnotationsForBlock": function() { return __experimentalGetAllAnnotationsForBlock; },
-  "__experimentalGetAnnotations": function() { return __experimentalGetAnnotations; },
-  "__experimentalGetAnnotationsForBlock": function() { return __experimentalGetAnnotationsForBlock; },
-  "__experimentalGetAnnotationsForRichText": function() { return __experimentalGetAnnotationsForRichText; }
+  __experimentalGetAllAnnotationsForBlock: () => (__experimentalGetAllAnnotationsForBlock),
+  __experimentalGetAnnotations: () => (__experimentalGetAnnotations),
+  __experimentalGetAnnotationsForBlock: () => (__experimentalGetAnnotationsForBlock),
+  __experimentalGetAnnotationsForRichText: () => (__experimentalGetAnnotationsForRichText)
 });
 
 // NAMESPACE OBJECT: ./node_modules/@wordpress/annotations/build-module/store/actions.js
 var actions_namespaceObject = {};
 __webpack_require__.r(actions_namespaceObject);
 __webpack_require__.d(actions_namespaceObject, {
-  "__experimentalAddAnnotation": function() { return __experimentalAddAnnotation; },
-  "__experimentalRemoveAnnotation": function() { return __experimentalRemoveAnnotation; },
-  "__experimentalRemoveAnnotationsBySource": function() { return __experimentalRemoveAnnotationsBySource; },
-  "__experimentalUpdateAnnotationRange": function() { return __experimentalUpdateAnnotationRange; }
+  __experimentalAddAnnotation: () => (__experimentalAddAnnotation),
+  __experimentalRemoveAnnotation: () => (__experimentalRemoveAnnotation),
+  __experimentalRemoveAnnotationsBySource: () => (__experimentalRemoveAnnotationsBySource),
+  __experimentalUpdateAnnotationRange: () => (__experimentalUpdateAnnotationRange)
 });
 
 ;// CONCATENATED MODULE: external ["wp","richText"]
-var external_wp_richText_namespaceObject = window["wp"]["richText"];
+const external_wp_richText_namespaceObject = window["wp"]["richText"];
 ;// CONCATENATED MODULE: external ["wp","i18n"]
-var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
+const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/constants.js
 /**
  * The identifier for the data store.
@@ -94,23 +94,18 @@
  * @param {Array}  annotations The annotation to apply.
  * @return {Object} A record with the annotations applied.
  */
-
-function applyAnnotations(record) {
-  let annotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+function applyAnnotations(record, annotations = []) {
   annotations.forEach(annotation => {
     let {
       start,
       end
     } = annotation;
-
     if (start > record.text.length) {
       start = record.text.length;
     }
-
     if (end > record.text.length) {
       end = record.text.length;
     }
-
     const className = ANNOTATION_ATTRIBUTE_PREFIX + annotation.source;
     const id = ANNOTATION_ATTRIBUTE_PREFIX + annotation.id;
     record = (0,external_wp_richText_namespaceObject.applyFormat)(record, {
@@ -123,23 +118,23 @@
   });
   return record;
 }
+
 /**
  * Removes annotations from the given record.
  *
  * @param {Object} record Record to remove annotations from.
  * @return {Object} The cleaned record.
  */
-
 function removeAnnotations(record) {
   return removeFormat(record, 'core/annotation', 0, record.text.length);
 }
+
 /**
  * Retrieves the positions of annotations inside an array of formats.
  *
  * @param {Array} formats Formats with annotations in there.
  * @return {Object} ID keyed positions of annotations.
  */
-
 function retrieveAnnotationPositions(formats) {
   const positions = {};
   formats.forEach((characterFormats, i) => {
@@ -150,21 +145,21 @@
         id
       } = format.attributes;
       id = id.replace(ANNOTATION_ATTRIBUTE_PREFIX, '');
-
       if (!positions.hasOwnProperty(id)) {
         positions[id] = {
           start: i
         };
-      } // Annotations refer to positions between characters.
+      }
+
+      // Annotations refer to positions between characters.
       // Formats refer to the character themselves.
       // So we need to adjust for that here.
-
-
       positions[id].end = i + 1;
     });
   });
   return positions;
 }
+
 /**
  * Updates annotations in the state based on positions retrieved from RichText.
  *
@@ -174,34 +169,28 @@
  * @param {Function} actions.removeAnnotation      Function to remove an annotation from the state.
  * @param {Function} actions.updateAnnotationRange Function to update an annotation range in the state.
  */
-
-
-function updateAnnotationsWithPositions(annotations, positions, _ref) {
-  let {
-    removeAnnotation,
-    updateAnnotationRange
-  } = _ref;
+function updateAnnotationsWithPositions(annotations, positions, {
+  removeAnnotation,
+  updateAnnotationRange
+}) {
   annotations.forEach(currentAnnotation => {
-    const position = positions[currentAnnotation.id]; // If we cannot find an annotation, delete it.
-
+    const position = positions[currentAnnotation.id];
+    // If we cannot find an annotation, delete it.
     if (!position) {
       // Apparently the annotation has been removed, so remove it from the state:
       // Remove...
       removeAnnotation(currentAnnotation.id);
       return;
     }
-
     const {
       start,
       end
     } = currentAnnotation;
-
     if (start !== position.start || end !== position.end) {
       updateAnnotationRange(currentAnnotation.id, position.start, position.end);
     }
   });
 }
-
 const annotation = {
   name: FORMAT_NAME,
   title: (0,external_wp_i18n_namespaceObject.__)('Annotation'),
@@ -211,30 +200,24 @@
     className: 'class',
     id: 'id'
   },
-
   edit() {
     return null;
   },
-
-  __experimentalGetPropsForEditableTreePreparation(select, _ref2) {
-    let {
-      richTextIdentifier,
-      blockClientId
-    } = _ref2;
+  __experimentalGetPropsForEditableTreePreparation(select, {
+    richTextIdentifier,
+    blockClientId
+  }) {
     return {
       annotations: select(STORE_NAME).__experimentalGetAnnotationsForRichText(blockClientId, richTextIdentifier)
     };
   },
-
-  __experimentalCreatePrepareEditableTree(_ref3) {
-    let {
-      annotations
-    } = _ref3;
+  __experimentalCreatePrepareEditableTree({
+    annotations
+  }) {
     return (formats, text) => {
       if (annotations.length === 0) {
         return formats;
       }
-
       let record = {
         formats,
         text
@@ -243,14 +226,12 @@
       return record.formats;
     };
   },
-
   __experimentalGetPropsForEditableTreeChangeHandler(dispatch) {
     return {
       removeAnnotation: dispatch(STORE_NAME).__experimentalRemoveAnnotation,
       updateAnnotationRange: dispatch(STORE_NAME).__experimentalUpdateAnnotationRange
     };
   },
-
   __experimentalCreateOnChangeEditableValue(props) {
     return formats => {
       const positions = retrieveAnnotationPositions(formats);
@@ -265,7 +246,6 @@
       });
     };
   }
-
 };
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/format/index.js
@@ -273,31 +253,31 @@
  * WordPress dependencies
  */
 
-/**
- * Internal dependencies
- */
-
-
-const {
-  name: format_name,
-  ...settings
-} = annotation;
-(0,external_wp_richText_namespaceObject.registerFormatType)(format_name, settings);
-
-;// CONCATENATED MODULE: external ["wp","hooks"]
-var external_wp_hooks_namespaceObject = window["wp"]["hooks"];
-;// CONCATENATED MODULE: external ["wp","data"]
-var external_wp_data_namespaceObject = window["wp"]["data"];
-;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/block/index.js
-/**
- * WordPress dependencies
- */
-
 
 /**
  * Internal dependencies
  */
 
+const {
+  name: format_name,
+  ...settings
+} = annotation;
+(0,external_wp_richText_namespaceObject.registerFormatType)(format_name, settings);
+
+;// CONCATENATED MODULE: external ["wp","hooks"]
+const external_wp_hooks_namespaceObject = window["wp"]["hooks"];
+;// CONCATENATED MODULE: external ["wp","data"]
+const external_wp_data_namespaceObject = window["wp"]["data"];
+;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/block/index.js
+/**
+ * WordPress dependencies
+ */
+
+
+
+/**
+ * Internal dependencies
+ */
 
 /**
  * Adds annotation className to the block-list-block component.
@@ -305,16 +285,12 @@
  * @param {Object} OriginalComponent The original BlockListBlock component.
  * @return {Object} The enhanced component.
  */
-
 const addAnnotationClassName = OriginalComponent => {
-  return (0,external_wp_data_namespaceObject.withSelect)((select, _ref) => {
-    let {
-      clientId,
-      className
-    } = _ref;
-
+  return (0,external_wp_data_namespaceObject.withSelect)((select, {
+    clientId,
+    className
+  }) => {
     const annotations = select(STORE_NAME).__experimentalGetAnnotationsForBlock(clientId);
-
     return {
       className: annotations.map(annotation => {
         return 'is-annotated-by-' + annotation.source;
@@ -322,17 +298,10 @@
     };
   })(OriginalComponent);
 };
-
 (0,external_wp_hooks_namespaceObject.addFilter)('editor.BlockListBlock', 'core/annotations', addAnnotationClassName);
 
-;// CONCATENATED MODULE: external "lodash"
-var external_lodash_namespaceObject = window["lodash"];
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/reducer.js
 /**
- * External dependencies
- */
-
-/**
  * Filters an array based on the predicate, but keeps the reference the same if
  * the array hasn't changed.
  *
@@ -341,22 +310,34 @@
  *                              in the array.
  * @return {Array} Filtered array.
  */
-
 function filterWithReference(collection, predicate) {
   const filteredCollection = collection.filter(predicate);
   return collection.length === filteredCollection.length ? collection : filteredCollection;
 }
+
+/**
+ * Creates a new object with the same keys, but with `callback()` called as
+ * a transformer function on each of the values.
+ *
+ * @param {Object}   obj      The object to transform.
+ * @param {Function} callback The function to transform each object value.
+ * @return {Array} Transformed object.
+ */
+const mapValues = (obj, callback) => Object.entries(obj).reduce((acc, [key, value]) => ({
+  ...acc,
+  [key]: callback(value)
+}), {});
+
 /**
  * Verifies whether the given annotations is a valid annotation.
  *
  * @param {Object} annotation The annotation to verify.
  * @return {boolean} Whether the given annotation is valid.
  */
-
+function isValidAnnotationRange(annotation) {
+  return typeof annotation.start === 'number' && typeof annotation.end === 'number' && annotation.start <= annotation.end;
+}
 
-function isValidAnnotationRange(annotation) {
-  return (0,external_lodash_namespaceObject.isNumber)(annotation.start) && (0,external_lodash_namespaceObject.isNumber)(annotation.end) && annotation.start <= annotation.end;
-}
 /**
  * Reducer managing annotations.
  *
@@ -365,14 +346,8 @@
  *
  * @return {Array} Updated state.
  */
-
-
-function annotations() {
+function annotations(state = {}, action) {
   var _state$blockClientId;
-
-  let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  let action = arguments.length > 1 ? arguments[1] : undefined;
-
   switch (action.type) {
     case 'ANNOTATION_ADD':
       const blockClientId = action.blockClientId;
@@ -384,333 +359,52 @@
         selector: action.selector,
         range: action.range
       };
-
       if (newAnnotation.selector === 'range' && !isValidAnnotationRange(newAnnotation.range)) {
         return state;
       }
-
-      const previousAnnotationsForBlock = (_state$blockClientId = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : [];
-      return { ...state,
+      const previousAnnotationsForBlock = (_state$blockClientId = state?.[blockClientId]) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : [];
+      return {
+        ...state,
         [blockClientId]: [...previousAnnotationsForBlock, newAnnotation]
       };
-
     case 'ANNOTATION_REMOVE':
-      return (0,external_lodash_namespaceObject.mapValues)(state, annotationsForBlock => {
+      return mapValues(state, annotationsForBlock => {
         return filterWithReference(annotationsForBlock, annotation => {
           return annotation.id !== action.annotationId;
         });
       });
-
     case 'ANNOTATION_UPDATE_RANGE':
-      return (0,external_lodash_namespaceObject.mapValues)(state, annotationsForBlock => {
+      return mapValues(state, annotationsForBlock => {
         let hasChangedRange = false;
         const newAnnotations = annotationsForBlock.map(annotation => {
           if (annotation.id === action.annotationId) {
             hasChangedRange = true;
-            return { ...annotation,
+            return {
+              ...annotation,
               range: {
                 start: action.start,
                 end: action.end
               }
             };
           }
-
           return annotation;
         });
         return hasChangedRange ? newAnnotations : annotationsForBlock;
       });
-
     case 'ANNOTATION_REMOVE_SOURCE':
-      return (0,external_lodash_namespaceObject.mapValues)(state, annotationsForBlock => {
+      return mapValues(state, annotationsForBlock => {
         return filterWithReference(annotationsForBlock, annotation => {
           return annotation.source !== action.source;
         });
       });
   }
-
   return state;
 }
-/* harmony default export */ var reducer = (annotations);
-
-;// CONCATENATED MODULE: ./node_modules/rememo/es/rememo.js
-
-
-var LEAF_KEY, hasWeakMap;
-
-/**
- * Arbitrary value used as key for referencing cache object in WeakMap tree.
- *
- * @type {Object}
- */
-LEAF_KEY = {};
-
-/**
- * Whether environment supports WeakMap.
- *
- * @type {boolean}
- */
-hasWeakMap = typeof WeakMap !== 'undefined';
-
-/**
- * Returns the first argument as the sole entry in an array.
- *
- * @param {*} value Value to return.
- *
- * @return {Array} Value returned as entry in array.
- */
-function arrayOf( value ) {
-	return [ value ];
-}
-
-/**
- * Returns true if the value passed is object-like, or false otherwise. A value
- * is object-like if it can support property assignment, e.g. object or array.
- *
- * @param {*} value Value to test.
- *
- * @return {boolean} Whether value is object-like.
- */
-function isObjectLike( value ) {
-	return !! value && 'object' === typeof value;
-}
-
-/**
- * Creates and returns a new cache object.
- *
- * @return {Object} Cache object.
- */
-function createCache() {
-	var cache = {
-		clear: function() {
-			cache.head = null;
-		},
-	};
-
-	return cache;
-}
-
-/**
- * Returns true if entries within the two arrays are strictly equal by
- * reference from a starting index.
- *
- * @param {Array}  a         First array.
- * @param {Array}  b         Second array.
- * @param {number} fromIndex Index from which to start comparison.
- *
- * @return {boolean} Whether arrays are shallowly equal.
- */
-function isShallowEqual( a, b, fromIndex ) {
-	var i;
-
-	if ( a.length !== b.length ) {
-		return false;
-	}
-
-	for ( i = fromIndex; i < a.length; i++ ) {
-		if ( a[ i ] !== b[ i ] ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-/**
- * Returns a memoized selector function. The getDependants function argument is
- * called before the memoized selector and is expected to return an immutable
- * reference or array of references on which the selector depends for computing
- * its own return value. The memoize cache is preserved only as long as those
- * dependant references remain the same. If getDependants returns a different
- * reference(s), the cache is cleared and the selector value regenerated.
- *
- * @param {Function} selector      Selector function.
- * @param {Function} getDependants Dependant getter returning an immutable
- *                                 reference or array of reference used in
- *                                 cache bust consideration.
- *
- * @return {Function} Memoized selector.
- */
-/* harmony default export */ function rememo(selector, getDependants ) {
-	var rootCache, getCache;
-
-	// Use object source as dependant if getter not provided
-	if ( ! getDependants ) {
-		getDependants = arrayOf;
-	}
-
-	/**
-	 * Returns the root cache. If WeakMap is supported, this is assigned to the
-	 * root WeakMap cache set, otherwise it is a shared instance of the default
-	 * cache object.
-	 *
-	 * @return {(WeakMap|Object)} Root cache object.
-	 */
-	function getRootCache() {
-		return rootCache;
-	}
-
-	/**
-	 * Returns the cache for a given dependants array. When possible, a WeakMap
-	 * will be used to create a unique cache for each set of dependants. This
-	 * is feasible due to the nature of WeakMap in allowing garbage collection
-	 * to occur on entries where the key object is no longer referenced. Since
-	 * WeakMap requires the key to be an object, this is only possible when the
-	 * dependant is object-like. The root cache is created as a hierarchy where
-	 * each top-level key is the first entry in a dependants set, the value a
-	 * WeakMap where each key is the next dependant, and so on. This continues
-	 * so long as the dependants are object-like. If no dependants are object-
-	 * like, then the cache is shared across all invocations.
-	 *
-	 * @see isObjectLike
-	 *
-	 * @param {Array} dependants Selector dependants.
-	 *
-	 * @return {Object} Cache object.
-	 */
-	function getWeakMapCache( dependants ) {
-		var caches = rootCache,
-			isUniqueByDependants = true,
-			i, dependant, map, cache;
-
-		for ( i = 0; i < dependants.length; i++ ) {
-			dependant = dependants[ i ];
-
-			// Can only compose WeakMap from object-like key.
-			if ( ! isObjectLike( dependant ) ) {
-				isUniqueByDependants = false;
-				break;
-			}
-
-			// Does current segment of cache already have a WeakMap?
-			if ( caches.has( dependant ) ) {
-				// Traverse into nested WeakMap.
-				caches = caches.get( dependant );
-			} else {
-				// Create, set, and traverse into a new one.
-				map = new WeakMap();
-				caches.set( dependant, map );
-				caches = map;
-			}
-		}
-
-		// We use an arbitrary (but consistent) object as key for the last item
-		// in the WeakMap to serve as our running cache.
-		if ( ! caches.has( LEAF_KEY ) ) {
-			cache = createCache();
-			cache.isUniqueByDependants = isUniqueByDependants;
-			caches.set( LEAF_KEY, cache );
-		}
-
-		return caches.get( LEAF_KEY );
-	}
-
-	// Assign cache handler by availability of WeakMap
-	getCache = hasWeakMap ? getWeakMapCache : getRootCache;
-
-	/**
-	 * Resets root memoization cache.
-	 */
-	function clear() {
-		rootCache = hasWeakMap ? new WeakMap() : createCache();
-	}
-
-	// eslint-disable-next-line jsdoc/check-param-names
-	/**
-	 * The augmented selector call, considering first whether dependants have
-	 * changed before passing it to underlying memoize function.
-	 *
-	 * @param {Object} source    Source object for derivation.
-	 * @param {...*}   extraArgs Additional arguments to pass to selector.
-	 *
-	 * @return {*} Selector result.
-	 */
-	function callSelector( /* source, ...extraArgs */ ) {
-		var len = arguments.length,
-			cache, node, i, args, dependants;
-
-		// Create copy of arguments (avoid leaking deoptimization).
-		args = new Array( len );
-		for ( i = 0; i < len; i++ ) {
-			args[ i ] = arguments[ i ];
-		}
-
-		dependants = getDependants.apply( null, args );
-		cache = getCache( dependants );
-
-		// If not guaranteed uniqueness by dependants (primitive type or lack
-		// of WeakMap support), shallow compare against last dependants and, if
-		// references have changed, destroy cache to recalculate result.
-		if ( ! cache.isUniqueByDependants ) {
-			if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
-				cache.clear();
-			}
-
-			cache.lastDependants = dependants;
-		}
-
-		node = cache.head;
-		while ( node ) {
-			// Check whether node arguments match arguments
-			if ( ! isShallowEqual( node.args, args, 1 ) ) {
-				node = node.next;
-				continue;
-			}
-
-			// At this point we can assume we've found a match
-
-			// Surface matched node to head if not already
-			if ( node !== cache.head ) {
-				// Adjust siblings to point to each other.
-				node.prev.next = node.next;
-				if ( node.next ) {
-					node.next.prev = node.prev;
-				}
-
-				node.next = cache.head;
-				node.prev = null;
-				cache.head.prev = node;
-				cache.head = node;
-			}
-
-			// Return immediately
-			return node.val;
-		}
-
-		// No cached value found. Continue to insertion phase:
-
-		node = {
-			// Generate the result from original function
-			val: selector.apply( null, args ),
-		};
-
-		// Avoid including the source object in the cache.
-		args[ 0 ] = null;
-		node.args = 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 ( cache.head ) {
-			cache.head.prev = node;
-			node.next = cache.head;
-		}
-
-		cache.head = node;
-
-		return node.val;
-	}
-
-	callSelector.getDependants = getDependants;
-	callSelector.clear = clear;
-	clear();
-
-	return callSelector;
-}
+/* harmony default export */ const reducer = (annotations);
 
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/selectors.js
 /**
- * External dependencies
+ * WordPress dependencies
  */
 
 
@@ -723,8 +417,8 @@
  *
  * @type {Array}
  */
+const EMPTY_ARRAY = [];
 
-const EMPTY_ARRAY = [];
 /**
  * Returns the annotations for a specific client ID.
  *
@@ -733,23 +427,20 @@
  *
  * @return {Array} The annotations applicable to this block.
  */
-
-const __experimentalGetAnnotationsForBlock = rememo((state, blockClientId) => {
+const __experimentalGetAnnotationsForBlock = (0,external_wp_data_namespaceObject.createSelector)((state, blockClientId) => {
   var _state$blockClientId;
-
-  return ((_state$blockClientId = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : []).filter(annotation => {
+  return ((_state$blockClientId = state?.[blockClientId]) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : []).filter(annotation => {
     return annotation.selector === 'block';
   });
 }, (state, blockClientId) => {
   var _state$blockClientId2;
-
-  return [(_state$blockClientId2 = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId2 !== void 0 ? _state$blockClientId2 : EMPTY_ARRAY];
+  return [(_state$blockClientId2 = state?.[blockClientId]) !== null && _state$blockClientId2 !== void 0 ? _state$blockClientId2 : EMPTY_ARRAY];
 });
 function __experimentalGetAllAnnotationsForBlock(state, blockClientId) {
   var _state$blockClientId3;
+  return (_state$blockClientId3 = state?.[blockClientId]) !== null && _state$blockClientId3 !== void 0 ? _state$blockClientId3 : EMPTY_ARRAY;
+}
 
-  return (_state$blockClientId3 = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId3 !== void 0 ? _state$blockClientId3 : EMPTY_ARRAY;
-}
 /**
  * Returns the annotations that apply to the given RichText instance.
  *
@@ -762,51 +453,51 @@
  * @param {string} richTextIdentifier Unique identifier that identifies the given RichText.
  * @return {Array} All the annotations relevant for the `RichText`.
  */
-
-const __experimentalGetAnnotationsForRichText = rememo((state, blockClientId, richTextIdentifier) => {
+const __experimentalGetAnnotationsForRichText = (0,external_wp_data_namespaceObject.createSelector)((state, blockClientId, richTextIdentifier) => {
   var _state$blockClientId4;
-
-  return ((_state$blockClientId4 = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId4 !== void 0 ? _state$blockClientId4 : []).filter(annotation => {
+  return ((_state$blockClientId4 = state?.[blockClientId]) !== null && _state$blockClientId4 !== void 0 ? _state$blockClientId4 : []).filter(annotation => {
     return annotation.selector === 'range' && richTextIdentifier === annotation.richTextIdentifier;
   }).map(annotation => {
     const {
       range,
       ...other
     } = annotation;
-    return { ...range,
+    return {
+      ...range,
       ...other
     };
   });
 }, (state, blockClientId) => {
   var _state$blockClientId5;
+  return [(_state$blockClientId5 = state?.[blockClientId]) !== null && _state$blockClientId5 !== void 0 ? _state$blockClientId5 : EMPTY_ARRAY];
+});
 
-  return [(_state$blockClientId5 = state === null || state === void 0 ? void 0 : state[blockClientId]) !== null && _state$blockClientId5 !== void 0 ? _state$blockClientId5 : EMPTY_ARRAY];
-});
 /**
  * Returns all annotations in the editor state.
  *
  * @param {Object} state Editor state.
  * @return {Array} All annotations currently applied.
  */
-
 function __experimentalGetAnnotations(state) {
-  return (0,external_lodash_namespaceObject.flatMap)(state, annotations => {
-    return annotations;
-  });
+  return Object.values(state).flat();
 }
 
+;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/native.js
+const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
+/* harmony default export */ const esm_browser_native = ({
+  randomUUID
+});
 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/rng.js
 // Unique ID creation requires a high quality random # generator. In the browser we therefore
 // require the crypto API and do not support built-in fallback to lower quality random number
 // generators (like Math.random()).
-var getRandomValues;
-var rnds8 = new Uint8Array(16);
+let getRandomValues;
+const rnds8 = new Uint8Array(16);
 function rng() {
   // lazy load so that environments that need to polyfill have a chance to do so
   if (!getRandomValues) {
-    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
-    // find the complete implementation of crypto (msCrypto) on IE11.
-    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
+    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
+    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
 
     if (!getRandomValues) {
       throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
@@ -815,16 +506,6 @@
 
   return getRandomValues(rnds8);
 }
-;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/regex.js
-/* harmony default export */ var regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i);
-;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/validate.js
-
-
-function validate(uuid) {
-  return typeof uuid === 'string' && regex.test(uuid);
-}
-
-/* harmony default export */ var esm_browser_validate = (validate);
 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/stringify.js
 
 /**
@@ -832,37 +513,45 @@
  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  */
 
-var byteToHex = [];
+const byteToHex = [];
 
-for (var i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
+for (let i = 0; i < 256; ++i) {
+  byteToHex.push((i + 0x100).toString(16).slice(1));
 }
 
-function stringify(arr) {
-  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+function unsafeStringify(arr, offset = 0) {
   // Note: Be careful editing this code!  It's been tuned for performance
   // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
+  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
+}
+
+function stringify(arr, offset = 0) {
+  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one
   // of the following:
   // - One or more input array values don't map to a hex octet (leading to
   // "undefined" in the uuid)
   // - Invalid input values for the RFC `version` or `variant` fields
 
-  if (!esm_browser_validate(uuid)) {
+  if (!validate(uuid)) {
     throw TypeError('Stringified UUID is invalid');
   }
 
   return uuid;
 }
 
-/* harmony default export */ var esm_browser_stringify = (stringify);
+/* harmony default export */ const esm_browser_stringify = ((/* unused pure expression or super */ null && (stringify)));
 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/v4.js
 
 
 
+
 function v4(options, buf, offset) {
+  if (esm_browser_native.randomUUID && !buf && !options) {
+    return esm_browser_native.randomUUID();
+  }
+
   options = options || {};
-  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
+  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
 
   rnds[6] = rnds[6] & 0x0f | 0x40;
   rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
@@ -870,22 +559,23 @@
   if (buf) {
     offset = offset || 0;
 
-    for (var i = 0; i < 16; ++i) {
+    for (let i = 0; i < 16; ++i) {
       buf[offset + i] = rnds[i];
     }
 
     return buf;
   }
 
-  return esm_browser_stringify(rnds);
+  return unsafeStringify(rnds);
 }
 
-/* harmony default export */ var esm_browser_v4 = (v4);
+/* harmony default export */ const esm_browser_v4 = (v4);
 ;// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/actions.js
 /**
  * External dependencies
  */
 
+
 /**
  * @typedef WPAnnotationRange
  *
@@ -913,16 +603,14 @@
  *
  * @return {Object} Action object.
  */
-
-function __experimentalAddAnnotation(_ref) {
-  let {
-    blockClientId,
-    richTextIdentifier = null,
-    range = null,
-    selector = 'range',
-    source = 'default',
-    id = esm_browser_v4()
-  } = _ref;
+function __experimentalAddAnnotation({
+  blockClientId,
+  richTextIdentifier = null,
+  range = null,
+  selector = 'range',
+  source = 'default',
+  id = esm_browser_v4()
+}) {
   const action = {
     type: 'ANNOTATION_ADD',
     id,
@@ -931,13 +619,12 @@
     source,
     selector
   };
-
   if (selector === 'range') {
     action.range = range;
   }
-
   return action;
 }
+
 /**
  * Removes an annotation with a specific ID.
  *
@@ -945,13 +632,13 @@
  *
  * @return {Object} Action object.
  */
-
 function __experimentalRemoveAnnotation(annotationId) {
   return {
     type: 'ANNOTATION_REMOVE',
     annotationId
   };
 }
+
 /**
  * Updates the range of an annotation.
  *
@@ -961,7 +648,6 @@
  *
  * @return {Object} Action object.
  */
-
 function __experimentalUpdateAnnotationRange(annotationId, start, end) {
   return {
     type: 'ANNOTATION_UPDATE_RANGE',
@@ -970,6 +656,7 @@
     end
   };
 }
+
 /**
  * Removes all annotations of a specific source.
  *
@@ -977,7 +664,6 @@
  *
  * @return {Object} Action object.
  */
-
 function __experimentalRemoveAnnotationsBySource(source) {
   return {
     type: 'ANNOTATION_REMOVE_SOURCE',
@@ -990,6 +676,7 @@
  * WordPress dependencies
  */
 
+
 /**
  * Internal dependencies
  */
@@ -1009,7 +696,6 @@
  *
  * @type {Object}
  */
-
 const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, {
   reducer: reducer,
   selectors: selectors_namespaceObject,