diff --git a/index.php b/index.php index 3570bfb..69711b2 100644 --- a/index.php +++ b/index.php @@ -215,9 +215,11 @@ function mkaz_prism_theme_css_ver() { add_filter( 'wp_kses_allowed_html', function( $tags ) { if ( is_array( $tags['code'] ) ) { + $tags['code']['data-lang'] = array(); $tags['code']['lang'] = array(); } else { $tags['code'] = array( + 'data-lang' => array(), 'lang' => array(), ); } diff --git a/package.json b/package.json index bff75b9..4eac418 100644 --- a/package.json +++ b/package.json @@ -19,5 +19,8 @@ "scripts": { "start": "wp-scripts start", "build": "wp-scripts build" + }, + "dependencies": { + "lodash.omit": "^4.5.0" } } diff --git a/src/edit.js b/src/edit.js index 859a500..f9df669 100644 --- a/src/edit.js +++ b/src/edit.js @@ -21,12 +21,12 @@ import { __ } from '@wordpress/i18n'; /* global mkaz_code_syntax_languages, mkaz_code_syntax_default_lang, Prism */ -const edit = ( { attributes, className, setAttributes } ) => { +const Edit = ( { attributes, className, setAttributes } ) => { useEffect( () => { - if ( ! attributes.language && mkaz_code_syntax_default_lang ) { - setAttributes( { language: mkaz_code_syntax_default_lang } ); + if ( ! attributes.datalang && mkaz_code_syntax_default_lang ) { + setAttributes( { datalang: mkaz_code_syntax_default_lang } ); } - }, [ attributes.language ] ); + }, [ attributes.datalang ] ); // Onload fetch color scheme option useEffect( () => { @@ -61,7 +61,7 @@ const edit = ( { attributes, className, setAttributes } ) => { ]; const updateColorScheme = ( colorScheme ) => { - let path = '/mkaz/code-syntax/v1/set/color-scheme/' + colorScheme; + const path = '/mkaz/code-syntax/v1/set/color-scheme/' + colorScheme; apiFetch( { path } ) .then( () => { setAttributes( { colorScheme } ); @@ -71,10 +71,6 @@ const edit = ( { attributes, className, setAttributes } ) => { } ); }; - let cls = ''; - cls = attributes.language ? 'language-' + attributes.language : ''; - cls = attributes.lineNumbers ? cls + ' line-numbers' : cls; - // shared props for text areas const textAreaProps = { value: attributes.content || '', @@ -96,7 +92,7 @@ const edit = ( { attributes, className, setAttributes } ) => { { } ) ) ) } - onChange={ ( language ) => - setAttributes( { language } ) + onChange={ ( datalang ) => + setAttributes( { datalang } ) } /> { { /* Language label, uses wp-block class to keep within editor bounds */ }
- { mkaz_code_syntax_languages[ attributes.language ] } + { mkaz_code_syntax_languages[ attributes.datalang ] }
); }; -export default edit; +export default Edit; diff --git a/src/index.js b/src/index.js index b07e4e7..d2d1199 100644 --- a/src/index.js +++ b/src/index.js @@ -19,16 +19,19 @@ const addSyntaxToCodeBlock = ( settings ) => { return settings; } - const newCodeBlockSettings = { + return { ...settings, - attributes: { - ...settings.attributes, - language: { + content: { + type: 'string', + source: 'html', + selector: 'code', + }, + datalang: { type: 'string', selector: 'code', source: 'attribute', - attribute: 'lang', + attribute: 'data-lang', }, lineNumbers: { type: 'boolean', @@ -40,11 +43,48 @@ const addSyntaxToCodeBlock = ( settings ) => { attribute: 'title', }, }, + deprecated: [ + { + // old attributes + attributes: { + ...settings.attributes, + language: { + type: 'string', + selector: 'code', + source: 'attribute', + attribute: 'lang', + }, + }, + migrate: ( attributes ) => { + return { + ...attributes, + datalang: attributes.language, + }; + }, + // old save function + save: ( { attributes } ) => { + let cls = ''; + cls = attributes.language + ? 'language-' + attributes.language + : ''; + cls = attributes.lineNumbers ? cls + ' line-numbers' : cls; + + return ( +
+							
+								{ attributes.content }
+							
+						
+ ); + }, + }, + ], edit, save, }; - - return newCodeBlockSettings; }; // Register Filter diff --git a/src/save.js b/src/save.js index fab95e3..88391c4 100644 --- a/src/save.js +++ b/src/save.js @@ -5,7 +5,7 @@ import { RichText, useBlockProps } from '@wordpress/block-editor'; const save = ( { attributes } ) => { let cls = ''; - cls = attributes.language ? 'language-' + attributes.language : ''; + cls = attributes.datalang ? 'language-' + attributes.datalang : ''; cls = attributes.lineNumbers ? cls + ' line-numbers' : cls; // WP 5.6 / GB 9.2 @@ -17,7 +17,7 @@ const save = ( { attributes } ) => { @@ -28,7 +28,7 @@ const save = ( { attributes } ) => { // Backward compatibility < WP 5.6 return (
-			
+			
 				{ attributes.content }