nl_tokens: When the element is replaced with HTML template then the new attributes on the template need to be merged with the existing attributes in the DOM . The desired effect is to have both of the attributes present .
pl_tokens: function mergeTemplateAttributes ( dst , src ) { var srcAttr = src . $attr , dstAttr = dst . $attr ; // reapply the old attributes to the new element forEach ( dst , function ( value , key ) { if ( key . charAt ( 0 ) !== '$' ) { if ( src [ key ] && src [ key ] !== value ) { if ( value . length ) { value += ( key === 'style' ? ';' : ' ' ) + src [ key ] ; } else { value = src [ key ] ; } } dst . $set ( key , value , true , srcAttr [ <mask> ] ) ; } } ) ; // copy the new attributes on the old attrs object forEach ( src , function ( value , key ) { // Check if we already set this attribute in the loop above. // `dst` will never contain hasOwnProperty as DOM parser won't let it. // You will get an "InvalidCharacterError: DOM Exception 5" error if you // have an attribute like "has-own-property" or "data-has-own-property", etc. if ( ! dst . hasOwnProperty ( key ) && key . charAt ( 0 ) !== '$' ) { dst [ key ] = value ; if ( key !== 'class' && key !== 'style' ) { dstAttr [ key ] = srcAttr [ key ] ; } } } ) ; }