2018-12-17 05:52:00 +01:00
this [ "wp" ] = this [ "wp" ] || { } ; this [ "wp" ] [ "annotations" ] =
/******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , { enumerable : true , get : getter } ) ;
/******/ }
/******/ } ;
/******/
/******/ // 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 } ) ;
/******/ } ;
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ _ _webpack _require _ _ . t = function ( value , mode ) {
/******/ if ( mode & 1 ) value = _ _webpack _require _ _ ( value ) ;
/******/ if ( mode & 8 ) return value ;
/******/ if ( ( mode & 4 ) && typeof value === 'object' && value && value . _ _esModule ) return value ;
/******/ var ns = Object . create ( null ) ;
/******/ _ _webpack _require _ _ . r ( ns ) ;
/******/ Object . defineProperty ( ns , 'default' , { enumerable : true , value : value } ) ;
/******/ if ( mode & 2 && typeof value != 'string' ) for ( var key in value ) _ _webpack _require _ _ . d ( ns , key , function ( key ) { return value [ key ] ; } . bind ( null , key ) ) ;
/******/ return ns ;
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/
/******/ // Load entry module and return exports
2021-05-20 14:20:04 +02:00
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = "23Y4" ) ;
2018-12-17 05:52:00 +01:00
/******/ } )
/************************************************************************/
/******/ ( {
2021-05-20 14:20:04 +02:00
/***/ "1ZqX" :
2018-12-18 04:14:52 +01:00
/***/ ( function ( module , exports ) {
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
( function ( ) { module . exports = window [ "wp" ] [ "data" ] ; } ( ) ) ;
2021-02-02 06:17:13 +01:00
/***/ } ) ,
2021-05-20 14:20:04 +02:00
/***/ "23Y4" :
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
"use strict" ;
// ESM COMPAT FLAG
_ _webpack _require _ _ . r ( _ _webpack _exports _ _ ) ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// EXPORTS
_ _webpack _require _ _ . d ( _ _webpack _exports _ _ , "store" , function ( ) { return /* reexport */ store ; } ) ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// NAMESPACE OBJECT: ./node_modules/@wordpress/annotations/build-module/store/selectors.js
var selectors _namespaceObject = { } ;
_ _webpack _require _ _ . r ( selectors _namespaceObject ) ;
_ _webpack _require _ _ . d ( selectors _namespaceObject , "__experimentalGetAnnotationsForBlock" , function ( ) { return _ _experimentalGetAnnotationsForBlock ; } ) ;
_ _webpack _require _ _ . d ( selectors _namespaceObject , "__experimentalGetAllAnnotationsForBlock" , function ( ) { return _ _experimentalGetAllAnnotationsForBlock ; } ) ;
_ _webpack _require _ _ . d ( selectors _namespaceObject , "__experimentalGetAnnotationsForRichText" , function ( ) { return _ _experimentalGetAnnotationsForRichText ; } ) ;
_ _webpack _require _ _ . d ( selectors _namespaceObject , "__experimentalGetAnnotations" , function ( ) { return _ _experimentalGetAnnotations ; } ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// 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 ; } ) ;
_ _webpack _require _ _ . d ( actions _namespaceObject , "__experimentalRemoveAnnotation" , function ( ) { return _ _experimentalRemoveAnnotation ; } ) ;
_ _webpack _require _ _ . d ( actions _namespaceObject , "__experimentalUpdateAnnotationRange" , function ( ) { return _ _experimentalUpdateAnnotationRange ; } ) ;
_ _webpack _require _ _ . d ( actions _namespaceObject , "__experimentalRemoveAnnotationsBySource" , function ( ) { return _ _experimentalRemoveAnnotationsBySource ; } ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: external ["wp","richText"]
var external _wp _richText _ = _ _webpack _require _ _ ( "qRz9" ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: external ["wp","i18n"]
var external _wp _i18n _ = _ _webpack _require _ _ ( "l3Sj" ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/constants.js
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* The identifier for the data store .
2020-01-22 23:06:21 +01:00
*
2021-05-20 14:20:04 +02:00
* @ type { string }
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
const STORE _NAME = 'core/annotations' ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/format/annotation.js
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* WordPress dependencies
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
const FORMAT _NAME = 'core/annotation' ;
const ANNOTATION _ATTRIBUTE _PREFIX = 'annotation-text-' ;
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Internal dependencies
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Applies given annotations to the given record .
2020-01-22 23:06:21 +01:00
*
2021-11-08 15:29:21 +01:00
* @ param { Object } record The record to apply annotations to .
* @ param { Array } annotations The annotation to apply .
2021-05-20 14:20:04 +02:00
* @ return { Object } A record with the annotations applied .
2020-01-22 23:06:21 +01:00
* /
2021-11-15 13:50:17 +01:00
function applyAnnotations ( record ) {
let annotations = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : [ ] ;
2021-05-20 14:20:04 +02:00
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 = Object ( external _wp _richText _ [ "applyFormat" ] ) ( record , {
type : FORMAT _NAME ,
attributes : {
className ,
id
}
} , start , end ) ;
} ) ;
return record ;
}
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Removes annotations from the given record .
2020-01-22 23:06:21 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { Object } record Record to remove annotations from .
* @ return { Object } The cleaned record .
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
function removeAnnotations ( record ) {
return Object ( external _wp _richText _ [ "removeFormat" ] ) ( record , 'core/annotation' , 0 , record . text . length ) ;
2020-01-22 23:06:21 +01:00
}
/ * *
2021-05-20 14:20:04 +02:00
* Retrieves the positions of annotations inside an array of formats .
2020-01-22 23:06:21 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { Array } formats Formats with annotations in there .
* @ return { Object } ID keyed positions of annotations .
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
function retrieveAnnotationPositions ( formats ) {
const positions = { } ;
formats . forEach ( ( characterFormats , i ) => {
characterFormats = characterFormats || [ ] ;
characterFormats = characterFormats . filter ( format => format . type === FORMAT _NAME ) ;
characterFormats . forEach ( format => {
let {
id
} = format . attributes ;
id = id . replace ( ANNOTATION _ATTRIBUTE _PREFIX , '' ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
if ( ! positions . hasOwnProperty ( id ) ) {
positions [ id ] = {
start : i
} ;
} // Annotations refer to positions between characters.
// Formats refer to the character themselves.
// So we need to adjust for that here.
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
positions [ id ] . end = i + 1 ;
} ) ;
} ) ;
return positions ;
}
2020-01-22 23:06:21 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Updates annotations in the state based on positions retrieved from RichText .
2020-01-22 23:06:21 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { Array } annotations The annotations that are currently applied .
* @ param { Array } positions The current positions of the given annotations .
* @ param { Object } actions
* @ 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 .
2020-01-22 23:06:21 +01:00
* /
2021-11-15 13:50:17 +01:00
function updateAnnotationsWithPositions ( annotations , positions , _ref ) {
let {
removeAnnotation ,
updateAnnotationRange
} = _ref ;
2021-05-20 14:20:04 +02:00
annotations . forEach ( currentAnnotation => {
const position = positions [ currentAnnotation . id ] ; // If we cannot find an annotation, delete it.
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
if ( ! position ) {
// Apparently the annotation has been removed, so remove it from the state:
// Remove...
removeAnnotation ( currentAnnotation . id ) ;
return ;
}
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
const {
start ,
end
} = currentAnnotation ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
if ( start !== position . start || end !== position . end ) {
updateAnnotationRange ( currentAnnotation . id , position . start , position . end ) ;
}
} ) ;
}
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
const annotation _annotation = {
name : FORMAT _NAME ,
title : Object ( external _wp _i18n _ [ "__" ] ) ( 'Annotation' ) ,
tagName : 'mark' ,
className : 'annotation-text' ,
attributes : {
className : 'class' ,
id : 'id'
} ,
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
edit ( ) {
return null ;
} ,
2020-01-22 23:06:21 +01:00
2021-11-15 13:50:17 +01:00
_ _experimentalGetPropsForEditableTreePreparation ( select , _ref2 ) {
let {
richTextIdentifier ,
blockClientId
} = _ref2 ;
2021-05-20 14:20:04 +02:00
return {
annotations : select ( STORE _NAME ) . _ _experimentalGetAnnotationsForRichText ( blockClientId , richTextIdentifier )
} ;
} ,
2020-01-22 23:06:21 +01:00
2021-11-15 13:50:17 +01:00
_ _experimentalCreatePrepareEditableTree ( _ref3 ) {
let {
annotations
} = _ref3 ;
2021-05-20 14:20:04 +02:00
return ( formats , text ) => {
if ( annotations . length === 0 ) {
return formats ;
}
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
let record = {
formats ,
text
} ;
record = applyAnnotations ( record , annotations ) ;
return record . formats ;
} ;
} ,
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
_ _experimentalGetPropsForEditableTreeChangeHandler ( dispatch ) {
return {
removeAnnotation : dispatch ( STORE _NAME ) . _ _experimentalRemoveAnnotation ,
updateAnnotationRange : dispatch ( STORE _NAME ) . _ _experimentalUpdateAnnotationRange
} ;
} ,
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
_ _experimentalCreateOnChangeEditableValue ( props ) {
return formats => {
const positions = retrieveAnnotationPositions ( formats ) ;
const {
removeAnnotation ,
updateAnnotationRange ,
annotations
} = props ;
updateAnnotationsWithPositions ( annotations , positions , {
removeAnnotation ,
updateAnnotationRange
} ) ;
} ;
}
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
} ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/format/index.js
/ * *
* WordPress dependencies
* /
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
/ * *
* Internal dependencies
* /
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
const {
name : format _name ,
... settings
} = annotation _annotation ;
Object ( external _wp _richText _ [ "registerFormatType" ] ) ( format _name , settings ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: external ["wp","hooks"]
var external _wp _hooks _ = _ _webpack _require _ _ ( "g56x" ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: external ["wp","data"]
var external _wp _data _ = _ _webpack _require _ _ ( "1ZqX" ) ;
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/block/index.js
/ * *
* WordPress dependencies
* /
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
/ * *
* Internal dependencies
* /
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
/ * *
* Adds annotation className to the block - list - block component .
*
* @ param { Object } OriginalComponent The original BlockListBlock component .
* @ return { Object } The enhanced component .
* /
2020-01-22 23:06:21 +01:00
2021-05-20 14:20:04 +02:00
const addAnnotationClassName = OriginalComponent => {
2021-11-15 13:50:17 +01:00
return Object ( external _wp _data _ [ "withSelect" ] ) ( ( select , _ref ) => {
let {
clientId ,
className
} = _ref ;
2021-05-20 14:20:04 +02:00
const annotations = select ( STORE _NAME ) . _ _experimentalGetAnnotationsForBlock ( clientId ) ;
2021-05-07 13:48:27 +02:00
2021-05-20 14:20:04 +02:00
return {
className : annotations . map ( annotation => {
return 'is-annotated-by-' + annotation . source ;
} ) . concat ( className ) . filter ( Boolean ) . join ( ' ' )
} ;
} ) ( OriginalComponent ) ;
} ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
Object ( external _wp _hooks _ [ "addFilter" ] ) ( 'editor.BlockListBlock' , 'core/annotations' , addAnnotationClassName ) ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: external "lodash"
var external _lodash _ = _ _webpack _require _ _ ( "YLtl" ) ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/reducer.js
/ * *
* External dependencies
* /
2021-05-07 13:48:27 +02:00
2021-05-20 14:20:04 +02:00
/ * *
* Filters an array based on the predicate , but keeps the reference the same if
* the array hasn ' t changed .
*
* @ param { Array } collection The collection to filter .
* @ param { Function } predicate Function that determines if the item should stay
* in the array .
* @ return { Array } Filtered array .
* /
2021-05-07 13:48:27 +02:00
2021-05-20 14:20:04 +02:00
function filterWithReference ( collection , predicate ) {
const filteredCollection = collection . filter ( predicate ) ;
return collection . length === filteredCollection . length ? collection : filteredCollection ;
2021-05-19 17:09:27 +02:00
}
/ * *
2021-05-20 14:20:04 +02:00
* Verifies whether the given annotations is a valid annotation .
*
* @ param { Object } annotation The annotation to verify .
* @ return { boolean } Whether the given annotation is valid .
2021-05-19 17:09:27 +02:00
* /
2021-05-20 14:20:04 +02:00
function isValidAnnotationRange ( annotation ) {
return Object ( external _lodash _ [ "isNumber" ] ) ( annotation . start ) && Object ( external _lodash _ [ "isNumber" ] ) ( annotation . end ) && annotation . start <= annotation . end ;
2021-05-19 17:09:27 +02:00
}
2021-05-20 14:20:04 +02:00
/ * *
* Reducer managing annotations .
*
* @ param { Object } state The annotations currently shown in the editor .
* @ param { Object } action Dispatched action .
*
* @ return { Array } Updated state .
* /
2021-05-19 17:09:27 +02:00
2021-11-15 13:50:17 +01:00
function reducer _annotations ( ) {
2021-05-20 14:20:04 +02:00
var _state$blockClientId ;
2021-05-19 17:09:27 +02:00
2021-11-15 13:50:17 +01:00
let state = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : { } ;
let action = arguments . length > 1 ? arguments [ 1 ] : undefined ;
2021-05-20 14:20:04 +02:00
switch ( action . type ) {
case 'ANNOTATION_ADD' :
const blockClientId = action . blockClientId ;
const newAnnotation = {
id : action . id ,
blockClientId ,
richTextIdentifier : action . richTextIdentifier ,
source : action . source ,
selector : action . selector ,
range : action . range
} ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
if ( newAnnotation . selector === 'range' && ! isValidAnnotationRange ( newAnnotation . range ) ) {
return state ;
}
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
const previousAnnotationsForBlock = ( _state$blockClientId = state === null || state === void 0 ? void 0 : state [ blockClientId ] ) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : [ ] ;
return { ... state ,
[ blockClientId ] : [ ... previousAnnotationsForBlock , newAnnotation ]
} ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
case 'ANNOTATION_REMOVE' :
return Object ( external _lodash _ [ "mapValues" ] ) ( state , annotationsForBlock => {
return filterWithReference ( annotationsForBlock , annotation => {
return annotation . id !== action . annotationId ;
} ) ;
} ) ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
case 'ANNOTATION_UPDATE_RANGE' :
return Object ( external _lodash _ [ "mapValues" ] ) ( state , annotationsForBlock => {
let hasChangedRange = false ;
const newAnnotations = annotationsForBlock . map ( annotation => {
if ( annotation . id === action . annotationId ) {
hasChangedRange = true ;
return { ... annotation ,
range : {
start : action . start ,
end : action . end
}
} ;
}
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
return annotation ;
} ) ;
return hasChangedRange ? newAnnotations : annotationsForBlock ;
} ) ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
case 'ANNOTATION_REMOVE_SOURCE' :
return Object ( external _lodash _ [ "mapValues" ] ) ( state , annotationsForBlock => {
return filterWithReference ( annotationsForBlock , annotation => {
return annotation . source !== action . source ;
} ) ;
} ) ;
2020-10-13 15:10:30 +02:00
}
2021-05-20 14:20:04 +02:00
return state ;
2020-10-13 15:10:30 +02:00
}
2021-05-20 14:20:04 +02:00
/* harmony default export */ var reducer = ( reducer _annotations ) ;
2020-10-13 15:10:30 +02:00
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: ./node_modules/rememo/es/rememo.js
var rememo = _ _webpack _require _ _ ( "pPDe" ) ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/selectors.js
/ * *
* External dependencies
* /
2020-02-06 22:03:31 +01:00
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Shared reference to an empty array for cases where it is important to avoid
* returning a new array reference on every invocation , as in a connected or
* other pure component which performs ` shouldComponentUpdate ` check on props .
* This should be used as a last resort , since the normalized data should be
* maintained by the reducer result in state .
2021-01-28 03:04:13 +01:00
*
2021-05-20 14:20:04 +02:00
* @ type { Array }
2018-12-17 05:52:00 +01:00
* /
2021-05-20 14:20:04 +02:00
const EMPTY _ARRAY = [ ] ;
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Returns the annotations for a specific client ID .
*
2021-11-08 15:29:21 +01:00
* @ param { Object } state Editor state .
2021-05-20 14:20:04 +02:00
* @ param { string } clientId The ID of the block to get the annotations for .
*
* @ return { Array } The annotations applicable to this block .
2018-12-17 05:52:00 +01:00
* /
2021-05-20 14:20:04 +02:00
const _ _experimentalGetAnnotationsForBlock = Object ( rememo [ "a" /* default */ ] ) ( ( state , blockClientId ) => {
var _state$blockClientId ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
return ( ( _state$blockClientId = state === null || state === void 0 ? void 0 : state [ blockClientId ] ) !== null && _state$blockClientId !== void 0 ? _state$blockClientId : [ ] ) . filter ( annotation => {
return annotation . selector === 'block' ;
} ) ;
} , ( state , blockClientId ) => {
var _state$blockClientId2 ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
return [ ( _state$blockClientId2 = state === null || state === void 0 ? void 0 : state [ blockClientId ] ) !== null && _state$blockClientId2 !== void 0 ? _state$blockClientId2 : EMPTY _ARRAY ] ;
} ) ;
function _ _experimentalGetAllAnnotationsForBlock ( state , blockClientId ) {
var _state$blockClientId3 ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
return ( _state$blockClientId3 = state === null || state === void 0 ? void 0 : state [ blockClientId ] ) !== null && _state$blockClientId3 !== void 0 ? _state$blockClientId3 : EMPTY _ARRAY ;
}
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Returns the annotations that apply to the given RichText instance .
2018-12-17 05:52:00 +01:00
*
2021-05-20 14:20:04 +02:00
* Both a blockClientId and a richTextIdentifier are required . This is because
* a block might have multiple ` RichText ` components . This does mean that every
* block needs to implement annotations itself .
*
* @ param { Object } state Editor state .
* @ param { string } blockClientId The client ID for the block .
* @ param { string } richTextIdentifier Unique identifier that identifies the given RichText .
* @ return { Array } All the annotations relevant for the ` RichText ` .
2018-12-17 05:52:00 +01:00
* /
2021-05-20 14:20:04 +02:00
const _ _experimentalGetAnnotationsForRichText = Object ( rememo [ "a" /* default */ ] ) ( ( state , blockClientId , richTextIdentifier ) => {
var _state$blockClientId4 ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
return ( ( _state$blockClientId4 = state === null || state === void 0 ? void 0 : 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 ,
... other
} ;
} ) ;
} , ( state , blockClientId ) => {
var _state$blockClientId5 ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
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 .
* /
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
function _ _experimentalGetAnnotations ( state ) {
return Object ( external _lodash _ [ "flatMap" ] ) ( state , annotations => {
return annotations ;
2021-01-28 03:04:13 +01:00
} ) ;
2018-12-17 05:52:00 +01:00
}
2021-05-20 14:20:04 +02:00
// EXTERNAL MODULE: ./node_modules/uuid/dist/esm-browser/v4.js + 4 modules
var v4 = _ _webpack _require _ _ ( "7Cbv" ) ;
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/actions.js
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* External dependencies
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
* /
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* @ typedef WPAnnotationRange
2018-12-18 04:14:52 +01:00
*
2021-05-20 14:20:04 +02:00
* @ property { number } start The offset where the annotation should start .
* @ property { number } end The offset where the annotation should end .
2018-12-18 04:14:52 +01:00
* /
/ * *
2021-05-20 14:20:04 +02:00
* Adds an annotation to a block .
2018-12-18 04:14:52 +01:00
*
2021-05-20 14:20:04 +02:00
* The ` block ` attribute refers to a block ID that needs to be annotated .
* ` isBlockAnnotation ` controls whether or not the annotation is a block
* annotation . The ` source ` is the source of the annotation , this will be used
* to identity groups of annotations .
*
* The ` range ` property is only relevant if the selector is 'range' .
*
* @ param { Object } annotation The annotation to add .
* @ param { string } annotation . blockClientId The blockClientId to add the annotation to .
* @ param { string } annotation . richTextIdentifier Identifier for the RichText instance the annotation applies to .
* @ param { WPAnnotationRange } annotation . range The range at which to apply this annotation .
* @ param { string } [ annotation . selector = "range" ] The way to apply this annotation .
* @ param { string } [ annotation . source = "default" ] The source that added the annotation .
* @ param { string } [ annotation . id ] The ID the annotation should have . Generates a UUID by default .
*
* @ return { Object } Action object .
2021-01-28 03:04:13 +01:00
* /
2021-11-15 13:50:17 +01:00
function _ _experimentalAddAnnotation ( _ref ) {
let {
blockClientId ,
richTextIdentifier = null ,
range = null ,
selector = 'range' ,
source = 'default' ,
id = Object ( v4 [ "a" /* default */ ] ) ( )
} = _ref ;
2021-05-20 14:20:04 +02:00
const action = {
type : 'ANNOTATION_ADD' ,
id ,
blockClientId ,
2021-05-19 17:09:27 +02:00
richTextIdentifier ,
2021-05-20 14:20:04 +02:00
source ,
selector
} ;
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
if ( selector === 'range' ) {
action . range = range ;
}
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
return action ;
}
/ * *
* Removes an annotation with a specific ID .
*
* @ param { string } annotationId The annotation to remove .
*
* @ return { Object } Action object .
* /
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
function _ _experimentalRemoveAnnotation ( annotationId ) {
return {
type : 'ANNOTATION_REMOVE' ,
annotationId
} ;
}
/ * *
* Updates the range of an annotation .
*
* @ param { string } annotationId ID of the annotation to update .
2021-11-08 15:29:21 +01:00
* @ param { number } start The start of the new range .
* @ param { number } end The end of the new range .
2021-05-20 14:20:04 +02:00
*
* @ return { Object } Action object .
* /
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
function _ _experimentalUpdateAnnotationRange ( annotationId , start , end ) {
return {
type : 'ANNOTATION_UPDATE_RANGE' ,
annotationId ,
start ,
end
} ;
}
/ * *
* Removes all annotations of a specific source .
*
* @ param { string } source The source to remove .
*
* @ return { Object } Action object .
* /
2021-05-19 17:09:27 +02:00
2021-05-20 14:20:04 +02:00
function _ _experimentalRemoveAnnotationsBySource ( source ) {
return {
type : 'ANNOTATION_REMOVE_SOURCE' ,
source
} ;
}
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/store/index.js
2021-01-28 03:04:13 +01:00
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
/ * *
2021-05-20 14:20:04 +02:00
* Module Constants
2021-01-28 03:04:13 +01:00
* /
/ * *
2021-05-20 14:20:04 +02:00
* Store definition for the annotations namespace .
*
* @ see https : //github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
*
* @ type { Object }
2021-01-28 03:04:13 +01:00
* /
2021-05-20 14:20:04 +02:00
const store = Object ( external _wp _data _ [ "createReduxStore" ] ) ( STORE _NAME , {
reducer : reducer ,
selectors : selectors _namespaceObject ,
actions : actions _namespaceObject
} ) ;
Object ( external _wp _data _ [ "register" ] ) ( store ) ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
// CONCATENATED MODULE: ./node_modules/@wordpress/annotations/build-module/index.js
2021-01-28 03:04:13 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Internal dependencies
2021-01-28 03:04:13 +01:00
* /
2021-05-20 14:20:04 +02:00
/***/ } ) ,
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ "7Cbv" :
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
"use strict" ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
// 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 ) ;
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 ) ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
if ( ! getRandomValues ) {
throw new Error ( 'crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported' ) ;
}
}
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 ) ;
2021-01-28 03:04:13 +01:00
}
2021-05-20 14:20:04 +02:00
/* harmony default export */ var esm _browser _validate = ( validate ) ;
// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/stringify.js
2021-01-28 03:04:13 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Convert array of 16 byte values to UUID string format of the form :
* XXXXXXXX - XXXX - XXXX - XXXX - XXXXXXXXXXXX
2021-01-28 03:04:13 +01:00
* /
2021-05-20 14:20:04 +02:00
var byteToHex = [ ] ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
for ( var stringify _i = 0 ; stringify _i < 256 ; ++ stringify _i ) {
byteToHex . push ( ( stringify _i + 0x100 ) . toString ( 16 ) . substr ( 1 ) ) ;
}
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
function stringify ( arr ) {
var offset = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 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
// 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
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
if ( ! esm _browser _validate ( uuid ) ) {
throw TypeError ( 'Stringified UUID is invalid' ) ;
}
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
return uuid ;
}
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/* harmony default export */ var esm _browser _stringify = ( stringify ) ;
// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/v4.js
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
function v4 ( options , buf , offset ) {
options = options || { } ;
var 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
if ( buf ) {
offset = offset || 0 ;
for ( var i = 0 ; i < 16 ; ++ i ) {
buf [ offset + i ] = rnds [ i ] ;
}
return buf ;
2021-01-28 03:04:13 +01:00
}
2021-05-20 14:20:04 +02:00
return esm _browser _stringify ( rnds ) ;
2021-01-28 03:04:13 +01:00
}
2021-05-20 14:20:04 +02:00
/* harmony default export */ var esm _browser _v4 = _ _webpack _exports _ _ [ "a" ] = ( v4 ) ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ } ) ,
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ "YLtl" :
/***/ ( function ( module , exports ) {
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
( function ( ) { module . exports = window [ "lodash" ] ; } ( ) ) ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ } ) ,
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ "g56x" :
/***/ ( function ( module , exports ) {
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
( function ( ) { module . exports = window [ "wp" ] [ "hooks" ] ; } ( ) ) ;
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ } ) ,
2021-01-28 03:04:13 +01:00
2021-05-20 14:20:04 +02:00
/***/ "l3Sj" :
/***/ ( function ( module , exports ) {
2018-12-18 04:14:52 +01:00
2021-05-20 14:20:04 +02:00
( function ( ) { module . exports = window [ "wp" ] [ "i18n" ] ; } ( ) ) ;
2020-07-07 16:43:35 +02:00
2021-05-20 14:20:04 +02:00
/***/ } ) ,
2020-07-07 16:43:35 +02:00
2021-05-20 14:20:04 +02:00
/***/ "pPDe" :
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
2018-12-18 04:14:52 +01:00
2021-05-20 14:20:04 +02:00
"use strict" ;
2018-12-18 04:14:52 +01:00
2020-06-26 15:33:47 +02:00
2021-05-20 14:20:04 +02:00
var LEAF _KEY , hasWeakMap ;
2018-12-18 04:14:52 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Arbitrary value used as key for referencing cache object in WeakMap tree .
*
* @ type { Object }
2018-12-18 04:14:52 +01:00
* /
2021-05-20 14:20:04 +02:00
LEAF _KEY = { } ;
2018-12-18 04:14:52 +01:00
2020-06-26 15:33:47 +02:00
/ * *
2021-05-20 14:20:04 +02:00
* Whether environment supports WeakMap .
2020-06-26 15:33:47 +02:00
*
2021-05-20 14:20:04 +02:00
* @ type { boolean }
2020-06-26 15:33:47 +02:00
* /
2021-05-20 14:20:04 +02:00
hasWeakMap = typeof WeakMap !== 'undefined' ;
2020-06-26 15:33:47 +02:00
2018-12-18 04:14:52 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Returns the first argument as the sole entry in an array .
2018-12-18 04:14:52 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { * } value Value to return .
2018-12-18 04:14:52 +01:00
*
2021-05-20 14:20:04 +02:00
* @ return { Array } Value returned as entry in array .
2018-12-18 04:14:52 +01:00
* /
2021-05-20 14:20:04 +02:00
function arrayOf ( value ) {
return [ value ] ;
}
2018-12-18 04:14:52 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* 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 .
2018-12-17 05:52:00 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { * } value Value to test .
2018-12-17 05:52:00 +01:00
*
2021-05-20 14:20:04 +02:00
* @ return { boolean } Whether value is object - like .
2018-12-17 05:52:00 +01:00
* /
2021-05-20 14:20:04 +02:00
function isObjectLike ( value ) {
return ! ! value && 'object' === typeof value ;
2018-12-18 04:14:52 +01:00
}
2021-05-20 14:20:04 +02:00
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Creates and returns a new cache object .
2018-12-17 05:52:00 +01:00
*
2021-05-20 14:20:04 +02:00
* @ return { Object } Cache object .
2018-12-17 05:52:00 +01:00
* /
2021-05-20 14:20:04 +02:00
function createCache ( ) {
var cache = {
clear : function ( ) {
cache . head = null ;
} ,
} ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
return cache ;
2018-12-18 04:14:52 +01:00
}
2021-05-20 14:20:04 +02:00
2018-12-17 05:52:00 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* Returns true if entries within the two arrays are strictly equal by
* reference from a starting index .
2018-12-17 05:52:00 +01:00
*
2021-05-20 14:20:04 +02:00
* @ param { Array } a First array .
* @ param { Array } b Second array .
* @ param { number } fromIndex Index from which to start comparison .
2018-12-18 04:14:52 +01:00
*
2021-05-20 14:20:04 +02:00
* @ return { boolean } Whether arrays are shallowly equal .
2020-01-22 23:06:21 +01:00
* /
2021-05-20 14:20:04 +02:00
function isShallowEqual ( a , b , fromIndex ) {
var i ;
2019-10-15 17:37:08 +02:00
2021-05-20 14:20:04 +02:00
if ( a . length !== b . length ) {
return false ;
}
for ( i = fromIndex ; i < a . length ; i ++ ) {
if ( a [ i ] !== b [ i ] ) {
return false ;
}
}
return true ;
2020-01-22 23:06:21 +01:00
}
2019-10-15 17:37:08 +02:00
2018-12-18 04:14:52 +01:00
/ * *
2021-05-20 14:20:04 +02:00
* 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 .
2018-12-18 04:14:52 +01:00
* /
2021-05-20 14:20:04 +02:00
/* harmony default export */ _ _webpack _exports _ _ [ "a" ] = ( function ( selector , getDependants ) {
var rootCache , getCache ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// Use object source as dependant if getter not provided
if ( ! getDependants ) {
getDependants = arrayOf ;
}
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
2021-05-20 14:20:04 +02:00
/ * *
* 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 ;
}
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
2021-05-20 14:20:04 +02:00
/ * *
* 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 ;
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
2021-05-20 14:20:04 +02:00
for ( i = 0 ; i < dependants . length ; i ++ ) {
dependant = dependants [ i ] ;
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
2021-05-20 14:20:04 +02:00
// Can only compose WeakMap from object-like key.
if ( ! isObjectLike ( dependant ) ) {
isUniqueByDependants = false ;
break ;
}
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
2021-05-20 14:20:04 +02:00
// 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 ;
}
}
2019-10-15 17:37:08 +02:00
2021-05-20 14:20:04 +02:00
// 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 ) ;
}
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
return caches . get ( LEAF _KEY ) ;
}
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// 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 ) ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// 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:
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
node = {
// Generate the result from original function
val : selector . apply ( null , args ) ,
} ;
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
// 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 ;
}
2018-12-17 05:52:00 +01:00
2021-05-20 14:20:04 +02:00
cache . head = node ;
return node . val ;
}
callSelector . getDependants = getDependants ;
callSelector . clear = clear ;
clear ( ) ;
return callSelector ;
} ) ;
/***/ } ) ,
/***/ "qRz9" :
/***/ ( function ( module , exports ) {
( function ( ) { module . exports = window [ "wp" ] [ "richText" ] ; } ( ) ) ;
2018-12-17 05:52:00 +01:00
/***/ } )
2018-12-18 04:14:52 +01:00
/******/ } ) ;