UNPKG

substance

Version:

Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.

46 lines (44 loc) 1.25 kB
/*! Math.uuid.js (v1.4) http://www.broofa.com mailto:robert@broofa.com Copyright (c) 2010 Robert Kieffer Dual licensed under the MIT and GPL licenses. */ /** * Generates a unique id. * * @param {String} [prefix] if provided the UUID will be prefixed. * @param {Number} [len] if provided a UUID with given length will be created. * @return A generated uuid. */ function uuid(prefix, len) { if (prefix && prefix[prefix.length-1] !== "-") { prefix = prefix.concat("-"); } var chars = '0123456789abcdefghijklmnopqrstuvwxyz'.split(''); var uuid = []; var radix = 16; var idx; len = len || 32; if (len) { // Compact form for (idx = 0; idx < len; idx++) uuid[idx] = chars[0 | Math.random()*radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (idx = 0; idx < 36; idx++) { if (!uuid[idx]) { r = 0 | Math.random()*16; uuid[idx] = chars[(idx === 19) ? (r & 0x3) | 0x8 : r]; } } } return (prefix ? prefix : "") + uuid.join(''); } export default uuid;