---
title: "Image and Markdown Resizing with r2resize"
author: "R Packager"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Image and Markdown Resizing with r2resize}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE
)
library(r2resize)
library(shiny)
library(htmltools)
```

This vignette demonstrates how to use `add.resizer()` for enhancing R Markdown documents with resizable images and tables, and `shinyExpandImage()` for creating interactive image viewers in Shiny applications.

## Adding Resizer Toolbars to Markdown with `add.resizer()`

The `add.resizer()` function injects a mini-toolbar into your R Markdown output, allowing users to resize images and tables interactively.

```{r addresizer-example, eval=FALSE}
# Default settings: adds resizer to both images and tables (at the top)
r2resize::add.resizer()

# Add resizer only to images
r2resize::add.resizer(
  tables = FALSE,
  images = TRUE
)

# Add resizer to tables only, at the bottom of the page
r2resize::add.resizer(
  tables = TRUE,
  images = FALSE,
  position = "bottom"
)

# Customized resizer with specific colors and sizes
r2resize::add.resizer(
  theme.color = "darkred",
  font.size = "13px",
  font.color = "white",
  line.color = "gold",
  line.width = 200,
  line.height = 10,
  default.image.width = "50%"
)

# Example within a Shiny app
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      add.resizer(tables = TRUE, images = TRUE, position = "top"),
      h2("Resizeable Content in Shiny"),
      tags$img(src = "https://r2resize.obi.obianom.com/m/image1.jpg", alt = "Sample Image 1", width = "200px"),
      tags$p("This is some text."),
      tags$img(src = "https://r2resize.obi.obianom.com/m/image2.jpg", alt = "Sample Image 2", width = "150px"),
      tags$br(),
      tags$table(border = "1", style = "width:50%;",
                 tags$tr(tags$th("Header 1"), tags$th("Header 2")),
                 tags$tr(tags$td("Row 1, Col 1"), tags$td("Row 1, Col 2")))
    ),
    server = function(input, output) {}
  )
}
```

## Elegant Image Viewer in Shiny with `shinyExpandImage()`

The `shinyExpandImage()` function transforms a simple div containing images into an elegant, expandable image gallery with zoom, navigation, and download features, ideal for Shiny applications.

```{r shinyexpandimage-example, eval=FALSE}
# Simple image expansion for a single gallery in a Shiny app
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      h2("Interactive Image Gallery"),
      shinyExpandImage(c("my_gallery_id")),
      tags$div(
        id = "my_gallery_id",
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/1b.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/1b.jpg", alt = "Landscape 1", width = "150px")
        ),
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/1.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/1.jpg", alt = "Landscape 2", width = "150px")
        ),
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/image2.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/image2.jpg", alt = "Landscape 3", width = "150px")
        )
      )
    ),
    server = function(input, output) {}
  )
}

# Multiple image galleries on the same Shiny page
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      h2("Multiple Image Galleries"),
      shinyExpandImage(c("gallery_one", "gallery_two")), # Pass multiple IDs
      
      h3("Gallery One"),
      tags$div(
        id = "gallery_one",
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/image1.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/image1.jpg", alt = "Nature 1", width = "100px")
        ),
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/image2.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/image2.jpg", alt = "Nature 2", width = "100px")
        )
      ),
      
      h3("Gallery Two"),
      tags$div(
        id = "gallery_two",
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/1b.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/1b.jpg", alt = "City 1", width = "100px")
        ),
        tags$a(
          href = "https://r2resize.obi.obianom.com/m/1.jpg",
          tags$img(src = "https://r2resize.obi.obianom.com/m/1.jpg", alt = "City 2", width = "100px")
        )
      )
    ),
    server = function(input, output) {}
  )
}
```
