UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 3.14 kB
{ "version": 3, "sources": ["../../../src/components/block-list/block-html.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport TextareaAutosize from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tgetBlockAttributes,\n\tgetBlockContent,\n\tgetBlockType,\n\tgetSaveContent,\n\tvalidateBlock,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockHTML( { clientId } ) {\n\tconst [ html, setHtml ] = useState( '' );\n\tconst block = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlock( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { updateBlock } = useDispatch( blockEditorStore );\n\tconst onChange = () => {\n\t\tconst blockType = getBlockType( block.name );\n\n\t\tif ( ! blockType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst attributes = getBlockAttributes(\n\t\t\tblockType,\n\t\t\thtml,\n\t\t\tblock.attributes\n\t\t);\n\n\t\t// If html is empty we reset the block to the default HTML and mark it as valid to avoid triggering an error\n\t\tconst content = html ? html : getSaveContent( blockType, attributes );\n\t\tconst [ isValid ] = html\n\t\t\t? validateBlock( {\n\t\t\t\t\t...block,\n\t\t\t\t\tattributes,\n\t\t\t\t\toriginalContent: content,\n\t\t\t } )\n\t\t\t: [ true ];\n\n\t\tupdateBlock( clientId, {\n\t\t\tattributes,\n\t\t\toriginalContent: content,\n\t\t\tisValid,\n\t\t} );\n\n\t\t// Ensure the state is updated if we reset so it displays the default content.\n\t\tif ( ! html ) {\n\t\t\tsetHtml( content );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tsetHtml( getBlockContent( block ) );\n\t}, [ block ] );\n\n\treturn (\n\t\t<TextareaAutosize\n\t\t\tclassName=\"block-editor-block-list__block-html-textarea\"\n\t\t\tvalue={ html }\n\t\t\tonBlur={ onChange }\n\t\t\tonChange={ ( event ) => setHtml( event.target.value ) }\n\t\t/>\n\t);\n}\n\nexport default BlockHTML;\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qCAA6B;AAK7B,qBAAoC;AACpC,kBAAuC;AACvC,oBAMO;AAKP,mBAA0C;AAiDxC;AA/CF,SAAS,UAAW,EAAE,SAAS,GAAI;AAClC,QAAM,CAAE,MAAM,OAAQ,QAAI,yBAAU,EAAG;AACvC,QAAM,YAAQ;AAAA,IACb,CAAE,WAAY,OAAQ,aAAAA,KAAiB,EAAE,SAAU,QAAS;AAAA,IAC5D,CAAE,QAAS;AAAA,EACZ;AACA,QAAM,EAAE,YAAY,QAAI,yBAAa,aAAAA,KAAiB;AACtD,QAAM,WAAW,MAAM;AACtB,UAAM,gBAAY,4BAAc,MAAM,IAAK;AAE3C,QAAK,CAAE,WAAY;AAClB;AAAA,IACD;AAEA,UAAM,iBAAa;AAAA,MAClB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACP;AAGA,UAAM,UAAU,OAAO,WAAO,8BAAgB,WAAW,UAAW;AACpE,UAAM,CAAE,OAAQ,IAAI,WACjB,6BAAe;AAAA,MACf,GAAG;AAAA,MACH;AAAA,MACA,iBAAiB;AAAA,IACjB,CAAE,IACF,CAAE,IAAK;AAEV,gBAAa,UAAU;AAAA,MACtB;AAAA,MACA,iBAAiB;AAAA,MACjB;AAAA,IACD,CAAE;AAGF,QAAK,CAAE,MAAO;AACb,cAAS,OAAQ;AAAA,IAClB;AAAA,EACD;AAEA,gCAAW,MAAM;AAChB,gBAAS,+BAAiB,KAAM,CAAE;AAAA,EACnC,GAAG,CAAE,KAAM,CAAE;AAEb,SACC;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAQ;AAAA,MACR,QAAS;AAAA,MACT,UAAW,CAAE,UAAW,QAAS,MAAM,OAAO,KAAM;AAAA;AAAA,EACrD;AAEF;AAEA,IAAO,qBAAQ;", "names": ["blockEditorStore", "TextareaAutosize"] }