UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 5.43 kB
{ "version": 3, "sources": ["../../src/post-featured-image/dimension-controls.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { __experimentalUseCustomUnits as useCustomUnits } from '@wordpress/components';\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tuseSettings,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetActiveDimensionValue,\n\tgetDimensionUpdateAttributes,\n\tgetStyleStateKey,\n} from '../utils/style-state';\nimport { unlock } from '../lock-unlock';\n\nconst { DimensionsTool } = unlock( blockEditorPrivateApis );\n\nconst DEFAULT_SCALE = 'cover';\nconst DIMENSION_KEYS = [ 'aspectRatio', 'width', 'height', 'scale' ];\n\nconst scaleOptions = [\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: _x( 'Cover', 'Scale option for Image dimension control' ),\n\t\thelp: __(\n\t\t\t'Image is scaled and cropped to fill the entire space without being distorted.'\n\t\t),\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: _x( 'Contain', 'Scale option for Image dimension control' ),\n\t\thelp: __(\n\t\t\t'Image is scaled to fill the space without clipping nor distorting.'\n\t\t),\n\t},\n\t{\n\t\tvalue: 'fill',\n\t\tlabel: _x( 'Fill', 'Scale option for Image dimension control' ),\n\t\thelp: __(\n\t\t\t'Image will be stretched and distorted to completely fill the space.'\n\t\t),\n\t},\n];\n\nconst DimensionControls = ( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tselectedStyleState,\n\thasSelectedStyleState = false,\n} ) => {\n\tconst { style } = attributes;\n\tconst selectedStyleStateKey = getStyleStateKey( selectedStyleState );\n\tconst activeAspectRatio = getActiveDimensionValue( {\n\t\tattributes,\n\t\tselectedState: selectedStyleState,\n\t\thasSelectedStyleState,\n\t\tattributeKey: 'aspectRatio',\n\t} );\n\tconst activeWidth = getActiveDimensionValue( {\n\t\tattributes,\n\t\tselectedState: selectedStyleState,\n\t\thasSelectedStyleState,\n\t\tattributeKey: 'width',\n\t} );\n\tconst activeHeight = getActiveDimensionValue( {\n\t\tattributes,\n\t\tselectedState: selectedStyleState,\n\t\thasSelectedStyleState,\n\t\tattributeKey: 'height',\n\t} );\n\tconst activeScale = getActiveDimensionValue( {\n\t\tattributes,\n\t\tselectedState: selectedStyleState,\n\t\thasSelectedStyleState,\n\t\tattributeKey: 'scale',\n\t\tstyleKey: 'objectFit',\n\t} );\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ 'px', '%', 'vw', 'em', 'rem' ],\n\t} );\n\n\tconst setDimensionAttributes = ( nextDimensions ) => {\n\t\tconst nextImageDimensions = {\n\t\t\t...nextDimensions,\n\t\t\twidth:\n\t\t\t\t! nextDimensions.width && nextDimensions.height\n\t\t\t\t\t? 'auto'\n\t\t\t\t\t: nextDimensions.width,\n\t\t};\n\n\t\tsetAttributes(\n\t\t\tgetDimensionUpdateAttributes( {\n\t\t\t\tstyle,\n\t\t\t\tselectedState: selectedStyleState,\n\t\t\t\thasSelectedStyleState,\n\t\t\t\tnextDimensions: nextImageDimensions,\n\t\t\t\tdimensionKeyMap: { scale: 'objectFit' },\n\t\t\t\tdimensionKeys: DIMENSION_KEYS,\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<DimensionsTool\n\t\t\tkey={ selectedStyleStateKey }\n\t\t\tpanelId={ clientId }\n\t\t\tvalue={ {\n\t\t\t\taspectRatio: activeAspectRatio,\n\t\t\t\twidth: activeWidth,\n\t\t\t\theight: activeHeight,\n\t\t\t\tscale: activeScale,\n\t\t\t} }\n\t\t\tonChange={ setDimensionAttributes }\n\t\t\tdefaultScale={ DEFAULT_SCALE }\n\t\t\tdefaultAspectRatio=\"auto\"\n\t\t\tscaleOptions={ scaleOptions }\n\t\t\tunitsOptions={ units }\n\t\t/>\n\t);\n};\n\nexport default DimensionControls;\n"], "mappings": ";AAGA,SAAS,IAAI,UAAU;AACvB,SAAS,gCAAgC,sBAAsB;AAC/D;AAAA,EACC,eAAe;AAAA,EACf;AAAA,OACM;AAKP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,cAAc;AA6FrB;AA3FF,IAAM,EAAE,eAAe,IAAI,OAAQ,sBAAuB;AAE1D,IAAM,gBAAgB;AACtB,IAAM,iBAAiB,CAAE,eAAe,SAAS,UAAU,OAAQ;AAEnE,IAAM,eAAe;AAAA,EACpB;AAAA,IACC,OAAO;AAAA,IACP,OAAO,GAAI,SAAS,0CAA2C;AAAA,IAC/D,MAAM;AAAA,MACL;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,GAAI,WAAW,0CAA2C;AAAA,IACjE,MAAM;AAAA,MACL;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,GAAI,QAAQ,0CAA2C;AAAA,IAC9D,MAAM;AAAA,MACL;AAAA,IACD;AAAA,EACD;AACD;AAEA,IAAM,oBAAoB,CAAE;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AACzB,MAAO;AACN,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,wBAAwB,iBAAkB,kBAAmB;AACnE,QAAM,oBAAoB,wBAAyB;AAAA,IAClD;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,cAAc;AAAA,EACf,CAAE;AACF,QAAM,cAAc,wBAAyB;AAAA,IAC5C;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,cAAc;AAAA,EACf,CAAE;AACF,QAAM,eAAe,wBAAyB;AAAA,IAC7C;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,cAAc;AAAA,EACf,CAAE;AACF,QAAM,cAAc,wBAAyB;AAAA,IAC5C;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,cAAc;AAAA,IACd,UAAU;AAAA,EACX,CAAE;AAEF,QAAM,CAAE,cAAe,IAAI,YAAa,eAAgB;AACxD,QAAM,QAAQ,eAAgB;AAAA,IAC7B,gBAAgB,kBAAkB,CAAE,MAAM,KAAK,MAAM,MAAM,KAAM;AAAA,EAClE,CAAE;AAEF,QAAM,yBAAyB,CAAE,mBAAoB;AACpD,UAAM,sBAAsB;AAAA,MAC3B,GAAG;AAAA,MACH,OACC,CAAE,eAAe,SAAS,eAAe,SACtC,SACA,eAAe;AAAA,IACpB;AAEA;AAAA,MACC,6BAA8B;AAAA,QAC7B;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA,gBAAgB;AAAA,QAChB,iBAAiB,EAAE,OAAO,YAAY;AAAA,QACtC,eAAe;AAAA,MAChB,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MAEA,SAAU;AAAA,MACV,OAAQ;AAAA,QACP,aAAa;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AAAA,MACA,UAAW;AAAA,MACX,cAAe;AAAA,MACf,oBAAmB;AAAA,MACnB;AAAA,MACA,cAAe;AAAA;AAAA,IAZT;AAAA,EAaP;AAEF;AAEA,IAAO,6BAAQ;", "names": [] }