File "kit.js"
Full Path: /home/warrior1/public_html/wp-content/plugins/elementor/app/modules/kit-library/assets/js/models/kit.js
File size: 1.73 KB
MIME-type: text/x-java
Charset: utf-8
import BaseModel from './base-model';
import Document from './document';
/**
* @typedef {import('./content-type')} ContentType
*/
export default class Kit extends BaseModel {
id = '';
title = '';
description = '';
isFavorite = false;
thumbnailUrl = null;
previewUrl = '';
accessLevel = 0;
trendIndex = null;
popularityIndex = null;
featuredIndex = null;
createdAt = null;
updatedAt = null;
keywords = [];
taxonomies = [];
documents = [];
/**
* Create a kit from server response
*
* @param {Kit} kit
*/
static createFromResponse( kit ) {
return new Kit().init( {
id: kit.id,
title: kit.title,
description: kit.description,
isFavorite: kit.is_favorite,
thumbnailUrl: kit.thumbnail_url,
previewUrl: kit.preview_url,
accessLevel: kit.access_level,
trendIndex: kit.trend_index,
popularityIndex: kit.popularity_index,
featuredIndex: kit.featured_index,
// TODO: Remove when the API is stable (when date params always exists)
createdAt: kit.created_at ? new Date( kit.created_at ) : null,
updatedAt: kit.updated_at ? new Date( kit.updated_at ) : null,
//
keywords: kit.keywords,
taxonomies: kit.taxonomies,
documents: kit.documents
? kit.documents.map( ( document ) => Document.createFromResponse( document ) )
: [],
} );
}
/**
* Get content types as param and group all the documents based on it.
*
* @param {ContentType[]} contentTypes
* @return {ContentType[]} content types
*/
getDocumentsByTypes( contentTypes ) {
return contentTypes.map( ( contentType ) => {
contentType = contentType.clone();
contentType.documents = this.documents
.filter( ( document ) => contentType.documentTypes.includes( document.documentType ) );
return contentType;
} );
}
}