UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 9.13 kB
{ "version": 3, "sources": ["../../../src/components/block-pattern-setup/index.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport { Composite, VisuallyHidden } from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n\tshowTitles,\n} ) => {\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-pattern-setup__carousel\">\n\t\t\t\t<div className={ containerClass }>\n\t\t\t\t\t<div className=\"carousel-container\">\n\t\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\t\tactive={ index === activeSlide }\n\t\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-block-pattern-setup__grid\">\n\t\t\t<Composite\n\t\t\t\trole=\"listbox\"\n\t\t\t\tclassName={ containerClass }\n\t\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t\t>\n\t\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t\t<BlockPattern\n\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t</div>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, showTitles } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div className={ `${ baseClassName }__list-item` }>\n\t\t\t<Composite.Item\n\t\t\t\trender={\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\tdescription ? descriptionId : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-label={ pattern.title }\n\t\t\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tid={ `${ baseClassName }__pattern__${ pattern.name }` }\n\t\t\t\trole=\"option\"\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t\t{ showTitles && (\n\t\t\t\t\t<div className={ `${ baseClassName }__item-title` }>\n\t\t\t\t\t\t{ pattern.title }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ !! description && (\n\t\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { active, className, pattern, minHeight } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<div\n\t\t\taria-hidden={ ! active }\n\t\t\trole=\"img\"\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview blocks={ blocks } minHeight={ minHeight } />\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tonBlockPatternSelect,\n\tinitialViewMode = VIEWMODES.carousel,\n\tshowTitles = false,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( initialViewMode );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\n\tif ( ! patterns?.length ) {\n\t\treturn null;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t\t>\n\t\t\t\t<SetupContent\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t/>\n\t\t\t\t<SetupToolbar\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\t\thandleNext={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) =>\n\t\t\t\t\t\t\tMath.min( active + 1, patterns.length - 1 )\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) =>\n\t\t\t\t\t\t\tMath.max( active - 1, 0 )\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\t\tonPatternSelectCallback(\n\t\t\t\t\t\t\tpatterns[ activeSlide ].blocks\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default BlockPatternSetup;\n"], "mappings": ";AAGA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,WAAW,sBAAsB;AAE1C,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B,SAAS,UAAU;AAKnB,SAAS,SAAS,wBAAwB;AAC1C,OAAO,kBAAkB;AACzB,OAAO,kBAAkB;AACzB,OAAO,sBAAsB;AAC7B,SAAS,iBAAiB;AAsBnB,SA2HL,UA3HK,KA0CJ,YA1CI;AApBP,IAAM,eAAe,CAAE;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,iBAAiB;AAEvB,MAAK,aAAa,UAAU,UAAW;AACtC,UAAM,aAAa,oBAAI,IAAK;AAAA,MAC3B,CAAE,aAAa,cAAe;AAAA,MAC9B,CAAE,cAAc,GAAG,gBAAiB;AAAA,MACpC,CAAE,cAAc,GAAG,YAAa;AAAA,IACjC,CAAE;AACF,WACC,oBAAC,SAAI,WAAU,8CACd,8BAAC,SAAI,WAAY,gBAChB,8BAAC,SAAI,WAAU,sBACZ,mBAAS,IAAK,CAAE,SAAS,UAC1B;AAAA,MAAC;AAAA;AAAA,QACA,QAAS,UAAU;AAAA,QACnB,WAAY,WAAW,IAAK,KAAM,KAAK;AAAA,QAEvC;AAAA;AAAA,MADM,QAAQ;AAAA,IAEf,CACC,GACH,GACD,GACD;AAAA,EAEF;AAEA,SACC,oBAAC,SAAI,WAAU,0CACd;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,WAAY;AAAA,MACZ,cAAa,GAAI,eAAgB;AAAA,MAE/B,mBAAS,IAAK,CAAE,YACjB;AAAA,QAAC;AAAA;AAAA,UAEA;AAAA,UACA,UAAW;AAAA,UACX;AAAA;AAAA,QAHM,QAAQ;AAAA,MAIf,CACC;AAAA;AAAA,EACH,GACD;AAEF;AAEA,SAAS,aAAc,EAAE,SAAS,UAAU,WAAW,GAAI;AAC1D,QAAM,gBAAgB;AACtB,QAAM,EAAE,QAAQ,aAAa,gBAAgB,IAAI,IAAI;AACrD,QAAM,gBAAgB;AAAA,IACrB;AAAA,IACA,GAAI,aAAc;AAAA,EACnB;AACA,SACC,oBAAC,SAAI,WAAY,GAAI,aAAc,eAClC;AAAA,IAAC,UAAU;AAAA,IAAV;AAAA,MACA,QACC;AAAA,QAAC;AAAA;AAAA,UACA,oBACC,cAAc,gBAAgB;AAAA,UAE/B,cAAa,QAAQ;AAAA,UACrB,WAAY,GAAI,aAAc;AAAA;AAAA,MAC/B;AAAA,MAED,IAAK,GAAI,aAAc,cAAe,QAAQ,IAAK;AAAA,MACnD,MAAK;AAAA,MACL,SAAU,MAAM,SAAU,MAAO;AAAA,MAEjC;AAAA;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACD;AAAA,QACE,cACD,oBAAC,SAAI,WAAY,GAAI,aAAc,gBAChC,kBAAQ,OACX;AAAA,QAEC,CAAC,CAAE,eACJ,oBAAC,kBAAe,IAAK,eAClB,uBACH;AAAA;AAAA;AAAA,EAEF,GACD;AAEF;AAEA,SAAS,kBAAmB,EAAE,QAAQ,WAAW,SAAS,UAAU,GAAI;AACvE,QAAM,EAAE,QAAQ,OAAO,YAAY,IAAI;AACvC,QAAM,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,EACD;AACA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAc,CAAE;AAAA,MAChB,MAAK;AAAA,MACL,WAAY,iBAAkB,SAAU;AAAA,MACxC,cAAa;AAAA,MACb,oBAAmB,cAAc,gBAAgB;AAAA,MAEjD;AAAA,4BAAC,gBAAa,QAAkB,WAAwB;AAAA,QACtD,CAAC,CAAE,eACJ,oBAAC,kBAAe,IAAK,eAClB,uBACH;AAAA;AAAA;AAAA,EAEF;AAEF;AAEA,IAAM,oBAAoB,CAAE;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB,UAAU;AAAA,EAC5B,aAAa;AACd,MAAO;AACN,QAAM,CAAE,UAAU,WAAY,IAAI,SAAU,eAAgB;AAC5D,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,CAAE;AACpD,QAAM,EAAE,aAAa,IAAI,YAAa,gBAAiB;AACvD,QAAM,WAAW,iBAAkB,UAAU,WAAW,gBAAiB;AAEzE,MAAK,CAAE,UAAU,QAAS;AACzB,WAAO;AAAA,EACR;AAEA,QAAM,8BAA8B,CAAE,WAAY;AACjD,UAAM,eAAe,OAAO,IAAK,CAAE,UAAW,WAAY,KAAM,CAAE;AAClE,iBAAc,UAAU,YAAa;AAAA,EACtC;AACA,QAAM,0BACL,wBAAwB;AACzB,SACC,gCACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,8CAA+C,QAAS;AAAA,MAEpE;AAAA;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,sBAAuB;AAAA,YACvB;AAAA;AAAA,QACD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAc,SAAS;AAAA,YACvB,YAAa,MAAM;AAClB;AAAA,gBAAgB,CAAE,WACjB,KAAK,IAAK,SAAS,GAAG,SAAS,SAAS,CAAE;AAAA,cAC3C;AAAA,YACD;AAAA,YACA,gBAAiB,MAAM;AACtB;AAAA,gBAAgB,CAAE,WACjB,KAAK,IAAK,SAAS,GAAG,CAAE;AAAA,cACzB;AAAA,YACD;AAAA,YACA,sBAAuB,MAAM;AAC5B;AAAA,gBACC,SAAU,WAAY,EAAE;AAAA,cACzB;AAAA,YACD;AAAA;AAAA,QACD;AAAA;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,8BAAQ;", "names": [] }