Files
DocumentServer-v-9.2.0/sdkjs/tests/slide/shortcuts/events.js
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

487 lines
23 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
(function (window)
{
const testFlags = {
nothing: 0x0000,
macOs: 0x0001
};
const mainShortcutTypes = {
checkDeleteBack : 0,
checkDeleteWordBack : 1,
checkRemoveAnimation : 2,
checkRemoveChart : 3,
checkRemoveShape : 4,
checkRemoveTable : 5,
checkRemoveGroup : 6,
checkRemoveShapeInGroup : 7,
checkMoveToNextCell : 8,
checkMoveToPreviousCell : 9,
checkIncreaseBulletIndent : 10,
checkDecreaseBulletIndent : 11,
checkAddTab : 12,
checkSelectNextObject : 13,
checkSelectPreviousObject : 14,
checkVisitHyperlink : 15,
checkSelectNextObjectWithPlaceholder : 16,
checkAddNextSlideAfterSelectLastPlaceholderObject: 17,
checkAddBreakLine : 18,
checkAddTitleBreakLine : 19,
checkAddMathBreakLine : 20,
checkAddParagraph : 21,
checkAddTxBodyShape : 22,
checkMoveCursorToStartPosShape : 23,
checkSelectAllContentShape : 24,
checkSelectAllContentChartTitle : 25,
checkRemoveAndMoveToStartPosTable : 27,
checkSelectFirstCellContent : 28,
checkResetAddShape : 29,
checkResetAllDrawingSelection : 30,
checkResetStepDrawingSelection : 31,
checkNonBreakingSpace : 32,
checkClearParagraphFormatting : 33,
checkAddSpace : 34,
checkMoveToEndPosContent : 35,
checkMoveToEndLineContent : 36,
checkSelectToEndLineContent : 37,
checkMoveToStartPosContent : 38,
checkMoveToStartLineContent : 39,
checkSelectToStartLineContent : 40,
checkMoveCursorLeft : 41,
checkSelectCursorLeft : 42,
checkSelectWordCursorLeft : 43,
checkMoveCursorWordLeft : 44,
checkMoveCursorLeftTable : 45,
checkMoveCursorRight : 46,
checkMoveCursorRightTable : 47,
checkSelectCursorRight : 48,
checkSelectWordCursorRight : 49,
checkMoveCursorWordRight : 50,
checkMoveCursorTop : 51,
checkMoveCursorTopTable : 52,
checkSelectCursorTop : 53,
checkMoveCursorBottom : 54,
checkMoveCursorBottomTable : 55,
checkSelectCursorBottom : 56,
checkMoveShapeBottom : 57,
checkLittleMoveShapeBottom : 58,
checkMoveShapeTop : 59,
checkLittleMoveShapeTop : 60,
checkMoveShapeRight : 61,
checkLittleMoveShapeRight : 62,
checkMoveShapeLeft : 63,
checkLittleMoveShapeLeft : 64,
checkDeleteFront : 65,
checkDeleteWordFront : 66,
checkIncreaseIndent : 67,
checkDecreaseIndent : 68,
checkNumLock : 69,
checkScrollLock : 70,
addNextSlide : 71,
moveToPreviousSlide : 72,
moveToNextSlide : 73,
moveToFirstSlide : 74,
selectToFirstSlide : 75,
moveToLastSlide : 76,
selectToLastSlide : 77,
disableBrowserZoomIn : 78,
};
const mainEvents = {};
mainEvents[mainShortcutTypes.checkDeleteBack] = [CreateKeyboardEvent(8, false, false, false, false)];
mainEvents[mainShortcutTypes.checkDeleteWordBack] = [
CreateKeyboardEvent(8, true, false, false, false),
CreateKeyboardEvent(8, false, false, true, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkRemoveAnimation] = [
CreateKeyboardEvent(8, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveChart] = [
CreateKeyboardEvent(8, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveShape] = [
CreateKeyboardEvent(8, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveTable] = [
CreateKeyboardEvent(8, false, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveGroup] = [
CreateKeyboardEvent(8, false, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveShapeInGroup] = [
CreateKeyboardEvent(8, false, false, false, false),
CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveToNextCell] = [CreateKeyboardEvent(9, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveToPreviousCell] = [CreateKeyboardEvent(9, false, true, false, false)];
mainEvents[mainShortcutTypes.checkIncreaseBulletIndent] = [CreateKeyboardEvent(9, false, false, false, false)];
mainEvents[mainShortcutTypes.checkDecreaseBulletIndent] = [CreateKeyboardEvent(9, false, true, false, false)];
mainEvents[mainShortcutTypes.checkAddTab] = [CreateKeyboardEvent(9, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectNextObject] = [CreateKeyboardEvent(9, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectPreviousObject] = [CreateKeyboardEvent(9, false, true, false, false)];
mainEvents[mainShortcutTypes.checkVisitHyperlink] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectNextObjectWithPlaceholder] = [CreateKeyboardEvent(13, true, false, false, false)];
mainEvents[mainShortcutTypes.checkAddNextSlideAfterSelectLastPlaceholderObject] = [CreateKeyboardEvent(13, true, false, false, false)];
mainEvents[mainShortcutTypes.checkAddBreakLine] = [CreateKeyboardEvent(13, false, true, false, false)];
mainEvents[mainShortcutTypes.checkAddMathBreakLine] = [
CreateKeyboardEvent(13, false, true, false, false),
CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkAddTitleBreakLine] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkAddParagraph] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkAddTxBodyShape] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorToStartPosShape] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectAllContentShape] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectAllContentChartTitle] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkRemoveAndMoveToStartPosTable] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectFirstCellContent] = [CreateKeyboardEvent(13, false, false, false, false)];
mainEvents[mainShortcutTypes.checkResetAddShape] = [CreateKeyboardEvent(27, false, false, false, false)];
mainEvents[mainShortcutTypes.checkResetAllDrawingSelection] = [CreateKeyboardEvent(27, false, true, false, false)];
mainEvents[mainShortcutTypes.checkResetStepDrawingSelection] = [CreateKeyboardEvent(27, false, false, false, false)];
mainEvents[mainShortcutTypes.checkNonBreakingSpace] = [CreateKeyboardEvent(32, true, true, false, false)];
mainEvents[mainShortcutTypes.checkClearParagraphFormatting] = [CreateKeyboardEvent(32, true, false, false, false)];
mainEvents[mainShortcutTypes.checkAddSpace] = [CreateKeyboardEvent(32, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveToEndPosContent] = [CreateKeyboardEvent(35, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveToEndLineContent] = [
CreateKeyboardEvent(35, false, false, false, false),
CreateKeyboardEvent(39, true, false, false, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkSelectToEndLineContent] = [
CreateKeyboardEvent(35, false, true, false, false),
CreateKeyboardEvent(39, true, true, false, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkMoveToStartPosContent] = [CreateKeyboardEvent(36, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveToStartLineContent] = [
CreateKeyboardEvent(36, false, false, false, false),
CreateKeyboardEvent(37, true, false, false, false, testFlags.macOs)
];
mainEvents[mainShortcutTypes.checkSelectToStartLineContent] = [
CreateKeyboardEvent(36, false, true, false, false),
CreateKeyboardEvent(37, true, true, false, false, testFlags.macOs)
];
mainEvents[mainShortcutTypes.checkMoveCursorLeft] = [CreateKeyboardEvent(37, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectCursorLeft] = [CreateKeyboardEvent(37, false, true, false, false)];
mainEvents[mainShortcutTypes.checkSelectWordCursorLeft] = [
CreateKeyboardEvent(37, true, true, false, false),
CreateKeyboardEvent(37, false, true, true, false, testFlags.macOs)
];
mainEvents[mainShortcutTypes.checkMoveCursorWordLeft] = [
CreateKeyboardEvent(37, true, false, false, false),
CreateKeyboardEvent(37, false, false, true, false, testFlags.macOs)
];
mainEvents[mainShortcutTypes.checkMoveCursorLeftTable] = [CreateKeyboardEvent(37, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorRight] = [CreateKeyboardEvent(39, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorRightTable] = [CreateKeyboardEvent(39, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectCursorRight] = [CreateKeyboardEvent(39, false, true, false, false)];
mainEvents[mainShortcutTypes.checkSelectWordCursorRight] = [
CreateKeyboardEvent(39, true, true, false, false),
CreateKeyboardEvent(39, false, true, true, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkMoveCursorWordRight] = [
CreateKeyboardEvent(39, true, false, false, false),
CreateKeyboardEvent(39, false, false, true, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkMoveCursorTop] = [CreateKeyboardEvent(38, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorTopTable] = [CreateKeyboardEvent(38, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectCursorTop] = [CreateKeyboardEvent(38, false, true, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorBottom] = [CreateKeyboardEvent(40, false, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveCursorBottomTable] = [CreateKeyboardEvent(40, false, false, false, false)];
mainEvents[mainShortcutTypes.checkSelectCursorBottom] = [CreateKeyboardEvent(40, false, true, false, false)];
mainEvents[mainShortcutTypes.checkMoveShapeBottom] = [CreateKeyboardEvent(40, false, false, false, false)];
mainEvents[mainShortcutTypes.checkLittleMoveShapeBottom] = [CreateKeyboardEvent(40, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveShapeTop] = [CreateKeyboardEvent(38, false, false, false, false)];
mainEvents[mainShortcutTypes.checkLittleMoveShapeTop] = [CreateKeyboardEvent(38, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveShapeRight] = [CreateKeyboardEvent(39, false, false, false, false)];
mainEvents[mainShortcutTypes.checkLittleMoveShapeRight] = [CreateKeyboardEvent(39, true, false, false, false)];
mainEvents[mainShortcutTypes.checkMoveShapeLeft] = [CreateKeyboardEvent(37, false, false, false, false)];
mainEvents[mainShortcutTypes.checkLittleMoveShapeLeft] = [CreateKeyboardEvent(37, true, false, false, false)];
mainEvents[mainShortcutTypes.checkDeleteFront] = [CreateKeyboardEvent(46, false, false, false, false)];
mainEvents[mainShortcutTypes.checkDeleteWordFront] = [
CreateKeyboardEvent(46, true, false, false, false),
CreateKeyboardEvent(46, false, false, true, false, testFlags.macOs),
];
mainEvents[mainShortcutTypes.checkIncreaseIndent] = [CreateKeyboardEvent(77, true, false, false, false)];
mainEvents[mainShortcutTypes.checkDecreaseIndent] = [CreateKeyboardEvent(77, true, true, false, false)];
mainEvents[mainShortcutTypes.checkNumLock] = [CreateKeyboardEvent(144, false, false, false, false)];
mainEvents[mainShortcutTypes.checkScrollLock] = [CreateKeyboardEvent(145, false, false, false, false)];
mainEvents[mainShortcutTypes.addNextSlide] = [
CreateKeyboardEvent(77, true, false, false, false)
];
mainEvents[mainShortcutTypes.moveToPreviousSlide] = [
CreateKeyboardEvent(38, false, false, false, false),
CreateKeyboardEvent(37, false, false, false, false),
CreateKeyboardEvent(33, false, false, false, false)
];
mainEvents[mainShortcutTypes.moveToNextSlide] = [
CreateKeyboardEvent(39, false, false, false, false),
CreateKeyboardEvent(40, false, false, false, false),
CreateKeyboardEvent(34, false, false, false, false)
];
mainEvents[mainShortcutTypes.moveToFirstSlide] = [
CreateKeyboardEvent(36, false, false, false, false)
];
mainEvents[mainShortcutTypes.selectToFirstSlide] = [
CreateKeyboardEvent(36, false, true, false, false)
];
mainEvents[mainShortcutTypes.moveToLastSlide] = [
CreateKeyboardEvent(35, false, false, false, false)
];
mainEvents[mainShortcutTypes.selectToLastSlide] = [
CreateKeyboardEvent(35, false, true, false, false)
];
mainEvents[mainShortcutTypes.disableBrowserZoomIn] = [
CreateKeyboardEvent(187, true, true, false, false)
];
const demonstrationTypes = {
moveToNextSlide : 0,
moveToPreviousSlide : 1,
moveToFirstSlide : 2,
moveToLastSlide : 3,
exitFromDemonstrationMode: 4,
moveToNumberSlide : 5
};
const demonstrationEvents = {};
demonstrationEvents[demonstrationTypes.moveToNextSlide] = [
new CNativeEvent(13, false, false, false, false),
new CNativeEvent(32, false, false, false, false),
new CNativeEvent(34, false, false, false, false),
new CNativeEvent(39, false, false, false, false),
new CNativeEvent(40, false, false, false, false)
];
demonstrationEvents[demonstrationTypes.moveToNumberSlide] = [
new CNativeEvent(13, false, false, false, false),
];
demonstrationEvents[demonstrationTypes.moveToPreviousSlide] = [
new CNativeEvent(33, false, false, false, false),
new CNativeEvent(37, false, false, false, false),
new CNativeEvent(38, false, false, false, false)
];
demonstrationEvents[demonstrationTypes.moveToFirstSlide] = [
new CNativeEvent(36, false, false, false, false)
];
demonstrationEvents[demonstrationTypes.moveToLastSlide] = [
new CNativeEvent(35, false, false, false, false)
];
demonstrationEvents[demonstrationTypes.exitFromDemonstrationMode] = [
new CNativeEvent(27, false, false, false, false)
];
const thumbnailsTypes = {
addNextSlide : 0,
removeSelectedSlides : 1,
moveSelectedSlidesToEnd : 2,
moveSelectedSlidesToNextPosition : 3,
selectNextSlide : 4,
moveToNextSlide : 5,
moveToFirstSlide : 6,
selectToFirstSlide : 7,
moveToLastSlide : 8,
selectToLastSlide : 9,
moveSelectedSlidesToStart : 10,
moveSelectedSlidesToPreviousPosition: 11,
selectPreviousSlide : 12,
moveToPreviousSlide : 13
};
const thumbnailsEvents = {};
thumbnailsEvents[thumbnailsTypes.addNextSlide] = [
new CNativeEvent(13, false, false, false, false),
new CNativeEvent(77, true, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.removeSelectedSlides] = [
new CNativeEvent(8, false, false, false, false),
new CNativeEvent(46, false, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveSelectedSlidesToEnd] = [
new CNativeEvent(40, true, true, false, false),
new CNativeEvent(34, true, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveSelectedSlidesToNextPosition] = [
new CNativeEvent(40, true, false, false, false),
new CNativeEvent(34, true, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.selectNextSlide] = [
new CNativeEvent(40, false, true, false, false),
new CNativeEvent(34, false, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveToNextSlide] = [
new CNativeEvent(40, true, false, false, false),
new CNativeEvent(34, true, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveToFirstSlide] = [
new CNativeEvent(36, false, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.selectToFirstSlide] = [
new CNativeEvent(36, false, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveToLastSlide] = [
new CNativeEvent(35, false, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.selectToLastSlide] = [
new CNativeEvent(35, false, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveSelectedSlidesToStart] = [
new CNativeEvent(33, true, true, false, false),
new CNativeEvent(38, true, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveSelectedSlidesToPreviousPosition] = [
new CNativeEvent(33, true, false, false, false),
new CNativeEvent(38, true, false, false, false)
];
thumbnailsEvents[thumbnailsTypes.selectPreviousSlide] = [
new CNativeEvent(38, false, true, false, false),
new CNativeEvent(33, false, true, false, false)
];
thumbnailsEvents[thumbnailsTypes.moveToPreviousSlide] = [
new CNativeEvent(33, true, false, false, false),
new CNativeEvent(38, true, false, false, false)
];
function CreateKeyboardEvent(nKeyCode, bIsCtrl, bIsShift, bIsAlt, bIsMetaKey, flags)
{
flags = flags || testFlags.nothing;
const event = new AscCommon.CKeyboardEvent();
event.KeyCode = nKeyCode;
event.CtrlKey = !!bIsCtrl;
event.ShiftKey = !!bIsShift;
event.AltKey = !!bIsAlt;
event.MacCmdKey = !!bIsMetaKey;
event.isDefaultPrevented = false;
event.isPropagationStopped = false;
event.preventDefault = function ()
{
event.isDefaultPrevented = true;
}
event.stopPropagation = function ()
{
event.isPropagationStopped = true;
}
event.enableFlags = function ()
{
if (flags & testFlags.macOs)
{
AscCommon.AscBrowser.isMacOs = true;
}
}
event.disableFlags = function ()
{
if (flags & testFlags.macOs)
{
AscCommon.AscBrowser.isMacOs = false;
}
}
return event;
}
function CNativeEvent(nKeyCode, bIsCtrl, bIsShift, bIsAlt, bIsMetaKey)
{
this.keyCode = nKeyCode;
this.ctrlKey = !!bIsCtrl;
this.shiftKey = !!bIsShift;
this.altKey = !!bIsAlt;
this.metaKey = !!bIsMetaKey;
this.isDefaultPrevented = false;
this.isPropagationStopped = false;
}
CNativeEvent.prototype.preventDefault = function ()
{
this.isDefaultPrevented = true;
};
CNativeEvent.prototype.stopPropagation = function ()
{
this.isPropagationStopped = true;
};
editor.getShortcut = function (e)
{
if (typeof e === 'number')
{
return e;
}
};
function ExecuteMainHotkey(type, index)
{
const event = mainEvents[type][index || 0];
return ExecuteMainShortcut(event);
}
function ExecuteThumbnailHotkey(e, index)
{
const event = thumbnailsEvents[e][index || 0];
return ExecuteThumbnailShortcut(event);
}
function ExecuteMainShortcut(e)
{
e.enableFlags && e.enableFlags();
const res = editor.WordControl.m_oLogicDocument.OnKeyDown(e);
e.disableFlags && e.disableFlags();
return res;
}
function ExecuteThumbnailShortcut(e)
{
const OldGetShortcut = editor.getShortcut;
if (typeof e === 'number')
{
const shortcutType = e;
editor.getShortcut = function ()
{
return shortcutType;
};
e = new CNativeEvent();
}
const res = editor.WordControl.Thumbnails.onKeyDown(e);
editor.getShortcut = OldGetShortcut;
return res;
}
function ExecuteDemonstrationShortcut(e)
{
return editor.WordControl.DemonstrationManager.onKeyDown(e);
}
AscTest.mainShortcutTypes = mainShortcutTypes;
AscTest.thumbnailsTypes = thumbnailsTypes;
AscTest.demonstrationTypes = demonstrationTypes;
AscTest.demonstrationEvents = demonstrationEvents;
AscTest.ExecuteDemonstrationShortcut = ExecuteDemonstrationShortcut;
AscTest.ExecuteThumbnailShortcut = ExecuteThumbnailShortcut;
AscTest.ExecuteMainShortcut = ExecuteMainShortcut;
AscTest.ExecuteThumbnailHotkey = ExecuteThumbnailHotkey;
AscTest.ExecuteMainHotkey = ExecuteMainHotkey;
AscTest.CNativeEvent = CNativeEvent;
})(window);