# shellcheck shell=dash disable=1091,2034
# Credit: https://draculatheme.com/

___x_cmd_theme_prompt_format(){
    ___x_cmd_theme_dracula "$@"
}

# ucvs
___x_cmd_theme_dracula(){
    case "$1" in
        mini)       ___x_cmd_theme_elmini "$@"  ;;
        *)          ___x_cmd_theme_draculafull "$@"  ;;
    esac
}
xrc:theme:widget msg username cwd vcml symbol emoji

# TODO: Need to be removed later
___x_cmd_theme_widget_vcml(){
    X_vcml=""
    local x_=
    local lable_l=
    local lable_r=
    [ -z "$x_git" ] || {
        x_git="${x_git#* }"
        case "$x_git" in
            refs/heads/*)       x_git="${x_git#"refs/heads/"}"  ;;
        esac
        x_vcml="${XTW_vcml_ref_prefix}${x_git}${XTW_vcml_ref_suffix}"
        if theme:comp:git:changed;    then
            lable_r="$XTW_vcml_right_label_dirty"
            lable_l="$XTW_vcml_left_label_dirty"
            theme:style_ "%${XTW_vcml_style_right_label_dirty}%"    "$lable_r";         lable_r="$x_"
            theme:style_ "%${XTW_vcml_style_left_label_dirty}%"     "$lable_l";         lable_l="$x_"
            theme:style_ "%${XTW_vcml_style_dirty}%"                "${x_vcml}";        x_vcml="${x_}"
        else
            lable_r="$XTW_vcml_right_label_clean"
            lable_l="$XTW_vcml_left_label_clean"
            theme:style_ "%${XTW_vcml_style_right_label_clean}%"    "$lable_r";         lable_r="$x_"
            theme:style_ "%${XTW_vcml_style_left_label_clean}%"     "$lable_l";         lable_l="$x_"
            theme:style_ "%${XTW_vcml_style_clean}%"                "${x_vcml}";        x_vcml="${x_}"
        fi
        X_vcml="${XTW_vcml_prefix}${lable_l}${x_vcml}${lable_r}${XTW_vcml_suffix}"
        return
    }

    [ -z "$x_svn" ] || {
        x_=
        return
    }

    [ -z "$x_hg" ] || {
        x_=
        return
    }
}

___x_cmd_theme_draculafull(){
    local x_;

    ___x_cmd_theme_headline_print

    local X_left

    ___x_cmd_theme_widget_username
    [ -z "$X_username" ] || X_left="${X_username}"

    ___x_cmd_theme_widget_cwd
    [ -z "$X_cwd" ] || X_left="${X_left} ${X_cwd}"

    theme:style_ "%${XTW_vcml_prefix_style}%" "$XTW_vcml_prefix";    XTW_vcml_prefix="$x_"
    ___x_cmd_theme_widget_vcml
    [ -z "$X_vcml" ] || X_left="${X_left} ${X_vcml}"

    ___x_cmd_theme_widget_emoji
    [ -z "$X_emoji" ] || X_left="${X_emoji}  ${X_left}"

    ______x_cmd_theme_prompt_remove_escapes_ "$X_left"
    if [ -n "$COLUMNS" ] && [ "${#x_}" -gt "$((  COLUMNS - COLUMNS / 3 ))" ]; then
        printf "%s\n"     "$X_left"
    else
        printf "%s\n"     "$X_left"
    fi
    ___x_cmd_theme_widget_symbol "❯" "❯" "❯"
    printf "%s "      "${X_symbol}"
}

XT_transient_ps1(){
    local x_=""
    theme:feature:get transient_time
    case "$x_" in
        always)
            ___x_cmd_theme_comp_transient time
            ___X_CMD_THEME_TIME_H_M_S="$x_"
            ___x_cmd_theme_widget_hms 2>/dev/null
            [ -z "$X_hms" ] || X_ps1="${X_hms} " ;;
    esac

    ___x_cmd_theme_widget_symbol "❯" "❯" "❯" 2>/dev/null
    [ -z "$X_symbol" ] || X_ps1="${X_ps1}${X_symbol} "
}

XTW_vcml_prefix="git "
XTW_vcml_left_label_clean=""
XTW_vcml_left_label_dirty=""
XTW_vcml_ref_prefix="["
XTW_vcml_ref_suffix="]"
XTW_vcml_right_label_clean=" o"
XTW_vcml_right_label_dirty=" ✘"

XTW_username_name_prefix="<"
XTW_username_name_suffix=">"

XTW_cwd_text_prefix=""
XTW_cwd_text_suffix=""

___x_cmd_theme_linecount_ps1=2
