58 lines
1.2 KiB
JavaScript
58 lines
1.2 KiB
JavaScript
import Document from './document';
|
|
|
|
export default class extends elementorModules.ViewModule {
|
|
constructor( ...args ) {
|
|
super( ...args );
|
|
|
|
this.documents = {};
|
|
|
|
this.initDocumentClasses();
|
|
|
|
this.attachDocumentsClasses();
|
|
}
|
|
|
|
getDefaultSettings() {
|
|
return {
|
|
selectors: {
|
|
document: '.elementor',
|
|
},
|
|
};
|
|
}
|
|
|
|
getDefaultElements() {
|
|
const selectors = this.getSettings( 'selectors' );
|
|
|
|
return {
|
|
$documents: jQuery( selectors.document ),
|
|
};
|
|
}
|
|
|
|
initDocumentClasses() {
|
|
this.documentClasses = {
|
|
base: Document,
|
|
};
|
|
|
|
elementorFrontend.hooks.doAction( 'elementor/frontend/documents-manager/init-classes', this );
|
|
}
|
|
|
|
addDocumentClass( documentType, documentClass ) {
|
|
this.documentClasses[ documentType ] = documentClass;
|
|
}
|
|
|
|
attachDocumentsClasses() {
|
|
this.elements.$documents.each( ( index, document ) => this.attachDocumentClass( jQuery( document ) ) );
|
|
}
|
|
|
|
attachDocumentClass( $document ) {
|
|
const documentData = $document.data(),
|
|
documentID = documentData.elementorId,
|
|
documentType = documentData.elementorType,
|
|
DocumentClass = this.documentClasses[ documentType ] || this.documentClasses.base;
|
|
|
|
this.documents[ documentID ] = new DocumentClass( {
|
|
$element: $document,
|
|
id: documentID,
|
|
} );
|
|
}
|
|
}
|