Source: ui/server-folder.js

/**
A folder with a related file (e.g. thumbnail). 
 */
export class ServerFolder {
  /**
  @param baseUrl parent folder
  @param name folder name
  @param related name of related file in the parent folder, or full path to the file
   */
  constructor( baseUrl, name, related ) {
    /** base url */
    this.baseUrl = baseUrl;
    /** folder name*/
    this.name = name;
    /** related file name */
    this.related = related;
  }
  /** returns full path of the folder */
  url() {
    return this.baseUrl+this.name;
  }
  /** Returns full path of related file */
  relatedUrl() {
    if ( this.related ) {
      if ( this.related.indexOf('/')>=0) {
        // absolute URL
        return this.related;
      }
      return this.baseUrl+this.related;
    }
    return null;
  }
  
}

export class ServerFile extends ServerFolder {
 /** Create new server file from the url*/
  constructor(url, related) {
    super();
    var pos = url.lastIndexOf('/');
    var path = url.substring(0,pos);
    this.file = url.substring(pos+1);
    pos = path.lastIndexOf('/');
    this.baseUrl = path.substring(0,pos+1);
    this.name = path.substring(pos+1);
    this.related = related;
    this.fileUrl = url;
  }
}