# shellcheck shell=dash

___x_cmd_tldr___fzf(){
    ___x_cmd_tldr_version_pages_    || return $?
    ___x_cmd_tldr_pages_prepare en  || return $?

    local tldr_option=
    tldr_option="$( ___X_CMD_RUNMODE="$___X_CMD_RUNMODE" ___x_cmdexe tldr --fzdata "$@" )"

    [ -n "$tldr_option" ] || {
        tldr:info "Exit because no tldr is selected."
        return 0
    }
    ___x_cmd tldr --cat "$tldr_option"
}

___x_cmd_tldr___fz_data(){

    # TODO: update if the tldr pages is older ...
    [ -f "$___X_CMD_TLDR_FZ_LS_DATA" ] || {
        ___x_cmd_tldr___fz_prepare
    }


    ___x_cmd tty update
    ___X_CMD_TLDR_COLUMNS=$((COLUMNS * 65 / 100)) ___X_CMD_TLDR_NO_BACKGROUND=1 ___X_CMD_TLDR_ENABLE_COLOR=1 ___x_cmd fzf  \
        --ansi --reverse --height='80%' --query="$*"                                                    \
        --bind='ctrl-w:toggle-preview-wrap'                                                             \
        --bind='ctrl-r:change-preview-window(right,70%|down,40%,99%,border-horizontal|hidden|right)'    \
        --preview='___x_cmdexe tldr --cat {1}'  \
        --preview-window=right:70%:wrap <"$___X_CMD_TLDR_FZ_LS_DATA"
}

___x_cmd_tldr___fz_prepare(){
    ___x_cmd ensurefp "$___X_CMD_TLDR_FZ_LS_DATA"

    # ___x_cmd tldr -l | {
    #     local line
    #     while read -r line; do
    #         ___x_cmd tldr cat "$line"  # TODO: <data> <desc>  # <cmd1> # <desc> # <cmd2> # <desc> # <cmd3> # <desc> #
    #     done
    # } | ___x_cmd_cmds cat

    ___x_cmd tldr -l >"$___X_CMD_TLDR_FZ_LS_DATA"
}

___x_cmd_tldr___fzpreview(){
    local name="$1"
    case "$name" in
        */and/*)        name="${name%%/*}/android/${name##*/}"   ;;
        */lin/*)        name="${name%%/*}/linux/${name##*/}"     ;;
        */win/*)        name="${name%%/*}/windows/${name##*/}"   ;;
        */osx/*)        name="${name%%/*}/osx/${name##*/}"       ;;
        */com/*)        name="${name%%/*}/common/${name##*/}"    ;;
    esac

    ___x_cmdexe tldr --cat "$name"
}

