{% macro render_pagination(pagination, pagination_window=2) %}
{% set current = pagination.page %}
{% set total = pagination.pages %}
{% set window_start = [current - pagination_window, 1] | max %}
{% set window_end = [current + pagination_window, total] | min %}
{% endmacro %}
{% macro render_year_archive_navigation(
current_year_page,
archive_window=2
) %}
{% set current_year = current_year_page.year %}
{% set first_year_page = current_year_page.first_year_page %}
{% set last_year_page = current_year_page.last_year_page %}
{% set previous_year_page = current_year_page.previous_year_page %}
{% set next_year_page = current_year_page.next_year_page %}
{% set first_year = first_year_page.year %}
{% set last_year = last_year_page.year %}
{% set window_start = [current_year - archive_window, first_year] | max %}
{% set window_end = [current_year + archive_window, last_year] | min %}
{% endmacro %}
{% macro render_month_archive_navigation(
current_month_page,
archive_window=2
) %}
{% set year_pages = index_pages('year') | sort(attribute='year') %}
{% set ns = namespace(
month_pages=[],
current_position=none
) %}
{% for year_page in year_pages %}
{% set ns.month_pages = ns.month_pages + (year_page.subindexes | sort(attribute='month')) %}
{% endfor %}
{% for month_page in ns.month_pages %}
{% if month_page.year == current_month_page.year
and month_page.month == current_month_page.month %}
{% set ns.current_position = loop.index0 %}
{% endif %}
{% endfor %}
{% set total = ns.month_pages | length %}
{% set current_position = ns.current_position %}
{% set window_start = [current_position - archive_window, 0] | max %}
{% set window_end = [current_position + archive_window, total - 1] | min %}
{% set first_month_page = ns.month_pages[0] %}
{% set last_month_page = ns.month_pages[total - 1] %}
{% set previous_month_page = none %}
{% set next_month_page = none %}
{% if current_position > 0 %}
{% set previous_month_page = ns.month_pages[current_position - 1] %}
{% endif %}
{% if current_position < total - 1 %}
{% set next_month_page = ns.month_pages[current_position + 1] %}
{% endif %}
{% endmacro %}