/**
* Generate a random uuid.
* Written by https://www.broofa.com (robert@broofa.com)
*
* Copyright (c) 2010 Robert Kieffer
* Dual licensed under the MIT and GPL licenses.
* @returns {String}
* @example
* var uuid = JXG.Util.genUUID();
* > uuid = '92329D39-6F5C-4520-ABFC-AAB64544E172'
*/
/*global JXG: true, define: true*/
/*jslint nomen: true, plusplus: true, bitwise: true*/
import JXG from "../jxg.js";
// constants
var uuidCharsStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
uuidChars = uuidCharsStr.split("");
/**
* JXG.Util namespace providing general utility routines.
* @namespace
*/
JXG.Util = JXG.Util || {};
/**
* Generate uuid string with optional prefix string.
*
* @param {String} [prefix='']
* @returns {String}
*/
JXG.Util.genUUID = function (prefix) {
var r,
i,
uuid = [],
rnd = 0;
prefix = prefix || "";
if (prefix !== "" && prefix.slice(prefix.length - 1) !== "-") {
prefix = prefix + "-";
}
for (i = 0; i < 36; i++) {
if (i === 8 || i === 13 || i === 18 || i === 23) {
uuid[i] = "-";
} else if (i === 14) {
uuid[i] = '4';
} else {
if (rnd <= 0x02) {
rnd = (0x2000000 + Math.random() * 0x1000000) | 0;
}
r = rnd & 0xf;
rnd = rnd >> 4;
uuid[i] = uuidChars[i === 19 ? (r & 0x3) | 0x8 : r];
}
}
return prefix + uuid.join("");
};
export default JXG.Util;