@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 5.67 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/freeform/edit.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tPlaceholder,\n\tToolbarGroup,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useState, useRef, RawHTML } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { classic } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ConvertToBlocksButton from './convert-to-blocks-button';\nimport MigrationNotice from './migration-notice';\nimport ModalEdit from './modal';\n\nexport default function FreeformEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tonReplace,\n} ) {\n\tconst { content } = attributes;\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst editButtonRef = useRef( null );\n\n\tconst canRemove = useSelect(\n\t\t( select ) => select( blockEditorStore ).canRemoveBlock( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\n\t// Gated by an experiment so authors can opt into a stronger nudge to\n\t// migrate Classic block content ahead of its planned deprecation.\n\tconst isDeprecationMode = window.__experimentalClassicBlockDeprecation;\n\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && ! isDeprecationMode && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ConvertToBlocksButton\n\t\t\t\t\t\t\tcontent={ content }\n\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tref={ editButtonRef }\n\t\t\t\t\t\tonClick={ () => setOpen( true ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t{ isDeprecationMode && canRemove && content && (\n\t\t\t\t\t<MigrationNotice\n\t\t\t\t\t\tcontent={ content }\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ content ? (\n\t\t\t\t\t<RawHTML>{ content }</RawHTML>\n\t\t\t\t) : (\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ classic } /> }\n\t\t\t\t\t\tlabel={ __( 'Classic' ) }\n\t\t\t\t\t\tinstructions={\n\t\t\t\t\t\t\tisDeprecationMode\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'The Classic block is being phased out. It\u2019s recommended to use other blocks for the best editing experience.'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Use the classic editor to add content.' )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isDeprecationMode && canRemove && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ () => removeBlock( clientId ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Remove block' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\tisDeprecationMode && canRemove\n\t\t\t\t\t\t\t\t\t? 'secondary'\n\t\t\t\t\t\t\t\t\t: 'primary'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => setOpen( true ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit contents' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Placeholder>\n\t\t\t\t) }\n\t\t\t\t{ isOpen && (\n\t\t\t\t\t<ModalEdit\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tcontent={ content }\n\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\tsetOpen( false );\n\t\t\t\t\t\t\tif ( editButtonRef.current ) {\n\t\t\t\t\t\t\t\teditButtonRef.current.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( newContent ) =>\n\t\t\t\t\t\t\tsetAttributes( { content: newContent } )\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"],
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAKO;AACP,kBAAuC;AACvC,wBAKO;AACP,qBAA0C;AAC1C,kBAAmB;AACnB,mBAAwB;AAKxB,sCAAkC;AAClC,8BAA4B;AAC5B,mBAAsB;AAuBpB;AArBa,SAAR,aAA+B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,CAAE,QAAQ,OAAQ,QAAI,yBAAU,KAAM;AAC5C,QAAM,oBAAgB,uBAAQ,IAAK;AAEnC,QAAM,gBAAY;AAAA,IACjB,CAAE,WAAY,OAAQ,oBAAAA,KAAiB,EAAE,eAAgB,QAAS;AAAA,IAClE,CAAE,QAAS;AAAA,EACZ;AACA,QAAM,EAAE,YAAY,QAAI,yBAAa,oBAAAA,KAAiB;AAItD,QAAM,oBAAoB,OAAO;AAEjC,SACC,4EACG;AAAA,iBAAa,CAAE,qBAChB,4CAAC,qCACA,sDAAC,kCACA;AAAA,MAAC,gCAAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD,GACD,GACD;AAAA,IAED,4CAAC,qCACA,sDAAC,kCACA;AAAA,MAAC;AAAA;AAAA,QACA,KAAM;AAAA,QACN,SAAU,MAAM,QAAS,IAAK;AAAA,QAE5B,8BAAI,MAAO;AAAA;AAAA,IACd,GACD,GACD;AAAA,IACA,6CAAC,SAAM,OAAG,mCAAc,GACrB;AAAA,2BAAqB,aAAa,WACnC;AAAA,QAAC,wBAAAC;AAAA,QAAA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACD;AAAA,MAEC,UACD,4CAAC,0BAAU,mBAAS,IAEpB;AAAA,QAAC;AAAA;AAAA,UACA,MAAO,4CAAC,iCAAU,MAAO,sBAAU;AAAA,UACnC,WAAQ,gBAAI,SAAU;AAAA,UACtB,cACC,wBACG;AAAA,YACA;AAAA,UACA,QACA,gBAAI,wCAAyC;AAAA,UAG/C;AAAA,iCAAqB,aACtB;AAAA,cAAC;AAAA;AAAA,gBACA,uBAAqB;AAAA,gBACrB,SAAQ;AAAA,gBACR,SAAU,MAAM,YAAa,QAAS;AAAA,gBAEpC,8BAAI,cAAe;AAAA;AAAA,YACtB;AAAA,YAED;AAAA,cAAC;AAAA;AAAA,gBACA,uBAAqB;AAAA,gBACrB,SACC,qBAAqB,YAClB,cACA;AAAA,gBAEJ,SAAU,MAAM,QAAS,IAAK;AAAA,gBAE5B,8BAAI,eAAgB;AAAA;AAAA,YACvB;AAAA;AAAA;AAAA,MACD;AAAA,MAEC,UACD;AAAA,QAAC,aAAAC;AAAA,QAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAU,MAAM;AACf,oBAAS,KAAM;AACf,gBAAK,cAAc,SAAU;AAC5B,4BAAc,QAAQ,MAAM;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,UAAW,CAAE,eACZ,cAAe,EAAE,SAAS,WAAW,CAAE;AAAA;AAAA,MAEzC;AAAA,OAEF;AAAA,KACD;AAEF;",
"names": ["blockEditorStore", "ConvertToBlocksButton", "MigrationNotice", "ModalEdit"]
}