docs: function (name, data) {
              switch (name) {
                  case 'layoutchange':
                      api.updateLayout();
                      break;
  
                  case 'linkclick':
                      handleLinkClick(data);
                      break;
  
                  case 'zoom':
                      // artificially adjust the reported zoom to be accuate given the page scale
                      data.zoom *= config.pageScale;
                      data.prevZoom *= config.pageScale;
                      if (config.enableDragging) {
                          updateDragger(data.isDraggable);
                      }
  
                      // forward zoom event to external event handlers
                      api.fire(name, data);
                      break;
  
                  case 'dragstart':
                      if (!$el.hasClass(CSS_CLASS_DRAGGING)) {
                          $el.addClass(CSS_CLASS_DRAGGING);
                      }
                      // forward zoom event to external event handlers
                      api.fire(name, data);
                      break;
  
                  case 'dragend':
                      if ($el.hasClass(CSS_CLASS_DRAGGING)) {
                          $el.removeClass(CSS_CLASS_DRAGGING);
                      }
                      // forward zoom event to external event handlers
                      api.fire(name, data);
                      break;
  
                  default:
                      // forward subscribed framework messages to external event handlers
                      api.fire(name, data);
                      break;
              }
          }