UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

32 lines 3.49 kB
/** * Sanitizes pasted or dropped text by removing invisible and control characters * that can appear in clipboard or drag-and-drop data. * * Removes: * 1. ASCII control characters (0x00–0x1F) — non-printable characters like * NULL, BEL, BS, CR, LF, TAB, ESC, etc. * 2. Extended control characters (0x7F–0x9F) — C1 control codes from ISO-8859-1, * often found in legacy or malformed text encodings. * 3. Zero-width and special Unicode characters: * - U+200B ZERO WIDTH SPACE * - U+200C ZERO WIDTH NON-JOINER * - U+200D ZERO WIDTH JOINER * - U+FEFF BYTE ORDER MARK (BOM) * * @param {string} value - The input string from clipboard or drag event. * @returns {string} - A cleaned string without control or invisible characters. * * @example * tuiSanitizeText('Hello\u0000World\u200B!'); * // → "HelloWorld!" */ export function tuiSanitizeText(value) { // eslint-disable-next-line no-control-regex const controlCharsRegex = /[\x00-\x1F\x7F-\x9F]/g; const zeroWidthCharsRegex = /[\u200B-\u200D\uFEFF]/g; return value .trim() .replaceAll(controlCharsRegex, '') .replaceAll(zeroWidthCharsRegex, ''); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUtdGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9taXNjZWxsYW5lb3VzL3Nhbml0aXplLXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYTtJQUN6Qyw0Q0FBNEM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztJQUNsRCxNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO0lBRXJELE9BQU8sS0FBSztTQUNQLElBQUksRUFBRTtTQUNOLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7U0FDakMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNhbml0aXplcyBwYXN0ZWQgb3IgZHJvcHBlZCB0ZXh0IGJ5IHJlbW92aW5nIGludmlzaWJsZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzXG4gKiB0aGF0IGNhbiBhcHBlYXIgaW4gY2xpcGJvYXJkIG9yIGRyYWctYW5kLWRyb3AgZGF0YS5cbiAqXG4gKiBSZW1vdmVzOlxuICogMS4gQVNDSUkgY29udHJvbCBjaGFyYWN0ZXJzICgweDAw4oCTMHgxRikg4oCUIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyBsaWtlXG4gKiAgICBOVUxMLCBCRUwsIEJTLCBDUiwgTEYsIFRBQiwgRVNDLCBldGMuXG4gKiAyLiBFeHRlbmRlZCBjb250cm9sIGNoYXJhY3RlcnMgKDB4N0bigJMweDlGKSDigJQgQzEgY29udHJvbCBjb2RlcyBmcm9tIElTTy04ODU5LTEsXG4gKiAgICBvZnRlbiBmb3VuZCBpbiBsZWdhY3kgb3IgbWFsZm9ybWVkIHRleHQgZW5jb2RpbmdzLlxuICogMy4gWmVyby13aWR0aCBhbmQgc3BlY2lhbCBVbmljb2RlIGNoYXJhY3RlcnM6XG4gKiAgICAtIFUrMjAwQiBaRVJPIFdJRFRIIFNQQUNFXG4gKiAgICAtIFUrMjAwQyBaRVJPIFdJRFRIIE5PTi1KT0lORVJcbiAqICAgIC0gVSsyMDBEIFpFUk8gV0lEVEggSk9JTkVSXG4gKiAgICAtIFUrRkVGRiBCWVRFIE9SREVSIE1BUksgKEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBUaGUgaW5wdXQgc3RyaW5nIGZyb20gY2xpcGJvYXJkIG9yIGRyYWcgZXZlbnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIEEgY2xlYW5lZCBzdHJpbmcgd2l0aG91dCBjb250cm9sIG9yIGludmlzaWJsZSBjaGFyYWN0ZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiB0dWlTYW5pdGl6ZVRleHQoJ0hlbGxvXFx1MDAwMFdvcmxkXFx1MjAwQiEnKTtcbiAqIC8vIOKGkiBcIkhlbGxvV29ybGQhXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVNhbml0aXplVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleFxuICAgIGNvbnN0IGNvbnRyb2xDaGFyc1JlZ2V4ID0gL1tcXHgwMC1cXHgxRlxceDdGLVxceDlGXS9nO1xuICAgIGNvbnN0IHplcm9XaWR0aENoYXJzUmVnZXggPSAvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2c7XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAucmVwbGFjZUFsbChjb250cm9sQ2hhcnNSZWdleCwgJycpXG4gICAgICAgIC5yZXBsYWNlQWxsKHplcm9XaWR0aENoYXJzUmVnZXgsICcnKTtcbn1cbiJdfQ==