(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.hanabi = factory());
}(this, (function () {
'use strict';
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var index$1 = createCommonjsModule(function (module) {
'use strict';
var comment = module.exports = function () {
return new RegExp('(?:' + comment.line().source + ')|(?:' + comment.block().source + ')', 'gm');
};
comment.line = function () {
return /(?:^|\s)\/\/(.+?)$/gm;
};
comment.block = function () {
return /\/\*([\S\s]*?)\*\//gm;
};
});
var defaultColors = ['23AC69', '91C132', 'F19726', 'E8552D', '1AAB8E', 'E1147F', '2980C1', '1BA1E6', '9FA0A0', 'F19726', 'E30B20', 'E30B20', 'A3338B'];
var index = function (input, ref) {
if (ref === void 0) ref = {};
var colors = ref.colors; if (colors === void 0) colors = defaultColors;
var index = 0;
var cache = {};
var wordRe = /[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/;
var leftAngleRe = /;
var re = new RegExp(("(" + (wordRe.source) + "|" + (leftAngleRe.source) + ")|(" + (index$1().source) + ")"), 'gmi');
return input
.replace(re, function (m, word, cm) {
if (cm) {
return toComment(cm)
}
if (word === '<') {
return '<'
}
var color;
if (cache[word]) {
color = cache[word];
} else {
color = colors[index];
cache[word] = color;
}
var out = "" + word + "";
index = ++index % colors.length;
return out
})
};
function toComment(cm) {
return ("" + cm + "")
}
return index;
})));