<?php

declare(strict_types=1);

if (! function_exists('flatten_attributes')) {
    /**
     * Stringify attributes for use in HTML tags.
     *
     * Helper function used to convert a string, array, or object of attributes to a string.
     *
     * @param mixed $attributes string, array, object
     */
    function flatten_attributes(mixed $attributes, bool $js = false): string
    {
        $atts = '';

        if ($attributes === null) {
            return $atts;
        }

        if (is_string($attributes)) {
            return ' ' . $attributes;
        }

        $attributes = (array) $attributes;

        foreach ($attributes as $key => $val) {
            $atts .= ($js) ? $key . '=' . esc($val, 'js') . ',' : ' ' . $key . '="' . $val . '"';
        }

        return rtrim($atts, ',');
    }
}