/*! * VisualEditor rebaser demo * * @copyright See AUTHORS.txt */ ( function () { function RebaserTarget() { RebaserTarget.super.apply( this, arguments ); // HACK: Disable redo command until supported (T185706) ve.ui.commandRegistry.unregister( 'redo' ); } OO.inheritClass( RebaserTarget, ve.init.sa.Target ); const linkIndex = RebaserTarget.static.toolbarGroups.findIndex( ( group ) => group.name === 'link' ); RebaserTarget.static.toolbarGroups = ve.copy( RebaserTarget.static.toolbarGroups ); RebaserTarget.static.toolbarGroups.splice( linkIndex + 1, 0, { name: 'commentAnnotation', include: [ 'commentAnnotation' ] } ); RebaserTarget.static.toolbarGroups.push( { name: 'authorList', align: 'after', include: [ 'authorList' ] } ); new ve.init.sa.Platform( ve.messagePaths ).initialize().then( () => { const progressDeferred = ve.createDeferred(), panel = new OO.ui.PanelLayout( { // eslint-disable-next-line no-jquery/no-global-selector $element: $( '.ve-demo-editor' ), expanded: false, framed: true } ), target = new RebaserTarget(); panel.$element.append( target.$element ); // Add a dummy surface while the doc is loading const dummySurface = target.addSurface( ve.dm.converter.getModelFromDom( ve.createDocumentFromHtml( '' ) ) ); dummySurface.setReadOnly( true ); // TODO: Create the correct model surface type (ve.ui.Surface#createModel) const surfaceModel = new ve.dm.Surface( ve.dm.converter.getModelFromDom( ve.createDocumentFromHtml( '' ) ) ); surfaceModel.createSynchronizer( ve.docName ); dummySurface.createProgress( progressDeferred.promise(), ve.msg( 'visualeditor-rebase-client-connecting' ), true ); surfaceModel.synchronizer.once( 'initDoc', ( error ) => { progressDeferred.resolve(); target.clearSurfaces(); if ( error ) { OO.ui.alert( $( '

' ).append( ve.htmlMsg( 'visualeditor-rebase-corrupted-document-error', $( '

' ).text( error.stack ) )
					),
					{ title: ve.msg( 'visualeditor-rebase-corrupted-document-title' ), size: 'large' }
				).then( () => {
					// TODO: Go back to landing page?
				} );
				return;
			}
			// Don't add the surface until the history has been applied
			target.addSurface( surfaceModel );
			target.getSurface().getView().focus();
		} );

	} );
}() );