UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 5.97 kB
{ "version": 3, "sources": ["../../../src/components/inserter-list-item/index.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useRef, memo } from '@wordpress/element';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { __experimentalTruncate as Truncate } from '@wordpress/components';\nimport { ENTER, isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { InserterListboxItem } from '../inserter-listbox';\nimport InserterDraggableBlocks from '../inserter-draggable-blocks';\n\nfunction InserterListItem( {\n\tclassName,\n\tisFirst,\n\titem,\n\tonSelect,\n\tonHover,\n\tisDraggable,\n\t...props\n} ) {\n\tconst isDraggingRef = useRef( false );\n\tconst itemIconStyle = item.icon\n\t\t? {\n\t\t\t\tbackgroundColor: item.icon.background,\n\t\t\t\tcolor: item.icon.foreground,\n\t\t }\n\t\t: {};\n\tconst blocks = useMemo(\n\t\t() => [\n\t\t\tcreateBlock(\n\t\t\t\titem.name,\n\t\t\t\titem.initialAttributes,\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( item.innerBlocks )\n\t\t\t),\n\t\t],\n\t\t[ item.name, item.initialAttributes, item.innerBlocks ]\n\t);\n\n\tconst isSynced =\n\t\t( isReusableBlock( item ) && item.syncStatus !== 'unsynced' ) ||\n\t\tisTemplatePart( item );\n\n\treturn (\n\t\t<InserterDraggableBlocks\n\t\t\tisEnabled={ isDraggable && ! item.isDisabled }\n\t\t\tblocks={ blocks }\n\t\t\ticon={ item.icon }\n\t\t>\n\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-block-types-list__list-item',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-synced': isSynced,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\tonDragStart={ ( event ) => {\n\t\t\t\t\t\tisDraggingRef.current = true;\n\t\t\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\tonDragStart( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonDragEnd={ ( event ) => {\n\t\t\t\t\t\tisDraggingRef.current = false;\n\t\t\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\t\t\tonDragEnd( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<InserterListboxItem\n\t\t\t\t\t\tisFirst={ isFirst }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-block-types-list__item',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdisabled={ item.isDisabled }\n\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tconst { keyCode } = event;\n\t\t\t\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\tisAppleOS() ? event.metaKey : event.ctrlKey\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonHover( null );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseEnter={ () => {\n\t\t\t\t\t\t\tif ( isDraggingRef.current ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover( item );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMouseLeave={ () => onHover( null ) }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-block-types-list__item-icon\"\n\t\t\t\t\t\t\tstyle={ itemIconStyle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } showColors />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"block-editor-block-types-list__item-title\">\n\t\t\t\t\t\t\t<Truncate numberOfLines={ 3 }>\n\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</InserterListboxItem>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</InserterDraggableBlocks>\n\t);\n}\n\nexport default memo( InserterListItem );\n"], "mappings": ";AAGA,OAAO,UAAU;AAKjB,SAAS,SAAS,QAAQ,YAAY;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,0BAA0B,gBAAgB;AACnD,SAAS,OAAO,iBAAiB;AAKjC,OAAO,eAAe;AACtB,SAAS,2BAA2B;AACpC,OAAO,6BAA6B;AA8D/B,SAuCE,KAvCF;AA5DL,SAAS,iBAAkB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM,gBAAgB,OAAQ,KAAM;AACpC,QAAM,gBAAgB,KAAK,OACxB;AAAA,IACA,iBAAiB,KAAK,KAAK;AAAA,IAC3B,OAAO,KAAK,KAAK;AAAA,EACjB,IACA,CAAC;AACJ,QAAM,SAAS;AAAA,IACd,MAAM;AAAA,MACL;AAAA,QACC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,oCAAqC,KAAK,WAAY;AAAA,MACvD;AAAA,IACD;AAAA,IACA,CAAE,KAAK,MAAM,KAAK,mBAAmB,KAAK,WAAY;AAAA,EACvD;AAEA,QAAM,WACH,gBAAiB,IAAK,KAAK,KAAK,eAAe,cACjD,eAAgB,IAAK;AAEtB,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,eAAe,CAAE,KAAK;AAAA,MAClC;AAAA,MACA,MAAO,KAAK;AAAA,MAEV,WAAE,EAAE,WAAW,aAAa,UAAU,MACvC;AAAA,QAAC;AAAA;AAAA,UACA,WAAY;AAAA,YACX;AAAA,YACA;AAAA,cACC,aAAa;AAAA,YACd;AAAA,UACD;AAAA,UACA;AAAA,UACA,aAAc,CAAE,UAAW;AAC1B,0BAAc,UAAU;AACxB,gBAAK,aAAc;AAClB,sBAAS,IAAK;AACd,0BAAa,KAAM;AAAA,YACpB;AAAA,UACD;AAAA,UACA,WAAY,CAAE,UAAW;AACxB,0BAAc,UAAU;AACxB,gBAAK,WAAY;AAChB,wBAAW,KAAM;AAAA,YAClB;AAAA,UACD;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACA;AAAA,cACA,WAAY;AAAA,gBACX;AAAA,gBACA;AAAA,cACD;AAAA,cACA,UAAW,KAAK;AAAA,cAChB,SAAU,CAAE,UAAW;AACtB,sBAAM,eAAe;AACrB;AAAA,kBACC;AAAA,kBACA,UAAU,IAAI,MAAM,UAAU,MAAM;AAAA,gBACrC;AACA,wBAAS,IAAK;AAAA,cACf;AAAA,cACA,WAAY,CAAE,UAAW;AACxB,sBAAM,EAAE,QAAQ,IAAI;AACpB,oBAAK,YAAY,OAAQ;AACxB,wBAAM,eAAe;AACrB;AAAA,oBACC;AAAA,oBACA,UAAU,IAAI,MAAM,UAAU,MAAM;AAAA,kBACrC;AACA,0BAAS,IAAK;AAAA,gBACf;AAAA,cACD;AAAA,cACA,cAAe,MAAM;AACpB,oBAAK,cAAc,SAAU;AAC5B;AAAA,gBACD;AACA,wBAAS,IAAK;AAAA,cACf;AAAA,cACA,cAAe,MAAM,QAAS,IAAK;AAAA,cACjC,GAAG;AAAA,cAEL;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACA,WAAU;AAAA,oBACV,OAAQ;AAAA,oBAER,8BAAC,aAAU,MAAO,KAAK,MAAO,YAAU,MAAC;AAAA;AAAA,gBAC1C;AAAA,gBACA,oBAAC,UAAK,WAAU,6CACf,8BAAC,YAAS,eAAgB,GACvB,eAAK,OACR,GACD;AAAA;AAAA;AAAA,UACD;AAAA;AAAA,MACD;AAAA;AAAA,EAEF;AAEF;AAEA,IAAO,6BAAQ,KAAM,gBAAiB;", "names": [] }