- name: overview
  tags:
    formats: [revealjs]
  schema: boolean
  default: true
  description: "Enable the slide overview mode"

- name: menu
  description: Configuration for revealjs menu.
  tags:
    formats: [revealjs]
  schema:
    anyOf:
      - boolean
      - object:
          properties:
            side:
              enum: [left, right]
              default: left
              description: "Side of the presentation where the menu will be shown (`left` or `right`)"
            width:
              string:
                completions: [normal, wide, third, half, full]
              default: normal
              description: "Width of the menu"
            numbers:
              boolean:
                default: false
                description: "Add slide numbers to menu items"
            use-text-content-for-missing-titles:
              boolean:
                default: true
                description: |
                  For slides with no title, attempt to use the start of the text content as the title instead.

- name: chalkboard
  description: Configuration for revealjs chalkboard.
  tags:
    formats: [revealjs]
  schema:
    anyOf:
      - boolean
      - object:
          properties:
            theme:
              enum: [chalkboard, whiteboard]
              default: chalkboard
              description: "Visual theme for drawing surface (`chalkboard` or `whiteboard`)"
            boardmarker-width:
              number:
                default: 3
                description: |
                  The drawing width of the boardmarker. Defaults to 3. Larger values draw thicker lines.
            chalk-width:
              number:
                default: 7
                description: |
                  The drawing width of the chalk. Defaults to 7. Larger values draw thicker lines.
            src:
              path:
                description: |
                  Optional file name for pre-recorded drawings (download drawings using the `D` key)
            read-only:
              boolean:
                default: false
                description: |
                  Configuration option to prevent changes to existing drawings
            buttons:
              boolean:
                default: true
                description: |
                  Add chalkboard buttons at the bottom of the slide
            transition:
              number:
                description: |
                  Gives the duration (in ms) of the transition for a slide change, 
                  so that the notes canvas is drawn after the transition is completed.

- name: multiplex
  description: Configuration for reveal presentation multiplexing.
  tags:
    formats: [revealjs]
  schema:
    anyOf:
      - boolean
      - object:
          properties:
            url:
              string:
                default: https://multiplex.up.railway.app/
                description: |
                  Multiplex token server (defaults to Reveal-hosted server)
            id:
              string:
                description: Unique presentation id provided by multiplex token server
            secret:
              string:
                description: Secret provided by multiplex token server

- name: scroll-view
  description: Control the scroll view feature of Revealjs
  tags:
    formats: [revealjs]
  schema:
    anyOf:
      - boolean
      - object:
          properties:
            activate:
              boolean:
                default: true
                description: "Activate scroll view by default for the presentation. Otherwise, it is manually avalaible by adding `?view=scroll` to url."
            progress:
              anyOf:
                - boolean
                - enum: ["auto"]
              default: "auto"
              description: "Show the scrollbar while scrolling, hide while idle (default `auto`). Set to 'true' to always show, `false` to always hide."
            snap:
              enum: ["mandatory", "proximity", false]
              default: "mandatory"
              description: >
                When scrolling, it will automatically snap to the closest slide. Only snap when close to the top of a slide using `proximity`. Disable snapping altogether by setting to `false`.
            layout:
              enum: ["compact", "full"]
              default: full
              description: |
                By default each slide will be sized to be as tall as the viewport. If you prefer a more dense layout with multiple slides visible in parallel, set to `compact`.
            activation-width:
              number:
                description: |
                  Control scroll view activation width. The scroll view is automatically unable when the viewport reaches mobile widths. Set to `0` to disable automatic scroll view.
