@innovastudio/contentbuilder 1.5.79 → 1.5.81

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@innovastudio/contentbuilder",
3
3
  "type": "module",
4
- "version": "1.5.79",
4
+ "version": "1.5.81",
5
5
  "description": "",
6
6
  "main": "public/contentbuilder/contentbuilder.esm.js",
7
7
  "types": "index.d.ts",
@@ -1317,6 +1317,54 @@ button:focus-visible {
1317
1317
  .is-ui .is-rte-pop.rte-color-picker .rte-color-picker-area > div {
1318
1318
  padding-top: 5px !important;
1319
1319
  }
1320
+ #_cbhtml .is-rte-pop.rte-color-picker._4lines.active,
1321
+ .is-ui .is-rte-pop.rte-color-picker._4lines.active {
1322
+ animation-name: colorpicker-slide-out-4lines;
1323
+ }
1324
+ @keyframes colorpicker-slide-out-4lines {
1325
+ from {
1326
+ height: 0;
1327
+ }
1328
+ to {
1329
+ height: 420px;
1330
+ }
1331
+ }
1332
+ #_cbhtml .is-rte-pop.rte-color-picker._4lines.deactive,
1333
+ .is-ui .is-rte-pop.rte-color-picker._4lines.deactive {
1334
+ animation-name: colorpicker-slide-in-4lines;
1335
+ }
1336
+ @keyframes colorpicker-slide-in-4lines {
1337
+ from {
1338
+ height: 420px;
1339
+ }
1340
+ to {
1341
+ height: 0;
1342
+ }
1343
+ }
1344
+ #_cbhtml .is-rte-pop.rte-color-picker._5lines.active,
1345
+ .is-ui .is-rte-pop.rte-color-picker._5lines.active {
1346
+ animation-name: colorpicker-slide-out-5lines;
1347
+ }
1348
+ @keyframes colorpicker-slide-out-5lines {
1349
+ from {
1350
+ height: 0;
1351
+ }
1352
+ to {
1353
+ height: 451px;
1354
+ }
1355
+ }
1356
+ #_cbhtml .is-rte-pop.rte-color-picker._5lines.deactive,
1357
+ .is-ui .is-rte-pop.rte-color-picker._5lines.deactive {
1358
+ animation-name: colorpicker-slide-in-5lines;
1359
+ }
1360
+ @keyframes colorpicker-slide-in-5lines {
1361
+ from {
1362
+ height: 451px;
1363
+ }
1364
+ to {
1365
+ height: 0;
1366
+ }
1367
+ }
1320
1368
  #_cbhtml .is-rte-pop.rte-icon-options,
1321
1369
  .is-ui .is-rte-pop.rte-icon-options {
1322
1370
  width: 270px;
@@ -46402,28 +46402,33 @@ class Image$1 {
46402
46402
  if (this.builder.moveable) this.builder.moveable.updateRect();
46403
46403
  const movControlBox = document.querySelector('.moveable-control-box');
46404
46404
  if (movControlBox && !this.builder.hideImageResizer) movControlBox.style.display = 'block';
46405
- const handleImageToolClickOut = e => {
46406
- let elm = e.target;
46407
- if (!elm) return;
46408
- if (!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') && !elm.closest('img')) {
46409
- // click outside
46410
-
46411
- // hide
46412
- this.hideImageTool();
46413
- document.removeEventListener('click', handleImageToolClickOut);
46414
- if (this.builder.iframeDocument) {
46415
- this.builder.doc.removeEventListener('click', handleImageToolClickOut);
46405
+
46406
+ /*
46407
+ const handleImageToolClickOut = e =>{
46408
+ let elm = e.target;
46409
+ if(!elm) return;
46410
+ if(!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') &&
46411
+ !elm.closest('.is-modal') && !elm.closest('.keep-selection') &&
46412
+ !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') &&
46413
+ !elm.closest('img')) { // click outside
46414
+
46415
+ // hide
46416
+ this.hideImageTool();
46417
+ document.removeEventListener('click', handleImageToolClickOut);
46418
+ if(this.builder.iframeDocument) {
46419
+ this.builder.doc.removeEventListener('click', handleImageToolClickOut);
46420
+ }
46421
+ this.builder.handleImageToolClickOut_=false;
46416
46422
  }
46417
- this.builder.handleImageToolClickOut_ = false;
46418
- }
46419
46423
  };
46420
- if (!this.builder.handleImageToolClickOut_) {
46421
- document.addEventListener('click', handleImageToolClickOut);
46422
- if (this.builder.iframeDocument) {
46423
- this.builder.doc.addEventListener('click', handleImageToolClickOut);
46424
- }
46425
- this.builder.handleImageToolClickOut_ = true;
46424
+ if(!this.builder.handleImageToolClickOut_) {
46425
+ document.addEventListener('click', handleImageToolClickOut);
46426
+ if(this.builder.iframeDocument) {
46427
+ this.builder.doc.addEventListener('click', handleImageToolClickOut);
46428
+ }
46429
+ this.builder.handleImageToolClickOut_=true;
46426
46430
  }
46431
+ */
46427
46432
  } else {
46428
46433
  let imageResizer = this.imageResizer;
46429
46434
  imageResizer.style.display = 'none';
@@ -46437,6 +46442,28 @@ class Image$1 {
46437
46442
  const movControlBox = document.querySelector('.moveable-control-box');
46438
46443
  if (movControlBox) movControlBox.style.display = 'none';
46439
46444
  }
46445
+ const handleImageToolClickOut = e => {
46446
+ let elm = e.target;
46447
+ if (!elm) return;
46448
+ if (!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') && !elm.closest('img')) {
46449
+ // click outside
46450
+
46451
+ // hide
46452
+ this.hideImageTool();
46453
+ document.removeEventListener('click', handleImageToolClickOut);
46454
+ if (this.builder.iframeDocument) {
46455
+ this.builder.doc.removeEventListener('click', handleImageToolClickOut);
46456
+ }
46457
+ this.builder.handleImageToolClickOut_ = false;
46458
+ }
46459
+ };
46460
+ if (!this.builder.handleImageToolClickOut_) {
46461
+ document.addEventListener('click', handleImageToolClickOut);
46462
+ if (this.builder.iframeDocument) {
46463
+ this.builder.doc.addEventListener('click', handleImageToolClickOut);
46464
+ }
46465
+ this.builder.handleImageToolClickOut_ = true;
46466
+ }
46440
46467
  if (this.builder.canvas) ; else {
46441
46468
  let prog = false;
46442
46469
  if (e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0) ; else {
@@ -51362,8 +51389,8 @@ class RowTool {
51362
51389
  const builderStuff = this.builder.builderStuff;
51363
51390
  let rowtool = row.querySelector('.is-row-tool');
51364
51391
  if (!rowtool) {
51365
- let html = `<div class="is-tool is-row-tool">
51366
- <div title="${util.out('Move')}" role="button" tabindex="-1" class="row-handle" style="width:100%;cursor:move;text-align:center;"><svg class="is-icon-flex"><use xlink:href="#ion-move"></use></svg></div>
51392
+ let html = `<div class="is-tool is-row-tool" style="${!this.builder.rowTool && this.builder.rowTool !== '' ? 'display:none;' : ''}">
51393
+ <div title="${util.out('Move')}" role="button" tabindex="-1" class="row-handle" style="${this.builder.rowHandle ? '' : 'display:none;'}width:100%;cursor:move;text-align:center;"><svg class="is-icon-flex"><use xlink:href="#ion-move"></use></svg></div>
51367
51394
  <button type="button" tabindex="-1" title="${util.out('More')}" class="row-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
51368
51395
  <button type="button" tabindex="-1" title="${util.out('Grid Editor')}" class="row-grideditor"><svg class="is-icon-flex"><use xlink:href="#ion-grid"></use></svg></button>
51369
51396
  <button type="button" tabindex="-1" title="${util.out('Delete')}" class="row-remove"><svg class="is-icon-flex"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
@@ -63536,6 +63563,10 @@ class ColorPicker {
63536
63563
  const poppicker = builderStuff.querySelector('.pop-picker');
63537
63564
  poppicker.style.display = 'flex';
63538
63565
  poppicker.style.opacity = 0;
63566
+ if (this.opts.colors.length <= 21) poppicker.style.height = '360px'; // 3 lines
63567
+ else if (this.opts.colors.length > 21 && this.opts.colors.length <= 28) poppicker.style.height = '390px'; // 4 lines
63568
+ else if (this.opts.colors.length > 28) poppicker.style.height = '420px'; // 5 lines
63569
+
63539
63570
  const pickr = Pickr.create({
63540
63571
  el: '._pop-colpick',
63541
63572
  theme: 'nano',
@@ -67424,6 +67455,10 @@ class Rte {
67424
67455
  btnRteColor.forEach(btn => {
67425
67456
  btn.addEventListener('click', () => {
67426
67457
  const pop = this.rteColorPicker;
67458
+ const numOfColors = this.builder.colors.length;
67459
+ if (numOfColors > 21 && numOfColors <= 28) pop.classList.add('_4lines'); // 4 lines
67460
+ else if (numOfColors > 28) pop.classList.add('_5lines'); // 5 lines
67461
+
67427
67462
  if (!dom.hasClass(pop, 'active')) {
67428
67463
  this.util.showRtePop(pop, () => {
67429
67464
  const top = btn.getBoundingClientRect().top;
@@ -82104,8 +82139,6 @@ Important: Do not change the 'div.is-container' element!
82104
82139
  }
82105
82140
  }
82106
82141
 
82107
- // import RecordRTC from 'recordrtc';
82108
- // import Recorder from 'opus-recorder'; // Using Recorder
82109
82142
  const dom = new Dom();
82110
82143
  class Dictation {
82111
82144
  constructor(opts = {}, builder) {
@@ -82453,6 +82486,9 @@ class Dictation {
82453
82486
  dom.appendHtml(builderStuff, html);
82454
82487
  const modalCommand = builderStuff.querySelector('.page-command');
82455
82488
  this.modalCommand = modalCommand;
82489
+ new Draggable$2({
82490
+ selector: '.is-modal.page-command .is-draggable'
82491
+ });
82456
82492
  const modalCommandList = builderStuff.querySelector('.commandlist');
82457
82493
  this.modalCommandList = modalCommandList;
82458
82494
  const modalConfig = builderStuff.querySelector('.commandconfig');
@@ -88934,6 +88970,8 @@ class Editable {
88934
88970
  this.handleEditStart = this.handleEditStart.bind(this);
88935
88971
  this.handleMouseClick = this.handleMouseClick.bind(this);
88936
88972
  this.handleTouchStart = this.handleTouchStart.bind(this);
88973
+ this.handleMouseDown = this.handleMouseDown.bind(this);
88974
+ this.handleMouseUp = this.handleMouseUp.bind(this);
88937
88975
  this.setup();
88938
88976
  }
88939
88977
  setup() {
@@ -88942,6 +88980,7 @@ class Editable {
88942
88980
  element.addEventListener('touchstart', this.handleTouchStart, {
88943
88981
  passive: false
88944
88982
  });
88983
+ element.addEventListener('mousedown', this.handleMouseDown);
88945
88984
  });
88946
88985
  }
88947
88986
  refresh() {
@@ -88949,23 +88988,49 @@ class Editable {
88949
88988
  this.elements.forEach(element => {
88950
88989
  element.removeEventListener('dblclick', this.handleEditStart);
88951
88990
  element.removeEventListener('touchstart', this.handleTouchStart);
88991
+ element.removeEventListener('mousedown', this.handleMouseDown);
88952
88992
  });
88953
88993
  this.elements.forEach(element => {
88954
88994
  element.addEventListener('dblclick', this.handleEditStart);
88955
88995
  element.addEventListener('touchstart', this.handleTouchStart, {
88956
88996
  passive: false
88957
88997
  });
88998
+ element.addEventListener('mousedown', this.handleMouseDown);
88958
88999
  });
88959
89000
  }
89001
+ handleMouseDown(event) {
89002
+ const currentTarget = event.currentTarget;
89003
+ this.lastClickTime = false;
89004
+ if (!currentTarget.classList.contains('active')) return;
89005
+ if (currentTarget.classList.contains('editable')) return;
89006
+ currentTarget.addEventListener('mouseup', this.handleMouseUp);
89007
+ const now = new Date().getTime();
89008
+ this.lastClickTime = now;
89009
+ }
89010
+ handleMouseUp(event) {
89011
+ if (!this.lastClickTime) return;
89012
+ const currentTarget = event.currentTarget;
89013
+ currentTarget.removeEventListener('mouseup', this.handleMouseUp);
89014
+ const now = new Date().getTime();
89015
+ const lastClickTime = this.lastClickTime || now;
89016
+ const timeDiff = now - lastClickTime;
89017
+ if (timeDiff < 300 && timeDiff > 0) {
89018
+ // Less than 300ms since the last touch, enable editing
89019
+ this.handleEditStart(event);
89020
+ }
89021
+ this.lastClickTime = now;
89022
+ }
88960
89023
  destroy(element) {
88961
89024
  if (element) {
88962
89025
  element.removeEventListener('dblclick', this.handleEditStart);
88963
89026
  element.removeEventListener('touchstart', this.handleTouchStart);
89027
+ element.removeEventListener('mousedown', this.handleMouseDown);
88964
89028
  } else {
88965
89029
  this.elements = this.doc.querySelectorAll(this.selector);
88966
89030
  this.elements.forEach(element => {
88967
89031
  element.removeEventListener('dblclick', this.handleEditStart);
88968
89032
  element.removeEventListener('touchstart', this.handleTouchStart);
89033
+ element.removeEventListener('mousedown', this.handleMouseDown);
88969
89034
  });
88970
89035
  }
88971
89036
  }
@@ -89278,6 +89343,8 @@ class EditableBlocks {
89278
89343
  target.style.zIndex = newZIndex;
89279
89344
  }
89280
89345
  selectStart(block) {
89346
+ if (block.classList.contains('editable')) return; // do not proceed if in editing mode
89347
+
89281
89348
  if (block.classList.contains('is-shape')) return; // do not clone if block is shape
89282
89349
 
89283
89350
  if (!this.clone) return;
@@ -91489,6 +91556,7 @@ class ContentBuilder {
91489
91556
  outlineMode: '',
91490
91557
  toolStyle: '',
91491
91558
  outlineStyle: '',
91559
+ rowHandle: true,
91492
91560
  snippetAddTool: true,
91493
91561
  elementTool: true,
91494
91562
  elementHighlight: true,
@@ -94262,7 +94330,118 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
94262
94330
  // let outlineStyle = localStorage.getItem('_outlinestyle');
94263
94331
  // this.preferences.setOutlineStyle(outlineStyle);
94264
94332
  // }
94265
- if (this.preferences) this.preferences.initBuilder(builder);
94333
+ if (this.preferences) this.preferences.initBuilder(builder);else {
94334
+ const setColumnTool = hidecolumntool => {
94335
+ const builders = this.doc.querySelectorAll(this.opts.container);
94336
+ if (hidecolumntool) {
94337
+ Array.prototype.forEach.call(builders, builder => {
94338
+ builder.setAttribute('hidecolumntool', '');
94339
+ });
94340
+ } else {
94341
+ Array.prototype.forEach.call(builders, builder => {
94342
+ builder.removeAttribute('hidecolumntool');
94343
+ });
94344
+ }
94345
+ };
94346
+ setColumnTool(!this.columnTool);
94347
+ const setElementTool = hideelementtool => {
94348
+ const builderStuff = this.builderStuff;
94349
+ if (hideelementtool) {
94350
+ builderStuff.setAttribute('hideelementtool', '');
94351
+ } else {
94352
+ builderStuff.removeAttribute('hideelementtool', '');
94353
+ }
94354
+ if (this.iframe) {
94355
+ const contentStuff = this.contentStuff;
94356
+ if (hideelementtool) {
94357
+ contentStuff.setAttribute('hideelementtool', '');
94358
+ } else {
94359
+ contentStuff.removeAttribute('hideelementtool', '');
94360
+ }
94361
+ }
94362
+ };
94363
+ setElementTool(!this.elementTool);
94364
+ const setOutline = hideoutline => {
94365
+ const builders = this.doc.querySelectorAll(this.opts.container);
94366
+ Array.prototype.forEach.call(builders, builder => {
94367
+ if (hideoutline) {
94368
+ builder.setAttribute('hideoutline', '');
94369
+ } else {
94370
+ builder.removeAttribute('hideoutline');
94371
+ }
94372
+ });
94373
+ };
94374
+ setOutline(!this.rowcolOutline);
94375
+ const setOutlineStyle = outlineStyle => {
94376
+ const builders = this.doc.querySelectorAll(this.opts.container);
94377
+ Array.prototype.forEach.call(builders, builder => {
94378
+ if (outlineStyle === 'grayoutline') {
94379
+ builder.setAttribute('grayoutline', '');
94380
+ } else {
94381
+ builder.removeAttribute('grayoutline');
94382
+ }
94383
+ });
94384
+ };
94385
+ setOutlineStyle(this.outlineStyle);
94386
+ const setElementHighlight = hideelementhighlight => {
94387
+ const builders = this.doc.querySelectorAll(this.opts.container);
94388
+ Array.prototype.forEach.call(builders, builder => {
94389
+ if (hideelementhighlight) {
94390
+ builder.setAttribute('hideelementhighlight', '');
94391
+ } else {
94392
+ builder.removeAttribute('hideelementhighlight', '');
94393
+ }
94394
+ });
94395
+ };
94396
+ setElementHighlight(!this.elementHighlight);
94397
+ const setToolStyle = toolStyle => {
94398
+ const builderStuff = this.builderStuff;
94399
+ if (toolStyle === 'gray') {
94400
+ builderStuff.setAttribute('gray', '');
94401
+ } else {
94402
+ builderStuff.removeAttribute('gray', '');
94403
+ }
94404
+ if (this.iframe) {
94405
+ const contentStuff = this.contentStuff;
94406
+ if (toolStyle === 'gray') {
94407
+ contentStuff.setAttribute('gray', '');
94408
+ } else {
94409
+ contentStuff.removeAttribute('gray', '');
94410
+ }
94411
+ }
94412
+ const builders = this.doc.querySelectorAll(this.opts.container);
94413
+ Array.prototype.forEach.call(builders, builder => {
94414
+ if (toolStyle === 'gray') {
94415
+ builder.setAttribute('gray', '');
94416
+ } else {
94417
+ builder.removeAttribute('gray');
94418
+ }
94419
+ });
94420
+ };
94421
+ setToolStyle(this.toolStyle);
94422
+ const setSnippetAddTool = hidesnippetaddtool => {
94423
+ const builders = this.doc.querySelectorAll(this.opts.container);
94424
+ Array.prototype.forEach.call(builders, builder => {
94425
+ if (hidesnippetaddtool) {
94426
+ builder.setAttribute('hidesnippetaddtool', '');
94427
+ } else {
94428
+ builder.removeAttribute('hidesnippetaddtool', '');
94429
+ }
94430
+ });
94431
+ };
94432
+ setSnippetAddTool(!this.snippetAddTool);
94433
+ const setRowToolPosition = rowTool => {
94434
+ const builders = this.doc.querySelectorAll(this.opts.container);
94435
+ Array.prototype.forEach.call(builders, builder => {
94436
+ if (rowTool === 'right') {
94437
+ builder.removeAttribute('leftrowtool');
94438
+ } else {
94439
+ builder.setAttribute('leftrowtool', '');
94440
+ }
94441
+ });
94442
+ };
94443
+ setRowToolPosition(this.rowTool);
94444
+ }
94266
94445
 
94267
94446
  // Apply behavior on each row
94268
94447
  const rows = this.dom.elementChildren(builder);
@@ -96531,8 +96710,8 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
96531
96710
  */
96532
96711
  src = this.viewFileUrl + '?url=' + src;
96533
96712
  }
96534
- const width = 512;
96535
- const height = 512;
96713
+ const width = this.ai_width; //768;
96714
+ const height = this.ai_height; //512;
96536
96715
  const img = new Image();
96537
96716
  img.src = src;
96538
96717
  img.crossOrigin = 'anonymous';
@@ -96564,6 +96743,47 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
96564
96743
  callback(result.url);
96565
96744
  };
96566
96745
  }
96746
+ getOrientation(width, height) {
96747
+ const aspectRatio = width / height;
96748
+ const predefinedRatios = [{
96749
+ ratio: '1:1',
96750
+ value: 1 / 1
96751
+ }, {
96752
+ ratio: '4:5',
96753
+ value: 4 / 5
96754
+ }, {
96755
+ ratio: '2:3',
96756
+ value: 2 / 3
96757
+ }, {
96758
+ ratio: '9:16',
96759
+ value: 9 / 16
96760
+ }, {
96761
+ ratio: '4:7',
96762
+ value: 4 / 7
96763
+ }, {
96764
+ ratio: '5:4',
96765
+ value: 5 / 4
96766
+ }, {
96767
+ ratio: '3:2',
96768
+ value: 3 / 2
96769
+ }, {
96770
+ ratio: '16:9',
96771
+ value: 16 / 9
96772
+ }, {
96773
+ ratio: '7:4',
96774
+ value: 7 / 4
96775
+ }];
96776
+ let closestRatio = predefinedRatios[0].ratio;
96777
+ let smallestDifference = Math.abs(aspectRatio - predefinedRatios[0].value);
96778
+ for (let i = 1; i < predefinedRatios.length; i++) {
96779
+ const difference = Math.abs(aspectRatio - predefinedRatios[i].value);
96780
+ if (difference < smallestDifference) {
96781
+ smallestDifference = difference;
96782
+ closestRatio = predefinedRatios[i].ratio;
96783
+ }
96784
+ }
96785
+ return closestRatio;
96786
+ }
96567
96787
  async generateImage(prompt, callback) {
96568
96788
  this.controller = new AbortController(); // Create a new AbortController
96569
96789
  this.signal = this.controller.signal; // Get a new signal object
@@ -96573,12 +96793,82 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
96573
96793
  let steps = this.imageSteps || 25;
96574
96794
  let guidance = this.imageGuidance || 7.5;
96575
96795
  let scheduler = this.imageScheduler || 'dpmsolver++';
96796
+ let width = 768;
96797
+ let height = 512;
96798
+ if (this.activeImage) {
96799
+ // check selected image dimension
96800
+ const activeImage = this.activeImage;
96801
+ const w = activeImage.offsetWidth;
96802
+ const h = activeImage.offsetHeight;
96803
+ const ratio = this.getOrientation(w, h);
96804
+ if (model === 'flux-schnell') {
96805
+ if (ratio === '1:1') {
96806
+ width = 1024;
96807
+ height = 1024;
96808
+ } else if (ratio === '4:5') {
96809
+ width = 768;
96810
+ height = 960;
96811
+ } else if (ratio === '2:3') {
96812
+ width = 768;
96813
+ height = 1152;
96814
+ } else if (ratio === '9:16') {
96815
+ width = 720;
96816
+ height = 1280;
96817
+ } else if (ratio === '4:7') {
96818
+ width = 512;
96819
+ height = 896;
96820
+ } else if (ratio === '5:4') {
96821
+ width = 960;
96822
+ height = 768;
96823
+ } else if (ratio === '3:2') {
96824
+ width = 1152;
96825
+ height = 768;
96826
+ } else if (ratio === '16:9') {
96827
+ width = 1280;
96828
+ height = 720;
96829
+ } else if (ratio === '7:4') {
96830
+ width = 896;
96831
+ height = 512;
96832
+ }
96833
+ } else {
96834
+ if (ratio === '1:1') {
96835
+ width = 512;
96836
+ height = 512;
96837
+ } else if (ratio === '4:5') {
96838
+ width = 512;
96839
+ height = 640;
96840
+ } else if (ratio === '2:3') {
96841
+ width = 512;
96842
+ height = 768;
96843
+ } else if (ratio === '9:16') {
96844
+ width = 576;
96845
+ height = 1024;
96846
+ } else if (ratio === '4:7') {
96847
+ width = 512;
96848
+ height = 896;
96849
+ } else if (ratio === '5:4') {
96850
+ width = 640;
96851
+ height = 512;
96852
+ } else if (ratio === '3:2') {
96853
+ width = 768;
96854
+ height = 512;
96855
+ } else if (ratio === '16:9') {
96856
+ width = 1024;
96857
+ height = 576;
96858
+ } else if (ratio === '7:4') {
96859
+ width = 896;
96860
+ height = 512;
96861
+ }
96862
+ }
96863
+ }
96864
+ this.ai_width = width;
96865
+ this.ai_height = height;
96576
96866
  const messages = {
96577
96867
  model,
96578
96868
  prompt: prompt,
96579
96869
  negative_prompt,
96580
- width: 512,
96581
- height: 512,
96870
+ width: this.ai_width,
96871
+ height: this.ai_height,
96582
96872
  steps,
96583
96873
  guidance,
96584
96874
  scheduler,
@@ -96604,10 +96894,15 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
96604
96894
  return;
96605
96895
  }
96606
96896
  const imageUrl = result.url;
96607
- if (this.imageAutoUpscale) {
96608
- this.upscaleImage(imageUrl, callback);
96609
- } else {
96897
+ if (this.activeImage) {
96898
+ // selectable image on content doesn't need tp be upscaled
96610
96899
  callback(imageUrl);
96900
+ } else {
96901
+ if (this.imageAutoUpscale) {
96902
+ this.upscaleImage(imageUrl, callback);
96903
+ } else {
96904
+ callback(imageUrl);
96905
+ }
96611
96906
  }
96612
96907
  } catch (error) {
96613
96908
  if (error.name === 'AbortError') ; else {