@kecan0406/ttheme 1.0.45 → 1.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.45",
2
+ "version": "1.0.46",
3
3
  "gate": [
4
4
  {
5
5
  "rule": "foreground",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kecan0406/ttheme",
3
- "version": "1.0.45",
3
+ "version": "1.0.46",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ttheme": "bin/ttheme.js"
package/shell/ttheme.zsh CHANGED
@@ -169,15 +169,22 @@ __tt_name_of() { REPLY=${${(k)TTHEME_PALETTE[(re)$1]}:-custom} }
169
169
  __tt_color() { [[ -t 1 && -z $NO_COLOR && $TERM != dumb ]] }
170
170
 
171
171
  __tt_palette_line() {
172
- local name=$1 marker=$2
173
- local -a p=(${=TTHEME_PALETTE[$name]})
172
+ local name=$1 width=$2 on=$3 hex cell="" bar=""
173
+ local -a p=(${=TTHEME_PALETTE[$name]}) sw=(${=TTHEME_SWATCH[$name]})
174
174
  (( ${#p} >= 20 )) || return 1
175
- local bg=${p[1]#\#} cur=${p[3]#\#}
176
- printf '%s\033[48;2;%d;%d;%d;38;2;%d;%d;%dm ● \033[0m %-8s \033[2m· ANSI %s\033[0m\n' \
177
- "$marker" \
178
- $((16#${bg:0:2})) $((16#${bg:2:2})) $((16#${bg:4:2})) \
179
- $((16#${cur:0:2})) $((16#${cur:2:2})) $((16#${cur:4:2})) \
180
- "$name" "${TTHEME_SRC[$name]:-unknown}"
175
+ for hex in $sw; do
176
+ hex=${hex#\#}
177
+ cell+=$'\e[38;2;'$((16#${hex:0:2}))';'$((16#${hex:2:2}))';'$((16#${hex:4:2}))'m■ '
178
+ done
179
+ if [[ -n $on ]]; then
180
+ local cur=${p[3]#\#} sel=${p[4]#\#} fg=${p[2]#\#} ac
181
+ printf -v ac '\e[38;2;%d;%d;%dm' $((16#${cur:0:2})) $((16#${cur:2:2})) $((16#${cur:4:2}))
182
+ printf -v bar '\e[48;2;%d;%d;%d;38;2;%d;%d;%dm' \
183
+ $((16#${sel:0:2})) $((16#${sel:2:2})) $((16#${sel:4:2})) $((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2}))
184
+ printf '%s▌\e[39m %s %s■\e[39m \e[1m%-*s\e[22m %s\e[0m\n' "$ac" "$bar" "$ac" "$width" "$name" "$cell"
185
+ else
186
+ printf ' %-*s %s\e[0m\n' "$width" "$name" "$cell"
187
+ fi
181
188
  }
182
189
 
183
190
  __tt_announce() {
@@ -384,8 +391,9 @@ __tt_order() {
384
391
  }
385
392
 
386
393
  __tt_menu() {
387
- local k cur="" mark grp last_grp="" REPLY
394
+ local k cur="" grp last_grp="" REPLY
388
395
  local -a reply
396
+ local -i width=0
389
397
  __tt_order
390
398
  if ! __tt_color; then
391
399
  for k in $reply; do
@@ -394,27 +402,21 @@ __tt_menu() {
394
402
  return 0
395
403
  fi
396
404
  [[ -n $TTHEME_SPEC ]] && __tt_name_of "$TTHEME_SPEC" && cur=$REPLY
397
- local gutter=""
398
- if [[ -n ${TTHEME_PALETTE[$cur]} ]]; then
399
- local -a cp=(${=TTHEME_PALETTE[$cur]})
400
- local ch=${cp[3]#\#}
401
- printf -v gutter '\033[38;2;%d;%d;%dm◆\033[0m ' \
402
- $((16#${ch:0:2})) $((16#${ch:2:2})) $((16#${ch:4:2}))
403
- fi
405
+ for k in $reply; do
406
+ (( ${#k} > width )) && width=${#k}
407
+ done
404
408
  for k in $reply; do
405
409
  grp=${TTHEME_GROUP[$k]:-Other}
406
410
  if [[ $grp != $last_grp ]]; then
407
- [[ $grp == *@* && $last_grp != *@* && -n $last_grp ]] && printf '\033[2m── markets ──────────\033[0m\n'
408
- printf '\033[1m%s\033[0m' "$grp"
411
+ [[ $grp == *@* && $last_grp != *@* && -n $last_grp ]] && printf ' \033[2m── markets ──────────\033[0m\n'
412
+ printf ' \033[1m%s\033[0m' "$grp"
409
413
  [[ -n ${TTHEME_NATIVE[$k]} ]] && printf ' \033[2m%s\033[0m' "${TTHEME_NATIVE[$k]}"
410
414
  printf '\n'
411
415
  last_grp=$grp
412
416
  fi
413
- mark=" "
414
- [[ $k == $cur ]] && mark=$gutter
415
- __tt_palette_line "$k" "$mark"
417
+ __tt_palette_line "$k" $width ${${(M)k:#$cur}:+1}
416
418
  done
417
- printf '\n\033[2mttheme use <palette> paints this tab · ttheme preview · ttheme help\033[0m\n'
419
+ printf '\n \033[2mttheme use <palette> paints this tab · ttheme preview · ttheme help\033[0m\n'
418
420
  }
419
421
 
420
422
  __tt_help() {
@@ -734,19 +736,22 @@ __tt_pv_hl() {
734
736
  }
735
737
 
736
738
  __tt_pv_row() {
737
- local t=${rval[$1]} b=$'\e[1m' d=$'\e[2m' r=$'\e[22;24;39m' z=$'\e[0m' on="" base="" lead=$'\e[2m' mark=" " name arrow=▸
739
+ local t=${rval[$1]} b=$'\e[1m' d=$'\e[2m' r=$'\e[22;24;39m' z=$'\e[0m' on="" gut=" " base="" lead=$'\e[2m' mark=" " name arrow=▸
738
740
  local -i w
739
741
  (( color )) || b= d= r= z= lead=
740
- (( $1 == cur && color )) && on=$sb
742
+ if (( $1 == cur )); then
743
+ gut=$ac"▌"$r" "
744
+ (( color )) && on=$sb
745
+ fi
741
746
  if [[ ${rtype[$1]} == rule ]]; then
742
747
  name='── markets '
743
- REPLY=$d$name${(l:lw - 2 - ${#name}::─:)}$z
748
+ REPLY=" "$d$name${(l:lw - 4 - ${#name}::─:)}$z
744
749
  return 0
745
750
  fi
746
751
  if [[ ${rtype[$1]} == hdr ]]; then
747
752
  [[ -n $flt || -n ${exp[$t]} ]] && arrow=▾
748
753
  name=$t
749
- (( ${(m)#name} > lw - 8 )) && name="${name[1,lw-9]}…"
754
+ (( ${(m)#name} > lw - 10 )) && name="${name[1,lw-11]}…"
750
755
  base=$b
751
756
  if (( color )) && [[ $t == "$ag" ]]; then
752
757
  base+=$ac lead=$ac
@@ -754,24 +759,24 @@ __tt_pv_row() {
754
759
  lead=""
755
760
  fi
756
761
  __tt_pv_hl "$name" "$base"
757
- w=$(( lw - 2 - ${(m)#name} - ${#rcnt[$1]} ))
762
+ w=$(( lw - 6 - ${(m)#name} - ${#rcnt[$1]} ))
758
763
  (( w < 1 )) && w=1
759
- REPLY=$on$lead$arrow$r" "$base$REPLY$r${(l:w:: :)}$d${rcnt[$1]}$z
764
+ REPLY=$gut$on" "$lead$arrow$r" "$base$REPLY$r${(l:w:: :)}$d${rcnt[$1]}$r" "$z
760
765
  return 0
761
766
  fi
762
767
  if (( $1 == cur )); then
763
- mark=$cmark base=$b
768
+ mark=$ac"■"$r base=$b
764
769
  elif [[ -n $cdot && $t == "$cn" ]]; then
765
770
  mark=$cdot
766
771
  fi
767
772
  __tt_pv_hl "$t" "$base"
768
773
  if (( color )); then
769
774
  [[ -n ${tstrip[$t]} ]] || __tt_pv_strip $t
770
- w=$(( lw - 20 - ${#t} ))
775
+ w=$(( lw - 19 - ${#t} ))
771
776
  (( w < 1 )) && w=1
772
- REPLY="$on $mark $base$REPLY$r${(l:w:: :)}${tstrip[$t]}"
777
+ REPLY=$gut$on" $mark $base$REPLY$r${(l:w:: :)}${tstrip[$t]} "$z
773
778
  else
774
- REPLY=" $mark $REPLY"
779
+ REPLY="$gut $mark $REPLY"
775
780
  fi
776
781
  }
777
782
 
@@ -1151,8 +1156,8 @@ __tt_pv_flush() {
1151
1156
  }
1152
1157
 
1153
1158
  __tt_pv_draw() {
1154
- local out line cnt ex ag="" ac="" sb="" cmark="▶" rthumb="#" rtrack="." dd="" zz="" state=on src="" REPLY
1155
- local -i lw sw split sc se=$(( pw - 2 )) h k i N=${#rval} rail=0 rl=0 rs=0 mt=${#TTHEME_ORDER} wiped=0
1159
+ local out line cnt ex ag="" ac="" sb="" dd="" zz="" state=on src="" REPLY
1160
+ local -i lw sw split sc se=$(( pw - 2 )) h k i N=${#rval} mt=${#TTHEME_ORDER} wiped=0
1156
1161
  __tt_pv_lw
1157
1162
  lw=$reply[1] sw=$reply[2]
1158
1163
  split=$(( sw > 0 )) sc=$(( pw - 1 - sw ))
@@ -1164,21 +1169,14 @@ __tt_pv_draw() {
1164
1169
  (( cur >= top + h )) && top=$(( cur - h + 1 ))
1165
1170
  (( top < 1 )) && top=1
1166
1171
  (( N > h && top > N - h + 1 )) && top=$(( N - h + 1 ))
1167
- if (( N > h )); then
1168
- rail=1
1169
- rl=$(( h * h / N ))
1170
- (( rl < 1 )) && rl=1
1171
- rs=$(( 1 + (top - 1) * (h - rl) / (N - h) ))
1172
- fi
1173
1172
  if (( color )); then
1174
- dd=$'\e[2m' zz=$'\e[0m' rtrack=$'\e[2m░\e[0m'
1173
+ dd=$'\e[2m' zz=$'\e[0m'
1175
1174
  if [[ -n $applied ]]; then
1176
1175
  local -a ap=(${=applied})
1177
1176
  local acx=${ap[3]#\#} sbx=${ap[4]#\#}
1178
1177
  printf -v ac '\e[38;2;%d;%d;%dm' $((16#${acx:0:2})) $((16#${acx:2:2})) $((16#${acx:4:2}))
1179
1178
  printf -v sb '\e[48;2;%d;%d;%dm' $((16#${sbx:0:2})) $((16#${sbx:2:2})) $((16#${sbx:4:2}))
1180
1179
  fi
1181
- rthumb=$ac"█"$zz cmark=$ac"▶"$'\e[39m'
1182
1180
  [[ ${rtype[cur]} == thm ]] && ag=${TTHEME_GROUP[${rval[cur]}]:-Other}
1183
1181
  fi
1184
1182
  if [[ -n $flt ]]; then
@@ -1204,13 +1202,13 @@ __tt_pv_draw() {
1204
1202
  fi
1205
1203
  if [[ -n $flt ]]; then
1206
1204
  if (( color )); then
1207
- line="⌕ "$'\e[1m'$flt$zz$ac$'\e[7m \e[0m'
1205
+ line=" "$'\e[1m'$flt$zz$ac$'\e[7m \e[0m'
1208
1206
  else
1209
- line="⌕ ${flt}_"
1207
+ line=" ${flt}_"
1210
1208
  fi
1211
1209
  else
1212
1210
  ex="$expal | $exgrp"
1213
- (( ${#ex} > lw - 17 - ${#cnt} )) && ex="${ex[1,lw-18-${#cnt}]}…"
1211
+ (( ${#ex} > lw - 19 - ${#cnt} )) && ex="${ex[1,lw-20-${#cnt}]}…"
1214
1212
  if (( gstep > 0 )); then
1215
1213
  local gkeep=$(( ${#ex} * (8 - gstep) / 8 ))
1216
1214
  if [[ $TTHEME_FX == (decode|glitch) ]]; then
@@ -1228,39 +1226,34 @@ __tt_pv_draw() {
1228
1226
  ex="${ex[1,gkeep]}▏"
1229
1227
  fi
1230
1228
  fi
1231
- line="⌕ "$dd"search… e.g. $ex"$zz
1229
+ line=" "$dd"search… e.g. $ex"$zz
1232
1230
  fi
1233
- out+=$line$'\e[K\e['$(( lw - ${#cnt} + 1 ))'G'
1231
+ out+=$line$'\e[K\e['$(( lw - ${#cnt} ))'G'
1234
1232
  if [[ -n $flt ]]; then
1235
- out+=$cnt$'\n'$ac
1233
+ out+=$cnt
1236
1234
  else
1237
- out+=$dd$cnt$zz$'\n'$dd
1235
+ out+=$dd$cnt$zz
1238
1236
  fi
1239
- out+=${(l:lw::─:)}$zz$'\e[K\n\e[K\n'
1237
+ out+=$'\n\e[K\n'
1238
+ (( N > h && top > 1 )) && out+=" "$dd"…"$zz
1239
+ out+=$'\e[K\n'
1240
1240
  for (( k = 0; k < ph - 4; k++ )); do
1241
1241
  i=$(( top + k ))
1242
1242
  line=""
1243
1243
  if (( k < h )); then
1244
1244
  if (( ! N )); then
1245
- (( k == 0 )) && line=" ${dd}no palettes match '$flt'$zz"
1245
+ (( k == 0 )) && line=" ${dd}no palettes match '$flt'$zz"
1246
1246
  elif (( i <= N )); then
1247
1247
  __tt_pv_row $i
1248
1248
  line=$REPLY
1249
1249
  fi
1250
+ elif (( k == h && N > h && top + h <= N )); then
1251
+ line=" "$dd"…"$zz
1250
1252
  fi
1251
- out+=$line$'\e[K'
1252
- if (( rail && k < h )); then
1253
- if (( k + 1 >= rs && k + 1 < rs + rl )); then
1254
- out+=$'\e['$(( lw + 2 ))'G'$rthumb
1255
- else
1256
- out+=$'\e['$(( lw + 2 ))'G'$rtrack
1257
- fi
1258
- fi
1259
- out+=$'\n'
1253
+ out+=$line$'\e[K\n'
1260
1254
  done
1261
1255
  __tt_pv_foot $(( split ? se : pw ))
1262
1256
  if (( split )); then
1263
- out+=$'\e[2;'$sc'H'$dd${(l:$(( se - sc + 1 ))::─:)}$zz
1264
1257
  if (( help && sw >= 48 )); then
1265
1258
  __tt_pv_head 1 $sc $se keys
1266
1259
  __tt_pv_help
@@ -1323,15 +1316,19 @@ __tt_pv_canpick() {
1323
1316
  }
1324
1317
 
1325
1318
  __tt_pv_strip() {
1326
- local lo hi cell
1327
- local -a tp=(${=TTHEME_PALETTE[$1]}) v=()
1319
+ local hex cell=""
1320
+ local -a sw=(${=TTHEME_SWATCH[$1]})
1328
1321
  local -i j
1329
- for (( j = 5; j <= 12; j++ )); do
1330
- lo=${tp[j]#\#} hi=${tp[j+8]#\#}
1331
- v+=($((16#${lo:0:2})) $((16#${lo:2:2})) $((16#${lo:4:2})) $((16#${hi:0:2})) $((16#${hi:2:2})) $((16#${hi:4:2})))
1322
+ for (( j = 1; j <= 6; j++ )); do
1323
+ hex=${sw[j]#\#}
1324
+ (( j > 1 )) && cell+=" "
1325
+ if [[ -n $hex ]]; then
1326
+ cell+=$'\e[38;2;'$((16#${hex:0:2}))';'$((16#${hex:2:2}))';'$((16#${hex:4:2}))'m■'
1327
+ else
1328
+ cell+=" "
1329
+ fi
1332
1330
  done
1333
- printf -v cell '\e[38;2;%d;%d;%d;48;2;%d;%d;%dm▀▀' $v
1334
- tstrip[$1]=$cell$'\e[0m'
1331
+ tstrip[$1]=$cell$'\e[39m'
1335
1332
  }
1336
1333
 
1337
1334
  __tt_pv_init() {