@yogiswara/honcho-editor-ui 2.8.8 → 2.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/index.d.mts +1474 -0
  2. package/dist/index.d.ts +1474 -39
  3. package/dist/index.js +10960 -44
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +10939 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +11 -5
  8. package/dist/color.d.ts +0 -9
  9. package/dist/color.js +0 -9
  10. package/dist/components/editor/GalleryAlbum/AlbumImageGallery.d.ts +0 -8
  11. package/dist/components/editor/GalleryAlbum/AlbumImageGallery.js +0 -28
  12. package/dist/components/editor/GalleryAlbum/ImageItem.d.ts +0 -10
  13. package/dist/components/editor/GalleryAlbum/ImageItem.js +0 -81
  14. package/dist/components/editor/HAccordionAspectRatio.d.ts +0 -14
  15. package/dist/components/editor/HAccordionAspectRatio.js +0 -102
  16. package/dist/components/editor/HAccordionColor.d.ts +0 -16
  17. package/dist/components/editor/HAccordionColor.js +0 -282
  18. package/dist/components/editor/HAccordionColorAdjustment.d.ts +0 -35
  19. package/dist/components/editor/HAccordionColorAdjustment.js +0 -31
  20. package/dist/components/editor/HAccordionDetails.d.ts +0 -12
  21. package/dist/components/editor/HAccordionDetails.js +0 -183
  22. package/dist/components/editor/HAccordionLight.d.ts +0 -20
  23. package/dist/components/editor/HAccordionLight.js +0 -414
  24. package/dist/components/editor/HAccordionPreset.d.ts +0 -23
  25. package/dist/components/editor/HAccordionPreset.js +0 -52
  26. package/dist/components/editor/HAlertBox.d.ts +0 -8
  27. package/dist/components/editor/HAlertBox.js +0 -55
  28. package/dist/components/editor/HAspectRatioMobile.d.ts +0 -0
  29. package/dist/components/editor/HAspectRatioMobile.js +0 -1
  30. package/dist/components/editor/HBulkAccordionColorAdjustment.d.ts +0 -55
  31. package/dist/components/editor/HBulkAccordionColorAdjustment.js +0 -31
  32. package/dist/components/editor/HBulkAccordionColorAdjustmentColors.d.ts +0 -20
  33. package/dist/components/editor/HBulkAccordionColorAdjustmentColors.js +0 -121
  34. package/dist/components/editor/HBulkAccordionColorAdjustmentDetails.d.ts +0 -12
  35. package/dist/components/editor/HBulkAccordionColorAdjustmentDetails.js +0 -65
  36. package/dist/components/editor/HBulkAccordionColorAdjustmentLight.d.ts +0 -28
  37. package/dist/components/editor/HBulkAccordionColorAdjustmentLight.js +0 -177
  38. package/dist/components/editor/HBulkColorAdjustmentMobile.d.ts +0 -53
  39. package/dist/components/editor/HBulkColorAdjustmentMobile.js +0 -16
  40. package/dist/components/editor/HBulkColorMobile.d.ts +0 -20
  41. package/dist/components/editor/HBulkColorMobile.js +0 -121
  42. package/dist/components/editor/HBulkDetailsMobile.d.ts +0 -12
  43. package/dist/components/editor/HBulkDetailsMobile.js +0 -65
  44. package/dist/components/editor/HBulkLightMobile.d.ts +0 -28
  45. package/dist/components/editor/HBulkLightMobile.js +0 -192
  46. package/dist/components/editor/HBulkPreset.d.ts +0 -24
  47. package/dist/components/editor/HBulkPreset.js +0 -43
  48. package/dist/components/editor/HBulkPresetMobile.d.ts +0 -15
  49. package/dist/components/editor/HBulkPresetMobile.js +0 -26
  50. package/dist/components/editor/HDialogBox.d.ts +0 -18
  51. package/dist/components/editor/HDialogBox.js +0 -51
  52. package/dist/components/editor/HDialogCopy.d.ts +0 -41
  53. package/dist/components/editor/HDialogCopy.js +0 -80
  54. package/dist/components/editor/HFooter.d.ts +0 -12
  55. package/dist/components/editor/HFooter.js +0 -24
  56. package/dist/components/editor/HHeaderEditor.d.ts +0 -19
  57. package/dist/components/editor/HHeaderEditor.js +0 -36
  58. package/dist/components/editor/HImageEditorBulkDekstop.d.ts +0 -15
  59. package/dist/components/editor/HImageEditorBulkDekstop.js +0 -29
  60. package/dist/components/editor/HImageEditorBulkMobile.d.ts +0 -72
  61. package/dist/components/editor/HImageEditorBulkMobile.js +0 -81
  62. package/dist/components/editor/HImageEditorDekstop.d.ts +0 -15
  63. package/dist/components/editor/HImageEditorDekstop.js +0 -29
  64. package/dist/components/editor/HImageEditorMobile.d.ts +0 -53
  65. package/dist/components/editor/HImageEditorMobile.js +0 -92
  66. package/dist/components/editor/HImageEditorMobileLayout.d.ts +0 -14
  67. package/dist/components/editor/HImageEditorMobileLayout.js +0 -58
  68. package/dist/components/editor/HModalEditorDekstop.d.ts +0 -13
  69. package/dist/components/editor/HModalEditorDekstop.js +0 -22
  70. package/dist/components/editor/HModalMobile.d.ts +0 -13
  71. package/dist/components/editor/HModalMobile.js +0 -9
  72. package/dist/components/editor/HPresetDelete.d.ts +0 -7
  73. package/dist/components/editor/HPresetDelete.js +0 -7
  74. package/dist/components/editor/HPresetOptionMenu.d.ts +0 -9
  75. package/dist/components/editor/HPresetOptionMenu.js +0 -20
  76. package/dist/components/editor/HSliderColorMobile.d.ts +0 -16
  77. package/dist/components/editor/HSliderColorMobile.js +0 -270
  78. package/dist/components/editor/HSliderDetailsMobile.d.ts +0 -12
  79. package/dist/components/editor/HSliderDetailsMobile.js +0 -154
  80. package/dist/components/editor/HSliderLightMobile.d.ts +0 -20
  81. package/dist/components/editor/HSliderLightMobile.js +0 -420
  82. package/dist/components/editor/HTabAspectRatioMobile.d.ts +0 -0
  83. package/dist/components/editor/HTabAspectRatioMobile.js +0 -1
  84. package/dist/components/editor/HTabColorAdjustmentMobile.d.ts +0 -35
  85. package/dist/components/editor/HTabColorAdjustmentMobile.js +0 -8
  86. package/dist/components/editor/HTabPresetMobile.d.ts +0 -14
  87. package/dist/components/editor/HTabPresetMobile.js +0 -10
  88. package/dist/components/editor/HTextField.d.ts +0 -14
  89. package/dist/components/editor/HTextField.js +0 -51
  90. package/dist/components/editor/HWatermarkView.d.ts +0 -6
  91. package/dist/components/editor/HWatermarkView.js +0 -16
  92. package/dist/components/editor/svg/Tick.d.ts +0 -2
  93. package/dist/components/editor/svg/Tick.js +0 -6
  94. package/dist/components/modal/HModalDialog.d.ts +0 -12
  95. package/dist/components/modal/HModalDialog.js +0 -18
  96. package/dist/components/modal/HModalRename.d.ts +0 -14
  97. package/dist/components/modal/HModalRename.js +0 -35
  98. package/dist/hooks/demo/HonchoEditorBulkDemo.d.ts +0 -3
  99. package/dist/hooks/demo/HonchoEditorBulkDemo.js +0 -410
  100. package/dist/hooks/demo/HonchoEditorSingleCleanDemo.d.ts +0 -3
  101. package/dist/hooks/demo/HonchoEditorSingleCleanDemo.js +0 -354
  102. package/dist/hooks/demo/index.d.ts +0 -2
  103. package/dist/hooks/demo/index.js +0 -2
  104. package/dist/hooks/editor/type.d.ts +0 -174
  105. package/dist/hooks/editor/type.js +0 -1
  106. package/dist/hooks/editor/useHonchoEditorBulk.d.ts +0 -96
  107. package/dist/hooks/editor/useHonchoEditorBulk.js +0 -427
  108. package/dist/hooks/editor/useHonchoEditorSingle.d.ts +0 -44
  109. package/dist/hooks/editor/useHonchoEditorSingle.js +0 -163
  110. package/dist/hooks/useAdjustmentHistory.d.ts +0 -95
  111. package/dist/hooks/useAdjustmentHistory.js +0 -578
  112. package/dist/hooks/useAdjustmentHistoryBatch.d.ts +0 -177
  113. package/dist/hooks/useAdjustmentHistoryBatch.js +0 -1189
  114. package/dist/hooks/useGallerySwipe.d.ts +0 -36
  115. package/dist/hooks/useGallerySwipe.js +0 -344
  116. package/dist/hooks/usePaging.d.ts +0 -89
  117. package/dist/hooks/usePaging.js +0 -211
  118. package/dist/hooks/usePreset.d.ts +0 -82
  119. package/dist/hooks/usePreset.js +0 -344
  120. package/dist/lib/context/EditorContext.d.ts +0 -28
  121. package/dist/lib/context/EditorContext.js +0 -60
  122. package/dist/lib/context/EditorProcessingService.d.ts +0 -36
  123. package/dist/lib/context/EditorProcessingService.js +0 -249
  124. package/dist/lib/editor/honcho-editor.d.ts +0 -324
  125. package/dist/lib/editor/honcho-editor.js +0 -825
  126. package/dist/lib/hooks/useEditor.d.ts +0 -22
  127. package/dist/lib/hooks/useEditor.js +0 -35
  128. package/dist/lib/hooks/useEditorHeadless.d.ts +0 -34
  129. package/dist/lib/hooks/useEditorHeadless.js +0 -207
  130. package/dist/lib/hooks/useImageProcessor.d.ts +0 -18
  131. package/dist/lib/hooks/useImageProcessor.js +0 -113
  132. package/dist/setupTests.d.ts +0 -1
  133. package/dist/setupTests.js +0 -1
  134. package/dist/themes/colors.d.ts +0 -12
  135. package/dist/themes/colors.js +0 -12
  136. package/dist/themes/honchoTheme.d.ts +0 -25
  137. package/dist/themes/honchoTheme.js +0 -94
  138. package/dist/utils/adjustment.d.ts +0 -6
  139. package/dist/utils/adjustment.js +0 -48
  140. package/dist/utils/imageLoader.d.ts +0 -11
  141. package/dist/utils/imageLoader.js +0 -48
  142. package/dist/utils/isMobile.d.ts +0 -1
  143. package/dist/utils/isMobile.js +0 -5
