{
  "version": 3,
  "sources": ["../../src/store/reducer.js"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { omit } from '../api/utils';\n\n/**\n * @typedef {Object} WPBlockCategory\n *\n * @property {string} slug  Unique category slug.\n * @property {string} title Category label, for display in user interface.\n */\n\n/**\n * Default set of categories.\n *\n * @type {WPBlockCategory[]}\n */\nexport const DEFAULT_CATEGORIES = [\n\t{ slug: 'text', title: __( 'Text' ) },\n\t{ slug: 'media', title: __( 'Media' ) },\n\t{ slug: 'design', title: __( 'Design' ) },\n\t{ slug: 'widgets', title: __( 'Widgets' ) },\n\t{ slug: 'theme', title: __( 'Theme' ) },\n\t{ slug: 'embed', title: __( 'Embeds' ) },\n\t{ slug: 'reusable', title: __( 'Reusable blocks' ) },\n];\n\n// Key block types by their name.\nfunction keyBlockTypesByName( types ) {\n\treturn types.reduce(\n\t\t( newBlockTypes, block ) => ( {\n\t\t\t...newBlockTypes,\n\t\t\t[ block.name ]: block,\n\t\t} ),\n\t\t{}\n\t);\n}\n\n// Filter items to ensure they're unique by their name.\nfunction getUniqueItemsByName( items ) {\n\treturn items.reduce( ( acc, currentItem ) => {\n\t\tif ( ! acc.some( ( item ) => item.name === currentItem.name ) ) {\n\t\t\tacc.push( currentItem );\n\t\t}\n\t\treturn acc;\n\t}, [] );\n}\n\nfunction bootstrappedBlockTypes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BOOTSTRAPPED_BLOCK_TYPE':\n\t\t\tconst { name, blockType } = action;\n\t\t\tconst serverDefinition = state[ name ];\n\t\t\t// Don't overwrite if already set. It covers the case when metadata\n\t\t\t// was initialized from the server.\n\t\t\tif ( serverDefinition ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\tconst newDefinition = Object.fromEntries(\n\t\t\t\tObject.entries( blockType )\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t( [ , value ] ) => value !== null && value !== undefined\n\t\t\t\t\t)\n\t\t\t\t\t.map( ( [ key, value ] ) => [ camelCase( key ), value ] )\n\t\t\t);\n\t\t\tnewDefinition.name = name;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ name ]: newDefinition,\n\t\t\t};\n\n\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\treturn omit( state, action.names );\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the unprocessed block types in a form passed when registering the by block.\n * It's for internal use only. It allows recomputing the processed block types on-demand after block type filters\n * get added or removed.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function unprocessedBlockTypes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_UNPROCESSED_BLOCK_TYPE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.name ]: action.blockType,\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\treturn omit( state, action.names );\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the processed block types with all filters applied.\n * The state is derived from the `unprocessedBlockTypes` reducer.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockTypes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...keyBlockTypesByName( action.blockTypes ),\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\treturn omit( state, action.names );\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the block styles.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(\n\t\t\t\t\t\tkeyBlockTypesByName( action.blockTypes )\n\t\t\t\t\t).map( ( [ name, blockType ] ) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tgetUniqueItemsByName( [\n\t\t\t\t\t\t\t...( blockType.styles ?? [] ).map( ( style ) => ( {\n\t\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\t\tsource: 'block',\n\t\t\t\t\t\t\t} ) ),\n\t\t\t\t\t\t\t...( state[ blockType.name ] ?? [] ).filter(\n\t\t\t\t\t\t\t\t( { source } ) => 'block' !== source\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t] ),\n\t\t\t\t\t] )\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'ADD_BLOCK_STYLES':\n\t\t\tconst updatedStyles = {};\n\t\t\taction.blockNames.forEach( ( blockName ) => {\n\t\t\t\tupdatedStyles[ blockName ] = getUniqueItemsByName( [\n\t\t\t\t\t...( state[ blockName ] ?? [] ),\n\t\t\t\t\t...action.styles,\n\t\t\t\t] );\n\t\t\t} );\n\t\t\treturn { ...state, ...updatedStyles };\n\t\tcase 'REMOVE_BLOCK_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: (\n\t\t\t\t\tstate[ action.blockName ] ?? []\n\t\t\t\t).filter(\n\t\t\t\t\t( style ) => action.styleNames.indexOf( style.name ) === -1\n\t\t\t\t),\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the block variations.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(\n\t\t\t\t\t\tkeyBlockTypesByName( action.blockTypes )\n\t\t\t\t\t).map( ( [ name, blockType ] ) => {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tgetUniqueItemsByName( [\n\t\t\t\t\t\t\t\t...( blockType.variations ?? [] ).map(\n\t\t\t\t\t\t\t\t\t( variation ) => ( {\n\t\t\t\t\t\t\t\t\t\t...variation,\n\t\t\t\t\t\t\t\t\t\tsource: 'block',\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t...( state[ blockType.name ] ?? [] ).filter(\n\t\t\t\t\t\t\t\t\t( { source } ) => 'block' !== source\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t] ),\n\t\t\t\t\t\t];\n\t\t\t\t\t} )\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'ADD_BLOCK_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: getUniqueItemsByName( [\n\t\t\t\t\t...( state[ action.blockName ] ?? [] ),\n\t\t\t\t\t...action.variations,\n\t\t\t\t] ),\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: (\n\t\t\t\t\tstate[ action.blockName ] ?? []\n\t\t\t\t).filter(\n\t\t\t\t\t( variation ) =>\n\t\t\t\t\t\taction.variationNames.indexOf( variation.name ) === -1\n\t\t\t\t),\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher-order Reducer creating a reducer keeping track of given block name.\n *\n * @param {string} setActionType Action type.\n *\n * @return {Function} Reducer.\n */\nexport function createBlockNameSetterReducer( setActionType ) {\n\treturn ( state = null, action ) => {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\t\tif ( action.names.indexOf( state ) !== -1 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn state;\n\n\t\t\tcase setActionType:\n\t\t\t\treturn action.name || null;\n\t\t}\n\n\t\treturn state;\n\t};\n}\n\nexport const defaultBlockName = createBlockNameSetterReducer(\n\t'SET_DEFAULT_BLOCK_NAME'\n);\nexport const freeformFallbackBlockName = createBlockNameSetterReducer(\n\t'SET_FREEFORM_FALLBACK_BLOCK_NAME'\n);\nexport const unregisteredFallbackBlockName = createBlockNameSetterReducer(\n\t'SET_UNREGISTERED_FALLBACK_BLOCK_NAME'\n);\nexport const groupingBlockName = createBlockNameSetterReducer(\n\t'SET_GROUPING_BLOCK_NAME'\n);\n\n/**\n * Reducer managing the categories\n *\n * @param {WPBlockCategory[]} state  Current state.\n * @param {Object}            action Dispatched action.\n *\n * @return {WPBlockCategory[]} Updated state.\n */\nexport function categories( state = DEFAULT_CATEGORIES, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_CATEGORIES':\n\t\t\t// Ensure, that categories are unique by slug.\n\t\t\tconst uniqueCategories = new Map();\n\t\t\t( action.categories || [] ).forEach( ( category ) => {\n\t\t\t\tuniqueCategories.set( category.slug, category );\n\t\t\t} );\n\t\t\treturn [ ...uniqueCategories.values() ];\n\t\tcase 'UPDATE_CATEGORY': {\n\t\t\tif (\n\t\t\t\t! action.category ||\n\t\t\t\t! Object.keys( action.category ).length\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\tconst categoryToChange = state.find(\n\t\t\t\t( { slug } ) => slug === action.slug\n\t\t\t);\n\t\t\tif ( categoryToChange ) {\n\t\t\t\treturn state.map( ( category ) => {\n\t\t\t\t\tif ( category.slug === action.slug ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...category,\n\t\t\t\t\t\t\t...action.category,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn category;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\treturn state;\n}\n\nexport function collections( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_COLLECTION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.namespace ]: {\n\t\t\t\t\ttitle: action.title,\n\t\t\t\t\ticon: action.icon,\n\t\t\t\t},\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_COLLECTION':\n\t\t\treturn omit( state, action.namespace );\n\t}\n\treturn state;\n}\n\n/**\n * Merges usesContext with existing values, potentially defined in the server registration.\n *\n * @param {string[]} existingUsesContext Existing `usesContext`.\n * @param {string[]} newUsesContext      Newly added `usesContext`.\n * @return {string[]|undefined} Merged `usesContext`.\n */\nfunction getMergedUsesContext( existingUsesContext = [], newUsesContext = [] ) {\n\tconst mergedArrays = Array.from(\n\t\tnew Set( existingUsesContext.concat( newUsesContext ) )\n\t);\n\treturn mergedArrays.length > 0 ? mergedArrays : undefined;\n}\n\nexport function blockBindingsSources( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_BINDINGS_SOURCE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.name ]: {\n\t\t\t\t\tlabel: action.label || state[ action.name ]?.label,\n\t\t\t\t\tusesContext: getMergedUsesContext(\n\t\t\t\t\t\tstate[ action.name ]?.usesContext,\n\t\t\t\t\t\taction.usesContext\n\t\t\t\t\t),\n\t\t\t\t\tgetValues: action.getValues,\n\t\t\t\t\tsetValues: action.setValues,\n\t\t\t\t\t// Only set `canUserEditValue` if `setValues` is also defined.\n\t\t\t\t\tcanUserEditValue:\n\t\t\t\t\t\taction.setValues && action.canUserEditValue,\n\t\t\t\t\tgetFieldsList: action.getFieldsList,\n\t\t\t\t},\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_BINDINGS_SOURCE':\n\t\t\treturn omit( state, action.name );\n\t}\n\treturn state;\n}\n\nexport default combineReducers( {\n\tbootstrappedBlockTypes,\n\tunprocessedBlockTypes,\n\tblockTypes,\n\tblockStyles,\n\tblockVariations,\n\tdefaultBlockName,\n\tfreeformFallbackBlockName,\n\tunregisteredFallbackBlockName,\n\tgroupingBlockName,\n\tcategories,\n\tcollections,\n\tblockBindingsSources,\n} );\n"],
  "mappings": "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",
  "names": []
}
