# shellcheck shell=sh disable=SC3043

___x_cmd_ui_form_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 exit_strategy="$___X_CMD_UI_FORM_EXIT_STRATEGY" \
        -v FORM_HELP_STATE="$___X_CMD_UI_FORM_HELP_STATE" \
        -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/share.awk" \
        -f "$___X_CMD_ROOT_MOD/ui/lib/awk/theme.awk" \
        -f "$___X_CMD_ROOT_MOD/ui/lib/awk/form.awk"
}

___x_cmd_ui_form_control(){
    (
        IFS="$___X_CMD_UNSEENCHAR_002"
        printf "%s" "$*" | tr '\n' '\001'
        printf "\n"
        ___x_cmd_cmds_cat
    ) | ___x_cmd_ui_form_control_main
}

___x_cmd_ui_form(){
    ___x_cmd_runmode_allow_manual || N=ui M="UI form can only be used in manual mode" log:ret:1
    case "${1}" in
        nohelp)         ___X_CMD_UI_FORM_HELP_STATE=0 && shift ;;
        *)              ___X_CMD_UI_FORM_HELP_STATE=1 ;;
    esac
    ___X_CMD_SHBIN_CODE='
        xrc ui
        xrc:mod:lib     ui  form
        '"$___X_CMD_UI_SHBIN_CODE"'
        "$@"
    ' ___x_cmd_ui_region_autorefresh_with_keyboard ___x_cmd_ui_form_control "$@"
}
