File size: 1,797 Bytes
08c964e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
ace.define(
	'ace/ext/spellcheck',
	['require', 'exports', 'module', 'ace/lib/event', 'ace/editor', 'ace/config'],
	function (e, t, n) {
		'use strict'
		var r = e('../lib/event')
		t.contextMenuHandler = function (e) {
			var t = e.target,
				n = t.textInput.getElement()
			if (!t.selection.isEmpty()) return
			var i = t.getCursorPosition(),
				s = t.session.getWordRange(i.row, i.column),
				o = t.session.getTextRange(s)
			t.session.tokenRe.lastIndex = 0
			if (!t.session.tokenRe.test(o)) return
			var u = '\x01\x01',
				a = o + ' ' + u
			;(n.value = a),
				n.setSelectionRange(o.length, o.length + 1),
				n.setSelectionRange(0, 0),
				n.setSelectionRange(0, o.length)
			var f = !1
			r.addListener(n, 'keydown', function l() {
				r.removeListener(n, 'keydown', l), (f = !0)
			}),
				t.textInput.setInputHandler(function (e) {
					if (e == a) return ''
					if (e.lastIndexOf(a, 0) === 0) return e.slice(a.length)
					if (e.substr(n.selectionEnd) == a) return e.slice(0, -a.length)
					if (e.slice(-2) == u) {
						var r = e.slice(0, -2)
						if (r.slice(-1) == ' ')
							return f
								? r.substring(0, n.selectionEnd)
								: ((r = r.slice(0, -1)), t.session.replace(s, r), '')
					}
					return e
				})
		}
		var i = e('../editor').Editor
		e('../config').defineOptions(i.prototype, 'editor', {
			spellcheck: {
				set: function (e) {
					var n = this.textInput.getElement()
					;(n.spellcheck = !!e),
						e
							? this.on('nativecontextmenu', t.contextMenuHandler)
							: this.removeListener('nativecontextmenu', t.contextMenuHandler)
				},
				value: !0,
			},
		})
	}
)
;(function () {
	ace.require(['ace/ext/spellcheck'], function (m) {
		if (typeof module == 'object' && typeof exports == 'object' && module) {
			module.exports = m
		}
	})
})()