123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /**
- * 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);
- }
- $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, _);
|