diff core/modules/ckeditor/js/views/KeyboardView.js @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/ckeditor/js/views/KeyboardView.js	Thu Jul 05 14:24:15 2018 +0000
@@ -0,0 +1,153 @@
+/**
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
+
+(function ($, Drupal, Backbone, _) {
+  Drupal.ckeditor.KeyboardView = Backbone.View.extend({
+    initialize: function initialize() {
+      this.$el.on('keydown.ckeditor', '.ckeditor-buttons a, .ckeditor-multiple-buttons a', this.onPressButton.bind(this));
+      this.$el.on('keydown.ckeditor', '[data-drupal-ckeditor-type="group"]', this.onPressGroup.bind(this));
+    },
+    render: function render() {},
+    onPressButton: function onPressButton(event) {
+      var upDownKeys = [38, 63232, 40, 63233];
+      var leftRightKeys = [37, 63234, 39, 63235];
+
+      if (event.keyCode === 13) {
+        event.stopPropagation();
+      }
+
+      if (_.indexOf(_.union(upDownKeys, leftRightKeys), event.keyCode) > -1) {
+        var view = this;
+        var $target = $(event.currentTarget);
+        var $button = $target.parent();
+        var $container = $button.parent();
+        var $group = $button.closest('.ckeditor-toolbar-group');
+        var $row = void 0;
+        var containerType = $container.data('drupal-ckeditor-button-sorting');
+        var $availableButtons = this.$el.find('[data-drupal-ckeditor-button-sorting="source"]');
+        var $activeButtons = this.$el.find('.ckeditor-toolbar-active');
+
+        var $originalGroup = $group;
+        var dir = void 0;
+
+        if (containerType === 'source') {
+          if (_.indexOf([40, 63233], event.keyCode) > -1) {
+            $activeButtons.find('.ckeditor-toolbar-group-buttons').eq(0).prepend($button);
+          }
+        } else if (containerType === 'target') {
+          if (_.indexOf(leftRightKeys, event.keyCode) > -1) {
+            var $siblings = $container.children();
+            var index = $siblings.index($button);
+            if (_.indexOf([37, 63234], event.keyCode) > -1) {
+              if (index > 0) {
+                $button.insertBefore($container.children().eq(index - 1));
+              } else {
+                  $group = $container.parent().prev();
+                  if ($group.length > 0) {
+                    $group.find('.ckeditor-toolbar-group-buttons').append($button);
+                  } else {
+                      $container.closest('.ckeditor-row').prev().find('.ckeditor-toolbar-group').not('.placeholder').find('.ckeditor-toolbar-group-buttons').eq(-1).append($button);
+                    }
+                }
+            } else if (_.indexOf([39, 63235], event.keyCode) > -1) {
+                if (index < $siblings.length - 1) {
+                  $button.insertAfter($container.children().eq(index + 1));
+                } else {
+                    $container.parent().next().find('.ckeditor-toolbar-group-buttons').prepend($button);
+                  }
+              }
+          } else if (_.indexOf(upDownKeys, event.keyCode) > -1) {
+              dir = _.indexOf([38, 63232], event.keyCode) > -1 ? 'prev' : 'next';
+              $row = $container.closest('.ckeditor-row')[dir]();
+
+              if (dir === 'prev' && $row.length === 0) {
+                if ($button.data('drupal-ckeditor-type') === 'separator') {
+                  $button.off().remove();
+
+                  $activeButtons.find('.ckeditor-toolbar-group-buttons').eq(0).children().eq(0).children().trigger('focus');
+                } else {
+                    $availableButtons.prepend($button);
+                  }
+              } else {
+                $row.find('.ckeditor-toolbar-group-buttons').eq(0).prepend($button);
+              }
+            }
+        } else if (containerType === 'dividers') {
+            if (_.indexOf([40, 63233], event.keyCode) > -1) {
+              $button = $button.clone(true);
+              $activeButtons.find('.ckeditor-toolbar-group-buttons').eq(0).prepend($button);
+              $target = $button.children();
+            }
+          }
+
+        view = this;
+
+        Drupal.ckeditor.registerButtonMove(this, $button, function (result) {
+          if (!result && $originalGroup) {
+            $originalGroup.find('.ckeditor-buttons').append($button);
+          } else {
+              view.$el.find('.ui-sortable').sortable('refresh');
+            }
+
+          $target.trigger('focus');
+        });
+
+        event.preventDefault();
+        event.stopPropagation();
+      }
+    },
+    onPressGroup: function onPressGroup(event) {
+      var upDownKeys = [38, 63232, 40, 63233];
+      var leftRightKeys = [37, 63234, 39, 63235];
+
+      if (event.keyCode === 13) {
+        var view = this;
+
+        window.setTimeout(function () {
+          Drupal.ckeditor.openGroupNameDialog(view, $(event.currentTarget));
+        }, 0);
+        event.preventDefault();
+        event.stopPropagation();
+      }
+
+      if (_.indexOf(_.union(upDownKeys, leftRightKeys), event.keyCode) > -1) {
+        var $group = $(event.currentTarget);
+        var $container = $group.parent();
+        var $siblings = $container.children();
+        var index = void 0;
+        var dir = void 0;
+
+        if (_.indexOf(leftRightKeys, event.keyCode) > -1) {
+          index = $siblings.index($group);
+
+          if (_.indexOf([37, 63234], event.keyCode) > -1) {
+            if (index > 0) {
+              $group.insertBefore($siblings.eq(index - 1));
+            } else {
+                var $rowChildElement = $container.closest('.ckeditor-row').prev().find('.ckeditor-toolbar-groups').children().eq(-1);
+                $group.insertBefore($rowChildElement);
+              }
+          } else if (_.indexOf([39, 63235], event.keyCode) > -1) {
+              if (!$siblings.eq(index + 1).hasClass('placeholder')) {
+                $group.insertAfter($container.children().eq(index + 1));
+              } else {
+                  $container.closest('.ckeditor-row').next().find('.ckeditor-toolbar-groups').prepend($group);
+                }
+            }
+        } else if (_.indexOf(upDownKeys, event.keyCode) > -1) {
+            dir = _.indexOf([38, 63232], event.keyCode) > -1 ? 'prev' : 'next';
+            $group.closest('.ckeditor-row')[dir]().find('.ckeditor-toolbar-groups').eq(0).prepend($group);
+          }
+
+        Drupal.ckeditor.registerGroupMove(this, $group);
+        $group.trigger('focus');
+        event.preventDefault();
+        event.stopPropagation();
+      }
+    }
+  });
+})(jQuery, Drupal, Backbone, _);
\ No newline at end of file