@@ -0,0 +1,1474 @@
1
+ import { SelectChangeEvent } from '@mui/material';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import React$1, { ReactElement } from 'react';
4
+
5
+ interface Log {
6
+ created_at: string;
7
+ updated_at: string;
8
+ }
9
+ interface ColorAdjustment {
10
+ temperature: number;
11
+ tint: number;
12
+ saturation: number;
13
+ vibrance: number;
14
+ exposure: number;
15
+ contrast: number;
16
+ highlights: number;
17
+ shadows: number;
18
+ whites: number;
19
+ blacks: number;
20
+ clarity: number;
21
+ sharpness: number;
22
+ }
23
+ interface TransformationAdjustment {
24
+ angle_score?: number;
25
+ direction?: "cw" | "ccw";
26
+ scale_score?: number;
27
+ keep_dimension?: boolean;
28
+ flip_mode?: "horizontal" | "vertical" | "mix";
29
+ aspect_ratio?: string;
30
+ width?: number;
31
+ height?: number;
32
+ }
33
+ interface Watermark {
34
+ path: string;
35
+ max_pct: [number, number];
36
+ anchor: [string, number | null, number[] | null];
37
+ rotate_deg: [number, "cw" | "ccw"];
38
+ }
39
+ interface EditorConfig {
40
+ color_adjustment: ColorAdjustment;
41
+ transformation_adjustment?: TransformationAdjustment[];
42
+ watermarks?: Watermark[];
43
+ }
44
+ interface Content {
45
+ key: string;
46
+ path: string;
47
+ size: number;
48
+ width: number;
49
+ height: number;
50
+ }
51
+ interface Content {
52
+ key: string;
53
+ path: string;
54
+ size: number;
55
+ width: number;
56
+ height: number;
57
+ }
58
+ interface Gallery {
59
+ id: string;
60
+ uid: string;
61
+ event_id: string;
62
+ download: Content;
63
+ download_edited: Content;
64
+ raw?: Content;
65
+ raw_edited?: Content;
66
+ raw_preview?: Content;
67
+ raw_thumbnail?: Content;
68
+ original?: Content;
69
+ original_edited?: Content;
70
+ large?: Content;
71
+ large_edited?: Content;
72
+ medium?: Content;
73
+ medium_edited?: Content;
74
+ small?: Content;
75
+ small_edited?: Content;
76
+ mini?: Content;
77
+ mini_edited?: Content;
78
+ create_from?: string[];
79
+ thumbnail: Content;
80
+ thumbnail_edited: Content;
81
+ is_original: boolean;
82
+ available: boolean;
83
+ show_gallery: boolean;
84
+ editor_config?: EditorConfig;
85
+ log: Log;
86
+ }
87
+ interface ResponseGalleryPaging {
88
+ gallery: Gallery[];
89
+ limit: number;
90
+ current_page: number;
91
+ prev_page: number;
92
+ next_page: number;
93
+ sum_of_image?: number;
94
+ }
95
+ interface EditorHistoryEntry {
96
+ id: string;
97
+ gallery_id: string;
98
+ event_id: string;
99
+ task_id: string;
100
+ editor_config: EditorConfig;
101
+ log: Log;
102
+ }
103
+ interface CreateEditorTaskRequest {
104
+ gallery_id: string;
105
+ task_id: string;
106
+ color_adjustment: ColorAdjustment;
107
+ replace_from?: string;
108
+ }
109
+ interface GetHistoryResponse {
110
+ current_task_id: string;
111
+ history: EditorHistoryEntry[];
112
+ }
113
+ interface GetGalleryUpdateTimestampResponse {
114
+ gallery: string[];
115
+ }
116
+ interface AdjustmentState {
117
+ tempScore: number;
118
+ tintScore: number;
119
+ vibranceScore: number;
120
+ saturationScore: number;
121
+ exposureScore: number;
122
+ highlightsScore: number;
123
+ shadowsScore: number;
124
+ whitesScore: number;
125
+ blacksScore: number;
126
+ contrastScore: number;
127
+ clarityScore: number;
128
+ sharpnessScore: number;
129
+ }
130
+ interface Preset$4 {
131
+ id: string;
132
+ name: string;
133
+ is_default: boolean;
134
+ temperature: number;
135
+ tint: number;
136
+ saturation: number;
137
+ vibrance: number;
138
+ exposure: number;
139
+ contrast: number;
140
+ highlights: number;
141
+ shadows: number;
142
+ whites: number;
143
+ blacks: number;
144
+ clarity: number;
145
+ sharpness: number;
146
+ }
147
+ interface Controller {
148
+ onGetImage(firebaseUid: string, imageID: string): Promise<Gallery>;
149
+ getImageList(firebaseUid: string, eventId: string, page: number): Promise<ResponseGalleryPaging>;
150
+ syncConfig(firebaseUid: string): Promise<void>;
151
+ handleBack(firebaseUid: string, imageID: string): void;
152
+ getPresets(firebaseUid: string): Promise<Preset$4[]>;
153
+ createPreset(firebaseUid: string, name: string, settings: AdjustmentState): Promise<void>;
154
+ deletePreset(firebaseUid: string, presetId: string): Promise<void>;
155
+ updatePreset(firebaseUid: string, data: Preset$4): Promise<void>;
156
+ createEditorConfig(firebaseUid: string, payload: CreateEditorTaskRequest): Promise<void>;
157
+ getEditorHistory(firebaseUid: string, imageID: string): Promise<GetHistoryResponse>;
158
+ getGalleryUpdateTimestamp(firebaseUid: string, eventID: string, timestamp: number): Promise<GetGalleryUpdateTimestampResponse>;
159
+ setHistoryIndex(firebaseUid: string, imageID: string, taskID: string): Promise<void>;
160
+ }
161
+ interface ImageItem {
162
+ id: string;
163
+ url: string;
164
+ file: File;
165
+ }
166
+
167
+ /**
168
+ * temperature?: number; // -100 to 100
169
+ tint?: number; // -100 to 100
170
+ saturation?: number; // -100 to 100
171
+ vibrance?: number; // -100 to 100
172
+ exposure?: number; // -100 to 100
173
+ contrast?: number; // -100 to 100
174
+ highlights?: number; // -100 to 100
175
+ shadows?: number; // -100 to 100
176
+ whites?: number; // -100 to 100
177
+ blacks?: number; // -100 to 100
178
+ clarity?: number; // -100 to 100
179
+ sharpness?: number; // -100 to 100 Editor - TypeScript Definitions
180
+ *
181
+ * Type definitions for the Honcho Photo Editor JavaScript library.
182
+ */
183
+
184
+ interface AdjustmentValues {
185
+ temperature?: number; // -100 to 100
186
+ tint?: number; // -100 to 100
187
+ saturation?: number; // -1 to 1
188
+ vibrance?: number; // -1 to 1
189
+ exposure?: number; // -3 to 3
190
+ contrast?: number; // -1 to 1
191
+ highlights?: number; // -1 to 1
192
+ shadows?: number; // -1 to 1
193
+ whites?: number; // -1 to 1
194
+ blacks?: number; // -1 to 1
195
+ clarity?: number; // -1 to 1
196
+ sharpness?: number; // -1 to 1
197
+ }
198
+
199
+ interface ImageSize {
200
+ width: number;
201
+ height: number;
202
+ }
203
+
204
+ interface AdjustmentRange {
205
+ min: number;
206
+ max: number;
207
+ default: number;
208
+ step: number;
209
+ }
210
+
211
+ interface AdjustmentRanges {
212
+ temperature: AdjustmentRange;
213
+ tint: AdjustmentRange;
214
+ saturation: AdjustmentRange;
215
+ vibrance: AdjustmentRange;
216
+ exposure: AdjustmentRange;
217
+ contrast: AdjustmentRange;
218
+ highlights: AdjustmentRange;
219
+ shadows: AdjustmentRange;
220
+ whites: AdjustmentRange;
221
+ blacks: AdjustmentRange;
222
+ clarity: AdjustmentRange;
223
+ sharpness: AdjustmentRange;
224
+ }
225
+
226
+ declare class HonchoEditor {
227
+ constructor();
228
+
229
+ // Initialization - must be called before any other methods
230
+ initialize(verbose?: boolean): Promise<boolean>;
231
+
232
+ // Image Loading
233
+ loadImageFromFile(file: File): Promise<ImageSize>;
234
+ loadImageFromUrl(url: string): Promise<ImageSize>;
235
+ loadImageFromImageElement(img: HTMLImageElement): ImageSize;
236
+ loadImageFromImageData(imageData: ImageData): ImageSize;
237
+
238
+ // Adjustments (all auto-trigger re-render)
239
+ setTemperature(value: number): void;
240
+ setTint(value: number): void;
241
+ setSaturation(value: number): void;
242
+ setVibrance(value: number): void;
243
+ setExposure(value: number): void;
244
+ setContrast(value: number): void;
245
+ setHighlights(value: number): void;
246
+ setShadows(value: number): void;
247
+ setWhites(value: number): void;
248
+ setBlacks(value: number): void;
249
+ setClarity(value: number): void;
250
+ setSharpness(value: number): void;
251
+
252
+ // Batch adjustments
253
+ setAdjustments(adjustments: AdjustmentValues): void;
254
+
255
+ // Reset all adjustments to default values
256
+ resetAdjustments(): void;
257
+
258
+ // Manual processing trigger - call this after setting adjustments
259
+ processImage(): void;
260
+
261
+ // Frame functionality
262
+ setFrame(frameData: Uint8Array, frameWidth: number, frameHeight: number, frameChannels: number): boolean;
263
+ setFrameFromImageData(frameImageData: ImageData): boolean;
264
+ setFrameFromCanvas(frameCanvas: HTMLCanvasElement): boolean;
265
+ clearFrame(): void;
266
+ hasFrame(): boolean;
267
+
268
+ // Convenience methods
269
+ processImageOneShot(
270
+ imageSource: File | ImageData | HTMLImageElement,
271
+ adjustments?: Partial<AdjustmentValues>,
272
+ frameSource?: File | ImageData | HTMLImageElement | null
273
+ ): Promise<ImageData>;
274
+
275
+ // Rendering
276
+ renderToCanvas(canvas: HTMLCanvasElement): void; // GPU path <1ms
277
+ getProcessedImageData(): ImageData; // CPU path 50-100ms
278
+
279
+ // Utilities
280
+ getImageSize(): ImageSize;
281
+ getInitialized(): boolean;
282
+ getRawModule(): any;
283
+
284
+ // Cleanup
285
+ cleanup(): void;
286
+ }
287
+
288
+ interface UseHonchoEditorSingleOptions {
289
+ controller: Controller;
290
+ initImageId: string;
291
+ firebaseUid: string;
292
+ }
293
+ interface UseHonchoEditorSingleState {
294
+ currentImageData: Gallery | null;
295
+ isGalleryLoading: boolean;
296
+ galleryError: string | null;
297
+ currentAdjustments: AdjustmentState;
298
+ isBatchMode: boolean;
299
+ canUndo: boolean;
300
+ canRedo: boolean;
301
+ isNextAvailable: boolean;
302
+ isPrevAvailable: boolean;
303
+ presets: Preset$4[];
304
+ activePreset: Preset$4 | null;
305
+ presetsLoading: boolean;
306
+ presetsError: string | null;
307
+ }
308
+ interface UseHonchoEditorSingleActions {
309
+ navigateNext: () => void;
310
+ navigatePrev: () => void;
311
+ updateAdjustment: (field: keyof AdjustmentState, value: number) => void;
312
+ setBatchMode: (enabled: boolean) => void;
313
+ startBatchMode: () => void;
314
+ endBatchMode: () => void;
315
+ undo: () => void;
316
+ redo: () => void;
317
+ reset: () => void;
318
+ loadPresets: () => Promise<void>;
319
+ applyPreset: (preset: Preset$4) => void;
320
+ createPreset: (name: string, adjustments: AdjustmentState) => Promise<Preset$4 | null>;
321
+ renamePreset: (presetId: string, newName: string) => Promise<boolean>;
322
+ deletePreset: (presetId: string) => Promise<void>;
323
+ getEditorAdjustments: () => AdjustmentValues;
324
+ }
325
+ declare function useHonchoEditorSingle({ controller, initImageId, firebaseUid }: UseHonchoEditorSingleOptions): {
326
+ state: UseHonchoEditorSingleState;
327
+ actions: UseHonchoEditorSingleActions;
328
+ };
329
+
330
+ /**
331
+ * Configuration for image with adjustment state
332
+ */
333
+ interface ImageAdjustmentConfig {
334
+ imageId: string;
335
+ /** Adjustment state for this image. If not provided, uses default (all zeros) */
336
+ adjustment?: AdjustmentState;
337
+ }
338
+ /**
339
+ * Batch adjustment state - maps image IDs to their adjustment states
340
+ */
341
+ interface BatchAdjustmentState {
342
+ /** Currently selected images that are being actively adjusted */
343
+ currentSelection: {
344
+ [imageId: string]: AdjustmentState;
345
+ };
346
+ /** All images that have been selected/adjusted before (persistent state) */
347
+ allImages: {
348
+ [imageId: string]: AdjustmentState;
349
+ };
350
+ /** Track initial/baseline state for each image */
351
+ initialStates: {
352
+ [imageId: string]: AdjustmentState;
353
+ };
354
+ }
355
+ /**
356
+ * Configuration options for the batch adjustment history hook
357
+ */
358
+ interface BatchHistoryOptions {
359
+ /** Maximum number of history entries to keep. Use 'unlimited' for no limit */
360
+ maxSize?: number | 'unlimited';
361
+ /** Enable development warnings for performance issues */
362
+ devWarnings?: boolean;
363
+ /** Default adjustment state for new images */
364
+ defaultAdjustmentState?: Partial<AdjustmentState>;
365
+ /** Controller for backend operations */
366
+ controller?: Controller;
367
+ /** Firebase UID for backend operations */
368
+ firebaseUid?: string;
369
+ /** Event ID for backend operations */
370
+ eventId?: string;
371
+ }
372
+ /**
373
+ * Information about the current batch history state
374
+ */
375
+ interface BatchHistoryInfo {
376
+ /** Whether undo operation is available for selected images */
377
+ canUndo: boolean;
378
+ /** Whether redo operation is available for selected images */
379
+ canRedo: boolean;
380
+ /** Current position in history (0-based index) */
381
+ currentIndex: number;
382
+ /** Total number of states in history */
383
+ totalStates: number;
384
+ /** Number of currently selected images */
385
+ selectedCount: number;
386
+ /** Total number of images being managed */
387
+ totalImages: number;
388
+ /** Current size of history in memory */
389
+ historySize: number;
390
+ }
391
+ /**
392
+ * Actions available for batch history management
393
+ */
394
+ interface BatchHistoryActions {
395
+ /** Apply adjustment deltas to selected images */
396
+ adjustSelected: (delta: Partial<AdjustmentState>) => void;
397
+ /** Apply preset values directly to selected images (preserves history) */
398
+ adjustSelectedWithPreset: (presetAdjustments: AdjustmentState) => void;
399
+ /** Undo last changes to selected images */
400
+ undo: () => void;
401
+ /** Redo next changes to selected images */
402
+ redo: () => void;
403
+ /** Reset selected images to default state */
404
+ reset: (imageIds?: string[]) => void;
405
+ /** Set selection with optional initial adjustments per image */
406
+ setSelection: (configs: ImageAdjustmentConfig[]) => void;
407
+ /** Sync/replace adjustment for images (clears their history) */
408
+ syncAdjustment: (configs: ImageAdjustmentConfig[]) => void;
409
+ /** Check for gallery updates and sync history for updated images */
410
+ syncGalleryUpdates: () => Promise<void>;
411
+ /** Add or remove image from selection */
412
+ toggleSelection: (imageId: string) => void;
413
+ /** Select all images */
414
+ selectAll: () => void;
415
+ /** Clear selection */
416
+ clearSelection: () => void;
417
+ /** Jump to specific index in history */
418
+ jumpToIndex: (index: number) => void;
419
+ /** Clear all history and start fresh */
420
+ clearHistory: () => void;
421
+ /** Get copy of current batch state */
422
+ getCurrentBatch: () => BatchAdjustmentState;
423
+ /** Sync entire batch state */
424
+ syncBatch: (newBatch: BatchAdjustmentState, targetIndex?: number) => void;
425
+ }
426
+ /**
427
+ * Configuration actions for runtime adjustment
428
+ */
429
+ interface BatchHistoryConfig {
430
+ /** Set maximum history size */
431
+ setMaxSize: (size: number | 'unlimited') => void;
432
+ /** Get current memory usage estimate */
433
+ getMemoryUsage: () => number;
434
+ }
435
+ /**
436
+ * Return type for the useAdjustmentHistoryBatch hook
437
+ */
438
+ interface UseAdjustmentHistoryBatchReturn {
439
+ /** Current batch adjustment state */
440
+ currentBatch: BatchAdjustmentState;
441
+ /** Currently selected image IDs */
442
+ selectedIds: string[];
443
+ /** All image IDs being managed */
444
+ allImageIds: string[];
445
+ /** Information about history state */
446
+ historyInfo: BatchHistoryInfo;
447
+ /** Available history actions */
448
+ actions: BatchHistoryActions;
449
+ /** Configuration options */
450
+ config: BatchHistoryConfig;
451
+ }
452
+ /**
453
+ * Advanced hook for managing batch AdjustmentState history with selective undo/redo functionality.
454
+ *
455
+ * **Pure State Management Design:**
456
+ * - Starts empty, no image loading functionality
457
+ * - Focus on state management and history tracking only
458
+ * - Selection-based operations with persistent state
459
+ * - Manual selection via `actions.setSelection()`
460
+ *
461
+ * **Key Features:**
462
+ * - **Current Selection**: Images actively being adjusted
463
+ * - **All Images**: Persistent state for every image touched
464
+ * - **Selective Operations**: Undo/redo only affects selected images
465
+ * - **Automatic State Persistence**: Images remain in allImages even when deselected
466
+ *
467
+ * **Typical Usage Flow:**
468
+ * ```typescript
469
+ * const { actions, currentBatch, selectedIds } = useAdjustmentHistoryBatch();
470
+ *
471
+ * // Select images (new images get default state automatically)
472
+ * actions.setSelection(['img1', 'img2', 'img3']);
473
+ *
474
+ * // Apply adjustments to selected images
475
+ * actions.adjustSelected({ exposureScore: 10 });
476
+ *
477
+ * // Change selection (img1, img2 state persists in allImages)
478
+ * actions.setSelection(['img3']);
479
+ *
480
+ * // Adjust only img3
481
+ * actions.adjustSelected({ contrastScore: 5 });
482
+ *
483
+ * // Undo affects only currently selected (img3)
484
+ * actions.undo();
485
+ * ```
486
+ *
487
+ * **State Structure:**
488
+ * - `currentBatch.currentSelection`: Currently selected images and their states
489
+ * - `currentBatch.allImages`: All images that have been selected/adjusted (persistent)
490
+ * - `selectedIds`: Array of currently selected image IDs
491
+ *
492
+ * @param options - Configuration options for history behavior
493
+ * @returns Object with current batch, selection, history info, actions, and config
494
+ */
495
+ declare function useAdjustmentHistoryBatch(options?: BatchHistoryOptions): UseAdjustmentHistoryBatchReturn;
496
+
497
+ /**
498
+ * Configuration options for the preset hook
499
+ */
500
+ interface PresetOptions {
501
+ /** Enable development warnings for debugging */
502
+ devWarnings?: boolean;
503
+ /** Auto-load presets on hook initialization */
504
+ autoLoad?: boolean;
505
+ }
506
+ /**
507
+ * Information about the current preset state
508
+ */
509
+ interface PresetInfo {
510
+ /** Whether presets are currently being loaded */
511
+ isLoading: boolean;
512
+ /** Error message if any operation failed */
513
+ error: string | null;
514
+ /** Number of presets currently managed */
515
+ count: number;
516
+ /** Whether the hook has been initialized */
517
+ isInitialized: boolean;
518
+ }
519
+ /**
520
+ * Actions available for preset management
521
+ */
522
+ interface PresetActions {
523
+ /** Create a new preset */
524
+ create: (name: string, settings: AdjustmentState) => Promise<Preset$4 | null>;
525
+ /** Rename an existing preset */
526
+ rename: (presetId: string, newName: string) => Promise<boolean>;
527
+ /** Delete a preset */
528
+ delete: (presetId: string) => Promise<boolean>;
529
+ /** Load/refresh presets from backend */
530
+ load: () => Promise<void>;
531
+ /** Find preset that matches the given adjustment state */
532
+ findByAdjustments: (adjustments: AdjustmentState) => Preset$4 | null;
533
+ }
534
+ /**
535
+ * Return type for the usePreset hook
536
+ */
537
+ interface UsePresetReturn {
538
+ /** Current list of presets */
539
+ presets: Preset$4[];
540
+ /** Information about preset state */
541
+ info: PresetInfo;
542
+ /** Available preset actions */
543
+ actions: PresetActions;
544
+ }
545
+ /**
546
+ * Hook for managing presets with backend communication through Controller.
547
+ *
548
+ * **Key Features:**
549
+ * - **Backend Communication**: All operations go through the provided Controller
550
+ * - **Local State Management**: Maintains local preset list for UI performance
551
+ * - **CRUD Operations**: Create, rename, delete, and list presets
552
+ * - **Error Handling**: Provides error states for failed operations
553
+ * - **Auto-loading**: Optional automatic preset loading on initialization
554
+ *
555
+ * **Typical Usage:**
556
+ * ```typescript
557
+ * const { presets, actions, info } = usePreset(controller, firebaseUid, { autoLoad: true });
558
+ *
559
+ * // Create preset
560
+ * const newPreset = await actions.create('My Preset', adjustmentState);
561
+ *
562
+ * // Rename preset
563
+ * const success = await actions.rename(presetId, 'New Name');
564
+ *
565
+ * // Delete preset
566
+ * const deleted = await actions.delete(presetId);
567
+ *
568
+ * // Manual reload
569
+ * await actions.load();
570
+ * ```
571
+ *
572
+ * @param controller - Backend controller for API communication
573
+ * @param firebaseUid - User identifier for backend operations
574
+ * @param options - Configuration options
575
+ * @returns Object with presets, info, and actions
576
+ */
577
+ declare function usePreset(controller: Controller | null, firebaseUid: string, options?: PresetOptions): UsePresetReturn;
578
+
579
+ interface PhotoData {
580
+ key: string;
581
+ src: string;
582
+ original: string;
583
+ width: number;
584
+ height: number;
585
+ alt: string;
586
+ isSelected: boolean;
587
+ adjustments?: Partial<AdjustmentValues>;
588
+ }
589
+ /**
590
+ * Hook for bulk photo editing with multi-image backend synchronization.
591
+ *
592
+ * **Multi-Image Backend Sync:**
593
+ * - Each selected image maintains its own history and backend state
594
+ * - History operations (undo/redo) trigger separate controller.setHistoryIndex() calls for each selected image
595
+ * - Preset application triggers separate controller.createEditorConfig() calls for each selected image
596
+ * - Adjustment changes trigger separate controller.createEditorConfig() calls for each selected image
597
+ *
598
+ * **Key Features:**
599
+ * - Individual history tracking per image with backend persistence
600
+ * - Bulk operations that respect per-image differences
601
+ * - Automatic backend synchronization for all state changes
602
+ * - Comprehensive logging of multi-image operations
603
+ */
604
+ declare function useHonchoEditorBulk(controller: Controller, eventID: string, firebaseUid: string): {
605
+ imageData: PhotoData[];
606
+ isLoading: boolean;
607
+ error: string | null;
608
+ selectedIds: string[];
609
+ hasMore: boolean;
610
+ handleBackCallbackBulk: () => void;
611
+ presets: Preset$4[];
612
+ selectedBulkPreset: string;
613
+ activePreset: Preset$4 | null;
614
+ handleSelectBulkPreset: (event: SelectChangeEvent<string>) => void;
615
+ presetActions: PresetActions;
616
+ handleToggleImageSelection: (imageId: string) => void;
617
+ handleLoadMore: () => Promise<void>;
618
+ handleRefresh: () => Promise<void>;
619
+ handleBulkTempDecreaseMax: () => void;
620
+ handleBulkTempDecrease: () => void;
621
+ handleBulkTempIncrease: () => void;
622
+ handleBulkTempIncreaseMax: () => void;
623
+ handleBulkTintDecreaseMax: () => void;
624
+ handleBulkTintDecrease: () => void;
625
+ handleBulkTintIncrease: () => void;
626
+ handleBulkTintIncreaseMax: () => void;
627
+ handleBulkVibranceDecreaseMax: () => void;
628
+ handleBulkVibranceDecrease: () => void;
629
+ handleBulkVibranceIncrease: () => void;
630
+ handleBulkVibranceIncreaseMax: () => void;
631
+ handleBulkSaturationDecreaseMax: () => void;
632
+ handleBulkSaturationDecrease: () => void;
633
+ handleBulkSaturationIncrease: () => void;
634
+ handleBulkSaturationIncreaseMax: () => void;
635
+ handleBulkExposureDecreaseMax: () => void;
636
+ handleBulkExposureDecrease: () => void;
637
+ handleBulkExposureIncrease: () => void;
638
+ handleBulkExposureIncreaseMax: () => void;
639
+ handleBulkContrastDecreaseMax: () => void;
640
+ handleBulkContrastDecrease: () => void;
641
+ handleBulkContrastIncrease: () => void;
642
+ handleBulkContrastIncreaseMax: () => void;
643
+ handleBulkHighlightsDecreaseMax: () => void;
644
+ handleBulkHighlightsDecrease: () => void;
645
+ handleBulkHighlightsIncrease: () => void;
646
+ handleBulkHighlightsIncreaseMax: () => void;
647
+ handleBulkShadowsDecreaseMax: () => void;
648
+ handleBulkShadowsDecrease: () => void;
649
+ handleBulkShadowsIncrease: () => void;
650
+ handleBulkShadowsIncreaseMax: () => void;
651
+ handleBulkWhitesDecreaseMax: () => void;
652
+ handleBulkWhitesDecrease: () => void;
653
+ handleBulkWhitesIncrease: () => void;
654
+ handleBulkWhitesIncreaseMax: () => void;
655
+ handleBulkBlacksDecreaseMax: () => void;
656
+ handleBulkBlacksDecrease: () => void;
657
+ handleBulkBlacksIncrease: () => void;
658
+ handleBulkBlacksIncreaseMax: () => void;
659
+ handleBulkClarityDecreaseMax: () => void;
660
+ handleBulkClarityDecrease: () => void;
661
+ handleBulkClarityIncrease: () => void;
662
+ handleBulkClarityIncreaseMax: () => void;
663
+ handleBulkSharpnessDecreaseMax: () => void;
664
+ handleBulkSharpnessDecrease: () => void;
665
+ handleBulkSharpnessIncrease: () => void;
666
+ handleBulkSharpnessIncreaseMax: () => void;
667
+ handleUndo: () => void;
668
+ handleRedo: () => void;
669
+ handleReset: (imageIds?: string[]) => void;
670
+ historyInfo: BatchHistoryInfo;
671
+ };
672
+
673
+ interface Props$i {
674
+ anchorEl?: null | HTMLElement;
675
+ valueSelect?: string;
676
+ isPasteEnabled?: boolean;
677
+ canUndo: boolean;
678
+ canRedo: boolean;
679
+ onBack?: () => void;
680
+ onUndo?: () => void;
681
+ onRedo?: () => void;
682
+ onRevert?: () => void;
683
+ onCopyEdit?: () => void;
684
+ onPasteEdit?: () => void;
685
+ onMenuClick?: (event: React$1.MouseEvent<HTMLElement>) => void;
686
+ onMenuClose?: () => void;
687
+ onSelectButton?: () => void;
688
+ }
689
+ declare function HHeaderEditor(props: Props$i): react_jsx_runtime.JSX.Element;
690
+
691
+ interface Props$h {
692
+ anchorElZoom: null | HTMLElement;
693
+ onScale: (event: React$1.MouseEvent<HTMLElement>) => void;
694
+ onZoomMenuClose: () => void;
695
+ zoomLevelText: string;
696
+ onZoomAction: (zoomLevel: string) => void;
697
+ onShowOriginal?: () => void;
698
+ onShowEdited?: () => void;
699
+ }
700
+ declare function HFooter(props: Props$h): react_jsx_runtime.JSX.Element;
701
+
702
+ interface Props$g {
703
+ tempScore: number;
704
+ tintScore: number;
705
+ vibranceScore: number;
706
+ saturationScore: number;
707
+ exposureScore: number;
708
+ HighlightsScore: number;
709
+ shadowsScore: number;
710
+ whitesScore: number;
711
+ blacksScore: number;
712
+ contrastScore: number;
713
+ clarityScore: number;
714
+ sharpnessScore: number;
715
+ expandedPanels: string[];
716
+ setTempScore: (field: keyof AdjustmentState, value: number) => void;
717
+ setTintScore: (field: keyof AdjustmentState, value: number) => void;
718
+ setExposureScore: (field: keyof AdjustmentState, value: number) => void;
719
+ setVibranceScore: (field: keyof AdjustmentState, value: number) => void;
720
+ setSaturationScore: (field: keyof AdjustmentState, value: number) => void;
721
+ setHighlightsScore: (field: keyof AdjustmentState, value: number) => void;
722
+ setShadowsScore: (field: keyof AdjustmentState, value: number) => void;
723
+ setWhitesScore: (field: keyof AdjustmentState, value: number) => void;
724
+ setBlacksScore: (field: keyof AdjustmentState, value: number) => void;
725
+ setContrastScore: (field: keyof AdjustmentState, value: number) => void;
726
+ setClarityScore: (field: keyof AdjustmentState, value: number) => void;
727
+ setSharpnessScore: (field: keyof AdjustmentState, value: number) => void;
728
+ onPanelChange: (panel: string) => (event: React$1.SyntheticEvent, isExpanded: boolean) => void;
729
+ isBatchMode: boolean;
730
+ onDragStart: () => void;
731
+ onDragEnd: () => void;
732
+ }
733
+ declare function HAccordionColorAdjustment(props: Props$g): react_jsx_runtime.JSX.Element;
734
+
735
+ type Preset$3 = {
736
+ id: string;
737
+ name: string;
738
+ };
739
+ interface Props$f {
740
+ presets: Preset$3[];
741
+ expandedPanels: string[];
742
+ selectedPreset: string | null;
743
+ presetMenuAnchorEl: null | HTMLElement;
744
+ activePresetMenuId: string | null;
745
+ onChange: (panel: string) => (event: React$1.SyntheticEvent, isExpanded: boolean) => void;
746
+ onOpenPresetModal: () => void;
747
+ onOpenWatermarkView: () => void;
748
+ onSelectPreset: (id: string) => void;
749
+ onPresetMenuClick: (event: React$1.MouseEvent<HTMLElement>, presetId: string) => void;
750
+ onPresetMenuClose: () => void;
751
+ onRemovePreset: () => void;
752
+ onRenamePreset: () => void;
753
+ onDeletePreset: () => void;
754
+ }
755
+ declare function HAccordionPreset(props: Props$f): react_jsx_runtime.JSX.Element;
756
+
757
+ interface Props$e {
758
+ open: boolean;
759
+ title: React$1.ReactNode;
760
+ description?: React$1.ReactNode | ReactElement;
761
+ onClose?: () => void;
762
+ action?: React$1.ReactNode;
763
+ actionAdjust?: React$1.ReactNode;
764
+ }
765
+ declare function HBaseDialog(props: Props$e): react_jsx_runtime.JSX.Element;
766
+ declare function HDialogForPreset(props: Props$e): react_jsx_runtime.JSX.Element;
767
+
768
+ type CheckState = {
769
+ [key: string]: boolean;
770
+ };
771
+ interface Props$d {
772
+ colorChecks: CheckState;
773
+ lightChecks: CheckState;
774
+ detailsChecks: CheckState;
775
+ expanded: {
776
+ color: boolean;
777
+ light: boolean;
778
+ details: boolean;
779
+ };
780
+ onCopyEdit: () => void;
781
+ onParentChange: (event: React$1.ChangeEvent<HTMLInputElement>, setter: React$1.Dispatch<React$1.SetStateAction<any>>) => void;
782
+ onChildChange: (event: React$1.ChangeEvent<HTMLInputElement>, setter: React$1.Dispatch<React$1.SetStateAction<any>>) => void;
783
+ onToggleExpand: (section: 'color' | 'light' | 'details') => void;
784
+ setColorChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
785
+ setLightChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
786
+ setDetailsChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
787
+ }
788
+ declare function HDialogCopy(props: Props$d): react_jsx_runtime.JSX.Element;
789
+ interface PropsPreset {
790
+ colorChecks: CheckState;
791
+ lightChecks: CheckState;
792
+ detailsChecks: CheckState;
793
+ expanded: {
794
+ color: boolean;
795
+ light: boolean;
796
+ details: boolean;
797
+ };
798
+ onParentChange: (event: React$1.ChangeEvent<HTMLInputElement>, setter: React$1.Dispatch<React$1.SetStateAction<any>>) => void;
799
+ onChildChange: (event: React$1.ChangeEvent<HTMLInputElement>, setter: React$1.Dispatch<React$1.SetStateAction<any>>) => void;
800
+ onToggleExpand: (section: 'color' | 'light' | 'details') => void;
801
+ setColorChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
802
+ setLightChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
803
+ setDetailsChecks: React$1.Dispatch<React$1.SetStateAction<any>>;
804
+ descriptionOnCopy?: string;
805
+ }
806
+ declare function HDialogPreset(propsPreset: PropsPreset): react_jsx_runtime.JSX.Element;
807
+
808
+ type Preset$2 = {
809
+ id: string;
810
+ name: string;
811
+ };
812
+ interface Props$c {
813
+ presets: Preset$2[];
814
+ activePanel: string;
815
+ activeSubPanel: string;
816
+ setActivePanel: (tab: string) => void;
817
+ setActiveSubPanel: (subTab: string) => void;
818
+ activeTab: string;
819
+ innerRef?: React$1.Ref<HTMLDivElement>;
820
+ panelRef: React$1.RefObject<HTMLDivElement>;
821
+ contentRef: React$1.RefObject<HTMLDivElement | null>;
822
+ panelHeight: number;
823
+ handleDragStart: (e: React$1.MouseEvent | React$1.TouchEvent) => void;
824
+ onContentHeightChange: (height: number) => void;
825
+ tempScore: number;
826
+ tintScore: number;
827
+ vibranceScore: number;
828
+ saturationScore: number;
829
+ exposureScore: number;
830
+ highlightsScore: number;
831
+ shadowScore: number;
832
+ whiteScore: number;
833
+ blackScore: number;
834
+ contrastScore: number;
835
+ clarityScore: number;
836
+ sharpnessScore: number;
837
+ onTempChange: (field: keyof AdjustmentState, value: number) => void;
838
+ onTintChange: (field: keyof AdjustmentState, value: number) => void;
839
+ onVibranceChange: (field: keyof AdjustmentState, value: number) => void;
840
+ onSaturationChange: (field: keyof AdjustmentState, value: number) => void;
841
+ onExposureChange: (field: keyof AdjustmentState, value: number) => void;
842
+ onHighlightsChange: (field: keyof AdjustmentState, value: number) => void;
843
+ onShadowsChange: (field: keyof AdjustmentState, value: number) => void;
844
+ onWhitesChange: (field: keyof AdjustmentState, value: number) => void;
845
+ onBlacksChange: (field: keyof AdjustmentState, value: number) => void;
846
+ onContrastChange: (field: keyof AdjustmentState, value: number) => void;
847
+ onClarityChange: (field: keyof AdjustmentState, value: number) => void;
848
+ onSharpnessChange: (field: keyof AdjustmentState, value: number) => void;
849
+ isBatchMode: boolean;
850
+ onDragStart: () => void;
851
+ onDragEnd: () => void;
852
+ selectedPreset: string | null;
853
+ onSelectPreset: (id: string) => void;
854
+ onOpenPresetModal: () => void;
855
+ presetOptionModal: (event: React$1.MouseEvent<HTMLElement>, presetId: string) => void;
856
+ }
857
+ declare function HImageEditorMobile(props: Props$c): react_jsx_runtime.JSX.Element;
858
+
859
+ interface Props$b {
860
+ activePanel: string;
861
+ isPanelOpen: boolean;
862
+ anchorElZoom: null | HTMLElement;
863
+ children: React$1.ReactNode;
864
+ footer: React$1.ReactNode;
865
+ setActivePanel: (accordion: string) => void;
866
+ onScale: (event: React$1.MouseEvent<HTMLElement>) => void;
867
+ onBeforeAfter: () => void;
868
+ onZoomMenuClose: () => void;
869
+ onZoomAction: (zoomLevel: string) => void;
870
+ }
871
+ declare function HImageEditorDesktop(props: Props$b): react_jsx_runtime.JSX.Element;
872
+
873
+ interface Props$a {
874
+ activePanel: string;
875
+ isPanelOpen: boolean;
876
+ anchorElZoom: null | HTMLElement;
877
+ children: React$1.ReactNode;
878
+ footer: React$1.ReactNode;
879
+ setActivePanel: (accordion: string) => void;
880
+ onScale: (event: React$1.MouseEvent<HTMLElement>) => void;
881
+ onBeforeAfter: () => void;
882
+ onZoomMenuClose: () => void;
883
+ onZoomAction: (zoomLevel: string) => void;
884
+ }
885
+ declare function HImageEditorBulkDekstop(props: Props$a): react_jsx_runtime.JSX.Element;
886
+
887
+ type Preset$1 = {
888
+ id: string;
889
+ name: string;
890
+ };
891
+ interface Props$9 {
892
+ presets: Preset$1[];
893
+ activePanel: string;
894
+ activeSubPanel: string;
895
+ setActivePanel: (tab: string) => void;
896
+ setActiveSubPanel: (subTab: string) => void;
897
+ panelRef: React$1.RefObject<HTMLDivElement>;
898
+ contentRef: React$1.RefObject<HTMLDivElement | null>;
899
+ panelHeight: number;
900
+ handleDragStart: (e: React$1.MouseEvent | React$1.TouchEvent) => void;
901
+ onContentHeightChange: (height: number) => void;
902
+ onTempDecreaseMax: () => void;
903
+ onTempDecrease: () => void;
904
+ onTempIncrease: () => void;
905
+ onTempIncreaseMax: () => void;
906
+ onTintDecreaseMax: () => void;
907
+ onTintDecrease: () => void;
908
+ onTintIncrease: () => void;
909
+ onTintIncreaseMax: () => void;
910
+ onVibranceDecreaseMax: () => void;
911
+ onVibranceDecrease: () => void;
912
+ onVibranceIncrease: () => void;
913
+ onVibranceIncreaseMax: () => void;
914
+ onSaturationDecreaseMax: () => void;
915
+ onSaturationDecrease: () => void;
916
+ onSaturationIncrease: () => void;
917
+ onSaturationIncreaseMax: () => void;
918
+ onExposureDecreaseMax: () => void;
919
+ onExposureDecrease: () => void;
920
+ onExposureIncrease: () => void;
921
+ onExposureIncreaseMax: () => void;
922
+ onContrastDecreaseMax: () => void;
923
+ onContrastDecrease: () => void;
924
+ onContrastIncrease: () => void;
925
+ onContrastIncreaseMax: () => void;
926
+ onHighlightsDecreaseMax: () => void;
927
+ onHighlightsDecrease: () => void;
928
+ onHighlightsIncrease: () => void;
929
+ onHighlightsIncreaseMax: () => void;
930
+ onShadowsDecreaseMax: () => void;
931
+ onShadowsDecrease: () => void;
932
+ onShadowsIncrease: () => void;
933
+ onShadowsIncreaseMax: () => void;
934
+ onWhitesDecreaseMax: () => void;
935
+ onWhitesDecrease: () => void;
936
+ onWhitesIncrease: () => void;
937
+ onWhitesIncreaseMax: () => void;
938
+ onBlacksDecreaseMax: () => void;
939
+ onBlacksDecrease: () => void;
940
+ onBlacksIncrease: () => void;
941
+ onBlacksIncreaseMax: () => void;
942
+ onClarityDecreaseMax: () => void;
943
+ onClarityDecrease: () => void;
944
+ onClarityIncrease: () => void;
945
+ onClarityIncreaseMax: () => void;
946
+ onSharpnessDecreaseMax: () => void;
947
+ onSharpnessDecrease: () => void;
948
+ onSharpnessIncrease: () => void;
949
+ onSharpnessIncreaseMax: () => void;
950
+ selectedPresetBulk: string;
951
+ onSelectPresetBulk: (event: SelectChangeEvent<string>) => void;
952
+ onPresetMenuClickBulk: (event: React$1.MouseEvent<HTMLElement>, presetId: string) => void;
953
+ onOpenPresetModalBulk: () => void;
954
+ }
955
+ declare function HImageEditorBulkMobile(props: Props$9): react_jsx_runtime.JSX.Element;
956
+
957
+ interface Props$8 {
958
+ onTempDecreaseMax: () => void;
959
+ onTempDecrease: () => void;
960
+ onTempIncrease: () => void;
961
+ onTempIncreaseMax: () => void;
962
+ onTintDecreaseMax: () => void;
963
+ onTintDecrease: () => void;
964
+ onTintIncrease: () => void;
965
+ onTintIncreaseMax: () => void;
966
+ onVibranceDecreaseMax: () => void;
967
+ onVibranceDecrease: () => void;
968
+ onVibranceIncrease: () => void;
969
+ onVibranceIncreaseMax: () => void;
970
+ onSaturationDecreaseMax: () => void;
971
+ onSaturationDecrease: () => void;
972
+ onSaturationIncrease: () => void;
973
+ onSaturationIncreaseMax: () => void;
974
+ onExposureDecreaseMax: () => void;
975
+ onExposureDecrease: () => void;
976
+ onExposureIncrease: () => void;
977
+ onExposureIncreaseMax: () => void;
978
+ onContrastDecreaseMax: () => void;
979
+ onContrastDecrease: () => void;
980
+ onContrastIncrease: () => void;
981
+ onContrastIncreaseMax: () => void;
982
+ onHighlightsDecreaseMax: () => void;
983
+ onHighlightsDecrease: () => void;
984
+ onHighlightsIncrease: () => void;
985
+ onHighlightsIncreaseMax: () => void;
986
+ onShadowsDecreaseMax: () => void;
987
+ onShadowsDecrease: () => void;
988
+ onShadowsIncrease: () => void;
989
+ onShadowsIncreaseMax: () => void;
990
+ onWhitesDecreaseMax: () => void;
991
+ onWhitesDecrease: () => void;
992
+ onWhitesIncrease: () => void;
993
+ onWhitesIncreaseMax: () => void;
994
+ onBlacksDecreaseMax: () => void;
995
+ onBlacksDecrease: () => void;
996
+ onBlacksIncrease: () => void;
997
+ onBlacksIncreaseMax: () => void;
998
+ onClarityDecreaseMax: () => void;
999
+ onClarityDecrease: () => void;
1000
+ onClarityIncrease: () => void;
1001
+ onClarityIncreaseMax: () => void;
1002
+ onSharpnessDecreaseMax: () => void;
1003
+ onSharpnessDecrease: () => void;
1004
+ onSharpnessIncrease: () => void;
1005
+ onSharpnessIncreaseMax: () => void;
1006
+ expandedPanels: string[];
1007
+ onPanelChange: (panel: string) => (event: React$1.SyntheticEvent, isExpanded: boolean) => void;
1008
+ }
1009
+ declare function HBulkAccordionColorAdjustment(props: Props$8): react_jsx_runtime.JSX.Element;
1010
+
1011
+ type Preset = {
1012
+ id: string;
1013
+ name: string;
1014
+ };
1015
+ interface Props$7 {
1016
+ presets: Preset[];
1017
+ selectedPreset: string;
1018
+ expandedPanels: string[];
1019
+ presetMenuAnchorEl: null | HTMLElement;
1020
+ activePresetMenuId: string | null;
1021
+ isMenuOpen: boolean;
1022
+ onPanelChange: (panel: string) => (event: React$1.SyntheticEvent, isExpanded: boolean) => void;
1023
+ onSelectPreset: (event: SelectChangeEvent<string>) => void;
1024
+ onPresetMenuClick: (event: React$1.MouseEvent<HTMLElement>, presetId: string) => void;
1025
+ onPresetMenuClose: () => void;
1026
+ onRemovePreset: () => void;
1027
+ onRenamePreset: () => void;
1028
+ onDeletePreset: () => void;
1029
+ onOpenPresetModal: () => void;
1030
+ }
1031
+ declare function HBulkPreset(props: Props$7): react_jsx_runtime.JSX.Element;
1032
+
1033
+ interface Props$6 {
1034
+ modalName: string;
1035
+ modalOpen: boolean;
1036
+ modalTitle: string;
1037
+ modalInformation: string;
1038
+ children: React$1.ReactNode;
1039
+ action?: React$1.ReactNode;
1040
+ modalClose: () => void;
1041
+ onConfirm: () => void;
1042
+ }
1043
+ declare function HModalEditorDekstop(props: Props$6): react_jsx_runtime.JSX.Element;
1044
+
1045
+ interface Props$5 {
1046
+ valueName: string;
1047
+ setName: (event: React$1.ChangeEvent<HTMLInputElement>) => void;
1048
+ }
1049
+ declare function HTextField(props: Props$5): react_jsx_runtime.JSX.Element;
1050
+ interface PropsRename {
1051
+ valueName: string;
1052
+ setName: (event: React$1.ChangeEvent<HTMLInputElement>) => void;
1053
+ onSaveRenamePreset: () => void;
1054
+ onCancel: () => void;
1055
+ }
1056
+ declare function HTextFieldRename(props: PropsRename): react_jsx_runtime.JSX.Element;
1057
+
1058
+ interface Props$4 {
1059
+ onSaveWatermark: () => void;
1060
+ onCancelWatermark: () => void;
1061
+ }
1062
+ declare function HWatermarkView(props: Props$4): react_jsx_runtime.JSX.Element;
1063
+
1064
+ interface Props$3 {
1065
+ modalName: string;
1066
+ modalOpen: boolean;
1067
+ modalTitle: string;
1068
+ modalInformation?: string;
1069
+ children: React$1.ReactNode;
1070
+ action?: React$1.ReactNode;
1071
+ modalClose: () => void;
1072
+ onConfirm: () => void;
1073
+ }
1074
+ declare function HModalMobile(props: Props$3): react_jsx_runtime.JSX.Element;
1075
+
1076
+ interface Props$2 {
1077
+ anchorEl: null | HTMLElement;
1078
+ isOpen: boolean;
1079
+ onClose: () => void;
1080
+ onRename: () => void;
1081
+ onDelete: () => void;
1082
+ }
1083
+ declare function HPresetOptionsMenu(props: Props$2): react_jsx_runtime.JSX.Element;
1084
+
1085
+ declare function HAlertInternetBox(): react_jsx_runtime.JSX.Element;
1086
+ declare function HAlertCopyBox(): react_jsx_runtime.JSX.Element;
1087
+ interface InternetConProps {
1088
+ onClose: () => void;
1089
+ }
1090
+ declare function HAlertInternetConnectionBox(props: InternetConProps): react_jsx_runtime.JSX.Element;
1091
+ declare function HAlertPresetSave(): react_jsx_runtime.JSX.Element;
1092
+
1093
+ interface ImageGalleryProps {
1094
+ imageCollection: PhotoData[];
1095
+ onToggleSelect: (photo: PhotoData) => void;
1096
+ }
1097
+ declare const AlbumImageGallery: React$1.FC<ImageGalleryProps>;
1098
+
1099
+ interface Props$1 {
1100
+ margin?: any;
1101
+ index: number;
1102
+ data: PhotoData;
1103
+ direction: "row" | "column";
1104
+ onToggleSelect: () => void;
1105
+ }
1106
+ declare const GalleryImageItem: (props: Props$1) => react_jsx_runtime.JSX.Element;
1107
+
1108
+ interface EditorTask$1 {
1109
+ id: string;
1110
+ path: string;
1111
+ frame: string | null;
1112
+ adjustments?: Partial<AdjustmentValues>;
1113
+ priority?: number;
1114
+ abortSignal?: AbortSignal;
1115
+ }
1116
+ interface EditorResponse$1 {
1117
+ id: string;
1118
+ path: string;
1119
+ }
1120
+ declare class EditorProcessingService {
1121
+ private processingQueue;
1122
+ private isProcessing;
1123
+ private processImage?;
1124
+ private pendingProcessingTimeout?;
1125
+ private statusChangeListeners;
1126
+ constructor();
1127
+ setProcessor(processImage: (task: EditorTask$1) => Promise<EditorResponse$1>): void;
1128
+ addStatusChangeListener(listener: () => void): void;
1129
+ removeStatusChangeListener(listener: () => void): void;
1130
+ private notifyStatusChange;
1131
+ requestProcessing(task: EditorTask$1): Promise<EditorResponse$1>;
1132
+ private scheduleProcessing;
1133
+ private processQueue;
1134
+ private removeFromQueue;
1135
+ getQueueStatus(): {
1136
+ queueLength: number;
1137
+ isProcessing: boolean;
1138
+ hasProcessor: boolean;
1139
+ };
1140
+ clearQueue(): void;
1141
+ cleanup(): void;
1142
+ }
1143
+
1144
+ interface EditorContextValue {
1145
+ isReady: boolean;
1146
+ error: Error | null;
1147
+ processingService: EditorProcessingService;
1148
+ queueStatus: {
1149
+ queueLength: number;
1150
+ isProcessing: boolean;
1151
+ hasProcessor: boolean;
1152
+ };
1153
+ editor: HonchoEditor | null;
1154
+ loadImageFromUrl: ((url: string) => Promise<{
1155
+ width: number;
1156
+ height: number;
1157
+ }>) | null;
1158
+ }
1159
+ interface EditorProviderProps {
1160
+ children: React$1.ReactNode;
1161
+ /** URL to the honcho-photo-editor.js script (defaults to '/honcho-photo-editor.js') */
1162
+ scriptUrl?: string;
1163
+ /** URL to the honcho-photo-editor.wasm file (defaults to '/honcho-photo-editor.wasm') */
1164
+ wasmUrl?: string;
1165
+ }
1166
+ declare const EditorProvider: React$1.FC<EditorProviderProps>;
1167
+ declare const useEditorContext: () => EditorContextValue;
1168
+
1169
+ interface UseImageProcessorProps {
1170
+ photoId: string;
1171
+ photoSrc: string;
1172
+ enableEditor?: boolean;
1173
+ adjustments?: Partial<AdjustmentValues>;
1174
+ frame?: string | null;
1175
+ priority?: 'high' | 'low';
1176
+ abortSignal?: AbortSignal;
1177
+ }
1178
+ interface UseImageProcessorReturn {
1179
+ processedImageSrc: string;
1180
+ isProcessingComplete: boolean;
1181
+ cancelProcessing: () => void;
1182
+ isProcessing: boolean;
1183
+ }
1184
+ declare function useImageProcessor({ photoId, photoSrc, enableEditor, adjustments, frame, priority, abortSignal, }: UseImageProcessorProps): UseImageProcessorReturn;
1185
+
1186
+ declare global {
1187
+ interface Window {
1188
+ HonchoEditor: new () => any;
1189
+ HonchoEditorUtils: {
1190
+ imageDataToBlob: (imageData: ImageData, format?: string, quality?: number) => Promise<Blob>;
1191
+ };
1192
+ }
1193
+ }
1194
+ interface EditorTask {
1195
+ id: string;
1196
+ path: string;
1197
+ frame: string | null;
1198
+ adjustments?: Partial<AdjustmentValues>;
1199
+ }
1200
+ interface EditorResponse {
1201
+ id: string;
1202
+ path: string;
1203
+ }
1204
+ interface UseEditorHeadlessOptions {
1205
+ scriptUrl?: string;
1206
+ wasmUrl?: string;
1207
+ }
1208
+ declare function useEditorHeadless(options?: UseEditorHeadlessOptions): {
1209
+ editor: HonchoEditor | null;
1210
+ isReady: boolean;
1211
+ error: Error | null;
1212
+ processImage: (task: EditorTask) => Promise<EditorResponse>;
1213
+ loadImageFromUrl: (url: string) => Promise<{
1214
+ width: number;
1215
+ height: number;
1216
+ }>;
1217
+ };
1218
+
1219
+ interface Props {
1220
+ isLoading: boolean;
1221
+ onCancel: () => void;
1222
+ onSubmit: () => void;
1223
+ }
1224
+ declare function HPresetDeleteDialog(props: Props): react_jsx_runtime.JSX.Element;
1225
+
1226
+ interface ModalDialogProps {
1227
+ isOpen: boolean;
1228
+ isLoading?: boolean;
1229
+ title?: string;
1230
+ description?: string;
1231
+ onCancel: () => void;
1232
+ onSubmit: () => void;
1233
+ cancelLabel?: string;
1234
+ submitLabel?: string;
1235
+ }
1236
+ declare function ModalDialog(props: ModalDialogProps): react_jsx_runtime.JSX.Element;
1237
+
1238
+ interface ModalRenameProps {
1239
+ isOpen: boolean;
1240
+ title?: string;
1241
+ description?: string;
1242
+ action?: React.ReactNode;
1243
+ onCancel: () => void;
1244
+ onSubmit: () => void;
1245
+ cancelLabel?: string;
1246
+ submitLabel?: string;
1247
+ valueName: string;
1248
+ setName: (event: React.ChangeEvent<HTMLInputElement>) => void;
1249
+ }
1250
+ declare function ModalRename(props: ModalRenameProps): react_jsx_runtime.JSX.Element;
1251
+
1252
+ /**
1253
+ * Configuration options for the adjustment history hook
1254
+ */
1255
+ interface HistoryOptions {
1256
+ /** Maximum number of history entries to keep. Use 'unlimited' for no limit */
1257
+ maxSize?: number | 'unlimited';
1258
+ /** Whether to enable batch mode for grouping multiple changes */
1259
+ enableBatching?: boolean;
1260
+ /** Enable development warnings for performance issues */
1261
+ devWarnings?: boolean;
1262
+ }
1263
+ /**
1264
+ * Information about the current history state
1265
+ */
1266
+ interface HistoryInfo {
1267
+ /** Whether undo operation is available */
1268
+ canUndo: boolean;
1269
+ /** Whether redo operation is available */
1270
+ canRedo: boolean;
1271
+ /** Current position in history (0-based index) */
1272
+ currentIndex: number;
1273
+ /** Total number of states in history */
1274
+ totalStates: number;
1275
+ /** Current size of history in memory */
1276
+ historySize: number;
1277
+ /** Whether batch mode is currently active */
1278
+ isBatchMode: boolean;
1279
+ }
1280
+ /**
1281
+ * Actions available for history management
1282
+ */
1283
+ interface HistoryActions {
1284
+ /** Add a new adjustment state to history */
1285
+ pushState: (state: AdjustmentState) => void;
1286
+ /** Undo to previous adjustment state */
1287
+ undo: () => void;
1288
+ /** Redo to next adjustment state */
1289
+ redo: () => void;
1290
+ /** Jump to specific index in history */
1291
+ jumpToIndex: (index: number) => void;
1292
+ /** Clear all history and start fresh */
1293
+ clearHistory: () => void;
1294
+ /** Get a copy of the entire history array */
1295
+ getHistory: () => AdjustmentState[];
1296
+ /** Trim history to specified size, keeping most recent entries */
1297
+ trimHistory: (keepLast: number) => void;
1298
+ /** Sync history from backend using getEditorHistory */
1299
+ syncFromBackend: () => Promise<void>;
1300
+ }
1301
+ /**
1302
+ * Configuration actions for runtime adjustment
1303
+ */
1304
+ interface HistoryConfig {
1305
+ /** Set maximum history size */
1306
+ setMaxSize: (size: number | 'unlimited') => void;
1307
+ /** Enable or disable batch mode */
1308
+ setBatchMode: (enabled: boolean, forceHistory?: boolean) => Promise<void>;
1309
+ /** Get current memory usage estimate */
1310
+ getMemoryUsage: () => number;
1311
+ }
1312
+ /**
1313
+ * Return type for the useAdjustmentHistory hook
1314
+ */
1315
+ interface UseAdjustmentHistoryReturn {
1316
+ /** Current adjustment state value */
1317
+ currentState: AdjustmentState;
1318
+ /** Current index in history */
1319
+ currentIndex: number;
1320
+ /** Information about history state */
1321
+ historyInfo: HistoryInfo;
1322
+ /** Available history actions */
1323
+ actions: HistoryActions;
1324
+ /** Configuration options */
1325
+ config: HistoryConfig;
1326
+ }
1327
+ /**
1328
+ * Advanced hook for managing AdjustmentState history with undo/redo functionality.
1329
+ *
1330
+ * Features:
1331
+ * - Unlimited or configurable history size
1332
+ * - Batch mode for grouping multiple changes into single undo operations
1333
+ * - Memory usage monitoring and optimization
1334
+ * - Internal stabilization to prevent re-render issues
1335
+ * - Jump to any point in history
1336
+ * - Automatic AdjustmentState comparison
1337
+ *
1338
+ * @param initialState - The initial AdjustmentState value
1339
+ * @param controller - Controller for backend operations (optional)
1340
+ * @param firebaseUid - Firebase UID for backend operations (optional)
1341
+ * @param currentImageId - Current image ID for backend operations (optional)
1342
+ * @param options - Configuration options for history behavior
1343
+ * @returns Object with current state, history info, actions, and config
1344
+ */
1345
+ declare function useAdjustmentHistory(initialState: AdjustmentState, controller?: Controller, firebaseUid?: string, currentImageId?: string, options?: HistoryOptions): UseAdjustmentHistoryReturn;
1346
+
1347
+ /**
1348
+ * Configuration options for the paging hook
1349
+ */
1350
+ interface PagingOptions {
1351
+ /** Enable development warnings for debugging */
1352
+ devWarnings?: boolean;
1353
+ /** Auto-load first page on hook initialization */
1354
+ autoLoad?: boolean;
1355
+ /** Reset pagination when dependencies change */
1356
+ autoReset?: boolean;
1357
+ }
1358
+ /**
1359
+ * Information about the current paging state
1360
+ */
1361
+ interface PagingInfo {
1362
+ /** Whether images are currently being loaded */
1363
+ isLoading: boolean;
1364
+ /** Whether more pages are being loaded */
1365
+ isLoadingMore: boolean;
1366
+ /** Error message if any operation failed */
1367
+ error: string | null;
1368
+ /** Current page number */
1369
+ currentPage: number;
1370
+ /** Whether there are more pages to load */
1371
+ hasMore: boolean;
1372
+ /** Total number of images loaded */
1373
+ totalImages: number;
1374
+ /** Whether the hook has been initialized */
1375
+ isInitialized: boolean;
1376
+ }
1377
+ /**
1378
+ * Actions available for paging management
1379
+ */
1380
+ interface PagingActions {
1381
+ /** Load more images (next page) - only one instance can run at a time */
1382
+ loadMore: () => Promise<void>;
1383
+ /** Refresh/reload from first page */
1384
+ refresh: () => Promise<void>;
1385
+ /** Reset pagination state */
1386
+ reset: () => void;
1387
+ }
1388
+ /**
1389
+ * Return type for the usePaging hook
1390
+ */
1391
+ interface UsePagingReturn {
1392
+ /** Current list of images */
1393
+ images: Gallery[];
1394
+ /** Information about paging state */
1395
+ info: PagingInfo;
1396
+ /** Available paging actions */
1397
+ actions: PagingActions;
1398
+ }
1399
+ /**
1400
+ * Hook for managing paginated image loading with ControllerBulk.
1401
+ *
1402
+ * **Key Features:**
1403
+ * - **Paginated Loading**: Handles page-by-page image loading
1404
+ * - **State Management**: Maintains image list and pagination state
1405
+ * - **Load More**: Seamlessly loads and appends next pages
1406
+ * - **Mutation**: Update specific images without full reload
1407
+ * - **Error Handling**: Provides error states for failed operations
1408
+ * - **Auto-loading**: Optional automatic first page loading
1409
+ *
1410
+ * **Typical Usage:**
1411
+ * ```typescript
1412
+ * const { images, info, actions } = usePaging(controller, firebaseUid, eventId, {
1413
+ * autoLoad: true,
1414
+ * autoReset: true
1415
+ * });
1416
+ *
1417
+ * // Load more images
1418
+ * await actions.loadMore();
1419
+ *
1420
+ * // Refresh from beginning
1421
+ * await actions.refresh();
1422
+ *
1423
+ * // Update specific image
1424
+ * actions.mutateImage(imageId, (img) => ({ ...img, isSelected: true }));
1425
+ * ```
1426
+ *
1427
+ * @param controller - Backend controller for API communication
1428
+ * @param firebaseUid - User identifier for backend operations
1429
+ * @param eventId - Event identifier for image list
1430
+ * @param options - Configuration options
1431
+ * @returns Object with images, info, and actions
1432
+ */
1433
+ declare function usePaging(controller: Controller | null, firebaseUid: string, eventId: string, options?: PagingOptions): UsePagingReturn;
1434
+
1435
+ interface Colors {
1436
+ onSurface: string;
1437
+ surface: string;
1438
+ onSurfaceVariant: string;
1439
+ onSurfaceVariant1: string;
1440
+ outlineVariant: string;
1441
+ error: string;
1442
+ onBackground: string;
1443
+ background: string;
1444
+ }
1445
+ declare function useColors(): Colors;
1446
+
1447
+ interface HonchoTypography {
1448
+ displayLarge: FontStyle;
1449
+ displayMedium: FontStyle;
1450
+ displaySmall: FontStyle;
1451
+ headlineLarge: FontStyle;
1452
+ headlineMedium: FontStyle;
1453
+ headlineSmall: FontStyle;
1454
+ titleLarge: FontStyle;
1455
+ titleMedium: FontStyle;
1456
+ titleSmall: FontStyle;
1457
+ bodyLarge: FontStyle;
1458
+ bodyMedium: FontStyle;
1459
+ bodySmall: FontStyle;
1460
+ labelLarge: FontStyle;
1461
+ labelMedium: FontStyle;
1462
+ labelSmall: FontStyle;
1463
+ }
1464
+ interface FontStyle {
1465
+ fontSize: number;
1466
+ lineHeight: string;
1467
+ fontWeight: number;
1468
+ letterSpacing: string;
1469
+ }
1470
+ declare function useHonchoTypography(): HonchoTypography;
1471
+
1472
+ declare function useIsMobile(): boolean;
1473
+
1474
+ export { type AdjustmentRange, type AdjustmentRanges, type AdjustmentState, type AdjustmentValues, AlbumImageGallery, type BatchAdjustmentState, type BatchHistoryActions, type BatchHistoryConfig, type BatchHistoryInfo, type ColorAdjustment, type Content, type Controller, type CreateEditorTaskRequest, type EditorHistoryEntry, EditorProvider, type Gallery, GalleryImageItem, type GetGalleryUpdateTimestampResponse, type GetHistoryResponse, HAccordionColorAdjustment, HAccordionPreset, HAlertCopyBox, HAlertInternetBox, HAlertInternetConnectionBox, HAlertPresetSave, HBaseDialog, HBulkAccordionColorAdjustment, HBulkPreset, HDialogCopy, HDialogForPreset, HDialogPreset, HFooter, HHeaderEditor, HImageEditorBulkDekstop, HImageEditorBulkMobile, HImageEditorDesktop, HImageEditorMobile, ModalDialog as HModalDialog, HModalEditorDekstop, HModalMobile, ModalRename as HModalRename, HPresetDeleteDialog, HPresetOptionsMenu, HTextField, HTextFieldRename, HWatermarkView, type HistoryActions, type HistoryConfig, type HistoryInfo, HonchoEditor, type ImageAdjustmentConfig, type ImageItem, type ImageSize, type PagingActions, type PagingInfo, type PagingOptions, type PhotoData, type Preset$4 as Preset, type PresetActions, type PresetInfo, type PresetOptions, type UseAdjustmentHistoryBatchReturn, type UseAdjustmentHistoryReturn, type UsePagingReturn, type UsePresetReturn, useAdjustmentHistory, useAdjustmentHistoryBatch, useColors, useEditorContext, useEditorHeadless, useHonchoEditorBulk, useHonchoEditorSingle, useHonchoTypography, useImageProcessor, useIsMobile, usePaging, usePreset };