# shellcheck shell=sh disable=SC3043

# Section: main
___x_cmd_ui_gridselect(){
    ___x_cmd_runmode_allow_manual || N=ui M="UI gridselect can only be used in manual mode" log:ret:1
    ___X_CMD_UI_GRIDSELECT_DISPLAY_ITEM_INDEX=0
    ___X_CMD_UI_GRIDSELECT_MULTIPLE_STATE=0
    ___X_CMD_UI_GRIDSELECT_HELP_STATE=1
    case "${1}" in
        num)        ___X_CMD_UI_GRIDSELECT_DISPLAY_ITEM_INDEX=1 && shift ;;
        multiple)   ___X_CMD_UI_GRIDSELECT_MULTIPLE_STATE=1 && shift ;;
        nohelp)     ___X_CMD_UI_GRIDSELECT_HELP_STATE=0 && shift ;;
        "")         return 1 ;;
        *)          ;;
    esac
    ___x_cmd_ui_gridselect_main "$@"
}

___x_cmd_ui_gridselect_control_main(){
    local AWK_IS_INTERACTIVE=1
    LC_ALL="$___X_CMD_AWK_LANGUAGE" \
    ___x_cmd_awk___inner \
        -v TH_THEME_COLOR="\\033[${___X_CMD_THEME_COLOR_CODE}m" \
        -v ITEM_INDEX_STATE="$___X_CMD_UI_GRIDSELECT_DISPLAY_ITEM_INDEX" \
        -v SELECT_MULTIPLE_STATE="$___X_CMD_UI_GRIDSELECT_MULTIPLE_STATE" \
        -v SELECT_HELP_STATE="$___X_CMD_UI_GRIDSELECT_HELP_STATE" \
        -v SELECT_FOCUS_ITEM_IDX="$___X_CMD_UI_SELECT_FOCUS_ITEM_IDX" \
        -f "$___X_CMD_ROOT_MOD/awk/lib/core.awk" \
        -f "$___X_CMD_ROOT_MOD/awk/lib/u/wcwidth.awk" \
        -f "$___X_CMD_ROOT_MOD/awk/lib/ui/ui.awk" \
        -f "$___X_CMD_ROOT_MOD/ui/lib/awk/theme.awk" \
        -f "$___X_CMD_ROOT_MOD/ui/lib/awk/share.awk" \
        -f "$___X_CMD_ROOT_MOD/ui/lib/awk/gridselect.awk"
}

___x_cmd_ui_gridselect_control(){
    {
        printf "UPDATE %s %s\n" "${COLUMNS}" "${LINES}"
        if [ "$#" -eq 0 ]; then
            ___x_cmd_cmds_cat
        else
            "$@"
        fi
        ___x_cmd_cmds_cat
    } | ___x_cmd_ui_gridselect_control_main
}

___x_cmd_ui_gridselect_main(){
    ___X_CMD_SHBIN_CODE='
        xrc ui
        xrc:mod:lib     ui  gridselect
        '"$___X_CMD_UI_SHBIN_CODE"'
        "$@"
    ' ___x_cmd_ui_region_autorefresh_with_keyboard ___x_cmd_ui_gridselect_control "$@"
}
