data_slugify.js

/**
 * @module slugify
 * @description Converts a string to a slug.
 *
 * @since 1.1.17
 *
 * @param {string} text The text to slugify.
 *
 * @return {string} Returns the slugified string.
 *
 * @example
 * import { slugify } from "@gravityforms/utils";
 *
 * function Example() {
 *   const str = 'my Mixed *** #string';
 * 	 const slug = slugify( str );
 * }
 *
 */
export default function slugify( text = '' ) {
	return text
		.toString() // Cast to string (optional)
		.normalize( 'NFKD' ) // The normalize() using NFKD method returns the Unicode Normalization Form of a given string.
		.toLowerCase() // Convert the string to lowercase letters
		.trim() // Remove whitespace from both sides of a string (optional)
		.replace( /\s+/g, '-' ) // Replace spaces with -
		.replace( /[^\w-]+/g, '' ) // Remove all non-word chars
		.replace( /--+/g, '-' ) // Replace multiple - with single -
		.replace( /-$/g, '' ); // Remove trailing -
}