diff --git a/src/lib/components/Keyboard.ts b/src/lib/components/Keyboard.ts index 962ae09b..0f16a1e0 100644 --- a/src/lib/components/Keyboard.ts +++ b/src/lib/components/Keyboard.ts @@ -1614,7 +1614,9 @@ class SimpleKeyboard { loadModules() { if (Array.isArray(this.options.modules)) { this.options.modules.forEach((KeyboardModule) => { - const keyboardModule = new KeyboardModule(this); + const keyboardModule = this.utilities.isConstructor(KeyboardModule) ? + new KeyboardModule(this) : KeyboardModule(this); + keyboardModule.init && keyboardModule.init(this); }); diff --git a/src/lib/services/Utilities.ts b/src/lib/services/Utilities.ts index 05634428..3a5f9b09 100644 --- a/src/lib/services/Utilities.ts +++ b/src/lib/services/Utilities.ts @@ -561,6 +561,18 @@ class Utilities { * Reusable empty function */ static noop = () => {}; + + /** + * Check if a function is a constructor + */ + isConstructor(f: any) { + try { + Reflect.construct(String, [], f); + } catch (e) { + return false; + } + return true; + } } export default Utilities;