index.ts raw
1 /**
2 * Responsive Image Variants
3 *
4 * A library for generating and selecting responsive image variants
5 * per the NIP-XX Responsive Image Variants specification.
6 *
7 * @example
8 * ```typescript
9 * import {
10 * generateImageVariants,
11 * createResponsiveImageEvent,
12 * selectVariantForViewport
13 * } from 'responsive-variants'
14 *
15 * // Generate variants from a file
16 * const variants = await generateImageVariants(file)
17 *
18 * // Upload variants and collect metadata...
19 *
20 * // Create binding event
21 * const event = createResponsiveImageEvent(uploadedVariants)
22 *
23 * // Later, select variant for display
24 * const best = selectVariantForViewport(variants, containerWidth, devicePixelRatio)
25 * ```
26 */
27
28 // Constants
29 export {
30 ImageVariant,
31 VariantConfig,
32 VARIANT_SIZES,
33 VARIANT_WIDTHS,
34 VARIANT_QUALITY,
35 VARIANT_ORDER,
36 ORIGINAL_QUALITY,
37 FILE_METADATA_KIND
38 } from './constants'
39
40 // Image scaling
41 export {
42 ScaledImage,
43 ScaleOptions,
44 generateImageVariants,
45 isSupportedImage,
46 getExtensionFromMimeType
47 } from './scaler'
48
49 // Event creation/parsing
50 export {
51 UploadedVariant,
52 ResponsiveImageEventOptions,
53 DraftEvent,
54 createResponsiveImageEvent,
55 parseResponsiveImageEvent,
56 getThumbnailVariant,
57 getOriginalVariant
58 } from './event'
59
60 // Variant selection
61 export {
62 selectVariantForViewport,
63 calculateDisplayDimensions,
64 getPlaceholderDimensions,
65 isValidBlobHash,
66 extractHashFromUrl
67 } from './selector'
68