@imgly/plugin-ai-image-generation-web 0.2.3 → 0.2.5
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.
- package/CHANGELOG.md +24 -0
- package/README.md +328 -2
- package/dist/fal-ai/IdeogramV3.constants.d.ts +8 -0
- package/dist/fal-ai/IdeogramV3.d.ts +22 -0
- package/dist/fal-ai/IdeogramV3Remix.constants.d.ts +8 -0
- package/dist/fal-ai/IdeogramV3Remix.d.ts +23 -0
- package/dist/fal-ai/NanoBanana.d.ts +13 -0
- package/dist/fal-ai/NanoBananaEdit.d.ts +13 -0
- package/dist/fal-ai/RecraftV3.constants.d.ts +2 -2
- package/dist/fal-ai/RecraftV3.d.ts +5 -5
- package/dist/fal-ai/createFalClient.d.ts +3 -0
- package/dist/fal-ai/createImageProvider.d.ts +14 -1
- package/dist/fal-ai/index.d.ts +11 -3
- package/dist/fal-ai/index.mjs +10 -10
- package/dist/fal-ai/index.mjs.map +4 -4
- package/dist/fal-ai/utils.d.ts +3 -1
- package/dist/index.mjs +9 -9
- package/dist/index.mjs.map +4 -4
- package/dist/open-ai/index.mjs +3 -3
- package/dist/open-ai/index.mjs.map +4 -4
- package/dist/open-ai/quickActions/ChangeStyleLibrary.d.ts +1 -1
- package/dist/quickActions/ArtistTransfer.d.ts +2 -1
- package/dist/quickActions/CombineImages.d.ts +2 -1
- package/dist/quickActions/CreateVariant.d.ts +2 -1
- package/dist/quickActions/EditImage.d.ts +2 -1
- package/dist/quickActions/RemixPage.d.ts +2 -1
- package/dist/quickActions/RemixPageWithPrompt.d.ts +2 -1
- package/dist/quickActions/StyleTransfer.d.ts +2 -1
- package/dist/quickActions/SwapBackground.d.ts +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.2.5] - 2025-09-03
|
|
6
|
+
|
|
7
|
+
### New Features
|
|
8
|
+
|
|
9
|
+
- [image-generation] **NanoBanana Provider**: Added NanoBanana text-to-image provider via fal.ai with fast generation times, 1024×1024 resolution, support for multiple output formats (JPEG, PNG), configurable number of images (1-4), and remixPageWithPrompt quick action
|
|
10
|
+
- [image-generation] **NanoBananaEdit Provider**: Added NanoBananaEdit image-to-image provider via fal.ai for editing existing images with text prompts, supporting all standard quick actions (editImage, swapBackground, styleTransfer, artistTransfer, createVariant, combineImages with up to 10 images, remixPage, remixPageWithPrompt)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- [all] **fal.ai Provider Configuration**: Fixed singleton configuration conflict when using multiple fal.ai providers with different proxy URLs. Each provider now maintains its own client instance instead of overwriting a global configuration
|
|
15
|
+
- [video-generation] **Missing Dependency**: Added missing `@fal-ai/client` dependency to plugin-ai-video-generation-web package.json to ensure the package works correctly when installed independently
|
|
16
|
+
|
|
17
|
+
## [0.2.4] - 2025-08-07
|
|
18
|
+
|
|
19
|
+
### New Features
|
|
20
|
+
|
|
21
|
+
- [all] **Provider Label Translations**: Added support for provider label translations
|
|
22
|
+
- [all] **Extended Provider Configuration**: Added support for `history` and `supportedQuickActions` configuration fields in `CommonProviderConfiguration`, allowing customers to:
|
|
23
|
+
- Override provider's default history asset source (`history` field) - can be set to `false` to disable history, `'@imgly/local'` for temporary storage, `'@imgly/indexedDB'` for persistent browser storage, or any custom asset source ID
|
|
24
|
+
- Configure supported quick actions (`supportedQuickActions` field) - can disable quick actions by setting to `false`/`null`, keep defaults with `true`, or override with custom mappings and configurations
|
|
25
|
+
- Both fields are optional and maintain backward compatibility with existing provider configurations
|
|
26
|
+
- [generation-web] **Utility Function**: Added `mergeQuickActionsConfig` utility function for merging provider defaults with user configuration overrides, exported from `@imgly/plugin-ai-generation-web` with comprehensive Jest test coverage
|
|
27
|
+
|
|
5
28
|
## [0.2.3] - 2025-07-23
|
|
6
29
|
|
|
7
30
|
- [all] **Automatic History Asset Library Entries**: Composite history asset sources now automatically have corresponding asset library entries created with the same IDs (e.g., `ly.img.ai.image-generation.history`)
|
|
8
31
|
- [all] **Provider Selection in Expanded Quick Actions**: When a quick action is expanded, users can now switch between all providers that support that specific quick action, enhancing flexibility in provider selection
|
|
9
32
|
- [all] **Quick Action Can Disable Lock**: Some quick actions can now decide to not lock the block when operating on a block. Examples are `CreateVariant` and `CombineImages`.
|
|
33
|
+
- [image-generation] **Ideogram V3**: Added support for Ideogram V3 provider for image generation, which supports text-to-image and image-to-image generation
|
|
10
34
|
|
|
11
35
|
## [0.2.2] - 2025-07-16
|
|
12
36
|
|
package/README.md
CHANGED
|
@@ -106,6 +106,13 @@ CreativeEditorSDK.create(domElement, {
|
|
|
106
106
|
'x-client-version': '1.0.0'
|
|
107
107
|
}
|
|
108
108
|
}),
|
|
109
|
+
FalAiImage.NanoBanana({
|
|
110
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
111
|
+
headers: {
|
|
112
|
+
'x-custom-header': 'value',
|
|
113
|
+
'x-client-version': '1.0.0'
|
|
114
|
+
}
|
|
115
|
+
}),
|
|
109
116
|
FalAiImage.Recraft20b({
|
|
110
117
|
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
111
118
|
headers: {
|
|
@@ -131,6 +138,13 @@ CreativeEditorSDK.create(domElement, {
|
|
|
131
138
|
'x-client-version': '1.0.0'
|
|
132
139
|
}
|
|
133
140
|
}),
|
|
141
|
+
FalAiImage.NanoBananaEdit({
|
|
142
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
143
|
+
headers: {
|
|
144
|
+
'x-custom-header': 'value',
|
|
145
|
+
'x-client-version': '1.0.0'
|
|
146
|
+
}
|
|
147
|
+
}),
|
|
134
148
|
OpenAiImage.GptImage1.Image2Image({
|
|
135
149
|
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
136
150
|
headers: {
|
|
@@ -173,6 +187,19 @@ Key features:
|
|
|
173
187
|
- Adjustable quality settings
|
|
174
188
|
- Custom headers support for API requests
|
|
175
189
|
|
|
190
|
+
**Custom Translations:**
|
|
191
|
+
```typescript
|
|
192
|
+
cesdk.i18n.setTranslations({
|
|
193
|
+
en: {
|
|
194
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.prompt': 'Your image description',
|
|
195
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.style': 'Art Style',
|
|
196
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.style.realistic_image': 'Photorealistic',
|
|
197
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.style.illustration': 'Illustration',
|
|
198
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.image_size': 'Canvas Size'
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
176
203
|
#### 2. Recraft20b (Text-to-Image)
|
|
177
204
|
|
|
178
205
|
An enhanced text-to-image model from fal.ai with additional icon style support:
|
|
@@ -193,6 +220,19 @@ Key features:
|
|
|
193
220
|
- Three-way style selection (image/vector/icon)
|
|
194
221
|
- Same image size presets and custom dimensions support
|
|
195
222
|
- Cost-effective alternative to RecraftV3
|
|
223
|
+
|
|
224
|
+
**Custom Translations:**
|
|
225
|
+
```typescript
|
|
226
|
+
cesdk.i18n.setTranslations({
|
|
227
|
+
en: {
|
|
228
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft/v2/text-to-image.property.prompt': 'Icon description',
|
|
229
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft/v2/text-to-image.property.style': 'Icon Style',
|
|
230
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft/v2/text-to-image.property.style.icon': 'Standard Icon',
|
|
231
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft/v2/text-to-image.property.style.logo': 'Logo Icon',
|
|
232
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft/v2/text-to-image.property.n_colors': 'Number of Colors'
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
```
|
|
196
236
|
- Custom headers support for API requests
|
|
197
237
|
|
|
198
238
|
#### 3. GptImage1.Text2Image (Text-to-Image)
|
|
@@ -237,6 +277,16 @@ Key features:
|
|
|
237
277
|
- Includes style presets and artist-specific transformations
|
|
238
278
|
- Custom headers support for API requests
|
|
239
279
|
|
|
280
|
+
**Custom Translations:**
|
|
281
|
+
```typescript
|
|
282
|
+
cesdk.i18n.setTranslations({
|
|
283
|
+
en: {
|
|
284
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/gemini-flash-edit.property.prompt': 'Transformation instructions',
|
|
285
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/gemini-flash-edit.property.image_url': 'Source Image'
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
```
|
|
289
|
+
|
|
240
290
|
#### 5. GptImage1.Image2Image (Image-to-Image)
|
|
241
291
|
|
|
242
292
|
OpenAI's GPT-4 Vision based image editing model that can transform existing images:
|
|
@@ -258,7 +308,46 @@ Key features:
|
|
|
258
308
|
- Can be used as a direct alternative to GeminiFlashEdit
|
|
259
309
|
- Custom headers support for API requests
|
|
260
310
|
|
|
261
|
-
#### 5.
|
|
311
|
+
#### 5. IdeogramV3 (Text-to-Image)
|
|
312
|
+
|
|
313
|
+
A high-quality text-to-image model from fal.ai featuring advanced generation capabilities:
|
|
314
|
+
|
|
315
|
+
```typescript
|
|
316
|
+
text2image: FalAiImage.IdeogramV3({
|
|
317
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
318
|
+
headers: {
|
|
319
|
+
'x-custom-header': 'value',
|
|
320
|
+
'x-client-version': '1.0.0'
|
|
321
|
+
}
|
|
322
|
+
})
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Key features:
|
|
326
|
+
- Four distinct style modes: AUTO, GENERAL, REALISTIC, and DESIGN
|
|
327
|
+
- Multiple image size presets: square HD, square, portrait 4:3/16:9, landscape 4:3/16:9
|
|
328
|
+
- Custom dimensions support (64x64 to 14142x14142 pixels)
|
|
329
|
+
|
|
330
|
+
#### 6. IdeogramV3Remix (Image-to-Image)
|
|
331
|
+
|
|
332
|
+
A powerful image remixing model from fal.ai that transforms existing images while preserving core elements:
|
|
333
|
+
|
|
334
|
+
```typescript
|
|
335
|
+
image2image: FalAiImage.IdeogramV3Remix({
|
|
336
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
337
|
+
headers: {
|
|
338
|
+
'x-custom-header': 'value',
|
|
339
|
+
'x-client-version': '1.0.0'
|
|
340
|
+
}
|
|
341
|
+
})
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Key features:
|
|
345
|
+
- **Remix existing images** with text prompts while maintaining core characteristics
|
|
346
|
+
- Four distinct style modes: AUTO, GENERAL, REALISTIC, and DESIGN
|
|
347
|
+
- Multiple image size presets: square HD, square, portrait 4:3/16:9, landscape 4:3/16:9
|
|
348
|
+
- Custom dimensions support (64x64 to 14142x14142 pixels)
|
|
349
|
+
|
|
350
|
+
#### 7. FluxProKontextEdit (Image-to-Image)
|
|
262
351
|
|
|
263
352
|
A versatile image editing model that applies stylistic changes and transformations:
|
|
264
353
|
|
|
@@ -273,7 +362,7 @@ Key features:
|
|
|
273
362
|
- Built-in quick actions for style transfer, artist styles, background swapping, and variants
|
|
274
363
|
- Keeps original image dimensions
|
|
275
364
|
|
|
276
|
-
####
|
|
365
|
+
#### 8. FluxProKontextMaxEdit (Image-to-Image)
|
|
277
366
|
|
|
278
367
|
A high-quality variant of FluxProKontext offering more detailed results:
|
|
279
368
|
|
|
@@ -289,6 +378,191 @@ Key features:
|
|
|
289
378
|
- Maintains original dimensions
|
|
290
379
|
- Canvas quick-action integration
|
|
291
380
|
|
|
381
|
+
#### 9. NanoBanana (Text-to-Image)
|
|
382
|
+
|
|
383
|
+
A fast and efficient text-to-image model from fal.ai that generates high-quality images:
|
|
384
|
+
|
|
385
|
+
```typescript
|
|
386
|
+
text2image: FalAiImage.NanoBanana({
|
|
387
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
388
|
+
headers: {
|
|
389
|
+
'x-custom-header': 'value',
|
|
390
|
+
'x-client-version': '1.0.0'
|
|
391
|
+
}
|
|
392
|
+
})
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Key features:
|
|
396
|
+
- Fast generation times for quick prototyping
|
|
397
|
+
- High-quality image output at 1024×1024 resolution
|
|
398
|
+
- Simple prompt-based interface
|
|
399
|
+
- Support for multiple output formats (JPEG, PNG)
|
|
400
|
+
- Configurable number of images (1-4)
|
|
401
|
+
- Supports page remixing with custom prompts
|
|
402
|
+
- Custom headers support for API requests
|
|
403
|
+
|
|
404
|
+
**Custom Translations:**
|
|
405
|
+
```typescript
|
|
406
|
+
cesdk.i18n.setTranslations({
|
|
407
|
+
en: {
|
|
408
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/nano-banana.property.prompt': 'Describe your image',
|
|
409
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/nano-banana.property.num_images': 'Number of Images',
|
|
410
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/nano-banana.property.output_format': 'Output Format'
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
#### 10. NanoBananaEdit (Image-to-Image)
|
|
416
|
+
|
|
417
|
+
An image editing model from fal.ai that transforms existing images using text prompts:
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
image2image: FalAiImage.NanoBananaEdit({
|
|
421
|
+
proxyUrl: 'http://your-proxy-server.com/api/proxy',
|
|
422
|
+
headers: {
|
|
423
|
+
'x-custom-header': 'value',
|
|
424
|
+
'x-client-version': '1.0.0'
|
|
425
|
+
}
|
|
426
|
+
})
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Key features:
|
|
430
|
+
- Edit existing images with text prompts
|
|
431
|
+
- Supports combining multiple images (up to 10 images)
|
|
432
|
+
- Maintains original image dimensions automatically
|
|
433
|
+
- Supports all standard image editing quick actions
|
|
434
|
+
- Fast processing times
|
|
435
|
+
- Canvas quick-action integration
|
|
436
|
+
- Custom headers support for API requests
|
|
437
|
+
|
|
438
|
+
**Custom Translations:**
|
|
439
|
+
```typescript
|
|
440
|
+
cesdk.i18n.setTranslations({
|
|
441
|
+
en: {
|
|
442
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/nano-banana/edit.property.prompt': 'Edit instructions',
|
|
443
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/nano-banana/edit.property.image_url': 'Source Image'
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### Customizing Labels and Translations
|
|
449
|
+
|
|
450
|
+
You can customize all labels and text in the AI image generation interface using the translation system. This allows you to provide better labels for your users in any language.
|
|
451
|
+
|
|
452
|
+
#### Translation Key Structure
|
|
453
|
+
|
|
454
|
+
The system checks for translations in this order (highest to lowest priority):
|
|
455
|
+
|
|
456
|
+
1. **Provider-specific**: `ly.img.plugin-ai-image-generation-web.${provider}.property.${field}` - Override labels for a specific AI provider
|
|
457
|
+
2. **Generic**: `ly.img.plugin-ai-generation-web.property.${field}` - Override labels for all AI plugins
|
|
458
|
+
|
|
459
|
+
#### Basic Example
|
|
460
|
+
|
|
461
|
+
```typescript
|
|
462
|
+
// Customize labels for your AI image generation interface
|
|
463
|
+
cesdk.i18n.setTranslations({
|
|
464
|
+
en: {
|
|
465
|
+
// Generic labels (applies to ALL AI plugins)
|
|
466
|
+
'ly.img.plugin-ai-generation-web.property.prompt': 'Describe what you want to create',
|
|
467
|
+
'ly.img.plugin-ai-generation-web.property.image_size': 'Image Dimensions',
|
|
468
|
+
|
|
469
|
+
// Provider-specific for RecraftV3
|
|
470
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.prompt': 'Describe your Recraft image',
|
|
471
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.image_size': 'Canvas Size',
|
|
472
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.image_size.square_hd': 'Square HD (1024×1024)',
|
|
473
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/recraft-v3.property.image_size.portrait_4_3': 'Portrait 4:3 (768×1024)',
|
|
474
|
+
|
|
475
|
+
// Provider-specific for IdeogramV3
|
|
476
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/ideogram/v3.property.prompt': 'Describe your Ideogram image',
|
|
477
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/ideogram/v3.property.style_mode': 'Style Mode',
|
|
478
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/ideogram/v3.property.style_mode.REALISTIC': 'Photorealistic'
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
#### QuickAction Translations
|
|
484
|
+
|
|
485
|
+
QuickActions (like "Edit Image", "Style Transfer", etc.) use their own translation keys with provider-specific overrides:
|
|
486
|
+
|
|
487
|
+
```typescript
|
|
488
|
+
cesdk.i18n.setTranslations({
|
|
489
|
+
en: {
|
|
490
|
+
// Provider-specific translations (highest priority)
|
|
491
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/gemini-flash-edit.quickAction.editImage': 'Edit with Gemini',
|
|
492
|
+
'ly.img.plugin-ai-image-generation-web.fal-ai/flux-pro/kontext.quickAction.styleTransfer': 'Style with Flux Pro Kontext',
|
|
493
|
+
'ly.img.plugin-ai-image-generation-web.open-ai/gpt-image-1/image2image.quickAction.editImage': 'Edit with GPT',
|
|
494
|
+
|
|
495
|
+
// Generic plugin translations
|
|
496
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.editImage': 'Edit Image...',
|
|
497
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.swapBackground': 'Swap Background...',
|
|
498
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer': 'Style Transfer...',
|
|
499
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.createVariant': 'Create Variant...',
|
|
500
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer': 'Painted By...',
|
|
501
|
+
|
|
502
|
+
// QuickAction input fields and buttons
|
|
503
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.editImage.prompt': 'Edit Image...',
|
|
504
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.editImage.prompt.placeholder': 'e.g. "Add a sunset"',
|
|
505
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.editImage.apply': 'Change',
|
|
506
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.swapBackground.prompt': 'Swap Background...',
|
|
507
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.swapBackground.prompt.placeholder': 'e.g. "Beach at sunset"',
|
|
508
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.swapBackground.apply': 'Swap'
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**QuickAction Translation Priority:**
|
|
514
|
+
1. Provider-specific: `ly.img.plugin-ai-image-generation-web.${provider}.quickAction.${action}.${field}`
|
|
515
|
+
2. Generic plugin: `ly.img.plugin-ai-image-generation-web.quickAction.${action}.${field}`
|
|
516
|
+
|
|
517
|
+
**Translation Structure:**
|
|
518
|
+
- Base key (e.g., `.quickAction.editImage`): Button text when QuickAction is collapsed
|
|
519
|
+
- `.prompt`: Label for input field when expanded
|
|
520
|
+
- `.prompt.placeholder`: Placeholder text for input field
|
|
521
|
+
- `.apply`: Text for action/submit button
|
|
522
|
+
|
|
523
|
+
#### QuickAction Dropdown Options
|
|
524
|
+
|
|
525
|
+
Some QuickActions like Artist Transfer and Style Transfer include dropdown menus with predefined options. You can customize these dropdown labels using provider-specific translation keys:
|
|
526
|
+
|
|
527
|
+
```typescript
|
|
528
|
+
cesdk.i18n.setTranslations({
|
|
529
|
+
en: {
|
|
530
|
+
// Artist Transfer dropdown options (provider-specific)
|
|
531
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.van-gogh': 'Van Gogh',
|
|
532
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.monet': 'Monet',
|
|
533
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.picasso': 'Picasso',
|
|
534
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.dali': 'Dalí',
|
|
535
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.matisse': 'Matisse',
|
|
536
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.warhol': 'Warhol',
|
|
537
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.michelangelo': 'Michelangelo',
|
|
538
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.da-vinci': 'Da Vinci',
|
|
539
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.rembrandt': 'Rembrandt',
|
|
540
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.mondrian': 'Mondrian',
|
|
541
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.kahlo': 'Frida Kahlo',
|
|
542
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.fal-ai/gemini-flash-edit.property.artist.hokusai': 'Hokusai',
|
|
543
|
+
|
|
544
|
+
// Style Transfer dropdown options (provider-specific)
|
|
545
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.water': 'Watercolor Painting',
|
|
546
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.oil': 'Oil Painting',
|
|
547
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.charcoal': 'Charcoal Sketch',
|
|
548
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.pencil': 'Pencil Drawing',
|
|
549
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.pastel': 'Pastel Artwork',
|
|
550
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.ink': 'Ink Wash',
|
|
551
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.stained-glass': 'Stained Glass Window',
|
|
552
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.fal-ai/gemini-flash-edit.property.style.japanese': 'Japanese Woodblock Print',
|
|
553
|
+
|
|
554
|
+
// Generic fallback options (applies to all providers)
|
|
555
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.artistTransfer.property.artist.van-gogh': 'Van Gogh',
|
|
556
|
+
'ly.img.plugin-ai-image-generation-web.quickAction.styleTransfer.property.style.water': 'Watercolor Painting'
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
The system checks for translations in this order (highest to lowest priority):
|
|
562
|
+
|
|
563
|
+
1. **Provider-specific**: `ly.img.plugin-ai-image-generation-web.quickAction.${actionName}.${providerId}.property.${field}.${option}` - Override labels for a specific AI provider
|
|
564
|
+
2. **Generic**: `ly.img.plugin-ai-image-generation-web.quickAction.${actionName}.property.${field}.${option}` - Override labels for all AI plugins
|
|
565
|
+
|
|
292
566
|
### Configuration Options
|
|
293
567
|
|
|
294
568
|
The plugin accepts the following configuration options:
|
|
@@ -466,6 +740,26 @@ FalAiImage.Recraft20b(config: {
|
|
|
466
740
|
})
|
|
467
741
|
```
|
|
468
742
|
|
|
743
|
+
#### IdeogramV3
|
|
744
|
+
|
|
745
|
+
```typescript
|
|
746
|
+
FalAiImage.IdeogramV3(config: {
|
|
747
|
+
proxyUrl: string;
|
|
748
|
+
headers?: Record<string, string>;
|
|
749
|
+
debug?: boolean;
|
|
750
|
+
})
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
#### IdeogramV3Remix
|
|
754
|
+
|
|
755
|
+
```typescript
|
|
756
|
+
FalAiImage.IdeogramV3Remix(config: {
|
|
757
|
+
proxyUrl: string;
|
|
758
|
+
headers?: Record<string, string>;
|
|
759
|
+
debug?: boolean;
|
|
760
|
+
})
|
|
761
|
+
```
|
|
762
|
+
|
|
469
763
|
#### GeminiFlashEdit
|
|
470
764
|
|
|
471
765
|
```typescript
|
|
@@ -516,6 +810,26 @@ FalAiImage.FluxProKontextMaxEdit(config: {
|
|
|
516
810
|
})
|
|
517
811
|
```
|
|
518
812
|
|
|
813
|
+
#### NanoBanana
|
|
814
|
+
|
|
815
|
+
```typescript
|
|
816
|
+
FalAiImage.NanoBanana(config: {
|
|
817
|
+
proxyUrl: string;
|
|
818
|
+
headers?: Record<string, string>;
|
|
819
|
+
debug?: boolean;
|
|
820
|
+
})
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
#### NanoBananaEdit
|
|
824
|
+
|
|
825
|
+
```typescript
|
|
826
|
+
FalAiImage.NanoBananaEdit(config: {
|
|
827
|
+
proxyUrl: string;
|
|
828
|
+
headers?: Record<string, string>;
|
|
829
|
+
debug?: boolean;
|
|
830
|
+
})
|
|
831
|
+
```
|
|
832
|
+
|
|
519
833
|
## UI Integration
|
|
520
834
|
|
|
521
835
|
The plugin automatically registers the following UI components:
|
|
@@ -601,22 +915,30 @@ const myImageProvider = {
|
|
|
601
915
|
- Provider-specific panels:
|
|
602
916
|
- RecraftV3: `ly.img.ai.fal-ai/recraft-v3`
|
|
603
917
|
- Recraft20b: `ly.img.ai.fal-ai/recraft/v2/text-to-image`
|
|
918
|
+
- IdeogramV3: `ly.img.ai.fal-ai/ideogram/v3`
|
|
919
|
+
- IdeogramV3Remix: `ly.img.ai.fal-ai/ideogram/v3/remix`
|
|
604
920
|
- GeminiFlashEdit: `ly.img.ai.fal-ai/gemini-flash-edit`
|
|
605
921
|
- GptImage1.Text2Image: `ly.img.ai.open-ai/gpt-image-1/text2image`
|
|
606
922
|
- GptImage1.Image2Image: `ly.img.ai.open-ai/gpt-image-1/image2image`
|
|
607
923
|
- FluxProKontextEdit: `ly.img.ai.fal-ai/flux-pro/kontext`
|
|
608
924
|
- FluxProKontextMaxEdit: `ly.img.ai.fal-ai/flux-pro/kontext/max`
|
|
925
|
+
- NanoBanana: `ly.img.ai.fal-ai/nano-banana`
|
|
926
|
+
- NanoBananaEdit: `ly.img.ai.fal-ai/nano-banana/edit`
|
|
609
927
|
|
|
610
928
|
### Asset History
|
|
611
929
|
|
|
612
930
|
Generated images are automatically stored in asset sources with the following IDs:
|
|
613
931
|
- RecraftV3: `fal-ai/recraft-v3.history`
|
|
614
932
|
- Recraft20b: `fal-ai/recraft/v2/text-to-image.history`
|
|
933
|
+
- IdeogramV3: `fal-ai/ideogram/v3.history`
|
|
934
|
+
- IdeogramV3Remix: `fal-ai/ideogram/v3/remix.history`
|
|
615
935
|
- GeminiFlashEdit: `fal-ai/gemini-flash-edit.history`
|
|
616
936
|
- GptImage1.Text2Image: `open-ai/gpt-image-1/text2image.history`
|
|
617
937
|
- GptImage1.Image2Image: `open-ai/gpt-image-1/image2image.history`
|
|
618
938
|
- FluxProKontextEdit: `fal-ai/flux-pro/kontext.history`
|
|
619
939
|
- FluxProKontextMaxEdit: `fal-ai/flux-pro/kontext/max.history`
|
|
940
|
+
- NanoBanana: `fal-ai/nano-banana.history`
|
|
941
|
+
- NanoBananaEdit: `fal-ai/nano-banana/edit.history`
|
|
620
942
|
|
|
621
943
|
### Dock Integration
|
|
622
944
|
|
|
@@ -635,6 +957,10 @@ currentOrder.splice(2, 0, 'ly.img.ai.image-generation.dock');
|
|
|
635
957
|
cesdk.ui.setDockOrder(currentOrder);
|
|
636
958
|
```
|
|
637
959
|
|
|
960
|
+
## Translations
|
|
961
|
+
|
|
962
|
+
For customization and localization, see the [translations.json](https://github.com/imgly/plugins/tree/main/packages/plugin-ai-image-generation-web/translations.json) file which contains provider-specific translation keys for image generation interfaces.
|
|
963
|
+
|
|
638
964
|
## Related Packages
|
|
639
965
|
|
|
640
966
|
- [@imgly/plugin-ai-generation-web](https://github.com/imgly/plugins/tree/main/packages/plugin-ai-generation-web) - Core utilities for AI generation
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CommonProviderConfiguration, type Provider } from '@imgly/plugin-ai-generation-web';
|
|
2
|
+
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
3
|
+
type IdeogramV3Input = {
|
|
4
|
+
prompt: string;
|
|
5
|
+
style?: 'AUTO' | 'GENERAL' | 'REALISTIC' | 'DESIGN';
|
|
6
|
+
image_size?: string | {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
rendering_speed?: 'TURBO' | 'BALANCED' | 'QUALITY';
|
|
11
|
+
};
|
|
12
|
+
type IdeogramV3Output = {
|
|
13
|
+
kind: 'image';
|
|
14
|
+
url: string;
|
|
15
|
+
};
|
|
16
|
+
interface ProviderConfiguration extends CommonProviderConfiguration<IdeogramV3Input, IdeogramV3Output> {
|
|
17
|
+
}
|
|
18
|
+
export declare function IdeogramV3(config: ProviderConfiguration): (context: {
|
|
19
|
+
cesdk: CreativeEditorSDK;
|
|
20
|
+
}) => Promise<Provider<'image', IdeogramV3Input, IdeogramV3Output>>;
|
|
21
|
+
declare function getProvider(cesdk: CreativeEditorSDK, config: ProviderConfiguration): Provider<'image', IdeogramV3Input, IdeogramV3Output>;
|
|
22
|
+
export default getProvider;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CommonProviderConfiguration, type Provider } from '@imgly/plugin-ai-generation-web';
|
|
2
|
+
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
3
|
+
type IdeogramV3RemixUIInput = {
|
|
4
|
+
prompt: string;
|
|
5
|
+
image_url: string;
|
|
6
|
+
style?: 'AUTO' | 'GENERAL' | 'REALISTIC' | 'DESIGN';
|
|
7
|
+
image_size?: string | {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
rendering_speed?: 'TURBO' | 'BALANCED' | 'QUALITY';
|
|
12
|
+
strength?: number;
|
|
13
|
+
};
|
|
14
|
+
type IdeogramV3RemixOutput = {
|
|
15
|
+
kind: 'image';
|
|
16
|
+
url: string;
|
|
17
|
+
};
|
|
18
|
+
interface ProviderConfiguration extends CommonProviderConfiguration<IdeogramV3RemixUIInput, IdeogramV3RemixOutput> {
|
|
19
|
+
}
|
|
20
|
+
export declare function IdeogramV3Remix(config: ProviderConfiguration): (context: {
|
|
21
|
+
cesdk: CreativeEditorSDK;
|
|
22
|
+
}) => Promise<Provider<'image', IdeogramV3RemixUIInput, IdeogramV3RemixOutput>>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ImageOutput, CommonProviderConfiguration, type Provider } from '@imgly/plugin-ai-generation-web';
|
|
2
|
+
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
3
|
+
type NanoBananaInput = {
|
|
4
|
+
prompt: string;
|
|
5
|
+
num_images?: number;
|
|
6
|
+
sync_mode?: boolean;
|
|
7
|
+
output_format?: 'jpeg' | 'png';
|
|
8
|
+
};
|
|
9
|
+
export declare function NanoBanana(config: CommonProviderConfiguration<NanoBananaInput, ImageOutput>): (context: {
|
|
10
|
+
cesdk: CreativeEditorSDK;
|
|
11
|
+
}) => Promise<Provider<'image', NanoBananaInput, ImageOutput>>;
|
|
12
|
+
declare function getProvider(cesdk: CreativeEditorSDK, config: CommonProviderConfiguration<NanoBananaInput, ImageOutput>): Provider<'image', NanoBananaInput, ImageOutput>;
|
|
13
|
+
export default getProvider;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ImageOutput, type Provider, type CommonProviderConfiguration } from '@imgly/plugin-ai-generation-web';
|
|
2
|
+
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
3
|
+
type NanoBananaEditInput = {
|
|
4
|
+
prompt: string;
|
|
5
|
+
image_url?: string;
|
|
6
|
+
image_urls?: string[];
|
|
7
|
+
exportFromBlockIds?: number[];
|
|
8
|
+
};
|
|
9
|
+
export declare function NanoBananaEdit(config: CommonProviderConfiguration<NanoBananaEditInput, ImageOutput>): (context: {
|
|
10
|
+
cesdk: CreativeEditorSDK;
|
|
11
|
+
}) => Promise<Provider<'image', NanoBananaEditInput, ImageOutput>>;
|
|
12
|
+
declare function getProvider(cesdk: CreativeEditorSDK, config: CommonProviderConfiguration<NanoBananaEditInput, ImageOutput>): Provider<'image', NanoBananaEditInput, ImageOutput>;
|
|
13
|
+
export default getProvider;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RecraftV3TextToImageInput } from '@fal-ai/client/endpoints';
|
|
2
2
|
export declare function getImageDimensions(id: string): {
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
5
5
|
};
|
|
6
|
-
export type StyleId = Extract<
|
|
6
|
+
export type StyleId = Extract<RecraftV3TextToImageInput['style'], string>;
|
|
7
7
|
export declare const STYLES_IMAGE: {
|
|
8
8
|
id: StyleId;
|
|
9
9
|
label: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CommonProviderConfiguration, type Provider } from '@imgly/plugin-ai-generation-web';
|
|
2
|
-
import { type
|
|
2
|
+
import { type RecraftV3TextToImageInput } from '@fal-ai/client/endpoints';
|
|
3
3
|
import CreativeEditorSDK from '@cesdk/cesdk-js';
|
|
4
4
|
type RecraftV3Output = {
|
|
5
5
|
kind: 'image';
|
|
6
6
|
url: string;
|
|
7
7
|
};
|
|
8
|
-
export type StyleId = Extract<
|
|
9
|
-
interface ProviderConfiguration extends CommonProviderConfiguration<
|
|
8
|
+
export type StyleId = Extract<RecraftV3TextToImageInput['style'], string>;
|
|
9
|
+
interface ProviderConfiguration extends CommonProviderConfiguration<RecraftV3TextToImageInput, RecraftV3Output> {
|
|
10
10
|
/**
|
|
11
11
|
* Base URL used for the UI assets used in the plugin.
|
|
12
12
|
*
|
|
@@ -17,6 +17,6 @@ interface ProviderConfiguration extends CommonProviderConfiguration<RecraftV3Inp
|
|
|
17
17
|
}
|
|
18
18
|
export declare function RecraftV3(config: ProviderConfiguration): (context: {
|
|
19
19
|
cesdk: CreativeEditorSDK;
|
|
20
|
-
}) => Promise<Provider<'image',
|
|
21
|
-
declare function getProvider(cesdk: CreativeEditorSDK, config: ProviderConfiguration): Provider<'image',
|
|
20
|
+
}) => Promise<Provider<'image', RecraftV3TextToImageInput, RecraftV3Output>>;
|
|
21
|
+
declare function getProvider(cesdk: CreativeEditorSDK, config: ProviderConfiguration): Provider<'image', RecraftV3TextToImageInput, RecraftV3Output>;
|
|
22
22
|
export default getProvider;
|
|
@@ -10,12 +10,25 @@ type ImageProviderConfiguration = {
|
|
|
10
10
|
* @deprecated Use `middlewares` instead.
|
|
11
11
|
*/
|
|
12
12
|
middleware?: Middleware<any, any>[];
|
|
13
|
+
/**
|
|
14
|
+
* Override provider's default history asset source
|
|
15
|
+
*/
|
|
16
|
+
history?: false | '@imgly/local' | '@imgly/indexedDB' | (string & {});
|
|
17
|
+
/**
|
|
18
|
+
* Configure supported quick actions
|
|
19
|
+
*/
|
|
20
|
+
supportedQuickActions?: {
|
|
21
|
+
[quickActionId: string]: Partial<ImageQuickActionSupportMap<any>[string]> | false | null;
|
|
22
|
+
};
|
|
13
23
|
};
|
|
14
24
|
/**
|
|
15
25
|
* Creates a base provider from schema. This should work out of the box
|
|
16
26
|
* but may be rough around the edges and should/can be further customized.
|
|
17
27
|
*/
|
|
18
|
-
declare function createImageProvider<I extends Record<string, any
|
|
28
|
+
declare function createImageProvider<I extends Record<string, any> & {
|
|
29
|
+
image_url?: string;
|
|
30
|
+
image_urls?: string[];
|
|
31
|
+
}>(options: {
|
|
19
32
|
modelKey: string;
|
|
20
33
|
name?: string;
|
|
21
34
|
schema: OpenAPIV3.Document;
|
package/dist/fal-ai/index.d.ts
CHANGED
|
@@ -3,11 +3,19 @@ import { Recraft20b } from './Recraft20b';
|
|
|
3
3
|
import { GeminiFlashEdit } from './GeminiFlashEdit';
|
|
4
4
|
import { FluxProKontextEdit } from './FluxProKontextEdit';
|
|
5
5
|
import { FluxProKontextMaxEdit } from './FluxProKontextMaxEdit';
|
|
6
|
+
import { IdeogramV3 } from './IdeogramV3';
|
|
7
|
+
import { IdeogramV3Remix } from './IdeogramV3Remix';
|
|
8
|
+
import { NanoBanana } from './NanoBanana';
|
|
9
|
+
import { NanoBananaEdit } from './NanoBananaEdit';
|
|
6
10
|
declare const FalAi: {
|
|
7
|
-
RecraftV3: typeof RecraftV3;
|
|
8
|
-
Recraft20b: typeof Recraft20b;
|
|
9
|
-
GeminiFlashEdit: typeof GeminiFlashEdit;
|
|
10
11
|
FluxProKontextEdit: typeof FluxProKontextEdit;
|
|
11
12
|
FluxProKontextMaxEdit: typeof FluxProKontextMaxEdit;
|
|
13
|
+
GeminiFlashEdit: typeof GeminiFlashEdit;
|
|
14
|
+
IdeogramV3: typeof IdeogramV3;
|
|
15
|
+
IdeogramV3Remix: typeof IdeogramV3Remix;
|
|
16
|
+
NanoBanana: typeof NanoBanana;
|
|
17
|
+
NanoBananaEdit: typeof NanoBananaEdit;
|
|
18
|
+
Recraft20b: typeof Recraft20b;
|
|
19
|
+
RecraftV3: typeof RecraftV3;
|
|
12
20
|
};
|
|
13
21
|
export default FalAi;
|