UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 5.56 kB
{ "version": 3, "sources": ["../../../src/components/inserter/quick-inserter.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button, SearchControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { store as blockEditorStore } from '../../store';\n\nconst SEARCH_THRESHOLD = 6;\nconst SHOWN_BLOCK_TYPES = 6;\nconst SHOWN_BLOCK_PATTERNS = 2;\n\nexport default function QuickInserter( {\n\tonSelect,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\tselectBlockOnInsert,\n\thasSearch = true,\n} ) {\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [ blockTypes ] = useBlockTypesState(\n\t\tdestinationRootClientId,\n\t\tonInsertBlocks,\n\t\ttrue\n\t);\n\n\tconst { setInserterIsOpened, insertionIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getBlockIndex, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst blockCount = getBlockCount();\n\n\t\t\treturn {\n\t\t\t\tsetInserterIsOpened: settings.__experimentalSetIsInserterOpened,\n\t\t\t\tinsertionIndex: index === -1 ? blockCount : index,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showSearch = hasSearch && blockTypes.length > SEARCH_THRESHOLD;\n\n\tuseEffect( () => {\n\t\tif ( setInserterIsOpened ) {\n\t\t\tsetInserterIsOpened( false );\n\t\t}\n\t}, [ setInserterIsOpened ] );\n\n\t// When clicking Browse All select the appropriate block so as\n\t// the insertion point can work as expected.\n\tconst onBrowseAll = () => {\n\t\tsetInserterIsOpened( {\n\t\t\tfilterValue,\n\t\t\tonSelect,\n\t\t\trootClientId,\n\t\t\tinsertionIndex,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'block-editor-inserter__quick-inserter', {\n\t\t\t\t'has-search': showSearch,\n\t\t\t\t'has-expand': setInserterIsOpened,\n\t\t\t} ) }\n\t\t>\n\t\t\t{ showSearch && (\n\t\t\t\t<SearchControl\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-results\">\n\t\t\t\t<InserterSearchResults\n\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tmaxBlockPatterns={\n\t\t\t\t\t\t!! filterValue ? SHOWN_BLOCK_PATTERNS : 0\n\t\t\t\t\t}\n\t\t\t\t\tmaxBlockTypes={ SHOWN_BLOCK_TYPES }\n\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\tselectBlockOnInsert={ selectBlockOnInsert }\n\t\t\t\t\tisQuick\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{ setInserterIsOpened && (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"block-editor-inserter__quick-inserter-expand\"\n\t\t\t\t\tonClick={ onBrowseAll }\n\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t'Browse all. This will open the main inserter panel in the editor toolbar.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Browse all' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"], "mappings": ";AAGA,OAAO,UAAU;AAKjB,SAAS,UAAU,iBAAiB;AACpC,SAAS,UAAU;AACnB,SAAS,QAAQ,qBAAqB;AACtC,SAAS,iBAAiB;AAK1B,OAAO,2BAA2B;AAClC,OAAO,uBAAuB;AAC9B,OAAO,wBAAwB;AAC/B,SAAS,SAAS,wBAAwB;AAgExC,SAOE,KAPF;AA9DF,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAEd,SAAR,cAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACb,GAAI;AACH,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,EAAG;AACrD,QAAM,CAAE,yBAAyB,cAAe,IAAI,kBAAmB;AAAA,IACtE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AACF,QAAM,CAAE,UAAW,IAAI;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,EAAE,qBAAqB,eAAe,IAAI;AAAA,IAC/C,CAAE,WAAY;AACb,YAAM,EAAE,aAAa,eAAe,cAAc,IACjD,OAAQ,gBAAiB;AAC1B,YAAM,WAAW,YAAY;AAC7B,YAAM,QAAQ,cAAe,QAAS;AACtC,YAAM,aAAa,cAAc;AAEjC,aAAO;AAAA,QACN,qBAAqB,SAAS;AAAA,QAC9B,gBAAgB,UAAU,KAAK,aAAa;AAAA,MAC7C;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,aAAa,aAAa,WAAW,SAAS;AAEpD,YAAW,MAAM;AAChB,QAAK,qBAAsB;AAC1B,0BAAqB,KAAM;AAAA,IAC5B;AAAA,EACD,GAAG,CAAE,mBAAoB,CAAE;AAI3B,QAAM,cAAc,MAAM;AACzB,wBAAqB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAAA,EACH;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,KAAM,yCAAyC;AAAA,QAC1D,cAAc;AAAA,QACd,cAAc;AAAA,MACf,CAAE;AAAA,MAEA;AAAA,sBACD;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,OAAQ;AAAA,YACR,UAAW,CAAE,UAAW;AACvB,6BAAgB,KAAM;AAAA,YACvB;AAAA,YACA,OAAQ,GAAI,QAAS;AAAA,YACrB,aAAc,GAAI,QAAS;AAAA;AAAA,QAC5B;AAAA,QAGD,oBAAC,SAAI,WAAU,iDACd;AAAA,UAAC;AAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,kBACC,CAAC,CAAE,cAAc,uBAAuB;AAAA,YAEzC,eAAgB;AAAA,YAChB,aAAc;AAAA,YACd;AAAA,YACA,SAAO;AAAA;AAAA,QACR,GACD;AAAA,QAEE,uBACD;AAAA,UAAC;AAAA;AAAA,YACA,uBAAqB;AAAA,YACrB,WAAU;AAAA,YACV,SAAU;AAAA,YACV,cAAa;AAAA,cACZ;AAAA,YACD;AAAA,YAEE,aAAI,YAAa;AAAA;AAAA,QACpB;AAAA;AAAA;AAAA,EAEF;AAEF;", "names": [] }