@use 'sass:string';

@function str-replace($string, $search, $replace: '') {
    $index: string.index($string, $search);

    @if $index {
        @return string.slice($string, 1, $index - 1) + $replace +
            str-replace(string.slice($string, $index + string.length($search)), $search, $replace);
    }

    @return $string;
}

@function url-encode($string) {
    $map: (
        '%': '%25',
        '<': '%3C',
        '>': '%3E',
        ' ': '%20',
        '!': '%21',
        '*': '%2A',
        "'": '%27',
        '"': '%22',
        '(': '%28',
        ')': '%29',
        ';': '%3B',
        ':': '%3A',
        '@': '%40',
        '&': '%26',
        '=': '%3D',
        '+': '%2B',
        '$': '%24',
        ',': '%2C',
        '/': '%2F',
        '?': '%3F',
        '#': '%23',
        '[': '%5B',
        ']': '%5D',
    );

    $new: $string;

    @each $search, $replace in $map {
        $new: str-replace($new, $search, $replace);
    }

    @return $new;
}

@function inline-svg($string) {
    @return url('data:image/svg+xml;utf8,#{url-encode($string)}');
}
