Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: blocks.js
* @param {Object} action Dispatched action.
[8000] Fix | Delete
*
[8001] Fix | Delete
* @return {Object} Updated state.
[8002] Fix | Delete
*/
[8003] Fix | Delete
function blockVariations(state = {}, action) {
[8004] Fix | Delete
var _state$action$blockNa2, _state$action$blockNa3;
[8005] Fix | Delete
switch (action.type) {
[8006] Fix | Delete
case 'ADD_BLOCK_TYPES':
[8007] Fix | Delete
return {
[8008] Fix | Delete
...state,
[8009] Fix | Delete
...Object.fromEntries(Object.entries(keyBlockTypesByName(action.blockTypes)).map(([name, blockType]) => {
[8010] Fix | Delete
var _blockType$variations, _state$blockType$name2;
[8011] Fix | Delete
return [name, getUniqueItemsByName([...((_blockType$variations = blockType.variations) !== null && _blockType$variations !== void 0 ? _blockType$variations : []).map(variation => ({
[8012] Fix | Delete
...variation,
[8013] Fix | Delete
source: 'block'
[8014] Fix | Delete
})), ...((_state$blockType$name2 = state[blockType.name]) !== null && _state$blockType$name2 !== void 0 ? _state$blockType$name2 : []).filter(({
[8015] Fix | Delete
source
[8016] Fix | Delete
}) => 'block' !== source)])];
[8017] Fix | Delete
}))
[8018] Fix | Delete
};
[8019] Fix | Delete
case 'ADD_BLOCK_VARIATIONS':
[8020] Fix | Delete
return {
[8021] Fix | Delete
...state,
[8022] Fix | Delete
[action.blockName]: getUniqueItemsByName([...((_state$action$blockNa2 = state[action.blockName]) !== null && _state$action$blockNa2 !== void 0 ? _state$action$blockNa2 : []), ...action.variations])
[8023] Fix | Delete
};
[8024] Fix | Delete
case 'REMOVE_BLOCK_VARIATIONS':
[8025] Fix | Delete
return {
[8026] Fix | Delete
...state,
[8027] Fix | Delete
[action.blockName]: ((_state$action$blockNa3 = state[action.blockName]) !== null && _state$action$blockNa3 !== void 0 ? _state$action$blockNa3 : []).filter(variation => action.variationNames.indexOf(variation.name) === -1)
[8028] Fix | Delete
};
[8029] Fix | Delete
}
[8030] Fix | Delete
return state;
[8031] Fix | Delete
}
[8032] Fix | Delete
[8033] Fix | Delete
/**
[8034] Fix | Delete
* Higher-order Reducer creating a reducer keeping track of given block name.
[8035] Fix | Delete
*
[8036] Fix | Delete
* @param {string} setActionType Action type.
[8037] Fix | Delete
*
[8038] Fix | Delete
* @return {Function} Reducer.
[8039] Fix | Delete
*/
[8040] Fix | Delete
function createBlockNameSetterReducer(setActionType) {
[8041] Fix | Delete
return (state = null, action) => {
[8042] Fix | Delete
switch (action.type) {
[8043] Fix | Delete
case 'REMOVE_BLOCK_TYPES':
[8044] Fix | Delete
if (action.names.indexOf(state) !== -1) {
[8045] Fix | Delete
return null;
[8046] Fix | Delete
}
[8047] Fix | Delete
return state;
[8048] Fix | Delete
case setActionType:
[8049] Fix | Delete
return action.name || null;
[8050] Fix | Delete
}
[8051] Fix | Delete
return state;
[8052] Fix | Delete
};
[8053] Fix | Delete
}
[8054] Fix | Delete
const defaultBlockName = createBlockNameSetterReducer('SET_DEFAULT_BLOCK_NAME');
[8055] Fix | Delete
const freeformFallbackBlockName = createBlockNameSetterReducer('SET_FREEFORM_FALLBACK_BLOCK_NAME');
[8056] Fix | Delete
const unregisteredFallbackBlockName = createBlockNameSetterReducer('SET_UNREGISTERED_FALLBACK_BLOCK_NAME');
[8057] Fix | Delete
const groupingBlockName = createBlockNameSetterReducer('SET_GROUPING_BLOCK_NAME');
[8058] Fix | Delete
[8059] Fix | Delete
/**
[8060] Fix | Delete
* Reducer managing the categories
[8061] Fix | Delete
*
[8062] Fix | Delete
* @param {WPBlockCategory[]} state Current state.
[8063] Fix | Delete
* @param {Object} action Dispatched action.
[8064] Fix | Delete
*
[8065] Fix | Delete
* @return {WPBlockCategory[]} Updated state.
[8066] Fix | Delete
*/
[8067] Fix | Delete
function categories(state = DEFAULT_CATEGORIES, action) {
[8068] Fix | Delete
switch (action.type) {
[8069] Fix | Delete
case 'SET_CATEGORIES':
[8070] Fix | Delete
return action.categories || [];
[8071] Fix | Delete
case 'UPDATE_CATEGORY':
[8072] Fix | Delete
{
[8073] Fix | Delete
if (!action.category || !Object.keys(action.category).length) {
[8074] Fix | Delete
return state;
[8075] Fix | Delete
}
[8076] Fix | Delete
const categoryToChange = state.find(({
[8077] Fix | Delete
slug
[8078] Fix | Delete
}) => slug === action.slug);
[8079] Fix | Delete
if (categoryToChange) {
[8080] Fix | Delete
return state.map(category => {
[8081] Fix | Delete
if (category.slug === action.slug) {
[8082] Fix | Delete
return {
[8083] Fix | Delete
...category,
[8084] Fix | Delete
...action.category
[8085] Fix | Delete
};
[8086] Fix | Delete
}
[8087] Fix | Delete
return category;
[8088] Fix | Delete
});
[8089] Fix | Delete
}
[8090] Fix | Delete
}
[8091] Fix | Delete
}
[8092] Fix | Delete
return state;
[8093] Fix | Delete
}
[8094] Fix | Delete
function collections(state = {}, action) {
[8095] Fix | Delete
switch (action.type) {
[8096] Fix | Delete
case 'ADD_BLOCK_COLLECTION':
[8097] Fix | Delete
return {
[8098] Fix | Delete
...state,
[8099] Fix | Delete
[action.namespace]: {
[8100] Fix | Delete
title: action.title,
[8101] Fix | Delete
icon: action.icon
[8102] Fix | Delete
}
[8103] Fix | Delete
};
[8104] Fix | Delete
case 'REMOVE_BLOCK_COLLECTION':
[8105] Fix | Delete
return omit(state, action.namespace);
[8106] Fix | Delete
}
[8107] Fix | Delete
return state;
[8108] Fix | Delete
}
[8109] Fix | Delete
function blockBindingsSources(state = {}, action) {
[8110] Fix | Delete
if (action.type === 'REGISTER_BLOCK_BINDINGS_SOURCE') {
[8111] Fix | Delete
return {
[8112] Fix | Delete
...state,
[8113] Fix | Delete
[action.sourceName]: {
[8114] Fix | Delete
label: action.sourceLabel,
[8115] Fix | Delete
getValue: action.getValue,
[8116] Fix | Delete
setValue: action.setValue,
[8117] Fix | Delete
setValues: action.setValues,
[8118] Fix | Delete
getPlaceholder: action.getPlaceholder,
[8119] Fix | Delete
canUserEditValue: action.canUserEditValue || (() => false)
[8120] Fix | Delete
}
[8121] Fix | Delete
};
[8122] Fix | Delete
}
[8123] Fix | Delete
return state;
[8124] Fix | Delete
}
[8125] Fix | Delete
/* harmony default export */ const reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
[8126] Fix | Delete
bootstrappedBlockTypes,
[8127] Fix | Delete
unprocessedBlockTypes,
[8128] Fix | Delete
blockTypes,
[8129] Fix | Delete
blockStyles,
[8130] Fix | Delete
blockVariations,
[8131] Fix | Delete
defaultBlockName,
[8132] Fix | Delete
freeformFallbackBlockName,
[8133] Fix | Delete
unregisteredFallbackBlockName,
[8134] Fix | Delete
groupingBlockName,
[8135] Fix | Delete
categories,
[8136] Fix | Delete
collections,
[8137] Fix | Delete
blockBindingsSources
[8138] Fix | Delete
}));
[8139] Fix | Delete
[8140] Fix | Delete
// EXTERNAL MODULE: ./node_modules/remove-accents/index.js
[8141] Fix | Delete
var remove_accents = __webpack_require__(9681);
[8142] Fix | Delete
var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents);
[8143] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/blocks/build-module/store/utils.js
[8144] Fix | Delete
/**
[8145] Fix | Delete
* Helper util to return a value from a certain path of the object.
[8146] Fix | Delete
* Path is specified as either:
[8147] Fix | Delete
* - a string of properties, separated by dots, for example: "x.y".
[8148] Fix | Delete
* - an array of properties, for example `[ 'x', 'y' ]`.
[8149] Fix | Delete
* You can also specify a default value in case the result is nullish.
[8150] Fix | Delete
*
[8151] Fix | Delete
* @param {Object} object Input object.
[8152] Fix | Delete
* @param {string|Array} path Path to the object property.
[8153] Fix | Delete
* @param {*} defaultValue Default value if the value at the specified path is nullish.
[8154] Fix | Delete
* @return {*} Value of the object property at the specified path.
[8155] Fix | Delete
*/
[8156] Fix | Delete
const getValueFromObjectPath = (object, path, defaultValue) => {
[8157] Fix | Delete
var _value;
[8158] Fix | Delete
const normalizedPath = Array.isArray(path) ? path : path.split('.');
[8159] Fix | Delete
let value = object;
[8160] Fix | Delete
normalizedPath.forEach(fieldName => {
[8161] Fix | Delete
value = value?.[fieldName];
[8162] Fix | Delete
});
[8163] Fix | Delete
return (_value = value) !== null && _value !== void 0 ? _value : defaultValue;
[8164] Fix | Delete
};
[8165] Fix | Delete
function utils_isObject(candidate) {
[8166] Fix | Delete
return typeof candidate === 'object' && candidate.constructor === Object && candidate !== null;
[8167] Fix | Delete
}
[8168] Fix | Delete
[8169] Fix | Delete
/**
[8170] Fix | Delete
* Determine whether a set of object properties matches a given object.
[8171] Fix | Delete
*
[8172] Fix | Delete
* Given an object of block attributes and an object of variation attributes,
[8173] Fix | Delete
* this function checks recursively whether all the variation attributes are
[8174] Fix | Delete
* present in the block attributes object.
[8175] Fix | Delete
*
[8176] Fix | Delete
* @param {Object} blockAttributes The object to inspect.
[8177] Fix | Delete
* @param {Object} variationAttributes The object of property values to match.
[8178] Fix | Delete
* @return {boolean} Whether the block attributes match the variation attributes.
[8179] Fix | Delete
*/
[8180] Fix | Delete
function matchesAttributes(blockAttributes, variationAttributes) {
[8181] Fix | Delete
if (utils_isObject(blockAttributes) && utils_isObject(variationAttributes)) {
[8182] Fix | Delete
return Object.entries(variationAttributes).every(([key, value]) => matchesAttributes(blockAttributes?.[key], value));
[8183] Fix | Delete
}
[8184] Fix | Delete
return blockAttributes === variationAttributes;
[8185] Fix | Delete
}
[8186] Fix | Delete
[8187] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/blocks/build-module/store/selectors.js
[8188] Fix | Delete
/**
[8189] Fix | Delete
* External dependencies
[8190] Fix | Delete
*/
[8191] Fix | Delete
[8192] Fix | Delete
[8193] Fix | Delete
/**
[8194] Fix | Delete
* WordPress dependencies
[8195] Fix | Delete
*/
[8196] Fix | Delete
[8197] Fix | Delete
[8198] Fix | Delete
[8199] Fix | Delete
/**
[8200] Fix | Delete
* Internal dependencies
[8201] Fix | Delete
*/
[8202] Fix | Delete
[8203] Fix | Delete
[8204] Fix | Delete
/** @typedef {import('../api/registration').WPBlockVariation} WPBlockVariation */
[8205] Fix | Delete
/** @typedef {import('../api/registration').WPBlockVariationScope} WPBlockVariationScope */
[8206] Fix | Delete
/** @typedef {import('./reducer').WPBlockCategory} WPBlockCategory */
[8207] Fix | Delete
[8208] Fix | Delete
/**
[8209] Fix | Delete
* Given a block name or block type object, returns the corresponding
[8210] Fix | Delete
* normalized block type object.
[8211] Fix | Delete
*
[8212] Fix | Delete
* @param {Object} state Blocks state.
[8213] Fix | Delete
* @param {(string|Object)} nameOrType Block name or type object
[8214] Fix | Delete
*
[8215] Fix | Delete
* @return {Object} Block type object.
[8216] Fix | Delete
*/
[8217] Fix | Delete
const getNormalizedBlockType = (state, nameOrType) => 'string' === typeof nameOrType ? selectors_getBlockType(state, nameOrType) : nameOrType;
[8218] Fix | Delete
[8219] Fix | Delete
/**
[8220] Fix | Delete
* Returns all the available block types.
[8221] Fix | Delete
*
[8222] Fix | Delete
* @param {Object} state Data state.
[8223] Fix | Delete
*
[8224] Fix | Delete
* @example
[8225] Fix | Delete
* ```js
[8226] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8227] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8228] Fix | Delete
*
[8229] Fix | Delete
* const ExampleComponent = () => {
[8230] Fix | Delete
* const blockTypes = useSelect(
[8231] Fix | Delete
* ( select ) => select( blocksStore ).getBlockTypes(),
[8232] Fix | Delete
* []
[8233] Fix | Delete
* );
[8234] Fix | Delete
*
[8235] Fix | Delete
* return (
[8236] Fix | Delete
* <ul>
[8237] Fix | Delete
* { blockTypes.map( ( block ) => (
[8238] Fix | Delete
* <li key={ block.name }>{ block.title }</li>
[8239] Fix | Delete
* ) ) }
[8240] Fix | Delete
* </ul>
[8241] Fix | Delete
* );
[8242] Fix | Delete
* };
[8243] Fix | Delete
* ```
[8244] Fix | Delete
*
[8245] Fix | Delete
* @return {Array} Block Types.
[8246] Fix | Delete
*/
[8247] Fix | Delete
const selectors_getBlockTypes = (0,external_wp_data_namespaceObject.createSelector)(state => Object.values(state.blockTypes), state => [state.blockTypes]);
[8248] Fix | Delete
[8249] Fix | Delete
/**
[8250] Fix | Delete
* Returns a block type by name.
[8251] Fix | Delete
*
[8252] Fix | Delete
* @param {Object} state Data state.
[8253] Fix | Delete
* @param {string} name Block type name.
[8254] Fix | Delete
*
[8255] Fix | Delete
* @example
[8256] Fix | Delete
* ```js
[8257] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8258] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8259] Fix | Delete
*
[8260] Fix | Delete
* const ExampleComponent = () => {
[8261] Fix | Delete
* const paragraphBlock = useSelect( ( select ) =>
[8262] Fix | Delete
* ( select ) => select( blocksStore ).getBlockType( 'core/paragraph' ),
[8263] Fix | Delete
* []
[8264] Fix | Delete
* );
[8265] Fix | Delete
*
[8266] Fix | Delete
* return (
[8267] Fix | Delete
* <ul>
[8268] Fix | Delete
* { paragraphBlock &&
[8269] Fix | Delete
* Object.entries( paragraphBlock.supports ).map(
[8270] Fix | Delete
* ( blockSupportsEntry ) => {
[8271] Fix | Delete
* const [ propertyName, value ] = blockSupportsEntry;
[8272] Fix | Delete
* return (
[8273] Fix | Delete
* <li
[8274] Fix | Delete
* key={ propertyName }
[8275] Fix | Delete
* >{ `${ propertyName } : ${ value }` }</li>
[8276] Fix | Delete
* );
[8277] Fix | Delete
* }
[8278] Fix | Delete
* ) }
[8279] Fix | Delete
* </ul>
[8280] Fix | Delete
* );
[8281] Fix | Delete
* };
[8282] Fix | Delete
* ```
[8283] Fix | Delete
*
[8284] Fix | Delete
* @return {Object?} Block Type.
[8285] Fix | Delete
*/
[8286] Fix | Delete
function selectors_getBlockType(state, name) {
[8287] Fix | Delete
return state.blockTypes[name];
[8288] Fix | Delete
}
[8289] Fix | Delete
[8290] Fix | Delete
/**
[8291] Fix | Delete
* Returns block styles by block name.
[8292] Fix | Delete
*
[8293] Fix | Delete
* @param {Object} state Data state.
[8294] Fix | Delete
* @param {string} name Block type name.
[8295] Fix | Delete
*
[8296] Fix | Delete
* @example
[8297] Fix | Delete
* ```js
[8298] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8299] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8300] Fix | Delete
*
[8301] Fix | Delete
* const ExampleComponent = () => {
[8302] Fix | Delete
* const buttonBlockStyles = useSelect( ( select ) =>
[8303] Fix | Delete
* select( blocksStore ).getBlockStyles( 'core/button' ),
[8304] Fix | Delete
* []
[8305] Fix | Delete
* );
[8306] Fix | Delete
*
[8307] Fix | Delete
* return (
[8308] Fix | Delete
* <ul>
[8309] Fix | Delete
* { buttonBlockStyles &&
[8310] Fix | Delete
* buttonBlockStyles.map( ( style ) => (
[8311] Fix | Delete
* <li key={ style.name }>{ style.label }</li>
[8312] Fix | Delete
* ) ) }
[8313] Fix | Delete
* </ul>
[8314] Fix | Delete
* );
[8315] Fix | Delete
* };
[8316] Fix | Delete
* ```
[8317] Fix | Delete
*
[8318] Fix | Delete
* @return {Array?} Block Styles.
[8319] Fix | Delete
*/
[8320] Fix | Delete
function getBlockStyles(state, name) {
[8321] Fix | Delete
return state.blockStyles[name];
[8322] Fix | Delete
}
[8323] Fix | Delete
[8324] Fix | Delete
/**
[8325] Fix | Delete
* Returns block variations by block name.
[8326] Fix | Delete
*
[8327] Fix | Delete
* @param {Object} state Data state.
[8328] Fix | Delete
* @param {string} blockName Block type name.
[8329] Fix | Delete
* @param {WPBlockVariationScope} [scope] Block variation scope name.
[8330] Fix | Delete
*
[8331] Fix | Delete
* @example
[8332] Fix | Delete
* ```js
[8333] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8334] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8335] Fix | Delete
*
[8336] Fix | Delete
* const ExampleComponent = () => {
[8337] Fix | Delete
* const socialLinkVariations = useSelect( ( select ) =>
[8338] Fix | Delete
* select( blocksStore ).getBlockVariations( 'core/social-link' ),
[8339] Fix | Delete
* []
[8340] Fix | Delete
* );
[8341] Fix | Delete
*
[8342] Fix | Delete
* return (
[8343] Fix | Delete
* <ul>
[8344] Fix | Delete
* { socialLinkVariations &&
[8345] Fix | Delete
* socialLinkVariations.map( ( variation ) => (
[8346] Fix | Delete
* <li key={ variation.name }>{ variation.title }</li>
[8347] Fix | Delete
* ) ) }
[8348] Fix | Delete
* </ul>
[8349] Fix | Delete
* );
[8350] Fix | Delete
* };
[8351] Fix | Delete
* ```
[8352] Fix | Delete
*
[8353] Fix | Delete
* @return {(WPBlockVariation[]|void)} Block variations.
[8354] Fix | Delete
*/
[8355] Fix | Delete
const selectors_getBlockVariations = (0,external_wp_data_namespaceObject.createSelector)((state, blockName, scope) => {
[8356] Fix | Delete
const variations = state.blockVariations[blockName];
[8357] Fix | Delete
if (!variations || !scope) {
[8358] Fix | Delete
return variations;
[8359] Fix | Delete
}
[8360] Fix | Delete
return variations.filter(variation => {
[8361] Fix | Delete
// For backward compatibility reasons, variation's scope defaults to
[8362] Fix | Delete
// `block` and `inserter` when not set.
[8363] Fix | Delete
return (variation.scope || ['block', 'inserter']).includes(scope);
[8364] Fix | Delete
});
[8365] Fix | Delete
}, (state, blockName) => [state.blockVariations[blockName]]);
[8366] Fix | Delete
[8367] Fix | Delete
/**
[8368] Fix | Delete
* Returns the active block variation for a given block based on its attributes.
[8369] Fix | Delete
* Variations are determined by their `isActive` property.
[8370] Fix | Delete
* Which is either an array of block attribute keys or a function.
[8371] Fix | Delete
*
[8372] Fix | Delete
* In case of an array of block attribute keys, the `attributes` are compared
[8373] Fix | Delete
* to the variation's attributes using strict equality check.
[8374] Fix | Delete
*
[8375] Fix | Delete
* In case of function type, the function should accept a block's attributes
[8376] Fix | Delete
* and the variation's attributes and determines if a variation is active.
[8377] Fix | Delete
* A function that accepts a block's attributes and the variation's attributes and determines if a variation is active.
[8378] Fix | Delete
*
[8379] Fix | Delete
* @param {Object} state Data state.
[8380] Fix | Delete
* @param {string} blockName Name of block (example: “core/columns”).
[8381] Fix | Delete
* @param {Object} attributes Block attributes used to determine active variation.
[8382] Fix | Delete
* @param {WPBlockVariationScope} [scope] Block variation scope name.
[8383] Fix | Delete
*
[8384] Fix | Delete
* @example
[8385] Fix | Delete
* ```js
[8386] Fix | Delete
* import { __ } from '@wordpress/i18n';
[8387] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8388] Fix | Delete
* import { store as blockEditorStore } from '@wordpress/block-editor';
[8389] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8390] Fix | Delete
*
[8391] Fix | Delete
* const ExampleComponent = () => {
[8392] Fix | Delete
* // This example assumes that a core/embed block is the first block in the Block Editor.
[8393] Fix | Delete
* const activeBlockVariation = useSelect( ( select ) => {
[8394] Fix | Delete
* // Retrieve the list of blocks.
[8395] Fix | Delete
* const [ firstBlock ] = select( blockEditorStore ).getBlocks()
[8396] Fix | Delete
*
[8397] Fix | Delete
* // Return the active block variation for the first block.
[8398] Fix | Delete
* return select( blocksStore ).getActiveBlockVariation(
[8399] Fix | Delete
* firstBlock.name,
[8400] Fix | Delete
* firstBlock.attributes
[8401] Fix | Delete
* );
[8402] Fix | Delete
* }, [] );
[8403] Fix | Delete
*
[8404] Fix | Delete
* return activeBlockVariation && activeBlockVariation.name === 'spotify' ? (
[8405] Fix | Delete
* <p>{ __( 'Spotify variation' ) }</p>
[8406] Fix | Delete
* ) : (
[8407] Fix | Delete
* <p>{ __( 'Other variation' ) }</p>
[8408] Fix | Delete
* );
[8409] Fix | Delete
* };
[8410] Fix | Delete
* ```
[8411] Fix | Delete
*
[8412] Fix | Delete
* @return {(WPBlockVariation|undefined)} Active block variation.
[8413] Fix | Delete
*/
[8414] Fix | Delete
function getActiveBlockVariation(state, blockName, attributes, scope) {
[8415] Fix | Delete
const variations = selectors_getBlockVariations(state, blockName, scope);
[8416] Fix | Delete
if (!variations) {
[8417] Fix | Delete
return variations;
[8418] Fix | Delete
}
[8419] Fix | Delete
const blockType = selectors_getBlockType(state, blockName);
[8420] Fix | Delete
const attributeKeys = Object.keys(blockType?.attributes || {});
[8421] Fix | Delete
let match;
[8422] Fix | Delete
let maxMatchedAttributes = 0;
[8423] Fix | Delete
for (const variation of variations) {
[8424] Fix | Delete
if (Array.isArray(variation.isActive)) {
[8425] Fix | Delete
const definedAttributes = variation.isActive.filter(attribute => {
[8426] Fix | Delete
// We support nested attribute paths, e.g. `layout.type`.
[8427] Fix | Delete
// In this case, we need to check if the part before the
[8428] Fix | Delete
// first dot is a known attribute.
[8429] Fix | Delete
const topLevelAttribute = attribute.split('.')[0];
[8430] Fix | Delete
return attributeKeys.includes(topLevelAttribute);
[8431] Fix | Delete
});
[8432] Fix | Delete
const definedAttributesLength = definedAttributes.length;
[8433] Fix | Delete
if (definedAttributesLength === 0) {
[8434] Fix | Delete
continue;
[8435] Fix | Delete
}
[8436] Fix | Delete
const isMatch = definedAttributes.every(attribute => {
[8437] Fix | Delete
const variationAttributeValue = getValueFromObjectPath(variation.attributes, attribute);
[8438] Fix | Delete
if (variationAttributeValue === undefined) {
[8439] Fix | Delete
return false;
[8440] Fix | Delete
}
[8441] Fix | Delete
let blockAttributeValue = getValueFromObjectPath(attributes, attribute);
[8442] Fix | Delete
if (blockAttributeValue instanceof external_wp_richText_namespaceObject.RichTextData) {
[8443] Fix | Delete
blockAttributeValue = blockAttributeValue.toHTMLString();
[8444] Fix | Delete
}
[8445] Fix | Delete
return matchesAttributes(blockAttributeValue, variationAttributeValue);
[8446] Fix | Delete
});
[8447] Fix | Delete
if (isMatch && definedAttributesLength > maxMatchedAttributes) {
[8448] Fix | Delete
match = variation;
[8449] Fix | Delete
maxMatchedAttributes = definedAttributesLength;
[8450] Fix | Delete
}
[8451] Fix | Delete
} else if (variation.isActive?.(attributes, variation.attributes)) {
[8452] Fix | Delete
// If isActive is a function, we cannot know how many attributes it matches.
[8453] Fix | Delete
// This means that we cannot compare the specificity of our matches,
[8454] Fix | Delete
// and simply return the best match we have found.
[8455] Fix | Delete
return match || variation;
[8456] Fix | Delete
}
[8457] Fix | Delete
}
[8458] Fix | Delete
return match;
[8459] Fix | Delete
}
[8460] Fix | Delete
[8461] Fix | Delete
/**
[8462] Fix | Delete
* Returns the default block variation for the given block type.
[8463] Fix | Delete
* When there are multiple variations annotated as the default one,
[8464] Fix | Delete
* the last added item is picked. This simplifies registering overrides.
[8465] Fix | Delete
* When there is no default variation set, it returns the first item.
[8466] Fix | Delete
*
[8467] Fix | Delete
* @param {Object} state Data state.
[8468] Fix | Delete
* @param {string} blockName Block type name.
[8469] Fix | Delete
* @param {WPBlockVariationScope} [scope] Block variation scope name.
[8470] Fix | Delete
*
[8471] Fix | Delete
* @example
[8472] Fix | Delete
* ```js
[8473] Fix | Delete
* import { __, sprintf } from '@wordpress/i18n';
[8474] Fix | Delete
* import { store as blocksStore } from '@wordpress/blocks';
[8475] Fix | Delete
* import { useSelect } from '@wordpress/data';
[8476] Fix | Delete
*
[8477] Fix | Delete
* const ExampleComponent = () => {
[8478] Fix | Delete
* const defaultEmbedBlockVariation = useSelect( ( select ) =>
[8479] Fix | Delete
* select( blocksStore ).getDefaultBlockVariation( 'core/embed' ),
[8480] Fix | Delete
* []
[8481] Fix | Delete
* );
[8482] Fix | Delete
*
[8483] Fix | Delete
* return (
[8484] Fix | Delete
* defaultEmbedBlockVariation && (
[8485] Fix | Delete
* <p>
[8486] Fix | Delete
* { sprintf(
[8487] Fix | Delete
* __( 'core/embed default variation: %s' ),
[8488] Fix | Delete
* defaultEmbedBlockVariation.title
[8489] Fix | Delete
* ) }
[8490] Fix | Delete
* </p>
[8491] Fix | Delete
* )
[8492] Fix | Delete
* );
[8493] Fix | Delete
* };
[8494] Fix | Delete
* ```
[8495] Fix | Delete
*
[8496] Fix | Delete
* @return {?WPBlockVariation} The default block variation.
[8497] Fix | Delete
*/
[8498] Fix | Delete
function getDefaultBlockVariation(state, blockName, scope) {
[8499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function