UI Schema

Core

// Create a new schema object
schema.create = (options) => Object.create(schema);

// Bind and trigger schema events
schema.load = (options) => {
  for (var key in events) {
    schema.delegate(events[key], options);
  }
};

// Assign an integer as the delegation of an event
schema.delegate = (event, options) => {
  var type = event.type;
  var name = type + event.namespace;
  var delegation = event.delegation;
  if (delegation > 1) {
    $(document).on(name, schema[type]);
    if (delegation > 2) {
      $(document).trigger(name, event.options);
    }
  }
};