RealtimePreview: add config setting for debounce time

Change-Id: Iaf49f076c5a290ab9049267b0aede1e6b13a9136
This commit is contained in:
MusikAnimal 2022-03-18 14:08:32 -04:00
parent 48d9696e7d
commit 68e6561857
3 changed files with 11 additions and 3 deletions

View file

@ -413,6 +413,10 @@
"WikiEditorRealtimePreview": {
"description": "Whether to enable the Realtime Preview feature.",
"value": false
},
"WikiEditorRealtimePreviewDebounce": {
"description": "Debounce time in milliseconds for the Realtime Preview feature.",
"value": 2500
}
},
"manifest_version": 2

View file

@ -356,7 +356,8 @@ class Hooks implements
return [
// expose magic words for use by the wikieditor toolbar
'magicWords' => self::getMagicWords(),
'signature' => self::getSignatureMessage( $context )
'signature' => self::getSignatureMessage( $context ),
'realtimeDebounce' => $config->get( 'WikiEditorRealtimePreviewDebounce' ),
];
}

View file

@ -5,6 +5,7 @@ var TwoPaneLayout = require( './TwoPaneLayout.js' );
* @class
*/
function RealtimePreview() {
this.configData = mw.loader.moduleRegistry[ 'ext.wikiEditor' ].script.files[ 'data.json' ];
this.enabled = false;
this.twoPaneLayout = new TwoPaneLayout();
this.pagePreview = require( 'mediawiki.page.preview' );
@ -54,7 +55,6 @@ RealtimePreview.prototype.getToolbarButton = function ( context ) {
* Toggle the two-pane preview display.
*
* @private
* @param {Object} context The WikiEditor context object.
*/
RealtimePreview.prototype.toggle = function () {
var $uiText = this.context.$ui.find( '.wikiEditor-ui-text' );
@ -107,7 +107,10 @@ RealtimePreview.prototype.addPreviewListener = function ( $editor ) {
// Also get preview on keyup, change, paste etc.
$editor
.off( this.eventNames )
.on( this.eventNames, mw.util.debounce( 2000, this.doRealtimePreview.bind( this ) ) );
.on( this.eventNames, mw.util.debounce(
this.doRealtimePreview.bind( this ),
this.configData.realtimeDebounce
) );
};
/**