Reinstating method bindings

This commit is contained in:
Francisco Hodge 2019-03-06 20:22:09 -05:00
parent adc1db7a7f
commit ae1436a52d
2 changed files with 16 additions and 36 deletions

View File

@ -79,33 +79,7 @@ class SimpleKeyboard {
/** /**
* Bindings * Bindings
*/ */
this.handleButtonClicked = this.handleButtonClicked.bind(this); Utilities.bindMethods(SimpleKeyboard, this);
this.syncInstanceInputs = this.syncInstanceInputs.bind(this);
this.clearInput = this.clearInput.bind(this);
this.getInput = this.getInput.bind(this);
this.setInput = this.setInput.bind(this);
this.replaceInput = this.replaceInput.bind(this);
this.clear = this.clear.bind(this);
this.dispatch = this.dispatch.bind(this);
this.addButtonTheme = this.addButtonTheme.bind(this);
this.removeButtonTheme = this.removeButtonTheme.bind(this);
this.getButtonElement = this.getButtonElement.bind(this);
this.handleCaret = this.handleCaret.bind(this);
this.caretEventHandler = this.caretEventHandler.bind(this);
this.onInit = this.onInit.bind(this);
this.onRender = this.onRender.bind(this);
this.render = this.render.bind(this);
this.loadModules = this.loadModules.bind(this);
this.handleButtonMouseUp = this.handleButtonMouseUp.bind(this);
this.handleButtonMouseDown = this.handleButtonMouseDown.bind(this);
this.handleButtonHold = this.handleButtonHold.bind(this);
this.onModulesLoaded = this.onModulesLoaded.bind(this);
this.inputPatternIsValid = this.inputPatternIsValid.bind(this);
this.beforeFirstRender = this.beforeFirstRender.bind(this);
this.beforeRender = this.beforeRender.bind(this);
this.disableContextualWindow = this.disableContextualWindow.bind(this);
this.onTouchDeviceDetected = this.onTouchDeviceDetected.bind(this);
this.processAutoTouchEvents = this.processAutoTouchEvents.bind(this);
/** /**
* simple-keyboard uses a non-persistent internal input to keep track of the entered string (the variable `keyboard.input`). * simple-keyboard uses a non-persistent internal input to keep track of the entered string (the variable `keyboard.input`).

View File

@ -14,15 +14,7 @@ class Utilities {
/** /**
* Bindings * Bindings
*/ */
this.getButtonClass = this.getButtonClass.bind(this); Utilities.bindMethods(Utilities, this);
this.getButtonDisplayName = this.getButtonDisplayName.bind(this);
this.getUpdatedInput = this.getUpdatedInput.bind(this);
this.updateCaretPos = this.updateCaretPos.bind(this);
this.updateCaretPosAction = this.updateCaretPosAction.bind(this);
this.isMaxLengthReached = this.isMaxLengthReached.bind(this);
this.camelCase = this.camelCase.bind(this);
this.countInArray = this.countInArray.bind(this);
this.isTouchDevice = this.isTouchDevice.bind(this);
} }
/** /**
@ -380,6 +372,20 @@ class Utilities {
return "ontouchstart" in window || navigator.maxTouchPoints; return "ontouchstart" in window || navigator.maxTouchPoints;
} }
/**
* Bind all methods in a given class
*/
static bindMethods(myClass, instance) {
for (let myMethod of Object.getOwnPropertyNames(myClass.prototype)) {
let excludeMethod =
myMethod === "constructor" || myMethod === "bindMethods";
if (!excludeMethod) {
instance[myMethod] = instance[myMethod].bind(instance);
}
}
}
/** /**
* Transforms an arbitrary string to camelCase * Transforms an arbitrary string to camelCase
* *