mirror of
https://github.com/rstudio/shiny.git
synced 2026-04-29 03:00:45 -04:00
Split up shiny.js
This commit is contained in:
37
srcjs/binding_registry.js
Normal file
37
srcjs/binding_registry.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var BindingRegistry = function() {
|
||||
this.bindings = [];
|
||||
this.bindingNames = {};
|
||||
};
|
||||
(function() {
|
||||
this.register = function(binding, bindingName, priority) {
|
||||
var bindingObj = {binding: binding, priority: priority || 0};
|
||||
this.bindings.unshift(bindingObj);
|
||||
if (bindingName) {
|
||||
this.bindingNames[bindingName] = bindingObj;
|
||||
binding.name = bindingName;
|
||||
}
|
||||
};
|
||||
this.setPriority = function(bindingName, priority) {
|
||||
var bindingObj = this.bindingNames[bindingName];
|
||||
if (!bindingObj)
|
||||
throw "Tried to set priority on unknown binding " + bindingName;
|
||||
bindingObj.priority = priority || 0;
|
||||
};
|
||||
this.getPriority = function(bindingName) {
|
||||
var bindingObj = this.bindingNames[bindingName];
|
||||
if (!bindingObj)
|
||||
return false;
|
||||
return bindingObj.priority;
|
||||
};
|
||||
this.getBindings = function() {
|
||||
// Sort the bindings. The ones with higher priority are consulted
|
||||
// first; ties are broken by most-recently-registered.
|
||||
return mergeSort(this.bindings, function(a, b) {
|
||||
return b.priority - a.priority;
|
||||
});
|
||||
};
|
||||
}).call(BindingRegistry.prototype);
|
||||
|
||||
|
||||
var inputBindings = exports.inputBindings = new BindingRegistry();
|
||||
var outputBindings = exports.outputBindings = new BindingRegistry();
|
||||
Reference in New Issue
Block a user