fix(输入法): 修复光标间隙并扩大26键及明确大小写切换
这个提交包含在:
1 父节点
b95e7caae7
当前提交
100757f684
35 个文件已更改
+675
-243
没有与搜索条件相匹配的文件
@@ -55,11 +55,21 @@ export function erase(text,cursor) {
|
||||
if(at)value.splice(at-1,1)
|
||||
return {text:value.join(''),cursor:Math.max(0,at-1)}
|
||||
}
|
||||
export function preview(text,cursor,secret) {
|
||||
export function previewParts(text,cursor,secret) {
|
||||
const value=chars(text),at=Math.max(0,Math.min(value.length,cursor))
|
||||
const left=value.slice(Math.max(0,at-15),at),right=value.slice(at,at+7)
|
||||
return (at>15?'…':'')+(secret?'•'.repeat(left.length):left.join(''))+'│'+(secret?'•'.repeat(right.length):right.join(''))+(at+7<value.length?'…':'')
|
||||
const width=list=>list.reduce((sum,ch)=>sum+(secret?.6:/[MW@#%]/.test(ch)?.95:ch.codePointAt(0)>0x2e7f?1:.6),0)
|
||||
// Keep the cursor in the narrowest round preview, including both ellipses.
|
||||
// The actual cursor is a separate one-pixel element, never a font glyph.
|
||||
const size=()=>width(left)+width(right)+(left.length<at?1:0)+(right.length<value.length-at?1:0)
|
||||
while(size()>7&&(left.length||right.length)){
|
||||
if(left.length&&(width(left)>4.5||!right.length))left.shift()
|
||||
else if(right.length)right.pop()
|
||||
else left.shift()
|
||||
}
|
||||
return {before:(left.length<at?'…':'')+(secret?'•'.repeat(left.length):left.join('')),after:(secret?'•'.repeat(right.length):right.join(''))+(right.length<value.length-at?'…':'')}
|
||||
}
|
||||
export function preview(text,cursor,secret) {const parts=previewParts(text,cursor,secret);return parts.before+'│'+parts.after}
|
||||
export function sanitizePreferences(input) {
|
||||
const result={}
|
||||
if(!input||typeof input!=='object'||Array.isArray(input))return result
|
||||
|
||||
在新工单中引用
屏蔽一个用户