From 9aeec1f53e132c50ef86648403b289e482f40301 Mon Sep 17 00:00:00 2001 From: Agriya Dev5 Date: Wed, 3 Mar 2021 16:08:26 +0530 Subject: [PATCH 1/3] #77 hotkey plugin related changes --- src/editor/EditorStartup.js | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/editor/EditorStartup.js b/src/editor/EditorStartup.js index 8160b885..d0542829 100644 --- a/src/editor/EditorStartup.js +++ b/src/editor/EditorStartup.js @@ -285,21 +285,32 @@ class EditorStartup { panning = false; }); - $(document).bind('keydown', 'space', function (evt) { - this.svgCanvas.spaceKey = keypan = true; - evt.preventDefault(); - }.bind(this)).bind('keyup', 'space', function (evt) { - evt.preventDefault(); - this.svgCanvas.spaceKey = keypan = false; - }.bind(this)).bind('keydown', 'shift', function (evt) { - if (this.svgCanvas.getMode() === 'zoom') { + document.addEventListener('keydown', (e) => { + if (e.target.nodeName !== 'BODY') return; + if(e.code.toLowerCase() === 'space'){ + this.svgCanvas.spaceKey = keypan = true; + e.preventDefault(); + } else if((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')){ this.workarea.css('cursor', zoomOutIcon); + e.preventDefault(); + } else { + return; } - }.bind(this)).bind('keyup', 'shift', function (evt) { - if (this.svgCanvas.getMode() === 'zoom') { + }); + + document.addEventListener('keyup', (e) => { + if (e.target.nodeName !== 'BODY') return; + if(e.code.toLowerCase() === 'space'){ + this.svgCanvas.spaceKey = keypan = false; + e.preventDefault(); + } else if((e.key.toLowerCase() === 'shift') && (this.svgCanvas.getMode() === 'zoom')){ this.workarea.css('cursor', zoomInIcon); + e.preventDefault(); + } else { + return; } - }.bind(this)); + }); + /** * @function module:SVGthis.setPanning From fc39dcff96cbebbf4750c258db09fcb14bbcae21 Mon Sep 17 00:00:00 2001 From: Agriya Dev5 Date: Wed, 3 Mar 2021 18:13:06 +0530 Subject: [PATCH 2/3] #78 hotkey related code comment. --- src/editor/svgedit.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/editor/svgedit.js b/src/editor/svgedit.js index a57f6177..c94495c2 100644 --- a/src/editor/svgedit.js +++ b/src/editor/svgedit.js @@ -938,10 +938,10 @@ class Editor extends EditorStartup { }; $(this).mouseup(flyoutAction); - - if (opts.key) { + // TODO: currently not trigger here + /* if (opts.key) { $(document).bind('keydown', opts.key[0] + ' shift+' + opts.key[0], flyoutAction); - } + } */ return true; }); @@ -1420,7 +1420,6 @@ class Editor extends EditorStartup { key: btn.key, isDefault: Boolean(btn.includeWith && btn.includeWith.isDefault) }]; // , refData - // {sel:'#tool_rect', fn: clickRect, evt: 'mouseup', key: 4, parent: '#tools_rect', icon: 'rect'} const pos = ('position' in opts) ? opts.position : 'last'; @@ -1456,7 +1455,8 @@ class Editor extends EditorStartup { }); } if (btn.key) { - $(document).bind('keydown', btn.key, func); + // TODO: currently not trigger here + // $(document).bind('keydown', btn.key, func); if (btn.title) { button.attr('title', btn.title + ' [' + btn.key + ']'); } From bac4d9b7d64afcad0f1a337c08dccdb514708d66 Mon Sep 17 00:00:00 2001 From: Agriya Dev5 Date: Wed, 3 Mar 2021 18:19:53 +0530 Subject: [PATCH 3/3] #78 js-hotkeys/jquery.hotkeys.min.js file removed from svgedit.js --- src/editor/js-hotkeys/README.md | 45 --------------------- src/editor/js-hotkeys/jquery.hotkeys.min.js | 21 ---------- src/editor/svgedit.js | 2 - 3 files changed, 68 deletions(-) delete mode 100644 src/editor/js-hotkeys/README.md delete mode 100644 src/editor/js-hotkeys/jquery.hotkeys.min.js diff --git a/src/editor/js-hotkeys/README.md b/src/editor/js-hotkeys/README.md deleted file mode 100644 index 3de84cc5..00000000 --- a/src/editor/js-hotkeys/README.md +++ /dev/null @@ -1,45 +0,0 @@ -#About -**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination. - -This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](https://github.com/tzuryby/hotkeys) - -The syntax is as follows: - - $(expression).bind(types, keys, handler); - $(expression).unbind(types, handler); - - $(document).bind('keydown', 'ctrl+a', fn); - - // e.g. replace '$' sign with 'EUR' - $('input.foo').bind('keyup', '$', function(){ - this.value = this.value.replace('$', 'EUR'); - }); - -## Types -Supported types are `'keydown'`, `'keyup'` and `'keypress'` - -## Notes - -If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift - -Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing. - -## jQuery Compatibility - -Works with jQuery 1.4.2 and newer. - -It known to be working with all the major browsers on all available platforms (Win/Mac/Linux) - - * IE 6/7/8 - * FF 1.5/2/3 - * Opera-9 - * Safari-3 - * Chrome-0.2 - -### Addendum - -Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler. - -Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all. - -*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.* diff --git a/src/editor/js-hotkeys/jquery.hotkeys.min.js b/src/editor/js-hotkeys/jquery.hotkeys.min.js deleted file mode 100644 index e5cbe4b4..00000000 --- a/src/editor/js-hotkeys/jquery.hotkeys.min.js +++ /dev/null @@ -1,21 +0,0 @@ -// Todo: Update: https://github.com/jeresig/jquery.hotkeys -/* - * jQuery Hotkeys Plugin - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * http://github.com/jeresig/jquery.hotkeys - * - * Based upon the plugin by Tzury Bar Yochay: - * http://github.com/tzuryby/hotkeys - * - * Original idea by: - * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ -*/ - -// We *do* want to allow the escape key within textareas (and possibly tab too), so add the condition `n.which !== 27` - -export default function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta",219:"[",221:"]"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(n.which !== 27 && (/textarea|select/i.test(n.target.nodeName)||n.target.type==="text"))){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j func(jq), jQuery); const homePage = 'https://github.com/SVG-Edit/svgedit'; /** *