{{ $indexTemplate := resources.Get "js/index.js" -}}
{{ $index := $indexTemplate | resources.ExecuteAsTemplate "index.js" . -}}

{{ $bs := resources.Get "js/bootstrap.js" -}}
{{ $bs := $bs | js.Build -}}

{{ $app := resources.Get "js/app.js" -}}

{{ $slice := slice $app -}}

{{ if .Site.Params.options.lazySizes -}}
  {{ $lazySizes := resources.Get "js/lazysizes.js" -}}
  {{ $lazySizes := $lazySizes | js.Build -}}
  {{ $slice = $slice | append $lazySizes -}}
{{ end -}}

{{ if .Site.Params.options.clipBoard -}}
  {{ $clipBoard := resources.Get "js/clipboard.js" -}}
  {{ $clipBoard := $clipBoard | js.Build -}}
  {{ $slice = $slice | append $clipBoard -}}
{{ end -}}

{{ if .Site.Params.options.instantPage -}}
  {{ $instantPage := resources.Get "js/instant.page.js" -}}
  {{ $instantPage := $instantPage | js.Build -}}
  {{ $slice = $slice | append $instantPage -}}
{{ end -}}

{{ if .Site.Params.options.flexSearch -}}
  {{ $flexSearch := resources.Get "js/vendor/flexsearch/dist/flexsearch.min.js" -}}
  {{ $slice = $slice | append $flexSearch -}}
{{ end -}}

{{ if .Site.Params.options.darkMode -}}
  {{ $darkMode := resources.Get "js/darkmode.js" -}}
  {{ $darkMode := $darkMode | js.Build -}}
  {{ $slice = $slice | append $darkMode -}}
{{ end -}}

{{ $js := $slice | resources.Concat "main.js" -}}

{{ if eq (hugo.Environment) "development" -}}
  {{ if .Site.Params.options.bootStrapJs -}}
    <script src="{{ $bs.Permalink }}" defer></script>
  {{ end -}}
  <script src="{{ $js.Permalink }}" defer></script>
  {{ if .Site.Params.options.flexSearch -}}
    <script src="{{ $index.Permalink }}" defer></script>
  {{ end -}}
{{ else -}}
  {{ $js := $js | minify | fingerprint "sha512" -}}
  {{ $index := $index | minify | fingerprint "sha512" -}}
  {{ $bs := $bs | minify | fingerprint "sha512" -}}
  {{ if .Site.Params.options.bootStrapJs -}}
  <script src="{{ $bs.Permalink }}" integrity="{{ $bs.Data.Integrity }}" crossorigin="anonymous" defer></script>
  {{ end -}}
  <script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous" defer></script>
  {{ if .Site.Params.options.flexSearch -}}
    <script src="{{ $index.Permalink }}" integrity="{{ $index.Data.Integrity }}" crossorigin="anonymous" defer></script>
  {{ end -}}
{{ end -}}