Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81158 views
1
/**
2
* Copyright 2013-2014, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
* @providesModule ReactMarkupChecksum
10
*/
11
12
"use strict";
13
14
var adler32 = require('adler32');
15
16
var ReactMarkupChecksum = {
17
CHECKSUM_ATTR_NAME: 'data-react-checksum',
18
19
/**
20
* @param {string} markup Markup string
21
* @return {string} Markup string with checksum attribute attached
22
*/
23
addChecksumToMarkup: function(markup) {
24
var checksum = adler32(markup);
25
return markup.replace(
26
'>',
27
' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '">'
28
);
29
},
30
31
/**
32
* @param {string} markup to use
33
* @param {DOMElement} element root React element
34
* @returns {boolean} whether or not the markup is the same
35
*/
36
canReuseMarkup: function(markup, element) {
37
var existingChecksum = element.getAttribute(
38
ReactMarkupChecksum.CHECKSUM_ATTR_NAME
39
);
40
existingChecksum = existingChecksum && parseInt(existingChecksum, 10);
41
var markupChecksum = adler32(markup);
42
return markupChecksum === existingChecksum;
43
}
44
};
45
46
module.exports = ReactMarkupChecksum;
47
48