42 lines
808 B
JavaScript
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;
|