Files
Falcon-PrestaShop-9/_dev/js/theme/utils/DynamicImportJqueryPlugin.js

42 lines
808 B
JavaScript

import $ from 'jquery';
class DynamicImportJqueryPlugin {
constructor({
jqueryPluginCover,
importer,
} = {}) {
this.jqueryPluginCover = jqueryPluginCover;
this.importer = importer;
this.jqueryFuncCalled = [];
this.setJqueryPlugin();
}
callJqueryAction() {
for (const fncCall of this.jqueryFuncCalled) {
fncCall.elem[this.jqueryPluginCover](fncCall.args);
}
}
fetchFiles() {
this.importer.loadFiles(() => this.callJqueryAction());
}
setJqueryPlugin() {
const self = this;
/* eslint-disable func-names */
$.fn[this.jqueryPluginCover] = function (args) {
self.jqueryFuncCalled.push({
elem: this,
args,
});
self.fetchFiles();
return this;
};
}
}
export default DynamicImportJqueryPlugin;