# PhoenixKit Photos v0.3.0 - API Reference

## Modules

- [PhoenixKitPhotos](PhoenixKitPhotos.md): A photo and video library for PhoenixKit, in the spirit of Apple Photos and
Google Photos.
- [PhoenixKitPhotos.API](PhoenixKitPhotos.API.md): The photo library for agents: find files by what a person would say ("the videos from last
July"), then act on them. The write tools are `PhoenixKitPhotos.Bulk` with an API around it,
the same two steps a person's selection takes, so every one of them answers a dry run with
what would happen and to which files, and nothing here deletes for good.
- [PhoenixKitPhotos.Bulk](PhoenixKitPhotos.Bulk.md): What can be done to many files at once. A person gets here through the timeline's selection
and an agent through the API tools (`PhoenixKitPhotos.API`); both take the same two steps,
so an agent cannot do what a person's screen would refuse.
- [PhoenixKitPhotos.Components.PhotoTimeline](PhoenixKitPhotos.Components.PhotoTimeline.md): The timeline LiveComponent: index and current window on the server, geometry
and recycling in the `PhotoTimeline` JS hook.
- [PhoenixKitPhotos.Components.PhotoUploader](PhoenixKitPhotos.Components.PhotoUploader.md): Adds photos and videos to one library: a floating **+** button, a panel with the
queue, and the whole page as a place to drop files or folders.
- [PhoenixKitPhotos.Components.PhotoViewer](PhoenixKitPhotos.Components.PhotoViewer.md): Hosts PhoenixKit's canvas viewer and dialog hook for one authorized photo.
Pass only the file data returned by `Timeline.viewer_file/3`. Stage 1 is
read-only; editing and annotations remain in PhoenixKit's media screens.

- [PhoenixKitPhotos.Components.ViewerPicker](PhoenixKitPhotos.Components.ViewerPicker.md): A select for the viewer of one library (`PhoenixKitPhotos.Viewer`): "Default", "Swipe
viewer", "Classic viewer". It shows nothing to someone who may not choose
(`Viewer.can_set?/2`), and checks again when it saves.
- [PhoenixKitPhotos.Gettext](PhoenixKitPhotos.Gettext.md): Gettext backend for labels this package hands to the browser.
- [PhoenixKitPhotos.LiveUpdates](PhoenixKitPhotos.LiveUpdates.md): Forwards storage lifecycle messages from the host LiveView to its timelines.
- [PhoenixKitPhotos.Timeline](PhoenixKitPhotos.Timeline.md): The server side of the timeline: a monthly index and per-day windows
over one storage library.
- [PhoenixKitPhotos.Uploads](PhoenixKitPhotos.Uploads.md): What the photo uploader asks of the server: who may add to a library, which files
it takes, and storing one finished upload. No LiveView in here; the
`PhoenixKitPhotos.Components.PhotoUploader` component calls it, and so can anything
else that has a file on disk (an importer, a script).
- [PhoenixKitPhotos.Viewer](PhoenixKitPhotos.Viewer.md): Which viewer a library's photos open in.
- [PhoenixKitPhotos.Web.Download](PhoenixKitPhotos.Web.Download.md): The timeline's Download: a form post of file ids, answered with a ZIP of the originals as they
are read. A host mounts it in a pipeline with the session, CSRF protection and the current
scope, and tells the timeline where (`download_path`)
- [PhoenixKitPhotos.Web.TimelineLive](PhoenixKitPhotos.Web.TimelineLive.md): The package's default timeline page.
- [PhoenixKitPhotos.Zip](PhoenixKitPhotos.Zip.md): A ZIP archive written front to back, for answering a download while the files are still being
read: nothing is ever seeked back to, so it goes straight into a chunked response.

