// @ts-nocheck
import { Provider } from '@angular/core';
import { NG_DOC_CONTEXT, NG_DOC_ROUTE_PREFIX, NG_DOC_SHIKI_THEME } from '@ng-doc/app/tokens';

export function provideNgDocContext(): Provider[] {
  return [{
    provide: NG_DOC_CONTEXT,
    useValue: {
      navigation: [
          {%- macro nav(entry) %}
        {
          title: `{{ entry.item.entry.title | toTemplateString }}`,
          route: '/{{ entry.item.absoluteRoute() }}',
            {%- if entry.children.length %}
          expandable: {{ entry.item.entry.expandable | default("true") }},
          expanded: {{ entry.item.entry.expanded | default("false") }},
            {%- endif %}
            {%- if entry.item.order %}
          order: {{ entry.item.order }},
            {%- endif %}
          hidden: {{ entry.item.entry.hidden | default("false") }},
          metadata: {{ entry.item.jsDocMetadata() | dump }},
            {%- if entry.children.length %}
          children: [
              {%- for child in entry.children | sortNavigationEntries %}
              {%- if not child.item.hidden %}
              {{ nav(child) }},
              {%- endif %}
              {%- endfor %}
          ]
            {%- endif %}
        }
          {%- endmacro %}

          {%- for entry in entries | sortNavigationEntries %}
          {%- if not entry.item.hidden %}
          {{ nav(entry) }},
          {%- endif %}
          {%- endfor %}
      ],
    },
  }, {
    provide: NG_DOC_ROUTE_PREFIX,
    useValue: '{{ routePrefix }}',
  }, {
    provide: NG_DOC_SHIKI_THEME,
    useValue: {
      light: '{{ shikiThemeLight }}',
      dark: '{{ shikiThemeDark }}',
    },
  }];
}
