extends includes/layout

mixin filter_type_option(label, value)
  option(value=value selected=(value === type))= label

block head
  title Filters - EirTube
  script(type="module" src=getStaticURL("html", "static/js/filters.js"))

block content
  main.filters-page
    h1 Filters
    details(open=!!type)
      summary New filter
      form(method="post")
        if label
          input(type="hidden" name="label" value=label)
        if referrer
          input(type="hidden" name="referrer" value=referrer)
        .field-row
          label.field-row__label(for="filter-type") Type
          select(id="filter-type" name="filter-type").border-look.field-row__input
            +filter_type_option("Title", "title")
            +filter_type_option("Channel name", "channel-name")
            +filter_type_option("Channel ID", "channel-id")
        .field-row.max-width-input
          label.field-row__label(for="new-filter") Contents
          input(type="text" id="new-filter" name="new-filter" value=contents required maxlength=filterMaxLength).border-look.field-row__input
          .field-row__description(style=(type !== "title" ? "display: none" : ""))#title-pattern-matching
            | For titles, pattern matching is supported. Regular expressions are #{regexpEnabledText} enabled.
            |
            a(href="https://git.sr.ht/~cadence/tube-docs/tree/main/item/docs/cloudtube/Filters.md") For help, see the documentation.
        if compileError
          section.filter-compile-error
            header.filter-compile-error__header Your pattern failed to compile.
            pre.filter-compile-error__trace
              = contents + "\n"
              = " ".repeat(compileError.position) + "^ " + compileError.message
            div: a(href="https://git.sr.ht/~cadence/tube-docs/tree/main/item/docs/cloudtube/Filters.md") For help, see the documentation.
        else
          if type
            .filter-confirmation-notice.
              You can refine the filter further if you need to.
              When you're happy, click Save.
        .save-filter
          button.border-look
            if referrer
              | Save & return
            else
              | Save


    .filter-list
      - let someFiltersDisplayed = false
      each category in categories
        if category.filters.length
          - someFiltersDisplayed = true
          h2.filter-category-header= category.name
        div
          each filter in category.filters
            .filter
              .filter__details
                - let type = `type: ${filter.type}`
                - let content = filter.data
                if filter.type === "channel-id" && filter.label
                  - type += `, id: ${filter.data}`
                  - content = filter.label
                .filter__type= type
                .filter__content= content
              form.filter__remove(method="post" action="/filters/delete")
                input(type="hidden" name="delete-id" value=filter.id)
                button.border-look Remove
      if !someFiltersDisplayed
        .no-filters
          h2 You haven't created any filters.
          p Create one now and cleanse your mind.
          p You can add filters using the button on video thumbnails.
