UNPKG

12.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["@wordpress/block-library/src/classic/edit.js"],"names":["Component","__","_x","BACKSPACE","DELETE","F10","window","wp","isTmceEmpty","editor","body","getBody","childNodes","length","test","innerText","textContent","ClassicEdit","props","initialize","bind","onSetup","focus","wpEditorL10n","tinymce","baseURL","suffix","EditorManager","overrideDefaults","base_url","document","readyState","addEventListener","oldEditor","remove","clientId","prevProps","content","attributes","get","setContent","settings","inline","content_css","fixed_toolbar_container","setup","setAttributes","ref","bookmark","on","selection","getBookmark","getContent","once","moveToBookmark","event","keyCode","onReplace","preventDefault","stopImmediatePropagation","altKey","stopPropagation","addButton","tooltip","icon","onClick","button","active","dom","toggleClass","toolbar1","indexOf","addClass","cmd","rootNode","activeElement","blur","nativeEvent","onToolbarKeyDown"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __, _x } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE, F10 } from '@wordpress/keycodes';\n\nconst { wp } = window;\n\nfunction isTmceEmpty( editor ) {\n\t// When tinyMce is empty the content seems to be:\n\t// <p><br data-mce-bogus=\"1\"></p>\n\t// avoid expensive checks for large documents\n\tconst body = editor.getBody();\n\tif ( body.childNodes.length > 1 ) {\n\t\treturn false;\n\t} else if ( body.childNodes.length === 0 ) {\n\t\treturn true;\n\t}\n\tif ( body.childNodes[ 0 ].childNodes.length > 1 ) {\n\t\treturn false;\n\t}\n\treturn /^\\n?$/.test( body.innerText || body.textContent );\n}\n\nexport default class ClassicEdit extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.initialize = this.initialize.bind( this );\n\t\tthis.onSetup = this.onSetup.bind( this );\n\t\tthis.focus = this.focus.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { baseURL, suffix } = window.wpEditorL10n.tinymce;\n\n\t\twindow.tinymce.EditorManager.overrideDefaults( {\n\t\t\tbase_url: baseURL,\n\t\t\tsuffix,\n\t\t} );\n\n\t\tif ( document.readyState === 'complete' ) {\n\t\t\tthis.initialize();\n\t\t} else {\n\t\t\twindow.addEventListener( 'DOMContentLoaded', this.initialize );\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\twindow.addEventListener( 'DOMContentLoaded', this.initialize );\n\t\twp.oldEditor.remove( `editor-${ this.props.clientId }` );\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { clientId, attributes: { content } } = this.props;\n\n\t\tconst editor = window.tinymce.get( `editor-${ clientId }` );\n\n\t\tif ( prevProps.attributes.content !== content ) {\n\t\t\teditor.setContent( content || '' );\n\t\t}\n\t}\n\n\tinitialize() {\n\t\tconst { clientId } = this.props;\n\t\tconst { settings } = window.wpEditorL10n.tinymce;\n\t\twp.oldEditor.initialize( `editor-${ clientId }`, {\n\t\t\ttinymce: {\n\t\t\t\t...settings,\n\t\t\t\tinline: true,\n\t\t\t\tcontent_css: false,\n\t\t\t\tfixed_toolbar_container: `#toolbar-${ clientId }`,\n\t\t\t\tsetup: this.onSetup,\n\t\t\t},\n\t\t} );\n\t}\n\n\tonSetup( editor ) {\n\t\tconst { attributes: { content }, setAttributes } = this.props;\n\t\tconst { ref } = this;\n\t\tlet bookmark;\n\n\t\tthis.editor = editor;\n\n\t\tif ( content ) {\n\t\t\teditor.on( 'loadContent', () => editor.setContent( content ) );\n\t\t}\n\n\t\teditor.on( 'blur', () => {\n\t\t\tbookmark = editor.selection.getBookmark( 2, true );\n\n\t\t\tsetAttributes( {\n\t\t\t\tcontent: editor.getContent(),\n\t\t\t} );\n\n\t\t\teditor.once( 'focus', () => {\n\t\t\t\tif ( bookmark ) {\n\t\t\t\t\teditor.selection.moveToBookmark( bookmark );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t} );\n\n\t\teditor.on( 'mousedown touchstart', () => {\n\t\t\tbookmark = null;\n\t\t} );\n\n\t\teditor.on( 'keydown', ( event ) => {\n\t\t\tif ( ( event.keyCode === BACKSPACE || event.keyCode === DELETE ) && isTmceEmpty( editor ) ) {\n\t\t\t\t// delete the block\n\t\t\t\tthis.props.onReplace( [] );\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\n\t\t\tconst { altKey } = event;\n\t\t\t/*\n\t\t\t * Prevent Mousetrap from kicking in: TinyMCE already uses its own\n\t\t\t * `alt+f10` shortcut to focus its toolbar.\n\t\t\t */\n\t\t\tif ( altKey && event.keyCode === F10 ) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t} );\n\n\t\t// TODO: the following is for back-compat with WP 4.9, not needed in WP 5.0. Remove it after the release.\n\t\teditor.addButton( 'kitchensink', {\n\t\t\ttooltip: _x( 'More', 'button to expand options' ),\n\t\t\ticon: 'dashicon dashicons-editor-kitchensink',\n\t\t\tonClick() {\n\t\t\t\tconst button = this;\n\t\t\t\tconst active = ! button.active();\n\n\t\t\t\tbutton.active( active );\n\t\t\t\teditor.dom.toggleClass( ref, 'has-advanced-toolbar', active );\n\t\t\t},\n\t\t} );\n\n\t\t// Show the second, third, etc. toolbars when the `kitchensink` button is removed by a plugin.\n\t\teditor.on( 'init', function() {\n\t\t\tif ( editor.settings.toolbar1 && editor.settings.toolbar1.indexOf( 'kitchensink' ) === -1 ) {\n\t\t\t\teditor.dom.addClass( ref, 'has-advanced-toolbar' );\n\t\t\t}\n\t\t} );\n\n\t\teditor.addButton( 'wp_add_media', {\n\t\t\ttooltip: __( 'Insert Media' ),\n\t\t\ticon: 'dashicon dashicons-admin-media',\n\t\t\tcmd: 'WP_Medialib',\n\t\t} );\n\t\t// End TODO.\n\n\t\teditor.on( 'init', () => {\n\t\t\tconst rootNode = this.editor.getBody();\n\n\t\t\t// Create the toolbar by refocussing the editor.\n\t\t\tif ( document.activeElement === rootNode ) {\n\t\t\t\trootNode.blur();\n\t\t\t\tthis.editor.focus();\n\t\t\t}\n\t\t} );\n\t}\n\n\tfocus() {\n\t\tif ( this.editor ) {\n\t\t\tthis.editor.focus();\n\t\t}\n\t}\n\n\tonToolbarKeyDown( event ) {\n\t\t// Prevent WritingFlow from kicking in and allow arrows navigation on the toolbar.\n\t\tevent.stopPropagation();\n\t\t// Prevent Mousetrap from moving focus to the top toolbar when pressing `alt+f10` on this block toolbar.\n\t\tevent.nativeEvent.stopImmediatePropagation();\n\t}\n\n\trender() {\n\t\tconst { clientId } = this.props;\n\n\t\t// Disable reason: the toolbar itself is non-interactive, but must capture\n\t\t// events from the KeyboardShortcuts component to stop their propagation.\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\treturn [\n\t\t\t// Disable reason: Clicking on this visual placeholder should create\n\t\t\t// the toolbar, it can also be created by focussing the field below.\n\t\t\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t<div\n\t\t\t\tkey=\"toolbar\"\n\t\t\t\tid={ `toolbar-${ clientId }` }\n\t\t\t\tref={ ( ref ) => this.ref = ref }\n\t\t\t\tclassName=\"block-library-classic__toolbar\"\n\t\t\t\tonClick={ this.focus }\n\t\t\t\tdata-placeholder={ __( 'Classic' ) }\n\t\t\t\tonKeyDown={ this.onToolbarKeyDown }\n\t\t\t/>,\n\t\t\t<div\n\t\t\t\tkey=\"editor\"\n\t\t\t\tid={ `editor-${ clientId }` }\n\t\t\t\tclassName=\"wp-block-freeform block-library-rich-text__tinymce\"\n\t\t\t/>,\n\t\t];\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\t}\n}\n"]}
\No newline at end of file