@wordpress/block-editor
Version:
8 lines (7 loc) • 8.88 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/height-control/index.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport {\n\tBaseControl,\n\tRangeControl,\n\tFlex,\n\tFlexItem,\n\t__experimentalSpacer as Spacer,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\n\nconst RANGE_CONTROL_CUSTOM_SETTINGS = {\n\tpx: { max: 1000, step: 1 },\n\t'%': { max: 100, step: 1 },\n\tvw: { max: 100, step: 1 },\n\tvh: { max: 100, step: 1 },\n\tem: { max: 50, step: 0.1 },\n\trem: { max: 50, step: 0.1 },\n\tsvw: { max: 100, step: 1 },\n\tlvw: { max: 100, step: 1 },\n\tdvw: { max: 100, step: 1 },\n\tsvh: { max: 100, step: 1 },\n\tlvh: { max: 100, step: 1 },\n\tdvh: { max: 100, step: 1 },\n\tvi: { max: 100, step: 1 },\n\tsvi: { max: 100, step: 1 },\n\tlvi: { max: 100, step: 1 },\n\tdvi: { max: 100, step: 1 },\n\tvb: { max: 100, step: 1 },\n\tsvb: { max: 100, step: 1 },\n\tlvb: { max: 100, step: 1 },\n\tdvb: { max: 100, step: 1 },\n\tvmin: { max: 100, step: 1 },\n\tsvmin: { max: 100, step: 1 },\n\tlvmin: { max: 100, step: 1 },\n\tdvmin: { max: 100, step: 1 },\n\tvmax: { max: 100, step: 1 },\n\tsvmax: { max: 100, step: 1 },\n\tlvmax: { max: 100, step: 1 },\n\tdvmax: { max: 100, step: 1 },\n};\n\n/**\n * HeightControl renders a linked unit control and range control for adjusting the height of a block.\n *\n * @deprecated Use DimensionControl instead.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/height-control/README.md\n *\n * @param {Object} props\n * @param {?string} props.label A label for the control.\n * @param {( value: string ) => void } props.onChange Called when the height changes.\n * @param {string} props.value The current height value.\n *\n * @return {Component} The component to be rendered.\n */\nexport default function HeightControl( {\n\tlabel = __( 'Height' ),\n\tonChange,\n\tvalue,\n} ) {\n\tdeprecated( 'wp.blockEditor.HeightControl', {\n\t\tsince: '7.0',\n\t\tversion: '7.2',\n\t\talternative: 'wp.blockEditor.DimensionControl',\n\t} );\n\tconst customRangeValue = parseFloat( value );\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vh',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\tconst selectedUnit =\n\t\tuseMemo(\n\t\t\t() => parseQuantityAndUnitFromRawValue( value ),\n\t\t\t[ value ]\n\t\t)[ 1 ] ||\n\t\tunits[ 0 ]?.value ||\n\t\t'px';\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( [ next, selectedUnit ].join( '' ) );\n\t};\n\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tconst [ currentValue, currentUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( value );\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && currentUnit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tonChange( ( currentValue / 16 ).toFixed( 2 ) + newUnit );\n\t\t} else if (\n\t\t\t[ 'em', 'rem' ].includes( currentUnit ) &&\n\t\t\tnewUnit === 'px'\n\t\t) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tonChange( Math.round( currentValue * 16 ) + newUnit );\n\t\t} else if (\n\t\t\t[\n\t\t\t\t'%',\n\t\t\t\t'vw',\n\t\t\t\t'svw',\n\t\t\t\t'lvw',\n\t\t\t\t'dvw',\n\t\t\t\t'vh',\n\t\t\t\t'svh',\n\t\t\t\t'lvh',\n\t\t\t\t'dvh',\n\t\t\t\t'vi',\n\t\t\t\t'svi',\n\t\t\t\t'lvi',\n\t\t\t\t'dvi',\n\t\t\t\t'vb',\n\t\t\t\t'svb',\n\t\t\t\t'lvb',\n\t\t\t\t'dvb',\n\t\t\t\t'vmin',\n\t\t\t\t'svmin',\n\t\t\t\t'lvmin',\n\t\t\t\t'dvmin',\n\t\t\t\t'vmax',\n\t\t\t\t'svmax',\n\t\t\t\t'lvmax',\n\t\t\t\t'dvmax',\n\t\t\t].includes( newUnit ) &&\n\t\t\tcurrentValue > 100\n\t\t) {\n\t\t\t// When converting to `%` or viewport-relative units, cap the new value at 100.\n\t\t\tonChange( 100 + newUnit );\n\t\t}\n\t};\n\n\treturn (\n\t\t<fieldset className=\"block-editor-height-control\">\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ label }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvalue={ customRangeValue }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t\tRANGE_CONTROL_CUSTOM_SETTINGS[ selectedUnit ]\n\t\t\t\t\t\t\t\t\t?.max ?? 100\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\t\tRANGE_CONTROL_CUSTOM_SETTINGS[ selectedUnit ]\n\t\t\t\t\t\t\t\t\t?.step ?? 0.1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n"],
"mappings": "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",
"names": []
}