test / bt-source /panel /BTPanel /static /editor /ext-elastic_tabstops_lite.js
GGSheng's picture
feat: deploy Gemma 4 to hf space
08c964e verified
ace.define(
'ace/ext/elastic_tabstops_lite',
['require', 'exports', 'module', 'ace/editor', 'ace/config'],
function (e, t, n) {
'use strict'
var r = function (e) {
this.$editor = e
var t = this,
n = [],
r = !1
;(this.onAfterExec = function () {
;(r = !1), t.processRows(n), (n = [])
}),
(this.onExec = function () {
r = !0
}),
(this.onChange = function (e) {
r &&
(n.indexOf(e.start.row) == -1 && n.push(e.start.row),
e.end.row != e.start.row && n.push(e.end.row))
})
}
;(function () {
;(this.processRows = function (e) {
this.$inChange = !0
var t = []
for (var n = 0, r = e.length; n < r; n++) {
var i = e[n]
if (t.indexOf(i) > -1) continue
var s = this.$findCellWidthsForBlock(i),
o = this.$setBlockCellWidthsToMax(s.cellWidths),
u = s.firstRow
for (var a = 0, f = o.length; a < f; a++) {
var l = o[a]
t.push(u), this.$adjustRow(u, l), u++
}
}
this.$inChange = !1
}),
(this.$findCellWidthsForBlock = function (e) {
var t = [],
n,
r = e
while (r >= 0) {
n = this.$cellWidthsForRow(r)
if (n.length == 0) break
t.unshift(n), r--
}
var i = r + 1
r = e
var s = this.$editor.session.getLength()
while (r < s - 1) {
r++, (n = this.$cellWidthsForRow(r))
if (n.length == 0) break
t.push(n)
}
return { cellWidths: t, firstRow: i }
}),
(this.$cellWidthsForRow = function (e) {
var t = this.$selectionColumnsForRow(e),
n = [-1].concat(this.$tabsForRow(e)),
r = n
.map(function (e) {
return 0
})
.slice(1),
i = this.$editor.session.getLine(e)
for (var s = 0, o = n.length - 1; s < o; s++) {
var u = n[s] + 1,
a = n[s + 1],
f = this.$rightmostSelectionInCell(t, a),
l = i.substring(u, a)
r[s] = Math.max(l.replace(/\s+$/g, '').length, f - u)
}
return r
}),
(this.$selectionColumnsForRow = function (e) {
var t = [],
n = this.$editor.getCursorPosition()
return this.$editor.session.getSelection().isEmpty() && e == n.row && t.push(n.column), t
}),
(this.$setBlockCellWidthsToMax = function (e) {
var t = !0,
n,
r,
i,
s = this.$izip_longest(e)
for (var o = 0, u = s.length; o < u; o++) {
var a = s[o]
if (!a.push) {
console.error(a)
continue
}
a.push(NaN)
for (var f = 0, l = a.length; f < l; f++) {
var c = a[f]
t && ((n = f), (i = 0), (t = !1))
if (isNaN(c)) {
r = f
for (var h = n; h < r; h++) e[h][o] = i
t = !0
}
i = Math.max(i, c)
}
}
return e
}),
(this.$rightmostSelectionInCell = function (e, t) {
var n = 0
if (e.length) {
var r = []
for (var i = 0, s = e.length; i < s; i++) e[i] <= t ? r.push(i) : r.push(0)
n = Math.max.apply(Math, r)
}
return n
}),
(this.$tabsForRow = function (e) {
var t = [],
n = this.$editor.session.getLine(e),
r = /\t/g,
i
while ((i = r.exec(n)) != null) t.push(i.index)
return t
}),
(this.$adjustRow = function (e, t) {
var n = this.$tabsForRow(e)
if (n.length == 0) return
var r = 0,
i = -1,
s = this.$izip(t, n)
for (var o = 0, u = s.length; o < u; o++) {
var a = s[o][0],
f = s[o][1]
;(i += 1 + a), (f += r)
var l = i - f
if (l == 0) continue
var c = this.$editor.session.getLine(e).substr(0, f),
h = c.replace(/\s*$/g, ''),
p = c.length - h.length
l > 0 &&
(this.$editor.session
.getDocument()
.insertInLine({ row: e, column: f + 1 }, Array(l + 1).join(' ') + ' '),
this.$editor.session.getDocument().removeInLine(e, f, f + 1),
(r += l)),
l < 0 &&
p >= -l &&
(this.$editor.session.getDocument().removeInLine(e, f + l, f), (r += l))
}
}),
(this.$izip_longest = function (e) {
if (!e[0]) return []
var t = e[0].length,
n = e.length
for (var r = 1; r < n; r++) {
var i = e[r].length
i > t && (t = i)
}
var s = []
for (var o = 0; o < t; o++) {
var u = []
for (var r = 0; r < n; r++) e[r][o] === '' ? u.push(NaN) : u.push(e[r][o])
s.push(u)
}
return s
}),
(this.$izip = function (e, t) {
var n = e.length >= t.length ? t.length : e.length,
r = []
for (var i = 0; i < n; i++) {
var s = [e[i], t[i]]
r.push(s)
}
return r
})
}).call(r.prototype),
(t.ElasticTabstopsLite = r)
var i = e('../editor').Editor
e('../config').defineOptions(i.prototype, 'editor', {
useElasticTabstops: {
set: function (e) {
e
? (this.elasticTabstops || (this.elasticTabstops = new r(this)),
this.commands.on('afterExec', this.elasticTabstops.onAfterExec),
this.commands.on('exec', this.elasticTabstops.onExec),
this.on('change', this.elasticTabstops.onChange))
: this.elasticTabstops &&
(this.commands.removeListener('afterExec', this.elasticTabstops.onAfterExec),
this.commands.removeListener('exec', this.elasticTabstops.onExec),
this.removeListener('change', this.elasticTabstops.onChange))
},
},
})
}
)
;(function () {
ace.require(['ace/ext/elastic_tabstops_lite'], function (m) {
if (typeof module == 'object' && typeof exports == 'object' && module) {
module.exports = m
}
})
})()