Inez has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/69268


Change subject: (WIP) Re-create DOM element for MWBlockImageNode only when 
necessary
......................................................................

(WIP) Re-create DOM element for MWBlockImageNode only when necessary

Change-Id: I2119d5fa1d705728bdf0f8f6a9196adf2b38020e
---
M modules/ve/dm/nodes/ve.dm.MWBlockImageNode.js
1 file changed, 31 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/68/69268/1

diff --git a/modules/ve/dm/nodes/ve.dm.MWBlockImageNode.js 
b/modules/ve/dm/nodes/ve.dm.MWBlockImageNode.js
index 1aa2d50..33c75ea 100644
--- a/modules/ve/dm/nodes/ve.dm.MWBlockImageNode.js
+++ b/modules/ve/dm/nodes/ve.dm.MWBlockImageNode.js
@@ -16,6 +16,14 @@
  */
 ve.dm.MWBlockImageNode = function VeDmMWBlockImageNode( length, element ) {
        ve.dm.BranchNode.call( this, 0, element );
+
+       /*
+       // Properties
+       this.dirty = false;
+
+       // Events
+       this.connect( this, { 'attributeChange': 'onAttributeChange' } );
+       */
 };
 
 /* Inheritance */
@@ -50,7 +58,8 @@
                        width: $img.attr( 'width' ),
                        height: $img.attr( 'height' ),
                        resource: $img.attr( 'resource' )
-               };
+               },
+               dataElement;
 
        // Extract individual classes
        classes = typeof classes === 'string' ?
@@ -85,17 +94,24 @@
        }
 
        if ( $caption.length === 0 ) {
-               return [
+               dataElement = [
                        { 'type': 'mwBlockImage', 'attributes': attributes },
                        { 'type': 'mwImageCaption' },
                        { 'type': '/mwImageCaption' },
                        { 'type': '/mwBlockImage' }
                ];
        } else {
-               return [ { 'type': 'mwBlockImage', 'attributes': attributes } ].
+               dataElement = [ { 'type': 'mwBlockImage', 'attributes': 
attributes } ].
                        concat( converter.getDataFromDomRecursionClean( 
$caption[0], { 'type': 'mwImageCaption' } ) ).
                        concat( [ { 'type': '/mwBlockImage' } ] );
        }
+
+       converter.getStore().index(
+               domElements,
+               ve.getHash( this.getHashObject( dataElement[0] ) )
+       );
+
+       return dataElement;
 };
 
 // TODO: Consider using jQuery instead of pure JS.
@@ -107,6 +123,11 @@
                a = doc.createElement( 'a' ),
                img = doc.createElement( 'img' ),
                wrapper = doc.createElement( 'div' );
+
+       var index = converter.getStore().indexOfHash( ve.getHash( 
this.getHashObject( dataElement ) ) );
+       if ( index ) {
+               return ve.copyArray( converter.getStore().value( index ) );
+       }
 
        // Type
        if ( dataElement.attributes.type === 'thumb' ) {
@@ -152,6 +173,13 @@
        return [ figure ];
 };
 
+/* Methods */
+/*
+ve.dm.MWBlockImageNode.prototype.onAttributeChange = function () {
+       this.dirty = true;
+};
+*/
+
 /* Registration */
 
 ve.dm.modelRegistry.register( ve.dm.MWBlockImageNode );

-- 
To view, visit https://gerrit.wikimedia.org/r/69268
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2119d5fa1d705728bdf0f8f6a9196adf2b38020e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Inez <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to