diff --git a/lib/markdown-it/markdown-it-radio-button.js b/lib/markdown-it/markdown-it-radio-button.js index 8ef268a68f..629dea8aac 100644 --- a/lib/markdown-it/markdown-it-radio-button.js +++ b/lib/markdown-it/markdown-it-radio-button.js @@ -1,3 +1,5 @@ +const crypto = require('crypto'); + var disableRadio = false; var useLabelWrapper = true; @@ -18,7 +20,10 @@ module.exports = function(md, options) { if (group) { group = group[1]; } else { - group = Math.random().toString(36).substr(2, 5); // generate a new group id + group = crypto.createHash('md5') + .update(tokens[i-5].content) + .update(tokens[i-4].content) + .update(tokens[i].content).digest('hex').substr(2, 5); // generate a deterministic group id } radioify(tokens[i], state.Token, group); attrSet(tokens[i-2], 'class', 'radio-list-item'); @@ -110,4 +115,4 @@ function isListItem(token) { return token.type === 'list_item_open'; } function startsWithTodoMarkdown(token) { // leading whitespace in a list item is already trimmed off by markdown-it return token.content.indexOf('( ) ') === 0 || token.content.indexOf('(x) ') === 0 || token.content.indexOf('(X) ') === 0; -} \ No newline at end of file +}