{
  "version": 3,
  "sources": ["../../src/hooks/block-style-state.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createContext, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { cleanEmptyObject } from './utils';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\n\nconst DEFAULT_STATE_VALUE = 'default';\n\nexport const DEFAULT_BLOCK_STYLE_STATE = {\n\tviewport: DEFAULT_STATE_VALUE,\n\tpseudo: DEFAULT_STATE_VALUE,\n};\n\nconst BlockStyleStateContext = createContext( DEFAULT_BLOCK_STYLE_STATE );\n\nexport const BlockStyleStateProvider = BlockStyleStateContext.Provider;\n\nexport function useBlockStyleState() {\n\treturn useContext( BlockStyleStateContext );\n}\n\n/**\n * Returns true when a viewport style state is selected.\n *\n * @param {Object} selectedState Selected block style state.\n * @return {boolean} Whether a viewport state is selected.\n */\nexport function hasViewportBlockStyleState( selectedState ) {\n\treturn (\n\t\t!! selectedState?.viewport &&\n\t\tselectedState.viewport !== DEFAULT_STATE_VALUE\n\t);\n}\n\n/**\n * Returns true when a pseudo style state is selected.\n *\n * @param {Object} selectedState Selected block style state.\n * @return {boolean} Whether a pseudo state is selected.\n */\nexport function hasPseudoBlockStyleState( selectedState ) {\n\treturn (\n\t\t!! selectedState?.pseudo && selectedState.pseudo !== DEFAULT_STATE_VALUE\n\t);\n}\n\n/**\n * Returns true when the default style state is selected.\n *\n * @param {Object} selectedState Selected block style state.\n * @return {boolean} Whether the default style state is selected.\n */\nexport function isDefaultBlockStyleState( selectedState ) {\n\treturn (\n\t\t! hasViewportBlockStyleState( selectedState ) &&\n\t\t! hasPseudoBlockStyleState( selectedState )\n\t);\n}\n\n/**\n * Returns the style object path for the selected block style state.\n *\n * @param {Object} selectedState Selected block style state.\n * @return {string[]} Object path for the selected state styles.\n */\nfunction getStyleStatePath( selectedState ) {\n\tif ( isDefaultBlockStyleState( selectedState ) ) {\n\t\treturn [];\n\t}\n\n\treturn [ selectedState.viewport, selectedState.pseudo ].filter(\n\t\t( state ) => state && state !== DEFAULT_STATE_VALUE\n\t);\n}\n\nexport function getStyleForState( style, selectedState ) {\n\tconst path = getStyleStatePath( selectedState );\n\tif ( ! path.length ) {\n\t\treturn style;\n\t}\n\treturn getValueFromObjectPath( style, path );\n}\n\nexport function setStyleForState( style, selectedState, newStyle ) {\n\tconst path = getStyleStatePath( selectedState );\n\tif ( ! path.length ) {\n\t\treturn cleanEmptyObject( newStyle );\n\t}\n\treturn cleanEmptyObject( setImmutably( style, path, newStyle ) );\n}\n\nexport function scopeResetAllFilterToState( selectedState, resetAllFilter ) {\n\tif ( ! resetAllFilter || isDefaultBlockStyleState( selectedState ) ) {\n\t\treturn resetAllFilter;\n\t}\n\n\treturn ( attributes ) => {\n\t\tconst existingStateStyle =\n\t\t\tgetStyleForState( attributes?.style, selectedState ) || {};\n\t\tconst updatedStateAttributes = resetAllFilter( {\n\t\t\tstyle: existingStateStyle,\n\t\t} );\n\t\tconst updatedStateStyle =\n\t\t\tupdatedStateAttributes &&\n\t\t\ttypeof updatedStateAttributes === 'object' &&\n\t\t\t! Array.isArray( updatedStateAttributes ) &&\n\t\t\tObject.prototype.hasOwnProperty.call(\n\t\t\t\tupdatedStateAttributes,\n\t\t\t\t'style'\n\t\t\t)\n\t\t\t\t? updatedStateAttributes.style\n\t\t\t\t: updatedStateAttributes;\n\n\t\treturn {\n\t\t\tstyle: setStyleForState(\n\t\t\t\tattributes?.style,\n\t\t\t\tselectedState,\n\t\t\t\tupdatedStateStyle\n\t\t\t),\n\t\t};\n\t};\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA0C;AAK1C,mBAAiC;AACjC,oBAAqD;AAErD,IAAM,sBAAsB;AAErB,IAAM,4BAA4B;AAAA,EACxC,UAAU;AAAA,EACV,QAAQ;AACT;AAEA,IAAM,6BAAyB,8BAAe,yBAA0B;AAEjE,IAAM,0BAA0B,uBAAuB;AAEvD,SAAS,qBAAqB;AACpC,aAAO,2BAAY,sBAAuB;AAC3C;AAQO,SAAS,2BAA4B,eAAgB;AAC3D,SACC,CAAC,CAAE,eAAe,YAClB,cAAc,aAAa;AAE7B;AAQO,SAAS,yBAA0B,eAAgB;AACzD,SACC,CAAC,CAAE,eAAe,UAAU,cAAc,WAAW;AAEvD;AAQO,SAAS,yBAA0B,eAAgB;AACzD,SACC,CAAE,2BAA4B,aAAc,KAC5C,CAAE,yBAA0B,aAAc;AAE5C;AAQA,SAAS,kBAAmB,eAAgB;AAC3C,MAAK,yBAA0B,aAAc,GAAI;AAChD,WAAO,CAAC;AAAA,EACT;AAEA,SAAO,CAAE,cAAc,UAAU,cAAc,MAAO,EAAE;AAAA,IACvD,CAAE,UAAW,SAAS,UAAU;AAAA,EACjC;AACD;AAEO,SAAS,iBAAkB,OAAO,eAAgB;AACxD,QAAM,OAAO,kBAAmB,aAAc;AAC9C,MAAK,CAAE,KAAK,QAAS;AACpB,WAAO;AAAA,EACR;AACA,aAAO,sCAAwB,OAAO,IAAK;AAC5C;AAEO,SAAS,iBAAkB,OAAO,eAAe,UAAW;AAClE,QAAM,OAAO,kBAAmB,aAAc;AAC9C,MAAK,CAAE,KAAK,QAAS;AACpB,eAAO,+BAAkB,QAAS;AAAA,EACnC;AACA,aAAO,mCAAkB,4BAAc,OAAO,MAAM,QAAS,CAAE;AAChE;AAEO,SAAS,2BAA4B,eAAe,gBAAiB;AAC3E,MAAK,CAAE,kBAAkB,yBAA0B,aAAc,GAAI;AACpE,WAAO;AAAA,EACR;AAEA,SAAO,CAAE,eAAgB;AACxB,UAAM,qBACL,iBAAkB,YAAY,OAAO,aAAc,KAAK,CAAC;AAC1D,UAAM,yBAAyB,eAAgB;AAAA,MAC9C,OAAO;AAAA,IACR,CAAE;AACF,UAAM,oBACL,0BACA,OAAO,2BAA2B,YAClC,CAAE,MAAM,QAAS,sBAAuB,KACxC,OAAO,UAAU,eAAe;AAAA,MAC/B;AAAA,MACA;AAAA,IACD,IACG,uBAAuB,QACvB;AAEJ,WAAO;AAAA,MACN,OAAO;AAAA,QACN,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;",
  "names": []
}
