Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import * as hooks from '@wordpress/hooks';
hooks.addAction('my-action', 'my/namespace', () => {});
hooks.addAction('my-action', 'my/namespace', () => {}, 20);
hooks.addFilter('my-filter', 'my/namespace', (foo: string, bar: number) => `${foo}${bar}`);
hooks.addFilter('my-filter', 'my/namespace', (foo: number, bar: number) => bar, 23);
hooks.removeAction('my-action', 'my/namespace');
hooks.removeFilter('my-filter', 'my/namespace');
// $ExpectType boolean
hooks.hasAction('my-action');
// $ExpectType boolean
hooks.hasFilter('my-filter');
hooks.removeAllActions('my-action', 'my/namespace');
hooks.removeAllFilters('my-filter', 'my/namespace');
// $ExpectType unknown
hooks.doAction('my-action');
// $ExpectType string
hooks.doAction('my-action', 'foo');
// $ExpectType unknown
hooks.applyFilters('my-filter');
// $ExpectType number
hooks.applyFilters('my-action', 123);
// $ExpectType (string | number)[]
hooks.applyFilters('my-action', [123, '456']);
updateCompletersState() {
const { blockName, completers } = this.props;
let nextCompleters = completers;
const lastFilteredCompletersProp = nextCompleters;
if ( hasFilter( 'editor.Autocomplete.completers' ) ) {
nextCompleters = applyFilters(
'editor.Autocomplete.completers',
// Provide copies so filters may directly modify them.
nextCompleters && nextCompleters.map( clone ),
blockName,
);
}
this.setState( {
lastFilteredCompletersProp,
completers: nextCompleters || completersFallback,
} );
}
export function getSaveElement( blockTypeOrName, attributes, innerBlocks = [] ) {
const blockType = normalizeBlockType( blockTypeOrName );
let { save } = blockType;
// Component classes are unsupported for save since serialization must
// occur synchronously. For improved interoperability with higher-order
// components which often return component class, emulate basic support.
if ( save.prototype instanceof Component ) {
const instance = new save( { attributes } );
save = instance.render.bind( instance );
}
let element = save( { attributes, innerBlocks } );
if ( isObject( element ) && hasFilter( 'blocks.getSaveContent.extraProps' ) ) {
/**
* Filters the props applied to the block save result element.
*
* @param {Object} props Props applied to save element.
* @param {WPBlockType} blockType Block type definition.
* @param {Object} attributes Block attributes.
*/
const props = applyFilters(
'blocks.getSaveContent.extraProps',
{ ...element.props },
blockType,
attributes
);
if ( ! isShallowEqual( props, element.props ) ) {
element = cloneElement( element, props );
updateCompletersState() {
const { blockName, completers } = this.props;
let nextCompleters = completers;
const lastFilteredCompletersProp = nextCompleters;
if ( hasFilter( 'editor.Autocomplete.completers' ) ) {
nextCompleters = applyFilters(
'editor.Autocomplete.completers',
// Provide copies so filters may directly modify them.
nextCompleters && nextCompleters.map( clone ),
blockName,
);
}
this.setState( {
lastFilteredCompletersProp,
completers: nextCompleters || completersFallback,
} );
}
updateCompletersState() {
const { blockName, completers } = this.props;
let nextCompleters = completers;
const lastFilteredCompletersProp = nextCompleters;
if ( hasFilter( 'editor.Autocomplete.completers' ) ) {
nextCompleters = applyFilters(
'editor.Autocomplete.completers',
// Provide copies so filters may directly modify them.
nextCompleters && nextCompleters.map( clone ),
blockName,
);
}
this.setState( {
lastFilteredCompletersProp,
completers: nextCompleters || completersFallback,
} );
}
return function( effect ) {
const {
id,
field,
markAsInvalid,
markAsValid,
lockSaving,
unlockSaving
} = props;
switch ( effect.type ) {
case 'VALIDATE':
const { value, transient } = effect.payload;
const hook = `carbon-fields.${ field.type }.validate`;
const error = hasFilter( hook )
? applyFilters( hook, field, value )
: required( value );
if ( error ) {
if ( ! transient ) {
markAsInvalid( id, error );
}
lockSaving( id );
} else {
if ( ! transient ) {
markAsValid( id );
}
unlockSaving( id );
}