character_editor 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/character_editor.gemspec +2 -2
- data/lib/character_editor/version.rb +1 -1
- data/vendor/assets/fonts/redactor-font.eot +0 -0
- data/vendor/assets/javascripts/keypress.coffee +888 -0
- data/vendor/assets/javascripts/redactor.js +231 -108
- data/vendor/assets/stylesheets/redactor.css +33 -24
- data/vendor/assets/stylesheets/redactor_typography.scss +185 -4
- metadata +5 -5
- data/vendor/assets/javascripts/keypress.js +0 -1063
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
|
2
|
+
Icon font
|
3
3
|
*/
|
4
4
|
@font-face {
|
5
5
|
font-family: 'RedactorFont';
|
@@ -7,7 +7,7 @@
|
|
7
7
|
}
|
8
8
|
@font-face {
|
9
9
|
font-family: 'RedactorFont';
|
10
|
-
src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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AAAAFAAEADAAAAAIAAgAAgAAACDmHv/9//8AAAAg5gD//f///+EaAgADAAEAAAAAAAAAAAABAAH//wAPAAEAAAABAACLSUTLXw889QALBAAAAAAAzwh6egAAAADPCHp6////twQBA7cAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAD/////BAEAAQAAAAAAAAAAAAAAAAAAACEAAAAAAgAAAAQAAAAEAAAABAAAAAQAANsEAAAABAAA2gQAAAAEAAASBAAAkgQA//8EAAAABAAAAAQAAAAEAAEkBAAAAAQAAAAEAABJBAAAAAQAANsEAABKBAAASgQAAJIEAAAABAAAAAQAASUEAABJBAAAhQQAAAAEAAAABAAAAAQAAAAAAFAAACEAAAAAAA4ArgABAAAAAAABABgAAAABAAAAAAACAA4AagABAAAAAAADABgALgABAAAAAAAEABgAeAABAAAAAAAFABYAGAABAAAAAAAGAAwARgABAAAAAAAKACgAkAADAAEECQABABgAAAADAAEECQACAA4AagADAAEECQADABgALgADAAEECQAEABgAeAADAAEECQAFABYAGAADAAEECQAGABgAUgADAAEECQAKACgAkABSAGUAZABhAGMAdABvAHIARgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMAAuADAAUgBlAGQAYQBjAHQAbwByAEYAbwBuAHRSZWRhY3RvckZvbnQAUgBlAGQAYQBjAHQAbwByAEYAbwBuAHQAUgBlAGcAdQBsAGEAcgBSAGUAZABhAGMAdABvAHIARgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');
|
10
|
+
src: url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,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) format('woff');
|
11
11
|
font-weight: normal;
|
12
12
|
font-style: normal;
|
13
13
|
}
|
@@ -26,7 +26,7 @@
|
|
26
26
|
background: transparent;
|
27
27
|
}
|
28
28
|
/*
|
29
|
-
|
29
|
+
BOX
|
30
30
|
*/
|
31
31
|
.redactor_box {
|
32
32
|
position: relative;
|
@@ -41,7 +41,6 @@
|
|
41
41
|
}
|
42
42
|
.redactor_box textarea {
|
43
43
|
position: relative;
|
44
|
-
z-index: 1004;
|
45
44
|
display: block;
|
46
45
|
overflow: auto;
|
47
46
|
margin: 0;
|
@@ -59,8 +58,20 @@
|
|
59
58
|
.redactor_box textarea:focus {
|
60
59
|
outline: none;
|
61
60
|
}
|
61
|
+
.redactor_box,
|
62
|
+
.redactor_box textarea {
|
63
|
+
z-index: auto !important;
|
64
|
+
}
|
65
|
+
.redactor_box_fullscreen {
|
66
|
+
z-index: 99 !important;
|
67
|
+
}
|
68
|
+
#redactor_modal_overlay,
|
69
|
+
#redactor_modal,
|
70
|
+
.redactor_dropdown {
|
71
|
+
z-index: 100 !important;
|
72
|
+
}
|
62
73
|
/*
|
63
|
-
|
74
|
+
AIR
|
64
75
|
|
65
76
|
*/
|
66
77
|
body .redactor_air {
|
@@ -68,18 +79,16 @@ body .redactor_air {
|
|
68
79
|
z-index: 502;
|
69
80
|
}
|
70
81
|
/*
|
71
|
-
|
82
|
+
FULLSCREEN
|
72
83
|
*/
|
73
84
|
body .redactor_box_fullscreen {
|
74
85
|
position: fixed;
|
75
86
|
top: 0;
|
76
87
|
left: 0;
|
77
|
-
z-index: 49000;
|
78
|
-
overflow: hidden;
|
79
88
|
width: 100%;
|
80
89
|
}
|
81
90
|
/*
|
82
|
-
|
91
|
+
LINK TOOLTIP
|
83
92
|
*/
|
84
93
|
.redactor-link-tooltip {
|
85
94
|
position: absolute;
|
@@ -104,7 +113,7 @@ body .redactor_box_fullscreen {
|
|
104
113
|
color: #fff;
|
105
114
|
}
|
106
115
|
/*
|
107
|
-
|
116
|
+
IMAGE BOX
|
108
117
|
*/
|
109
118
|
#redactor-image-box img {
|
110
119
|
width: 100%;
|
@@ -125,12 +134,8 @@ body .redactor_box_fullscreen {
|
|
125
134
|
.redactor_editor:focus {
|
126
135
|
outline: none;
|
127
136
|
}
|
128
|
-
.redactor_editor .redactor_placeholder {
|
129
|
-
color: #999 !important;
|
130
|
-
display: block !important;
|
131
|
-
}
|
132
137
|
/*
|
133
|
-
|
138
|
+
TOOLBAR
|
134
139
|
*/
|
135
140
|
.redactor_toolbar {
|
136
141
|
position: relative;
|
@@ -349,8 +354,11 @@ body .redactor_air .redactor_toolbar {
|
|
349
354
|
.re-aligncenter:before {
|
350
355
|
content: "\e61e";
|
351
356
|
}
|
357
|
+
.re-gallery:before {
|
358
|
+
content: "\e61f";
|
359
|
+
}
|
352
360
|
/*
|
353
|
-
|
361
|
+
Toolbar classes
|
354
362
|
*/
|
355
363
|
.redactor_format_blockquote {
|
356
364
|
padding-left: 10px;
|
@@ -400,7 +408,7 @@ body .redactor_air .redactor_toolbar {
|
|
400
408
|
font-size: .85em;
|
401
409
|
}
|
402
410
|
/*
|
403
|
-
|
411
|
+
Typewriter
|
404
412
|
*/
|
405
413
|
.redactor_editor.redactor-editor-typewriter {
|
406
414
|
background: #f5f5f5 !important;
|
@@ -441,7 +449,7 @@ body .redactor_air .redactor_toolbar {
|
|
441
449
|
text-decoration: underline !important;
|
442
450
|
}
|
443
451
|
/*
|
444
|
-
|
452
|
+
WYM
|
445
453
|
*/
|
446
454
|
.redactor_editor.redactor_editor_wym {
|
447
455
|
padding: 10px 7px 0 7px !important;
|
@@ -466,13 +474,14 @@ body .redactor_air .redactor_toolbar {
|
|
466
474
|
padding: 10px !important;
|
467
475
|
border: 1px solid #e4e4e4 !important;
|
468
476
|
background-color: #fff !important;
|
477
|
+
z-index: 0;
|
469
478
|
}
|
470
479
|
.redactor_editor.redactor_editor_wym blockquote:before {
|
471
480
|
content: '';
|
472
481
|
}
|
473
482
|
.redactor_editor.redactor_editor_wym img {
|
474
483
|
position: relative;
|
475
|
-
z-index:
|
484
|
+
z-index: 1;
|
476
485
|
}
|
477
486
|
.redactor_editor.redactor_editor_wym div {
|
478
487
|
border: 1px dotted #aaa !important;
|
@@ -492,13 +501,12 @@ body .redactor_air .redactor_toolbar {
|
|
492
501
|
border: none !important;
|
493
502
|
}
|
494
503
|
/*
|
495
|
-
|
504
|
+
DROPDOWN
|
496
505
|
*/
|
497
506
|
.redactor_dropdown {
|
498
507
|
position: absolute;
|
499
508
|
top: 28px;
|
500
509
|
left: 0;
|
501
|
-
z-index: 2004;
|
502
510
|
padding: 10px;
|
503
511
|
width: 200px;
|
504
512
|
background-color: #fff;
|
@@ -529,13 +537,12 @@ body .redactor_air .redactor_toolbar {
|
|
529
537
|
text-decoration: none;
|
530
538
|
}
|
531
539
|
/*
|
532
|
-
|
540
|
+
MODAL
|
533
541
|
*/
|
534
542
|
#redactor_modal_overlay {
|
535
543
|
position: fixed;
|
536
544
|
top: 0;
|
537
545
|
left: 0;
|
538
|
-
z-index: 50000;
|
539
546
|
margin: auto;
|
540
547
|
width: 100%;
|
541
548
|
height: 100%;
|
@@ -548,7 +555,6 @@ body .redactor_air .redactor_toolbar {
|
|
548
555
|
position: fixed;
|
549
556
|
top: 50%;
|
550
557
|
left: 50%;
|
551
|
-
z-index: 50001;
|
552
558
|
padding: 0;
|
553
559
|
background: #fff;
|
554
560
|
color: #000;
|
@@ -672,6 +678,9 @@ body .redactor_air .redactor_toolbar {
|
|
672
678
|
color: #999 !important;
|
673
679
|
text-decoration: none !important;
|
674
680
|
}
|
681
|
+
.redactor_modal_btn_hidden {
|
682
|
+
display: none;
|
683
|
+
}
|
675
684
|
#redactor_modal footer button {
|
676
685
|
position: relative;
|
677
686
|
width: 100%;
|
@@ -1,6 +1,185 @@
|
|
1
|
+
|
2
|
+
.redactor_editor div,
|
3
|
+
.redactor_editor p,
|
4
|
+
.redactor_editor ul,
|
5
|
+
.redactor_editor ol,
|
6
|
+
.redactor_editor table,
|
7
|
+
.redactor_editor dl,
|
8
|
+
.redactor_editor blockquote,
|
9
|
+
.redactor_editor pre,
|
10
|
+
.redactor_editor h1,
|
11
|
+
.redactor_editor h2,
|
12
|
+
.redactor_editor h3,
|
13
|
+
.redactor_editor h4,
|
14
|
+
.redactor_editor h5,
|
15
|
+
.redactor_editor h6 {
|
16
|
+
font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif;
|
17
|
+
}
|
18
|
+
.redactor_editor code,
|
19
|
+
.redactor_editor pre {
|
20
|
+
font-family: Menlo, Monaco, monospace, sans-serif;
|
21
|
+
}
|
22
|
+
.redactor_editor div,
|
23
|
+
.redactor_editor p,
|
24
|
+
.redactor_editor ul,
|
25
|
+
.redactor_editor ol,
|
26
|
+
.redactor_editor table,
|
27
|
+
.redactor_editor dl,
|
28
|
+
.redactor_editor blockquote,
|
29
|
+
.redactor_editor pre {
|
30
|
+
font-size: 14px;
|
31
|
+
line-height: 1.6em;
|
32
|
+
}
|
33
|
+
.redactor_editor a {
|
34
|
+
color: #15c !important;
|
35
|
+
text-decoration: underline !important;
|
36
|
+
}
|
37
|
+
.redactor_editor .redactor_placeholder {
|
38
|
+
color: #999 !important;
|
39
|
+
display: block !important;
|
40
|
+
}
|
1
41
|
/*
|
2
|
-
|
42
|
+
TYPOGRAPHY
|
43
|
+
*/
|
44
|
+
.redactor_editor object,
|
45
|
+
.redactor_editor embed,
|
46
|
+
.redactor_editor video,
|
47
|
+
.redactor_editor img {
|
48
|
+
max-width: 100%;
|
49
|
+
width: auto;
|
50
|
+
}
|
51
|
+
.redactor_editor video,
|
52
|
+
.redactor_editor img {
|
53
|
+
height: auto;
|
54
|
+
}
|
55
|
+
.redactor_editor div,
|
56
|
+
.redactor_editor p,
|
57
|
+
.redactor_editor ul,
|
58
|
+
.redactor_editor ol,
|
59
|
+
.redactor_editor table,
|
60
|
+
.redactor_editor dl,
|
61
|
+
.redactor_editor blockquote,
|
62
|
+
.redactor_editor pre {
|
63
|
+
margin: 0;
|
64
|
+
margin-bottom: 10px !important;
|
65
|
+
border: none;
|
66
|
+
background: none !important;
|
67
|
+
box-shadow: none !important;
|
68
|
+
}
|
69
|
+
.redactor_editor iframe,
|
70
|
+
.redactor_editor object,
|
71
|
+
.redactor_editor hr {
|
72
|
+
margin-bottom: 15px !important;
|
73
|
+
}
|
74
|
+
.redactor_editor blockquote {
|
75
|
+
margin-left: 1.5em !important;
|
76
|
+
padding-left: 0 !important;
|
77
|
+
color: #777;
|
78
|
+
font-style: italic !important;
|
79
|
+
}
|
80
|
+
.redactor_editor ul,
|
81
|
+
.redactor_editor ol {
|
82
|
+
padding-left: 2em !important;
|
83
|
+
}
|
84
|
+
.redactor_editor ul ul,
|
85
|
+
.redactor_editor ol ol,
|
86
|
+
.redactor_editor ul ol,
|
87
|
+
.redactor_editor ol ul {
|
88
|
+
margin: 2px !important;
|
89
|
+
padding: 0 !important;
|
90
|
+
padding-left: 2em !important;
|
91
|
+
border: none;
|
92
|
+
}
|
93
|
+
.redactor_editor dl dt {
|
94
|
+
font-weight: bold;
|
95
|
+
}
|
96
|
+
.redactor_editor dd {
|
97
|
+
margin-left: 1em;
|
98
|
+
}
|
99
|
+
.redactor_editor table {
|
100
|
+
border-collapse: collapse;
|
101
|
+
font-size: 1em !important;
|
102
|
+
}
|
103
|
+
.redactor_editor table td {
|
104
|
+
padding: 5px !important;
|
105
|
+
border: 1px solid #ddd;
|
106
|
+
vertical-align: top;
|
107
|
+
}
|
108
|
+
.redactor_editor table thead td {
|
109
|
+
border-bottom: 2px solid #000 !important;
|
110
|
+
font-weight: bold !important;
|
111
|
+
}
|
112
|
+
.redactor_editor code {
|
113
|
+
background-color: #d8d7d7 !important;
|
114
|
+
}
|
115
|
+
.redactor_editor pre {
|
116
|
+
overflow: auto;
|
117
|
+
padding: 1em !important;
|
118
|
+
border: 1px solid #ddd !important;
|
119
|
+
border-radius: 3px !important;
|
120
|
+
background: #f8f8f8 !important;
|
121
|
+
white-space: pre;
|
122
|
+
font-size: 90% !important;
|
123
|
+
}
|
124
|
+
.redactor_editor hr {
|
125
|
+
display: block;
|
126
|
+
height: 1px;
|
127
|
+
border: 0;
|
128
|
+
border-top: 1px solid #ccc;
|
129
|
+
}
|
130
|
+
/*
|
131
|
+
HEADERS
|
3
132
|
*/
|
133
|
+
.redactor_editor h1,
|
134
|
+
.redactor_editor h2,
|
135
|
+
.redactor_editor h3,
|
136
|
+
.redactor_editor h4,
|
137
|
+
.redactor_editor h5,
|
138
|
+
.redactor_editor h6 {
|
139
|
+
margin-top: 0 !important;
|
140
|
+
padding: 0 !important;
|
141
|
+
background: none;
|
142
|
+
color: #000;
|
143
|
+
font-weight: bold;
|
144
|
+
}
|
145
|
+
.redactor_editor h1 {
|
146
|
+
font-size: 36px !important;
|
147
|
+
line-height: 1.111em !important;
|
148
|
+
margin-bottom: .15em !important;
|
149
|
+
}
|
150
|
+
.redactor_editor h2 {
|
151
|
+
font-size: 30px !important;
|
152
|
+
line-height: 1.111em !important;
|
153
|
+
margin-bottom: .25em !important;
|
154
|
+
}
|
155
|
+
.redactor_editor h3 {
|
156
|
+
font-size: 24px !important;
|
157
|
+
line-height: 1.333em !important;
|
158
|
+
margin-bottom: .2em !important;
|
159
|
+
}
|
160
|
+
.redactor_editor h4 {
|
161
|
+
font-size: 18px !important;
|
162
|
+
line-height: 1.5em !important;
|
163
|
+
margin-bottom: .2em !important;
|
164
|
+
}
|
165
|
+
.redactor_editor h5 {
|
166
|
+
font-size: 1em !important;
|
167
|
+
line-height: 1.6em !important;
|
168
|
+
margin-bottom: .25em !important;
|
169
|
+
}
|
170
|
+
.redactor_editor h6 {
|
171
|
+
font-size: .8em !important;
|
172
|
+
line-height: 1.6em !important;
|
173
|
+
text-transform: uppercase;
|
174
|
+
margin-bottom: .3em !important;
|
175
|
+
}
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
/* Previous version
|
181
|
+
BEFORE TOOLBAR
|
182
|
+
*
|
4
183
|
|
5
184
|
.redactor_editor div,
|
6
185
|
.redactor_editor p,
|
@@ -40,7 +219,7 @@
|
|
40
219
|
|
41
220
|
/*
|
42
221
|
HEADERS
|
43
|
-
|
222
|
+
/
|
44
223
|
.redactor_editor h1,
|
45
224
|
.redactor_editor h2,
|
46
225
|
.redactor_editor h3,
|
@@ -87,7 +266,7 @@
|
|
87
266
|
|
88
267
|
/*
|
89
268
|
TYPOGRAPHY
|
90
|
-
|
269
|
+
/
|
91
270
|
.redactor_editor object,
|
92
271
|
.redactor_editor embed,
|
93
272
|
.redactor_editor video,
|
@@ -173,4 +352,6 @@
|
|
173
352
|
height: 1px;
|
174
353
|
border: 0;
|
175
354
|
border-top: 1px solid #ccc;
|
176
|
-
}
|
355
|
+
}
|
356
|
+
|
357
|
+
*/
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: character_editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kravets
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: alex@slatestudio.com
|
@@ -33,13 +33,13 @@ files:
|
|
33
33
|
- lib/character_editor/engine.rb
|
34
34
|
- lib/character_editor/version.rb
|
35
35
|
- vendor/assets/fonts/redactor-font.eot
|
36
|
-
- vendor/assets/javascripts/keypress.
|
36
|
+
- vendor/assets/javascripts/keypress.coffee
|
37
37
|
- vendor/assets/javascripts/redactor.js
|
38
38
|
- vendor/assets/stylesheets/redactor.css
|
39
39
|
- vendor/assets/stylesheets/redactor_typography.scss
|
40
40
|
homepage: https://github.com/slate-studio/character_editor
|
41
41
|
licenses:
|
42
|
-
-
|
42
|
+
- ''
|
43
43
|
metadata: {}
|
44
44
|
post_install_message:
|
45
45
|
rdoc_options: []
|
@@ -57,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
57
|
version: '0'
|
58
58
|
requirements: []
|
59
59
|
rubyforge_project: nowarning
|
60
|
-
rubygems_version: 2.2.
|
60
|
+
rubygems_version: 2.2.2
|
61
61
|
signing_key:
|
62
62
|
specification_version: 4
|
63
63
|
summary: Character WYSIWYG editor + Redactor.js
|
@@ -1,1063 +0,0 @@
|
|
1
|
-
// Generated by CoffeeScript 1.6.3
|
2
|
-
/*
|
3
|
-
Copyright 2014 David Mauro
|
4
|
-
|
5
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
you may not use this file except in compliance with the License.
|
7
|
-
You may obtain a copy of the License at
|
8
|
-
|
9
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
|
11
|
-
Unless required by applicable law or agreed to in writing, software
|
12
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
See the License for the specific language governing permissions and
|
15
|
-
limitations under the License.
|
16
|
-
|
17
|
-
Keypress is a robust keyboard input capturing Javascript utility
|
18
|
-
focused on input for games.
|
19
|
-
|
20
|
-
version 2.0.1
|
21
|
-
*/
|
22
|
-
|
23
|
-
|
24
|
-
/*
|
25
|
-
Combo options available and their defaults:
|
26
|
-
keys : [] - An array of the keys pressed together to activate combo.
|
27
|
-
count : 0 - The number of times a counting combo has been pressed. Reset on release.
|
28
|
-
is_unordered : false - Unless this is set to true, the keys can be pressed down in any order.
|
29
|
-
is_counting : false - Makes this a counting combo (see documentation).
|
30
|
-
is_exclusive : false - This combo will replace other exclusive combos when true.
|
31
|
-
is_solitary : false - This combo will only fire if ONLY it's keys are pressed down.
|
32
|
-
is_sequence : false - Rather than a key combo, this is an ordered key sequence.
|
33
|
-
prevent_default : false - Prevent default behavior for all component key keypresses.
|
34
|
-
prevent_repeat : false - Prevent the combo from repeating when keydown is held.
|
35
|
-
on_keydown : null - A function that is called when the combo is pressed.
|
36
|
-
on_keyup : null - A function that is called when the combo is released.
|
37
|
-
on_release : null - A function that is called when all keys in the combo are released.
|
38
|
-
this : undefined - Defines the scope for your callback functions.
|
39
|
-
*/
|
40
|
-
|
41
|
-
|
42
|
-
(function() {
|
43
|
-
var Combo, _change_keycodes_by_browser, _compare_arrays, _compare_arrays_sorted, _convert_key_to_readable, _convert_to_shifted_key, _decide_meta_key, _factory_defaults, _filter_array, _is_array_in_array, _is_array_in_array_sorted, _key_is_valid, _keycode_alternate_names, _keycode_dictionary, _keycode_shifted_keys, _log_error, _metakey, _modifier_event_mapping, _modifier_keys, _validate_combo,
|
44
|
-
__hasProp = {}.hasOwnProperty,
|
45
|
-
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
46
|
-
|
47
|
-
_factory_defaults = {
|
48
|
-
is_unordered: false,
|
49
|
-
is_counting: false,
|
50
|
-
is_exclusive: false,
|
51
|
-
is_solitary: false,
|
52
|
-
prevent_default: false,
|
53
|
-
prevent_repeat: false
|
54
|
-
};
|
55
|
-
|
56
|
-
_modifier_keys = ["meta", "alt", "option", "ctrl", "shift", "cmd"];
|
57
|
-
|
58
|
-
_metakey = "ctrl";
|
59
|
-
|
60
|
-
window.keypress = {};
|
61
|
-
|
62
|
-
keypress.debug = false;
|
63
|
-
|
64
|
-
Combo = (function() {
|
65
|
-
function Combo(dictionary) {
|
66
|
-
var property, value;
|
67
|
-
for (property in dictionary) {
|
68
|
-
if (!__hasProp.call(dictionary, property)) continue;
|
69
|
-
value = dictionary[property];
|
70
|
-
if (value !== false) {
|
71
|
-
this[property] = value;
|
72
|
-
}
|
73
|
-
}
|
74
|
-
this.keys = this.keys || [];
|
75
|
-
this.count = this.count || 0;
|
76
|
-
}
|
77
|
-
|
78
|
-
Combo.prototype.allows_key_repeat = function() {
|
79
|
-
return !this.prevent_repeat && typeof this.on_keydown === "function";
|
80
|
-
};
|
81
|
-
|
82
|
-
Combo.prototype.reset = function() {
|
83
|
-
this.count = 0;
|
84
|
-
return this.keyup_fired = null;
|
85
|
-
};
|
86
|
-
|
87
|
-
return Combo;
|
88
|
-
|
89
|
-
})();
|
90
|
-
|
91
|
-
keypress.Listener = (function() {
|
92
|
-
function Listener(element, defaults) {
|
93
|
-
var attach_handler, property, value,
|
94
|
-
_this = this;
|
95
|
-
this.should_suppress_event_defaults = false;
|
96
|
-
this.should_force_event_defaults = false;
|
97
|
-
this.sequence_delay = 800;
|
98
|
-
this._registered_combos = [];
|
99
|
-
this._keys_down = [];
|
100
|
-
this._active_combos = [];
|
101
|
-
this._sequence = [];
|
102
|
-
this._sequence_timer = null;
|
103
|
-
this._prevent_capture = false;
|
104
|
-
this._defaults = defaults || {};
|
105
|
-
for (property in _factory_defaults) {
|
106
|
-
if (!__hasProp.call(_factory_defaults, property)) continue;
|
107
|
-
value = _factory_defaults[property];
|
108
|
-
this._defaults[property] = this._defaults[property] || value;
|
109
|
-
}
|
110
|
-
element = element || document.body;
|
111
|
-
attach_handler = function(target, event, handler) {
|
112
|
-
if (target.addEventListener) {
|
113
|
-
return target.addEventListener(event, handler);
|
114
|
-
} else if (target.attachEvent) {
|
115
|
-
return target.attachEvent("on" + event, handler);
|
116
|
-
}
|
117
|
-
};
|
118
|
-
attach_handler(element, "keydown", function(e) {
|
119
|
-
e = e || window.event;
|
120
|
-
_this._receive_input(e, true);
|
121
|
-
return _this._bug_catcher(e);
|
122
|
-
});
|
123
|
-
attach_handler(element, "keyup", function(e) {
|
124
|
-
e = e || window.event;
|
125
|
-
return _this._receive_input(e, false);
|
126
|
-
});
|
127
|
-
attach_handler(window, "blur", function() {
|
128
|
-
var key, _i, _len, _ref;
|
129
|
-
_ref = _this._keys_down;
|
130
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
131
|
-
key = _ref[_i];
|
132
|
-
_this._key_up(key, {});
|
133
|
-
}
|
134
|
-
return _this._keys_down = [];
|
135
|
-
});
|
136
|
-
}
|
137
|
-
|
138
|
-
Listener.prototype._bug_catcher = function(e) {
|
139
|
-
var _ref;
|
140
|
-
if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && ((_ref = _convert_key_to_readable(e.keyCode)) !== "cmd" && _ref !== "shift" && _ref !== "alt" && _ref !== "caps" && _ref !== "tab")) {
|
141
|
-
return this._receive_input(e, false);
|
142
|
-
}
|
143
|
-
};
|
144
|
-
|
145
|
-
Listener.prototype._cmd_bug_check = function(combo_keys) {
|
146
|
-
if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && __indexOf.call(combo_keys, "cmd") < 0) {
|
147
|
-
return false;
|
148
|
-
}
|
149
|
-
return true;
|
150
|
-
};
|
151
|
-
|
152
|
-
Listener.prototype._prevent_default = function(e, should_prevent) {
|
153
|
-
if ((should_prevent || this.should_suppress_event_defaults) && !this.should_force_event_defaults) {
|
154
|
-
if (e.preventDefault) {
|
155
|
-
e.preventDefault();
|
156
|
-
} else {
|
157
|
-
e.returnValue = false;
|
158
|
-
}
|
159
|
-
if (e.stopPropagation) {
|
160
|
-
return e.stopPropagation();
|
161
|
-
}
|
162
|
-
}
|
163
|
-
};
|
164
|
-
|
165
|
-
Listener.prototype._get_active_combos = function(key) {
|
166
|
-
var active_combos, keys_down,
|
167
|
-
_this = this;
|
168
|
-
active_combos = [];
|
169
|
-
keys_down = _filter_array(this._keys_down, function(down_key) {
|
170
|
-
return down_key !== key;
|
171
|
-
});
|
172
|
-
keys_down.push(key);
|
173
|
-
this._match_combo_arrays(keys_down, function(match) {
|
174
|
-
if (_this._cmd_bug_check(match.keys)) {
|
175
|
-
return active_combos.push(match);
|
176
|
-
}
|
177
|
-
});
|
178
|
-
this._fuzzy_match_combo_arrays(keys_down, function(match) {
|
179
|
-
if (__indexOf.call(active_combos, match) >= 0) {
|
180
|
-
return;
|
181
|
-
}
|
182
|
-
if (!(match.is_solitary || !_this._cmd_bug_check(match.keys))) {
|
183
|
-
return active_combos.push(match);
|
184
|
-
}
|
185
|
-
});
|
186
|
-
return active_combos;
|
187
|
-
};
|
188
|
-
|
189
|
-
Listener.prototype._get_potential_combos = function(key) {
|
190
|
-
var combo, potentials, _i, _len, _ref;
|
191
|
-
potentials = [];
|
192
|
-
_ref = this._registered_combos;
|
193
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
194
|
-
combo = _ref[_i];
|
195
|
-
if (combo.is_sequence) {
|
196
|
-
continue;
|
197
|
-
}
|
198
|
-
if (__indexOf.call(combo.keys, key) >= 0 && this._cmd_bug_check(combo.keys)) {
|
199
|
-
potentials.push(combo);
|
200
|
-
}
|
201
|
-
}
|
202
|
-
return potentials;
|
203
|
-
};
|
204
|
-
|
205
|
-
Listener.prototype._add_to_active_combos = function(combo) {
|
206
|
-
var active_combo, active_key, active_keys, already_replaced, combo_key, i, should_prepend, should_replace, _i, _j, _k, _len, _len1, _ref, _ref1;
|
207
|
-
should_replace = false;
|
208
|
-
should_prepend = true;
|
209
|
-
already_replaced = false;
|
210
|
-
if (__indexOf.call(this._active_combos, combo) >= 0) {
|
211
|
-
return true;
|
212
|
-
} else if (this._active_combos.length) {
|
213
|
-
for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
214
|
-
active_combo = this._active_combos[i];
|
215
|
-
if (!(active_combo && active_combo.is_exclusive && combo.is_exclusive)) {
|
216
|
-
continue;
|
217
|
-
}
|
218
|
-
active_keys = active_combo.keys;
|
219
|
-
if (!should_replace) {
|
220
|
-
for (_j = 0, _len = active_keys.length; _j < _len; _j++) {
|
221
|
-
active_key = active_keys[_j];
|
222
|
-
should_replace = true;
|
223
|
-
if (__indexOf.call(combo.keys, active_key) < 0) {
|
224
|
-
should_replace = false;
|
225
|
-
break;
|
226
|
-
}
|
227
|
-
}
|
228
|
-
}
|
229
|
-
if (should_prepend && !should_replace) {
|
230
|
-
_ref1 = combo.keys;
|
231
|
-
for (_k = 0, _len1 = _ref1.length; _k < _len1; _k++) {
|
232
|
-
combo_key = _ref1[_k];
|
233
|
-
should_prepend = false;
|
234
|
-
if (__indexOf.call(active_keys, combo_key) < 0) {
|
235
|
-
should_prepend = true;
|
236
|
-
break;
|
237
|
-
}
|
238
|
-
}
|
239
|
-
}
|
240
|
-
if (should_replace) {
|
241
|
-
if (already_replaced) {
|
242
|
-
active_combo = this._active_combos.splice(i, 1)[0];
|
243
|
-
if (active_combo != null) {
|
244
|
-
active_combo.reset();
|
245
|
-
}
|
246
|
-
} else {
|
247
|
-
active_combo = this._active_combos.splice(i, 1, combo)[0];
|
248
|
-
if (active_combo != null) {
|
249
|
-
active_combo.reset();
|
250
|
-
}
|
251
|
-
already_replaced = true;
|
252
|
-
}
|
253
|
-
should_prepend = false;
|
254
|
-
}
|
255
|
-
}
|
256
|
-
}
|
257
|
-
if (should_prepend) {
|
258
|
-
this._active_combos.unshift(combo);
|
259
|
-
}
|
260
|
-
return should_replace || should_prepend;
|
261
|
-
};
|
262
|
-
|
263
|
-
Listener.prototype._remove_from_active_combos = function(combo) {
|
264
|
-
var active_combo, i, _i, _ref;
|
265
|
-
for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
266
|
-
active_combo = this._active_combos[i];
|
267
|
-
if (active_combo === combo) {
|
268
|
-
combo = this._active_combos.splice(i, 1)[0];
|
269
|
-
combo.reset();
|
270
|
-
break;
|
271
|
-
}
|
272
|
-
}
|
273
|
-
};
|
274
|
-
|
275
|
-
Listener.prototype._get_possible_sequences = function() {
|
276
|
-
var combo, i, j, match, matches, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
|
277
|
-
matches = [];
|
278
|
-
_ref = this._registered_combos;
|
279
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
280
|
-
combo = _ref[_i];
|
281
|
-
for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
|
282
|
-
sequence = this._sequence.slice(-j);
|
283
|
-
if (!combo.is_sequence) {
|
284
|
-
continue;
|
285
|
-
}
|
286
|
-
if (__indexOf.call(combo.keys, "shift") < 0) {
|
287
|
-
sequence = _filter_array(sequence, function(key) {
|
288
|
-
return key !== "shift";
|
289
|
-
});
|
290
|
-
if (!sequence.length) {
|
291
|
-
continue;
|
292
|
-
}
|
293
|
-
}
|
294
|
-
for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
|
295
|
-
if (combo.keys[i] === sequence[i]) {
|
296
|
-
match = true;
|
297
|
-
} else {
|
298
|
-
match = false;
|
299
|
-
break;
|
300
|
-
}
|
301
|
-
}
|
302
|
-
if (match) {
|
303
|
-
matches.push(combo);
|
304
|
-
}
|
305
|
-
}
|
306
|
-
}
|
307
|
-
return matches;
|
308
|
-
};
|
309
|
-
|
310
|
-
Listener.prototype._add_key_to_sequence = function(key, e) {
|
311
|
-
var combo, sequence_combos, _i, _len;
|
312
|
-
this._sequence.push(key);
|
313
|
-
sequence_combos = this._get_possible_sequences();
|
314
|
-
if (sequence_combos.length) {
|
315
|
-
for (_i = 0, _len = sequence_combos.length; _i < _len; _i++) {
|
316
|
-
combo = sequence_combos[_i];
|
317
|
-
this._prevent_default(e, combo.prevent_default);
|
318
|
-
}
|
319
|
-
if (this._sequence_timer) {
|
320
|
-
clearTimeout(this._sequence_timer);
|
321
|
-
}
|
322
|
-
if (this.sequence_delay > -1) {
|
323
|
-
this._sequence_timer = setTimeout(function() {
|
324
|
-
return this._sequence = [];
|
325
|
-
}, this.sequence_delay);
|
326
|
-
}
|
327
|
-
} else {
|
328
|
-
this._sequence = [];
|
329
|
-
}
|
330
|
-
};
|
331
|
-
|
332
|
-
Listener.prototype._get_sequence = function(key) {
|
333
|
-
var combo, i, j, match, seq_key, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
|
334
|
-
_ref = this._registered_combos;
|
335
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
336
|
-
combo = _ref[_i];
|
337
|
-
if (!combo.is_sequence) {
|
338
|
-
continue;
|
339
|
-
}
|
340
|
-
for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
|
341
|
-
sequence = (_filter_array(this._sequence, function(seq_key) {
|
342
|
-
if (__indexOf.call(combo.keys, "shift") >= 0) {
|
343
|
-
return true;
|
344
|
-
}
|
345
|
-
return seq_key !== "shift";
|
346
|
-
})).slice(-j);
|
347
|
-
if (combo.keys.length !== sequence.length) {
|
348
|
-
continue;
|
349
|
-
}
|
350
|
-
for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
|
351
|
-
seq_key = sequence[i];
|
352
|
-
if (__indexOf.call(combo.keys, "shift") < 0 ? seq_key === "shift" : void 0) {
|
353
|
-
continue;
|
354
|
-
}
|
355
|
-
if (key === "shift" && __indexOf.call(combo.keys, "shift") < 0) {
|
356
|
-
continue;
|
357
|
-
}
|
358
|
-
if (combo.keys[i] === seq_key) {
|
359
|
-
match = true;
|
360
|
-
} else {
|
361
|
-
match = false;
|
362
|
-
break;
|
363
|
-
}
|
364
|
-
}
|
365
|
-
}
|
366
|
-
if (match) {
|
367
|
-
return combo;
|
368
|
-
}
|
369
|
-
}
|
370
|
-
return false;
|
371
|
-
};
|
372
|
-
|
373
|
-
Listener.prototype._receive_input = function(e, is_keydown) {
|
374
|
-
var key;
|
375
|
-
if (this._prevent_capture) {
|
376
|
-
if (this._keys_down.length) {
|
377
|
-
this._keys_down = [];
|
378
|
-
}
|
379
|
-
return;
|
380
|
-
}
|
381
|
-
key = _convert_key_to_readable(e.keyCode);
|
382
|
-
if (!is_keydown && !this._keys_down.length && (key === "alt" || key === _metakey)) {
|
383
|
-
return;
|
384
|
-
}
|
385
|
-
if (!key) {
|
386
|
-
return;
|
387
|
-
}
|
388
|
-
if (is_keydown) {
|
389
|
-
return this._key_down(key, e);
|
390
|
-
} else {
|
391
|
-
return this._key_up(key, e);
|
392
|
-
}
|
393
|
-
};
|
394
|
-
|
395
|
-
Listener.prototype._fire = function(event, combo, key_event, is_autorepeat) {
|
396
|
-
if (typeof combo["on_" + event] === "function") {
|
397
|
-
this._prevent_default(key_event, combo["on_" + event].call(combo["this"], key_event, combo.count, is_autorepeat) !== true);
|
398
|
-
}
|
399
|
-
if (event === "release") {
|
400
|
-
combo.count = 0;
|
401
|
-
}
|
402
|
-
if (event === "keyup") {
|
403
|
-
return combo.keyup_fired = true;
|
404
|
-
}
|
405
|
-
};
|
406
|
-
|
407
|
-
Listener.prototype._match_combo_arrays = function(potential_match, match_handler) {
|
408
|
-
var source_combo, _i, _len, _ref;
|
409
|
-
_ref = this._registered_combos;
|
410
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
411
|
-
source_combo = _ref[_i];
|
412
|
-
if ((!source_combo.is_unordered && _compare_arrays_sorted(potential_match, source_combo.keys)) || (source_combo.is_unordered && _compare_arrays(potential_match, source_combo.keys))) {
|
413
|
-
match_handler(source_combo);
|
414
|
-
}
|
415
|
-
}
|
416
|
-
};
|
417
|
-
|
418
|
-
Listener.prototype._fuzzy_match_combo_arrays = function(potential_match, match_handler) {
|
419
|
-
var source_combo, _i, _len, _ref;
|
420
|
-
_ref = this._registered_combos;
|
421
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
422
|
-
source_combo = _ref[_i];
|
423
|
-
if ((!source_combo.is_unordered && _is_array_in_array_sorted(source_combo.keys, potential_match)) || (source_combo.is_unordered && _is_array_in_array(source_combo.keys, potential_match))) {
|
424
|
-
match_handler(source_combo);
|
425
|
-
}
|
426
|
-
}
|
427
|
-
};
|
428
|
-
|
429
|
-
Listener.prototype._keys_remain = function(combo) {
|
430
|
-
var key, keys_remain, _i, _len, _ref;
|
431
|
-
_ref = combo.keys;
|
432
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
433
|
-
key = _ref[_i];
|
434
|
-
if (__indexOf.call(this._keys_down, key) >= 0) {
|
435
|
-
keys_remain = true;
|
436
|
-
break;
|
437
|
-
}
|
438
|
-
}
|
439
|
-
return keys_remain;
|
440
|
-
};
|
441
|
-
|
442
|
-
Listener.prototype._key_down = function(key, e) {
|
443
|
-
var combo, combos, event_mod, i, mod, potential, potential_combos, sequence_combo, shifted_key, _i, _j, _k, _len, _len1, _ref;
|
444
|
-
shifted_key = _convert_to_shifted_key(key, e);
|
445
|
-
if (shifted_key) {
|
446
|
-
key = shifted_key;
|
447
|
-
}
|
448
|
-
this._add_key_to_sequence(key, e);
|
449
|
-
sequence_combo = this._get_sequence(key);
|
450
|
-
if (sequence_combo) {
|
451
|
-
this._fire("keydown", sequence_combo, e);
|
452
|
-
}
|
453
|
-
for (mod in _modifier_event_mapping) {
|
454
|
-
event_mod = _modifier_event_mapping[mod];
|
455
|
-
if (!e[event_mod]) {
|
456
|
-
continue;
|
457
|
-
}
|
458
|
-
if (mod === key || __indexOf.call(this._keys_down, mod) >= 0) {
|
459
|
-
continue;
|
460
|
-
}
|
461
|
-
this._keys_down.push(mod);
|
462
|
-
}
|
463
|
-
for (mod in _modifier_event_mapping) {
|
464
|
-
event_mod = _modifier_event_mapping[mod];
|
465
|
-
if (mod === key) {
|
466
|
-
continue;
|
467
|
-
}
|
468
|
-
if (__indexOf.call(this._keys_down, mod) >= 0 && !e[event_mod]) {
|
469
|
-
if (mod === "cmd" && _metakey !== "cmd") {
|
470
|
-
continue;
|
471
|
-
}
|
472
|
-
for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
473
|
-
if (this._keys_down[i] === mod) {
|
474
|
-
this._keys_down.splice(i, 1);
|
475
|
-
}
|
476
|
-
}
|
477
|
-
}
|
478
|
-
}
|
479
|
-
combos = this._get_active_combos(key);
|
480
|
-
potential_combos = this._get_potential_combos(key);
|
481
|
-
for (_j = 0, _len = combos.length; _j < _len; _j++) {
|
482
|
-
combo = combos[_j];
|
483
|
-
this._handle_combo_down(combo, potential_combos, key, e);
|
484
|
-
}
|
485
|
-
if (potential_combos.length) {
|
486
|
-
for (_k = 0, _len1 = potential_combos.length; _k < _len1; _k++) {
|
487
|
-
potential = potential_combos[_k];
|
488
|
-
this._prevent_default(e, potential.prevent_default);
|
489
|
-
}
|
490
|
-
}
|
491
|
-
if (__indexOf.call(this._keys_down, key) < 0) {
|
492
|
-
this._keys_down.push(key);
|
493
|
-
}
|
494
|
-
};
|
495
|
-
|
496
|
-
Listener.prototype._handle_combo_down = function(combo, potential_combos, key, e) {
|
497
|
-
var is_autorepeat, is_other_exclusive, potential_combo, result, _i, _len;
|
498
|
-
if (__indexOf.call(combo.keys, key) < 0) {
|
499
|
-
return false;
|
500
|
-
}
|
501
|
-
this._prevent_default(e, combo && combo.prevent_default);
|
502
|
-
is_autorepeat = false;
|
503
|
-
if (__indexOf.call(this._keys_down, key) >= 0) {
|
504
|
-
is_autorepeat = true;
|
505
|
-
if (!combo.allows_key_repeat()) {
|
506
|
-
return false;
|
507
|
-
}
|
508
|
-
}
|
509
|
-
result = this._add_to_active_combos(combo, key);
|
510
|
-
combo.keyup_fired = false;
|
511
|
-
is_other_exclusive = false;
|
512
|
-
if (combo.is_exclusive) {
|
513
|
-
for (_i = 0, _len = potential_combos.length; _i < _len; _i++) {
|
514
|
-
potential_combo = potential_combos[_i];
|
515
|
-
if (potential_combo.is_exclusive && potential_combo.keys.length > combo.keys.length) {
|
516
|
-
is_other_exclusive = true;
|
517
|
-
break;
|
518
|
-
}
|
519
|
-
}
|
520
|
-
}
|
521
|
-
if (!is_other_exclusive) {
|
522
|
-
if (combo.is_counting && typeof combo.on_keydown === "function") {
|
523
|
-
combo.count += 1;
|
524
|
-
}
|
525
|
-
if (result) {
|
526
|
-
return this._fire("keydown", combo, e, is_autorepeat);
|
527
|
-
}
|
528
|
-
}
|
529
|
-
};
|
530
|
-
|
531
|
-
Listener.prototype._key_up = function(key, e) {
|
532
|
-
var active_combo, active_combos_length, combo, combos, i, sequence_combo, shifted_key, unshifted_key, _i, _j, _k, _l, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
|
533
|
-
unshifted_key = key;
|
534
|
-
shifted_key = _convert_to_shifted_key(key, e);
|
535
|
-
if (shifted_key) {
|
536
|
-
key = shifted_key;
|
537
|
-
}
|
538
|
-
shifted_key = _keycode_shifted_keys[unshifted_key];
|
539
|
-
if (e.shiftKey) {
|
540
|
-
if (!(shifted_key && __indexOf.call(this._keys_down, shifted_key) >= 0)) {
|
541
|
-
key = unshifted_key;
|
542
|
-
}
|
543
|
-
} else {
|
544
|
-
if (!(unshifted_key && __indexOf.call(this._keys_down, unshifted_key) >= 0)) {
|
545
|
-
key = shifted_key;
|
546
|
-
}
|
547
|
-
}
|
548
|
-
sequence_combo = this._get_sequence(key);
|
549
|
-
if (sequence_combo) {
|
550
|
-
this._fire("keyup", sequence_combo, e);
|
551
|
-
}
|
552
|
-
if (__indexOf.call(this._keys_down, key) < 0) {
|
553
|
-
return false;
|
554
|
-
}
|
555
|
-
for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
556
|
-
if ((_ref1 = this._keys_down[i]) === key || _ref1 === shifted_key || _ref1 === unshifted_key) {
|
557
|
-
this._keys_down.splice(i, 1);
|
558
|
-
break;
|
559
|
-
}
|
560
|
-
}
|
561
|
-
active_combos_length = this._active_combos.length;
|
562
|
-
combos = [];
|
563
|
-
_ref2 = this._active_combos;
|
564
|
-
for (_j = 0, _len = _ref2.length; _j < _len; _j++) {
|
565
|
-
active_combo = _ref2[_j];
|
566
|
-
if (__indexOf.call(active_combo.keys, key) >= 0) {
|
567
|
-
combos.push(active_combo);
|
568
|
-
}
|
569
|
-
}
|
570
|
-
for (_k = 0, _len1 = combos.length; _k < _len1; _k++) {
|
571
|
-
combo = combos[_k];
|
572
|
-
this._handle_combo_up(combo, e, key);
|
573
|
-
}
|
574
|
-
if (active_combos_length > 1) {
|
575
|
-
_ref3 = this._active_combos;
|
576
|
-
for (_l = 0, _len2 = _ref3.length; _l < _len2; _l++) {
|
577
|
-
active_combo = _ref3[_l];
|
578
|
-
if (active_combo === void 0 || __indexOf.call(combos, active_combo) >= 0) {
|
579
|
-
continue;
|
580
|
-
}
|
581
|
-
if (!this._keys_remain(active_combo)) {
|
582
|
-
this._remove_from_active_combos(active_combo);
|
583
|
-
}
|
584
|
-
}
|
585
|
-
}
|
586
|
-
};
|
587
|
-
|
588
|
-
Listener.prototype._handle_combo_up = function(combo, e, key) {
|
589
|
-
var keys_down, keys_remaining;
|
590
|
-
this._prevent_default(e, combo && combo.prevent_default);
|
591
|
-
keys_remaining = this._keys_remain(combo);
|
592
|
-
if (!combo.keyup_fired) {
|
593
|
-
keys_down = this._keys_down.slice();
|
594
|
-
keys_down.push(key);
|
595
|
-
if (!combo.is_solitary || _compare_arrays(keys_down, combo.keys)) {
|
596
|
-
this._fire("keyup", combo, e);
|
597
|
-
if (combo.is_counting && typeof combo.on_keyup === "function" && typeof combo.on_keydown !== "function") {
|
598
|
-
combo.count += 1;
|
599
|
-
}
|
600
|
-
}
|
601
|
-
}
|
602
|
-
if (!keys_remaining) {
|
603
|
-
this._fire("release", combo, e);
|
604
|
-
this._remove_from_active_combos(combo);
|
605
|
-
}
|
606
|
-
};
|
607
|
-
|
608
|
-
Listener.prototype.simple_combo = function(keys, callback) {
|
609
|
-
return this.register_combo({
|
610
|
-
keys: keys,
|
611
|
-
on_keydown: callback
|
612
|
-
});
|
613
|
-
};
|
614
|
-
|
615
|
-
Listener.prototype.counting_combo = function(keys, count_callback) {
|
616
|
-
return this.register_combo({
|
617
|
-
keys: keys,
|
618
|
-
is_counting: true,
|
619
|
-
is_unordered: false,
|
620
|
-
on_keydown: count_callback
|
621
|
-
});
|
622
|
-
};
|
623
|
-
|
624
|
-
Listener.prototype.sequence_combo = function(keys, callback) {
|
625
|
-
return this.register_combo({
|
626
|
-
keys: keys,
|
627
|
-
on_keydown: callback,
|
628
|
-
is_sequence: true
|
629
|
-
});
|
630
|
-
};
|
631
|
-
|
632
|
-
Listener.prototype.register_combo = function(combo_dictionary) {
|
633
|
-
var combo, property, value, _ref;
|
634
|
-
if (typeof combo_dictionary["keys"] === "string") {
|
635
|
-
combo_dictionary["keys"] = combo_dictionary["keys"].split(" ");
|
636
|
-
}
|
637
|
-
_ref = this._defaults;
|
638
|
-
for (property in _ref) {
|
639
|
-
if (!__hasProp.call(_ref, property)) continue;
|
640
|
-
value = _ref[property];
|
641
|
-
if (combo_dictionary[property] === void 0) {
|
642
|
-
combo_dictionary[property] = value;
|
643
|
-
}
|
644
|
-
}
|
645
|
-
combo = new Combo(combo_dictionary);
|
646
|
-
if (_validate_combo(combo)) {
|
647
|
-
this._registered_combos.push(combo);
|
648
|
-
return true;
|
649
|
-
}
|
650
|
-
};
|
651
|
-
|
652
|
-
Listener.prototype.register_many = function(combo_array) {
|
653
|
-
var combo, _i, _len, _results;
|
654
|
-
_results = [];
|
655
|
-
for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
|
656
|
-
combo = combo_array[_i];
|
657
|
-
_results.push(this.register_combo(combo));
|
658
|
-
}
|
659
|
-
return _results;
|
660
|
-
};
|
661
|
-
|
662
|
-
Listener.prototype.unregister_combo = function(keys_or_combo) {
|
663
|
-
var combo, unregister_combo, _i, _len, _ref,
|
664
|
-
_this = this;
|
665
|
-
if (!keys_or_combo) {
|
666
|
-
return false;
|
667
|
-
}
|
668
|
-
unregister_combo = function(combo) {
|
669
|
-
var i, _i, _ref, _results;
|
670
|
-
_results = [];
|
671
|
-
for (i = _i = 0, _ref = _this._registered_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
672
|
-
if (combo === _this._registered_combos[i]) {
|
673
|
-
_this._registered_combos.splice(i, 1);
|
674
|
-
break;
|
675
|
-
} else {
|
676
|
-
_results.push(void 0);
|
677
|
-
}
|
678
|
-
}
|
679
|
-
return _results;
|
680
|
-
};
|
681
|
-
if (keys_or_combo.keys) {
|
682
|
-
return unregister_combo(keys_or_combo);
|
683
|
-
} else {
|
684
|
-
_ref = this._registered_combos;
|
685
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
686
|
-
combo = _ref[_i];
|
687
|
-
if (!combo) {
|
688
|
-
continue;
|
689
|
-
}
|
690
|
-
}
|
691
|
-
if (typeof keys_or_combo === "string") {
|
692
|
-
keys_or_combo = keys_or_combo.split(" ");
|
693
|
-
}
|
694
|
-
if ((combo.is_unordered && _compare_arrays(keys_or_combo, combo.keys)) || (!combo.is_unordered && _compare_arrays_sorted(keys_or_combo, combo.keys))) {
|
695
|
-
return unregister_combo(combo);
|
696
|
-
}
|
697
|
-
}
|
698
|
-
};
|
699
|
-
|
700
|
-
Listener.prototype.unregister_many = function(combo_array) {
|
701
|
-
var combo, _i, _len, _results;
|
702
|
-
_results = [];
|
703
|
-
for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
|
704
|
-
combo = combo_array[_i];
|
705
|
-
_results.push(this.unregister_combo(combo));
|
706
|
-
}
|
707
|
-
return _results;
|
708
|
-
};
|
709
|
-
|
710
|
-
Listener.prototype.get_registered_combos = function() {
|
711
|
-
return this._registered_combos;
|
712
|
-
};
|
713
|
-
|
714
|
-
Listener.prototype.reset = function() {
|
715
|
-
return this._registered_combos = [];
|
716
|
-
};
|
717
|
-
|
718
|
-
Listener.prototype.listen = function() {
|
719
|
-
return this._prevent_capture = false;
|
720
|
-
};
|
721
|
-
|
722
|
-
Listener.prototype.stop_listening = function() {
|
723
|
-
return this._prevent_capture = true;
|
724
|
-
};
|
725
|
-
|
726
|
-
Listener.prototype.get_meta_key = function() {
|
727
|
-
return _metakey;
|
728
|
-
};
|
729
|
-
|
730
|
-
return Listener;
|
731
|
-
|
732
|
-
})();
|
733
|
-
|
734
|
-
_decide_meta_key = function() {
|
735
|
-
if (navigator.userAgent.indexOf("Mac OS X") !== -1) {
|
736
|
-
_metakey = "cmd";
|
737
|
-
}
|
738
|
-
};
|
739
|
-
|
740
|
-
_change_keycodes_by_browser = function() {
|
741
|
-
if (navigator.userAgent.indexOf("Opera") !== -1) {
|
742
|
-
_keycode_dictionary["17"] = "cmd";
|
743
|
-
}
|
744
|
-
};
|
745
|
-
|
746
|
-
_convert_key_to_readable = function(k) {
|
747
|
-
return _keycode_dictionary[k];
|
748
|
-
};
|
749
|
-
|
750
|
-
_filter_array = function(array, callback) {
|
751
|
-
var element;
|
752
|
-
if (array.filter) {
|
753
|
-
return array.filter(callback);
|
754
|
-
} else {
|
755
|
-
return (function() {
|
756
|
-
var _i, _len, _results;
|
757
|
-
_results = [];
|
758
|
-
for (_i = 0, _len = array.length; _i < _len; _i++) {
|
759
|
-
element = array[_i];
|
760
|
-
if (callback(element)) {
|
761
|
-
_results.push(element);
|
762
|
-
}
|
763
|
-
}
|
764
|
-
return _results;
|
765
|
-
})();
|
766
|
-
}
|
767
|
-
};
|
768
|
-
|
769
|
-
_compare_arrays = function(a1, a2) {
|
770
|
-
var item, _i, _len;
|
771
|
-
if (a1.length !== a2.length) {
|
772
|
-
return false;
|
773
|
-
}
|
774
|
-
for (_i = 0, _len = a1.length; _i < _len; _i++) {
|
775
|
-
item = a1[_i];
|
776
|
-
if (__indexOf.call(a2, item) >= 0) {
|
777
|
-
continue;
|
778
|
-
}
|
779
|
-
return false;
|
780
|
-
}
|
781
|
-
return true;
|
782
|
-
};
|
783
|
-
|
784
|
-
_compare_arrays_sorted = function(a1, a2) {
|
785
|
-
var i, _i, _ref;
|
786
|
-
if (a1.length !== a2.length) {
|
787
|
-
return false;
|
788
|
-
}
|
789
|
-
for (i = _i = 0, _ref = a1.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
790
|
-
if (a1[i] !== a2[i]) {
|
791
|
-
return false;
|
792
|
-
}
|
793
|
-
}
|
794
|
-
return true;
|
795
|
-
};
|
796
|
-
|
797
|
-
_is_array_in_array = function(a1, a2) {
|
798
|
-
var item, _i, _len;
|
799
|
-
for (_i = 0, _len = a1.length; _i < _len; _i++) {
|
800
|
-
item = a1[_i];
|
801
|
-
if (__indexOf.call(a2, item) < 0) {
|
802
|
-
return false;
|
803
|
-
}
|
804
|
-
}
|
805
|
-
return true;
|
806
|
-
};
|
807
|
-
|
808
|
-
_is_array_in_array_sorted = function(a1, a2) {
|
809
|
-
var index, item, prev, _i, _len;
|
810
|
-
prev = 0;
|
811
|
-
for (_i = 0, _len = a1.length; _i < _len; _i++) {
|
812
|
-
item = a1[_i];
|
813
|
-
index = a2.indexOf(item);
|
814
|
-
if (index >= prev) {
|
815
|
-
prev = index;
|
816
|
-
} else {
|
817
|
-
return false;
|
818
|
-
}
|
819
|
-
}
|
820
|
-
return true;
|
821
|
-
};
|
822
|
-
|
823
|
-
_log_error = function() {
|
824
|
-
if (keypress.debug) {
|
825
|
-
return console.log.apply(console, arguments);
|
826
|
-
}
|
827
|
-
};
|
828
|
-
|
829
|
-
_key_is_valid = function(key) {
|
830
|
-
var valid, valid_key, _;
|
831
|
-
valid = false;
|
832
|
-
for (_ in _keycode_dictionary) {
|
833
|
-
valid_key = _keycode_dictionary[_];
|
834
|
-
if (key === valid_key) {
|
835
|
-
valid = true;
|
836
|
-
break;
|
837
|
-
}
|
838
|
-
}
|
839
|
-
if (!valid) {
|
840
|
-
for (_ in _keycode_shifted_keys) {
|
841
|
-
valid_key = _keycode_shifted_keys[_];
|
842
|
-
if (key === valid_key) {
|
843
|
-
valid = true;
|
844
|
-
break;
|
845
|
-
}
|
846
|
-
}
|
847
|
-
}
|
848
|
-
return valid;
|
849
|
-
};
|
850
|
-
|
851
|
-
_validate_combo = function(combo) {
|
852
|
-
var alt_name, i, key, mod_key, non_modifier_keys, property, validated, value, _i, _j, _k, _len, _len1, _ref, _ref1;
|
853
|
-
validated = true;
|
854
|
-
if (!combo.keys.length) {
|
855
|
-
_log_error("You're trying to bind a combo with no keys:", combo);
|
856
|
-
}
|
857
|
-
for (i = _i = 0, _ref = combo.keys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
858
|
-
key = combo.keys[i];
|
859
|
-
alt_name = _keycode_alternate_names[key];
|
860
|
-
if (alt_name) {
|
861
|
-
key = combo.keys[i] = alt_name;
|
862
|
-
}
|
863
|
-
if (key === "meta") {
|
864
|
-
combo.keys.splice(i, 1, _metakey);
|
865
|
-
}
|
866
|
-
if (key === "cmd") {
|
867
|
-
_log_error("Warning: use the \"meta\" key rather than \"cmd\" for Windows compatibility");
|
868
|
-
}
|
869
|
-
}
|
870
|
-
_ref1 = combo.keys;
|
871
|
-
for (_j = 0, _len = _ref1.length; _j < _len; _j++) {
|
872
|
-
key = _ref1[_j];
|
873
|
-
if (!_key_is_valid(key)) {
|
874
|
-
_log_error("Do not recognize the key \"" + key + "\"");
|
875
|
-
validated = false;
|
876
|
-
}
|
877
|
-
}
|
878
|
-
if (__indexOf.call(combo.keys, "meta") >= 0 || __indexOf.call(combo.keys, "cmd") >= 0) {
|
879
|
-
non_modifier_keys = combo.keys.slice();
|
880
|
-
for (_k = 0, _len1 = _modifier_keys.length; _k < _len1; _k++) {
|
881
|
-
mod_key = _modifier_keys[_k];
|
882
|
-
if ((i = non_modifier_keys.indexOf(mod_key)) > -1) {
|
883
|
-
non_modifier_keys.splice(i, 1);
|
884
|
-
}
|
885
|
-
}
|
886
|
-
if (non_modifier_keys.length > 1) {
|
887
|
-
_log_error("META and CMD key combos cannot have more than 1 non-modifier keys", combo, non_modifier_keys);
|
888
|
-
validated = false;
|
889
|
-
}
|
890
|
-
}
|
891
|
-
for (property in combo) {
|
892
|
-
value = combo[property];
|
893
|
-
if (_factory_defaults[property] === "undefined") {
|
894
|
-
_log_error("The property " + property + " is not a valid combo property. Your combo has still been registered.");
|
895
|
-
}
|
896
|
-
}
|
897
|
-
return validated;
|
898
|
-
};
|
899
|
-
|
900
|
-
_convert_to_shifted_key = function(key, e) {
|
901
|
-
var k;
|
902
|
-
if (!e.shiftKey) {
|
903
|
-
return false;
|
904
|
-
}
|
905
|
-
k = _keycode_shifted_keys[key];
|
906
|
-
if (k != null) {
|
907
|
-
return k;
|
908
|
-
}
|
909
|
-
return false;
|
910
|
-
};
|
911
|
-
|
912
|
-
_modifier_event_mapping = {
|
913
|
-
"cmd": "metaKey",
|
914
|
-
"ctrl": "ctrlKey",
|
915
|
-
"shift": "shiftKey",
|
916
|
-
"alt": "altKey"
|
917
|
-
};
|
918
|
-
|
919
|
-
_keycode_alternate_names = {
|
920
|
-
"escape": "esc",
|
921
|
-
"control": "ctrl",
|
922
|
-
"command": "cmd",
|
923
|
-
"break": "pause",
|
924
|
-
"windows": "cmd",
|
925
|
-
"option": "alt",
|
926
|
-
"caps_lock": "caps",
|
927
|
-
"apostrophe": "\'",
|
928
|
-
"semicolon": ";",
|
929
|
-
"tilde": "~",
|
930
|
-
"accent": "`",
|
931
|
-
"scroll_lock": "scroll",
|
932
|
-
"num_lock": "num"
|
933
|
-
};
|
934
|
-
|
935
|
-
_keycode_shifted_keys = {
|
936
|
-
"/": "?",
|
937
|
-
".": ">",
|
938
|
-
",": "<",
|
939
|
-
"\'": "\"",
|
940
|
-
";": ":",
|
941
|
-
"[": "{",
|
942
|
-
"]": "}",
|
943
|
-
"\\": "|",
|
944
|
-
"`": "~",
|
945
|
-
"=": "+",
|
946
|
-
"-": "_",
|
947
|
-
"1": "!",
|
948
|
-
"2": "@",
|
949
|
-
"3": "#",
|
950
|
-
"4": "$",
|
951
|
-
"5": "%",
|
952
|
-
"6": "^",
|
953
|
-
"7": "&",
|
954
|
-
"8": "*",
|
955
|
-
"9": "(",
|
956
|
-
"0": ")"
|
957
|
-
};
|
958
|
-
|
959
|
-
_keycode_dictionary = {
|
960
|
-
0: "\\",
|
961
|
-
8: "backspace",
|
962
|
-
9: "tab",
|
963
|
-
12: "num",
|
964
|
-
13: "enter",
|
965
|
-
16: "shift",
|
966
|
-
17: "ctrl",
|
967
|
-
18: "alt",
|
968
|
-
19: "pause",
|
969
|
-
20: "caps",
|
970
|
-
27: "esc",
|
971
|
-
32: "space",
|
972
|
-
33: "pageup",
|
973
|
-
34: "pagedown",
|
974
|
-
35: "end",
|
975
|
-
36: "home",
|
976
|
-
37: "left",
|
977
|
-
38: "up",
|
978
|
-
39: "right",
|
979
|
-
40: "down",
|
980
|
-
44: "print",
|
981
|
-
45: "insert",
|
982
|
-
46: "delete",
|
983
|
-
48: "0",
|
984
|
-
49: "1",
|
985
|
-
50: "2",
|
986
|
-
51: "3",
|
987
|
-
52: "4",
|
988
|
-
53: "5",
|
989
|
-
54: "6",
|
990
|
-
55: "7",
|
991
|
-
56: "8",
|
992
|
-
57: "9",
|
993
|
-
65: "a",
|
994
|
-
66: "b",
|
995
|
-
67: "c",
|
996
|
-
68: "d",
|
997
|
-
69: "e",
|
998
|
-
70: "f",
|
999
|
-
71: "g",
|
1000
|
-
72: "h",
|
1001
|
-
73: "i",
|
1002
|
-
74: "j",
|
1003
|
-
75: "k",
|
1004
|
-
76: "l",
|
1005
|
-
77: "m",
|
1006
|
-
78: "n",
|
1007
|
-
79: "o",
|
1008
|
-
80: "p",
|
1009
|
-
81: "q",
|
1010
|
-
82: "r",
|
1011
|
-
83: "s",
|
1012
|
-
84: "t",
|
1013
|
-
85: "u",
|
1014
|
-
86: "v",
|
1015
|
-
87: "w",
|
1016
|
-
88: "x",
|
1017
|
-
89: "y",
|
1018
|
-
90: "z",
|
1019
|
-
91: "cmd",
|
1020
|
-
92: "cmd",
|
1021
|
-
93: "cmd",
|
1022
|
-
96: "num_0",
|
1023
|
-
97: "num_1",
|
1024
|
-
98: "num_2",
|
1025
|
-
99: "num_3",
|
1026
|
-
100: "num_4",
|
1027
|
-
101: "num_5",
|
1028
|
-
102: "num_6",
|
1029
|
-
103: "num_7",
|
1030
|
-
104: "num_8",
|
1031
|
-
105: "num_9",
|
1032
|
-
106: "num_multiply",
|
1033
|
-
107: "num_add",
|
1034
|
-
108: "num_enter",
|
1035
|
-
109: "num_subtract",
|
1036
|
-
110: "num_decimal",
|
1037
|
-
111: "num_divide",
|
1038
|
-
124: "print",
|
1039
|
-
144: "num",
|
1040
|
-
145: "scroll",
|
1041
|
-
186: ";",
|
1042
|
-
187: "=",
|
1043
|
-
188: ",",
|
1044
|
-
189: "-",
|
1045
|
-
190: ".",
|
1046
|
-
191: "/",
|
1047
|
-
192: "`",
|
1048
|
-
219: "[",
|
1049
|
-
220: "\\",
|
1050
|
-
221: "]",
|
1051
|
-
222: "\'",
|
1052
|
-
223: "`",
|
1053
|
-
224: "cmd",
|
1054
|
-
225: "alt",
|
1055
|
-
57392: "ctrl",
|
1056
|
-
63289: "num"
|
1057
|
-
};
|
1058
|
-
|
1059
|
-
_decide_meta_key();
|
1060
|
-
|
1061
|
-
_change_keycodes_by_browser();
|
1062
|
-
|
1063
|
-
}).call(this);
|