33 * https://api.typingdna.com/scripts/typingdna.js
44 * https://typingdna.com/scripts/typingdna.js (alternative)
55 *
6- * @version 2.14
6+ * @version 2.15
77 * @author Raul Popa
88 * @copyright SC TypingDNA SRL, http://typingdna.com
99 * @license http://www.apache.org/licenses/LICENSE-2.0
@@ -102,7 +102,7 @@ function TypingDNA() {
102102 TypingDNA . prototype . defaultHistoryLength = TypingDNA . defaultHistoryLength ;
103103 TypingDNA . prototype . maxSeekTime = TypingDNA . maxSeekTime ;
104104 TypingDNA . prototype . maxPressTime = TypingDNA . maxPressTime ;
105- TypingDNA . version = 2.14 ;
105+ TypingDNA . version = 2.15 ;
106106 TypingDNA . flags = 0 ;
107107 TypingDNA . instance = this ;
108108 TypingDNA . document = document ;
@@ -152,7 +152,10 @@ function TypingDNA() {
152152 TypingDNA . ACPressTime = 0 ;
153153 TypingDNA . ACLastCharCode = 0 ;
154154 TypingDNA . ACLastKeyCode = 0 ;
155- TypingDNA . ACFlagDownTI = 0 ;
155+ TypingDNA . ACInputLengths = {
156+ inputs : [ ] ,
157+ lastLength : [ ] ,
158+ } ;
156159 TypingDNA . ACPreviousKeyCode = 0 ;
157160 TypingDNA . targetIds = [ ] ;
158161 TypingDNA . lastTarget = "" ;
@@ -176,14 +179,12 @@ function TypingDNA() {
176179
177180 TypingDNA . ACSeekTime = ( new Date ) . getTime ( ) - TypingDNA . ACLastTime ;
178181 TypingDNA . ACLastTime = ( new Date ) . getTime ( ) ;
179- TypingDNA . ACFlagDownTI = 1 ;
180182
181183 TypingDNA . document . removeEventListener ( "keydown" , TypingDNA . keyDown ) ;
182184 TypingDNA . document . removeEventListener ( "keyup" , TypingDNA . keyUp ) ;
183185 TypingDNA . document . removeEventListener ( "keypress" , TypingDNA . keyPress ) ;
184186
185187 // if android
186- TypingDNA . document . addEventListener ( "textInput" , TypingDNA . ACTextInput ) ;
187188 TypingDNA . document . addEventListener ( "keydown" , TypingDNA . ACKeyDown ) ;
188189 TypingDNA . document . addEventListener ( "keyup" , TypingDNA . ACKeyUp ) ;
189190 } else {
@@ -334,19 +335,9 @@ function TypingDNA() {
334335 if ( ! TypingDNA . isTarget ( e . target . id ) ) {
335336 return ;
336337 }
337- if ( e . keyCode == 229 ) {
338- TypingDNA . ACFlagDownTI = 1 ;
339- }
340- }
341-
342- TypingDNA . ACTextInput = function ( e ) {
343- if ( ! TypingDNA . recording && ! TypingDNA . diagramRecording ) {
344- return ;
345- }
346- if ( TypingDNA . ACFlagDownTI = 1 ) {
347- TypingDNA . ACLastCharCode = e . data . charCodeAt ( 0 ) ;
348- TypingDNA . ACLastKeyCode = e . data . toUpperCase ( ) . charCodeAt ( 0 ) ;
349- TypingDNA . ACFlagDownTI = 0 ;
338+ if ( TypingDNA . ACInputLengths . inputs . indexOf ( e . target ) === - 1 ) {
339+ TypingDNA . ACInputLengths . inputs . push ( e . target ) ;
340+ TypingDNA . ACInputLengths . lastLength . push ( 0 ) ;
350341 }
351342 }
352343
@@ -360,13 +351,23 @@ function TypingDNA() {
360351 return ;
361352 }
362353 var keyCode = e . keyCode ;
363- if ( keyCode == 229 && TypingDNA . ACFlagDownTI == 0 ) {
364- keyCode = TypingDNA . ACLastKeyCode ;
365- }
354+ var targetIndex = TypingDNA . ACInputLengths . inputs . indexOf ( e . target ) ;
355+ if ( targetIndex === - 1 ) {
356+ TypingDNA . ACInputLengths . inputs . push ( e . target ) ;
357+ TypingDNA . ACInputLengths . lastLength . push ( 0 ) ;
358+ targetIndex = TypingDNA . ACInputLengths . inputs . indexOf ( e . target ) ;
359+ }
360+ if ( keyCode == 229 && e . target . value . length >= TypingDNA . ACInputLengths . lastLength [ targetIndex ] ) {
361+ var char = e . target . value . substr ( ( e . target . selectionStart - 1 ) || 0 , 1 ) ;
362+ keyCode = char . toUpperCase ( ) . charCodeAt ( 0 ) ;
363+ TypingDNA . ACLastCharCode = char . charCodeAt ( 0 ) ;
364+ TypingDNA . ACLastKeyCode = char . toUpperCase ( ) . charCodeAt ( 0 ) ;
365+ }
366+ TypingDNA . ACInputLengths . lastLength [ targetIndex ] = e . target . value . length ;
366367 var arr = [ keyCode , TypingDNA . ACSeekTime , TypingDNA . ACPressTime , TypingDNA . ACPreviousKeyCode , TypingDNA . ACLastTime ] ;
367368 TypingDNA . history . add ( arr ) ;
368369 TypingDNA . ACPreviousKeyCode = keyCode ;
369- if ( TypingDNA . diagramRecording == true && TypingDNA . ACFlagDownTI == 0 ) {
370+ if ( TypingDNA . diagramRecording == true ) {
370371 var arrD = [ keyCode , TypingDNA . ACSeekTime , TypingDNA . ACPressTime , TypingDNA . ACLastCharCode ] ;
371372 TypingDNA . history . addDiagram ( arrD ) ;
372373 }
@@ -587,6 +588,10 @@ function TypingDNA() {
587588 TypingDNA . history . stackDiagram = [ ] ;
588589 TypingDNA . clickTimes = [ ] ;
589590 TypingDNA . stopTimes = [ ] ;
591+ TypingDNA . ACInputLengths = {
592+ inputs : [ ] ,
593+ lastLength : [ ] ,
594+ } ;
590595 if ( all == true ) {
591596 TypingDNA . mouse . history . stack = [ ] ;
592597 }
0 commit comments