@wordpress/block-editor
Version:
8 lines (7 loc) • 4.82 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/inserter-draggable-blocks/index.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Draggable } from '@wordpress/components';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockDraggableChip from '../block-draggable/draggable-chip';\nimport { INSERTER_PATTERN_TYPES } from '../inserter/block-patterns-tab/utils';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst InserterDraggableBlocks = ( {\n\tisEnabled,\n\tblocks,\n\ticon,\n\tchildren,\n\tpattern,\n} ) => {\n\tconst blockName = blocks.length === 1 ? blocks[ 0 ].name : undefined;\n\tconst blockTypeIcon = useSelect(\n\t\t( select ) => {\n\t\t\treturn (\n\t\t\t\tblockName &&\n\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.icon\n\t\t\t);\n\t\t},\n\t\t[ blockName ]\n\t);\n\n\tconst { startDragging, stopDragging } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst patternBlock = useMemo( () => {\n\t\treturn pattern?.type === INSERTER_PATTERN_TYPES.user &&\n\t\t\tpattern?.syncStatus !== 'unsynced'\n\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t: undefined;\n\t}, [ pattern?.type, pattern?.syncStatus, pattern?.id ] );\n\n\tif ( ! isEnabled ) {\n\t\treturn children( {\n\t\t\tdraggable: false,\n\t\t\tonDragStart: undefined,\n\t\t\tonDragEnd: undefined,\n\t\t} );\n\t}\n\n\tconst draggableBlocks = patternBlock ?? blocks;\n\treturn (\n\t\t<Draggable\n\t\t\t__experimentalTransferDataType=\"wp-blocks\"\n\t\t\ttransferData={ { type: 'inserter', blocks: draggableBlocks } }\n\t\t\tonDragStart={ ( event ) => {\n\t\t\t\tstartDragging();\n\t\t\t\tconst addedTypes = new Set();\n\t\t\t\tfor ( const block of draggableBlocks ) {\n\t\t\t\t\tconst type = `wp-block:${ block.name }`;\n\t\t\t\t\t/*\n\t\t\t\t\t * Only add each block type once to avoid DataTransferItemList::add `NotSupportedError`\n\t\t\t\t\t * when patterns contain multiple blocks of the same type.\n\t\t\t\t\t */\n\t\t\t\t\tif ( ! addedTypes.has( type ) ) {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * This will fill in the dataTransfer.types array so that\n\t\t\t\t\t\t * the drop zone can check if the draggable is eligible.\n\t\t\t\t\t\t * Unfortuantely, on drag start, we don't have access to the\n\t\t\t\t\t\t * actual data, only the data keys/types.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tevent.dataTransfer.items.add( '', type );\n\t\t\t\t\t\taddedTypes.add( type );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonDragEnd={ () => {\n\t\t\t\tstopDragging();\n\t\t\t} }\n\t\t\t__experimentalDragComponent={\n\t\t\t\t<BlockDraggableChip\n\t\t\t\t\tcount={ blocks.length }\n\t\t\t\t\ticon={ icon || ( ! pattern && blockTypeIcon ) }\n\t\t\t\t\tisPattern={ !! pattern }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t{ ( { onDraggableStart, onDraggableEnd } ) => {\n\t\t\t\treturn children( {\n\t\t\t\t\tdraggable: true,\n\t\t\t\t\tonDragStart: onDraggableStart,\n\t\t\t\t\tonDragEnd: onDraggableEnd,\n\t\t\t\t} );\n\t\t\t} }\n\t\t</Draggable>\n\t);\n};\n\nexport default InserterDraggableBlocks;\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA0B;AAC1B,oBAAkD;AAClD,kBAAuC;AACvC,qBAAwB;AAKxB,4BAA+B;AAC/B,mBAAuC;AACvC,mBAA0C;AAC1C,yBAAuB;AAqEnB;AAnEJ,IAAM,0BAA0B,CAAE;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,YAAY,OAAO,WAAW,IAAI,OAAQ,CAAE,EAAE,OAAO;AAC3D,QAAM,oBAAgB;AAAA,IACrB,CAAE,WAAY;AACb,aACC,aACA,OAAQ,cAAAA,KAAY,EAAE,aAAc,SAAU,GAAG;AAAA,IAEnD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,EAAE,eAAe,aAAa,QAAI;AAAA,QACvC,yBAAa,aAAAC,KAAiB;AAAA,EAC/B;AAEA,QAAM,mBAAe,wBAAS,MAAM;AACnC,WAAO,SAAS,SAAS,oCAAuB,QAC/C,SAAS,eAAe,aACtB,KAAE,2BAAa,cAAc,EAAE,KAAK,QAAQ,GAAG,CAAE,CAAE,IACnD;AAAA,EACJ,GAAG,CAAE,SAAS,MAAM,SAAS,YAAY,SAAS,EAAG,CAAE;AAEvD,MAAK,CAAE,WAAY;AAClB,WAAO,SAAU;AAAA,MAChB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,QAAM,kBAAkB,gBAAgB;AACxC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,gCAA+B;AAAA,MAC/B,cAAe,EAAE,MAAM,YAAY,QAAQ,gBAAgB;AAAA,MAC3D,aAAc,CAAE,UAAW;AAC1B,sBAAc;AACd,cAAM,aAAa,oBAAI,IAAI;AAC3B,mBAAY,SAAS,iBAAkB;AACtC,gBAAM,OAAO,YAAa,MAAM,IAAK;AAKrC,cAAK,CAAE,WAAW,IAAK,IAAK,GAAI;AAO/B,kBAAM,aAAa,MAAM,IAAK,IAAI,IAAK;AACvC,uBAAW,IAAK,IAAK;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AAAA,MACA,WAAY,MAAM;AACjB,qBAAa;AAAA,MACd;AAAA,MACA,6BACC;AAAA,QAAC,sBAAAC;AAAA,QAAA;AAAA,UACA,OAAQ,OAAO;AAAA,UACf,MAAO,QAAU,CAAE,WAAW;AAAA,UAC9B,WAAY,CAAC,CAAE;AAAA;AAAA,MAChB;AAAA,MAGC,WAAE,EAAE,kBAAkB,eAAe,MAAO;AAC7C,eAAO,SAAU;AAAA,UAChB,WAAW;AAAA,UACX,aAAa;AAAA,UACb,WAAW;AAAA,QACZ,CAAE;AAAA,MACH;AAAA;AAAA,EACD;AAEF;AAEA,IAAO,oCAAQ;",
"names": ["blocksStore", "blockEditorStore", "BlockDraggableChip"]
}