@innovastudio/contentbuilder 1.5.123 → 1.5.124
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/index.d.ts
CHANGED
@@ -120,7 +120,6 @@ interface ContentBuilderOptions {
|
|
120
120
|
audioSelectMaxWidth?: string;
|
121
121
|
mediaSelectMaxWidth?: string;
|
122
122
|
otherSelectMaxWidth?: string;
|
123
|
-
assetPanelFullScreen?: boolean;
|
124
123
|
codeEditorWidth?: string;
|
125
124
|
codeEditorHeight?: string;
|
126
125
|
codeEditorMaxWidth?: string;
|
@@ -215,6 +214,36 @@ interface ContentBuilderOptions {
|
|
215
214
|
commandInfoCanvasMode?: any[];
|
216
215
|
onStartRequest?: () => void;
|
217
216
|
|
217
|
+
imageModel?: string;
|
218
|
+
defaultImageGenerationProvider?: string;
|
219
|
+
|
220
|
+
//-- Asset Manager
|
221
|
+
listFilesUrl?: string;
|
222
|
+
listFoldersUrl?: string;
|
223
|
+
deleteFilesUrl?: string;
|
224
|
+
moveFilesUrl?: string;
|
225
|
+
createFolderUrl?: string;
|
226
|
+
uploadFilesUrl?: string;
|
227
|
+
renameFileUrl?: string;
|
228
|
+
getMmodelsUrl?: string;
|
229
|
+
textToImageUrl?: string;
|
230
|
+
upscaleImageUrl?: string;
|
231
|
+
controlNetUrl?: string;
|
232
|
+
saveTextUrl?: string;
|
233
|
+
viewUrl?: string;
|
234
|
+
viewFileUrl?: string;
|
235
|
+
assetFolderTree?: boolean;
|
236
|
+
assetFilesOnly?: boolean;
|
237
|
+
assetPanelReverse?: boolean;
|
238
|
+
assetRefreshButton?: boolean;
|
239
|
+
assetAllowedFileTypes?: any[];
|
240
|
+
assetShowRelativeTime?: boolean;
|
241
|
+
assetLocale?: string;
|
242
|
+
assetDateShortOptions?: any[];
|
243
|
+
assetDateLongOptions?: any[];
|
244
|
+
assetPanelFullScreen?: boolean;
|
245
|
+
//---
|
246
|
+
|
218
247
|
//-- Form Builder
|
219
248
|
defaultTextGenerationProvider?: string;
|
220
249
|
model?: string;
|
@@ -281,5 +310,7 @@ declare class ContentBuilder {
|
|
281
310
|
setPageSize(s?: string)
|
282
311
|
openPageOptions(): void;
|
283
312
|
print(): void;
|
313
|
+
|
314
|
+
generateImage(prompt: string, callback?: () => void): void;
|
284
315
|
}
|
285
316
|
export default ContentBuilder;
|
package/package.json
CHANGED
@@ -97944,11 +97944,151 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
97944
97944
|
}
|
97945
97945
|
return closestRatio;
|
97946
97946
|
}
|
97947
|
+
async waitingResultFal(jsonBody, requestId) {
|
97948
|
+
jsonBody.request_id = requestId;
|
97949
|
+
const getResultEndpoint = (model, requestId) => {
|
97950
|
+
let endpoint = `https://queue.fal.run/${model}/requests/${requestId}`;
|
97951
|
+
let firstTwoParts = model.split('/').slice(0, 2).join('/');
|
97952
|
+
endpoint = endpoint.replace('{MODEL}', firstTwoParts);
|
97953
|
+
return endpoint;
|
97954
|
+
};
|
97955
|
+
const resultEndpoint = getResultEndpoint(jsonBody.model, requestId);
|
97956
|
+
jsonBody.endpoint = resultEndpoint;
|
97957
|
+
let url = this.getResultUrl_Fal;
|
97958
|
+
let headers = {
|
97959
|
+
...this.headers,
|
97960
|
+
...this.defaultHeaders
|
97961
|
+
};
|
97962
|
+
const response = await fetch(url, {
|
97963
|
+
signal: this.signal,
|
97964
|
+
method: 'POST',
|
97965
|
+
headers,
|
97966
|
+
body: JSON.stringify(jsonBody)
|
97967
|
+
});
|
97968
|
+
// const result = await response.json();
|
97969
|
+
let text = await response.text(); // Read response as text first
|
97970
|
+
let result;
|
97971
|
+
try {
|
97972
|
+
result = JSON.parse(text); // Attempt to parse JSON
|
97973
|
+
} catch (e) {
|
97974
|
+
// console.log(text);
|
97975
|
+
return;
|
97976
|
+
}
|
97977
|
+
if (!result.error) {
|
97978
|
+
const data = result.data;
|
97979
|
+
let output = [];
|
97980
|
+
let output2 = [];
|
97981
|
+
data.entries && data.entries.forEach(item => {
|
97982
|
+
output.push(item.url);
|
97983
|
+
output2.push(item.file_url);
|
97984
|
+
});
|
97985
|
+
return {
|
97986
|
+
mediaGenerated: true,
|
97987
|
+
status: 'success',
|
97988
|
+
output,
|
97989
|
+
output2
|
97990
|
+
};
|
97991
|
+
} else {
|
97992
|
+
return {
|
97993
|
+
mediaGenerated: false,
|
97994
|
+
status: 'error',
|
97995
|
+
message: result.error //this.out('Request failed.')
|
97996
|
+
};
|
97997
|
+
}
|
97998
|
+
}
|
97999
|
+
|
98000
|
+
async generateImage_Fal(prompt, callback) {
|
98001
|
+
this.controller = new AbortController();
|
98002
|
+
this.signal = this.controller.signal;
|
98003
|
+
let model = this.imageModel || 'flux-schnell';
|
98004
|
+
let jsonBody = {};
|
98005
|
+
jsonBody.model = model;
|
98006
|
+
jsonBody.customData = this.customData;
|
98007
|
+
jsonBody.endpoint = `https://queue.fal.run/${model}`;
|
98008
|
+
jsonBody.payload = {
|
98009
|
+
prompt
|
98010
|
+
};
|
98011
|
+
let url = this.generateMediaUrl_Fal;
|
98012
|
+
let headers = {
|
98013
|
+
...this.headers,
|
98014
|
+
...this.defaultHeaders
|
98015
|
+
};
|
98016
|
+
const response = await fetch(url, {
|
98017
|
+
signal: this.signal,
|
98018
|
+
method: 'POST',
|
98019
|
+
headers,
|
98020
|
+
body: JSON.stringify(jsonBody)
|
98021
|
+
});
|
98022
|
+
const result = await response.json();
|
98023
|
+
if (result.error) {
|
98024
|
+
// console.log(result.error);
|
98025
|
+
this.dictation.finish();
|
98026
|
+
}
|
98027
|
+
let requestId = result.request_id;
|
98028
|
+
const getStatusEndpoint = (model, requestId) => {
|
98029
|
+
let endpoint = `https://queue.fal.run/${model}/requests/${requestId}`;
|
98030
|
+
let firstTwoParts = model.split('/').slice(0, 2).join('/');
|
98031
|
+
endpoint = endpoint.replace('{MODEL}', firstTwoParts);
|
98032
|
+
return endpoint;
|
98033
|
+
};
|
98034
|
+
const statusEndpoint = getStatusEndpoint(model, requestId);
|
98035
|
+
let inputCheckStatus = {
|
98036
|
+
model,
|
98037
|
+
endpoint: statusEndpoint,
|
98038
|
+
request_id: requestId
|
98039
|
+
// customData: this.customData
|
98040
|
+
};
|
98041
|
+
|
98042
|
+
let status;
|
98043
|
+
do {
|
98044
|
+
const response = await fetch(this.checkRequestStatusUrl_Fal, {
|
98045
|
+
signal: this.signal,
|
98046
|
+
method: 'POST',
|
98047
|
+
headers,
|
98048
|
+
body: JSON.stringify(inputCheckStatus)
|
98049
|
+
});
|
98050
|
+
const result = await response.json();
|
98051
|
+
if (result.ok && result.status) {
|
98052
|
+
// From endpoint that uses SDK
|
98053
|
+
status = result.status;
|
98054
|
+
} else if (result.data) {
|
98055
|
+
// From endpoint that uses API
|
98056
|
+
let data = result.data;
|
98057
|
+
if (data.image || data.audio || data.audio_file || data.video) {
|
98058
|
+
status = 'COMPLETED';
|
98059
|
+
} else if (data.detail && typeof data.detail === 'string' && data.detail.startsWith('Request is still in progress')) {
|
98060
|
+
//Request is still in progress
|
98061
|
+
status = 'IN_PROGRESS';
|
98062
|
+
} else if (data.status && !data.error) {
|
98063
|
+
status = data.status;
|
98064
|
+
}
|
98065
|
+
}
|
98066
|
+
if (!status) {
|
98067
|
+
// const message = result.error || (result.data && JSON.stringify(result.data)) || this.out('Request failed.');
|
98068
|
+
// console.log(message);
|
98069
|
+
return;
|
98070
|
+
}
|
98071
|
+
if (status !== 'COMPLETED') {
|
98072
|
+
await new Promise(resolve => setTimeout(resolve, 5000)); // Wait before retrying
|
98073
|
+
}
|
98074
|
+
} while (status !== 'COMPLETED');
|
98075
|
+
if (status === 'COMPLETED') {
|
98076
|
+
const mediaResult = await this.waitingResultFal(jsonBody, requestId);
|
98077
|
+
if (mediaResult.output && mediaResult.output.length === 1) {
|
98078
|
+
let imageUrl = mediaResult.output[0];
|
98079
|
+
callback(imageUrl);
|
98080
|
+
}
|
98081
|
+
}
|
98082
|
+
}
|
97947
98083
|
async generateImage(prompt, callback) {
|
98084
|
+
if (this.defaultImageGenerationProvider === 'fal') {
|
98085
|
+
this.generateImage_Fal(prompt, callback);
|
98086
|
+
return;
|
98087
|
+
}
|
97948
98088
|
this.controller = new AbortController(); // Create a new AbortController
|
97949
98089
|
this.signal = this.controller.signal; // Get a new signal object
|
97950
98090
|
|
97951
|
-
let model = this.imageModel || 'realistic-vision-v3
|
98091
|
+
let model = this.imageModel || 'flux-schnell'; //realistic-vision-v3
|
97952
98092
|
let negative_prompt = this.imageNegativePrompt || 'duplicate, (deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck, bad_prompt_version2, bad-hands-5, badhandv4, bad anatomy, deformed, mutated, amputated, missing finger, extra finger, fused fingers, missing leg, extra leg, fused legs, missing digit, extra digit, fused digits, missing hand, extra hand, fused hands, missing arm, extra arm, fused arms, missing limb, extra limb, fused limbs, fused bodies, merged bodies, extra bodies, dual bodies, extra navel, elongated body, missing joint, extra joint, fused joints, deformed hip, twisted limbs, twisted legs, twisted arms, missing head, extra head, double head, twins, missing ear, extra ear, deformed ear, black and white, monochrome, multiple views, blurry, text, signature, head out of frame, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, grayscale, glans, bad hands, error, extra digit, fewer digits, cropped, jpeg artifacts, watermark, username, bad feet, poorly drawn hands, poorly drawn face, mutation, too many fingers, long neck, long body, long arms, cross-eyed, mutated hands, polar lowres, bad body, bad proportions, gross proportions, cropped head , bad eyes, extra breast, missing breast, fused breasts, unnatural proportions, necklace';
|
97953
98093
|
let steps = this.imageSteps || 25;
|
97954
98094
|
let guidance = this.imageGuidance || 7.5;
|