Aloha constructor

Aloha()

A binding class for the Aloha HTML5 editor. Refer to the accompanying documentation for setup and usage information. Omissions from the Aloha API are also documented.

Implementation

Aloha() {
  /* Ready */
  void _jsReady() {
    _ready = true;
    _onReady.add(null);
  }

  _alohaContext.callMethod('bind', ['aloha-ready', _jsReady]);

  /// The rest of the bindings will always have the jQuery event object as
  /// their first parameter, even if Aloha sends nothing, e.g, log ready trigger.
  ///
  void _jsCommandWillExecute(js.JsObject event, js.JsObject jsParams) {
    final params = AlohaCommandWillExecuteParameters(
        jsParams['commandId'], jsParams['preventDefault']);
    _onCommandWillExecute.add(params);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-command-will-execute', _jsCommandWillExecute]);

  void _jsCommandExecuted(js.JsObject event, String commandId) {
    _onCommandExecuted.add(commandId);
  }

  _alohaContext
      .callMethod('bind', ['aloha-command-executed', _jsCommandExecuted]);

  /* Logging */
  void _jsLoggerReady(js.JsObject e) {
    _onLoggerReady.add(null);
  }

  _alohaContext.callMethod('bind', ['aloha-logger-ready', _jsLoggerReady]);

  void _jsLoggerFull(js.JsObject e) {
    _onLoggerFull.add(null);
  }

  _alohaContext.callMethod('bind', ['aloha-log-full', _jsLoggerFull]);

  /* Editables */
  void _jsEditableCreated(js.JsObject event, js.JsObject editable) {
    final theEditable = AlohaEditable(editable, event);
    _onEditableCreated.add(theEditable);
  }

  _alohaContext
      .callMethod('bind', ['aloha-editable-created', _jsEditableCreated]);

  void _jsEditableDestroyed(js.JsObject event, js.JsObject ref) {
    _onEditableDestroyed.add(null);
  }

  _alohaContext
      .callMethod('bind', ['aloha-editable-destroyed', _jsEditableDestroyed]);

  void _jsEditableActivated(js.JsObject event, editableObjects) {
    /* We always have the event and the current active editable */
    List editableList;
    final editableEvent = event;
    final activeEditable = editableObjects['editable'];
    final editable = AlohaEditable(activeEditable, editableEvent);
    /* See if we have an old editable, if so pass it back. */
    try {
      final oldActiveEditable = editableObjects['old'];
      final oldEditable = AlohaEditable(oldActiveEditable, editableEvent);
      editableList = [editable, oldEditable];
    } on Exception {
      editableList = [editable];
    }

    _onEditableActivated.add(editableList);
  }

  _alohaContext
      .callMethod('bind', ['aloha-editable-activated', _jsEditableActivated]);

  void _jsEditableDeactivated(js.JsObject event, js.JsObject editable) {
    final theEditable = AlohaEditable(editable['editable'], event);
    _onEditableDeactivated.add(theEditable);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-editable-deactivated', _jsEditableDeactivated]);

  /* Content changes */
  void _jsSmartContentChange(js.JsObject event, js.JsObject parameters) {
    final theEditable = AlohaEditable(parameters['editable'], event);
    final params = AlohaSmartContentChangeParameters(
        theEditable,
        parameters['keyIdentifier'],
        parameters['keyCode'],
        parameters['char'],
        parameters['triggerType'],
        parameters.callMethod('getSnapshotContent'));
    _onSmartContentChange.add(params);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-smart-content-changed', _jsSmartContentChange]);

  void _jsBlockSelected(js.JsObject event, Object element) {
    _onBlockSelectedChange.add(element);
  }

  _alohaContext
      .callMethod('bind', ['aloha-block-selected', _jsBlockSelected]);

  void _jsImageSelected(js.JsObject e) {
    _onImageSelected.add(null);
  }

  _alohaContext
      .callMethod('bind', ['aloha-image-selected', _jsImageSelected]);

  void _jsImageUnselected(js.JsObject e) {
    _onImageUnselected.add(null);
  }

  _alohaContext
      .callMethod('bind', ['aloha-image-unselected', _jsImageUnselected]);

  void _jsLinkSelected(js.JsObject e) {
    _onLinkSelected.add(null);
  }

  _alohaContext.callMethod('bind', ['aloha-link-selected', _jsLinkSelected]);

  void _jsLinkUnselected(js.JsObject e) {
    _onLinkUnselected.add(null);
  }

  _alohaContext
      .callMethod('bind', ['aloha-link-unselected', _jsLinkUnselected]);

  void _jsTableSelectionChanged(js.JsObject e) {
    _onTableSelectionChanged.add(null);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-table-selection-changed', _jsTableSelectionChanged]);

  void _jsTableActivated(js.JsObject e) {
    _onTableActivated.add(null);
  }

  _alohaContext
      .callMethod('bind', ['aloha-table-activated', _jsTableActivated]);

  void _jsDdfAllFilesPrepared(js.JsObject e) {
    _onDdfAllFilesPrepared.add(null);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-allfiles-upload-prepared', _jsDdfAllFilesPrepared]);

  void _jsDdfFilesDroppedInPage(js.JsObject e, Object element) {
    _onDdfFilesDroppedInPage.add(element);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-drop-files-in-page', _jsDdfFilesDroppedInPage]);

  void _jsDdfFileUploadPrepared(js.JsObject e, Object element) {
    _onDdfFileUploadPrepared.add(element);
  }

  _alohaContext.callMethod(
      'bind', ['aloha-file-upload-prepared', _jsDdfFileUploadPrepared]);
}