UNPKG

jodit

Version:

Jodit is awesome and usefully wysiwyg editor with filebrowser

58 lines (43 loc) 1.54 kB
import { IFileBrowserItemElement, IFileBrowserItemWrapper } from '../../../types'; import { extend } from '../../helpers/extend'; import { normalizePath, normalizeURL } from '../../helpers/normalize'; export class FileBrowserItem implements IFileBrowserItemWrapper { private constructor(readonly data: IFileBrowserItemElement) { extend(this, data); } static create(data: IFileBrowserItemElement): FileBrowserItem & IFileBrowserItemElement { return <any>(new FileBrowserItem(data)); } get path(): string { return normalizePath(this.data.source.path ? this.data.source.path + '/' : '/'); } get imageURL(): string { const timestamp: string = new Date().getTime().toString(), { thumbIsAbsolute, source, thumb, file } = this.data, path = thumb || file; return (thumbIsAbsolute && path) ? path : normalizeURL(source.baseurl, source.path, path || '') + '?_tmst=' + timestamp; } get fileURL(): string { let { name, file, fileIsAbsolute, source } = this.data; if (file !== undefined) { name = file; } return (fileIsAbsolute && name) ? name : normalizeURL(source.baseurl, source.path, name || ''); } get time(): string { const { changed } = this.data; return ( changed && (typeof changed === 'number' ? new Date(changed).toLocaleString() : changed) ) || ''; } get uniqueHashKey(): string { const data = this.data; let key = [data.sourceName, data.name, data.file, this.time, data.thumb].join('_'); key = key.toLowerCase().replace(/[^0-9a-z\-.]/g, '-'); return key; } }