quill-delta-to-html
Version:
Converts Quill's delta ops to HTML
67 lines (48 loc) • 1.52 kB
text/typescript
import './../extensions/String';
interface IMention {
[ ]: string | undefined,
'name'?: string,
'target'?: string,
'slug'?: string,
'class'?: string,
'avatar'?: string,
'id'?: string,
'end-point'?: string
}
class MentionSanitizer {
static sanitize(dirtyObj: IMention): IMention {
var cleanObj: any = {};
if (!dirtyObj || typeof dirtyObj !== 'object') {
return cleanObj;
}
if (dirtyObj.class && MentionSanitizer.IsValidClass(dirtyObj.class)) {
cleanObj.class = dirtyObj.class;
}
if (dirtyObj.id && MentionSanitizer.IsValidId(dirtyObj.id)) {
cleanObj.id = dirtyObj.id;
}
if (MentionSanitizer.IsValidTarget(dirtyObj.target+'')) {
cleanObj.target = dirtyObj.target;
}
if (dirtyObj.avatar) {
cleanObj.avatar = (dirtyObj.avatar + '')._sanitizeUrl();
}
if (dirtyObj['end-point']) {
cleanObj['end-point'] = (dirtyObj['end-point'] + '')._sanitizeUrl();
}
if (dirtyObj.slug) {
cleanObj.slug = (dirtyObj.slug + '');
}
return cleanObj;
}
static IsValidClass(classAttr: string) {
return !!classAttr.match(/^[a-zA-Z0-9_\-]{1,500}$/i);
}
static IsValidId(idAttr: string) {
return !!idAttr.match(/^[a-zA-Z0-9_\-\:\.]{1,500}$/i);
}
static IsValidTarget(target: string) {
return ['_self', '_blank', '_parent', '_top'].indexOf(target) > -1;
}
}
export { MentionSanitizer, IMention }