@innovastudio/contentbox 1.6.137 → 1.6.138

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/contentbox",
3
3
  "type": "module",
4
- "version": "1.6.137",
4
+ "version": "1.6.138",
5
5
  "description": "",
6
6
  "main": "public/contentbox/contentbox.esm.js",
7
7
  "types": "index.d.ts",
@@ -59,7 +59,7 @@
59
59
  "ws": "^8.13.0"
60
60
  },
61
61
  "dependencies": {
62
- "@innovastudio/contentbuilder": "^1.5.130",
62
+ "@innovastudio/contentbuilder": "^1.5.131",
63
63
  "js-beautify": "^1.14.0",
64
64
  "sortablejs": "^1.15.2"
65
65
  }
@@ -97375,14 +97375,14 @@ class Rte {
97375
97375
  if (btnLink) btnLink.style.display = '';
97376
97376
  if (btnSymbol) btnSymbol.style.display = '';
97377
97377
  if (!customcode && !noedit && !_protected || subblock) {
97378
- if ((elm.tagName.toLowerCase() === 'img' || dom.hasClass(elm, 'is-social') || dom.hasClass(elm, 'is-rounded-button-medium') || dom.hasClass(elm, 'cell-active')) && !dom.getSelected()) {
97378
+ if ((dom.hasClass(elm, 'is-social') || dom.hasClass(elm, 'is-rounded-button-medium') || dom.hasClass(elm, 'cell-active')) && !dom.getSelected()) {
97379
97379
  if (this.elementRteTool.style.display === 'none' || this.elementRteTool.style.display === '') {
97380
97380
  this.elementRteTool.style.display = 'flex';
97381
97381
  this.rteTool.style.display = 'none';
97382
97382
  this.showAlignButtons();
97383
97383
  this.positionToolbar();
97384
97384
  }
97385
- } else if (dom.hasClass(elm, 'spacer') || elm.tagName.toLowerCase() === 'video' || dom.hasClass(elm, 'ovl') || col.getAttribute('data-html') && !subblock) {
97385
+ } else if (elm.tagName.toLowerCase() === 'img' || dom.hasClass(elm, 'spacer') || elm.tagName.toLowerCase() === 'video' || dom.hasClass(elm, 'ovl') || col.getAttribute('data-html') && !subblock) {
97386
97386
  //|| col===elm
97387
97387
 
97388
97388
  if (this.elementRteTool.style.display === 'none' || this.elementRteTool.style.display === '') {
@@ -109732,144 +109732,139 @@ class Dictation {
109732
109732
  this.builder = builder;
109733
109733
  this.imageModels = [{
109734
109734
  id: 'fal-ai/nano-banana',
109735
- // ok
109736
109735
  label: 'Nano Banana',
109737
109736
  sizes: [],
109738
109737
  // no size options
109739
109738
  output_format: 'jpeg'
109740
109739
  }, {
109741
109740
  id: 'fal-ai/imagen4/preview/fast',
109742
- // ok
109743
109741
  label: 'Imagen 4 Preview Fast',
109744
109742
  sizes: ['1:1', '4:3', '16:9', '3:4', '9:16']
109745
109743
  }, {
109746
109744
  id: 'fal-ai/imagen4/preview',
109747
- // ok
109748
109745
  label: 'Imagen 4 Preview',
109749
109746
  sizes: ['1:1', '4:3', '16:9', '3:4', '9:16']
109750
109747
  }, {
109751
109748
  id: 'fal-ai/imagen4/preview/ultra',
109752
- // ok
109753
109749
  label: 'Imagen 4 Preview Ultra',
109754
109750
  sizes: ['1:1', '4:3', '16:9', '3:4', '9:16']
109755
- }, {
109756
- id: 'fal-ai/hidream-i1-fast',
109757
- // ok
109758
- label: 'HiDream-I1 Fast',
109759
- // sizes: => uses defaultSizes
109760
- output_format: 'jpeg'
109761
- }, {
109762
- id: 'fal-ai/hidream-i1-dev',
109763
- // ok
109764
- label: 'HiDream-I1 Dev',
109765
- output_format: 'jpeg'
109766
- }, {
109767
- id: 'fal-ai/hidream-i1-full',
109768
- // ok
109769
- label: 'HiDream-I1 Full',
109770
- output_format: 'jpeg'
109771
- }, {
109772
- id: 'bria/text-to-image/3.2',
109773
- // ok
109774
- label: 'Bria (3.2)',
109775
- sizes: ['1:1', '3:2', '4:3', '5:4', '16:9', '2:3', '3:4', '4:5', '9:16']
109776
- }, {
109777
- id: 'fal-ai/recraft/v3/text-to-image',
109778
- // ok
109779
- label: 'Recraft V3'
109780
109751
  }, {
109781
109752
  id: 'fal-ai/flux-1/schnell',
109782
- // ok
109783
109753
  label: 'FLUX.1 Schnell',
109754
+ // sizes: => uses defaultSizes
109784
109755
  output_format: 'jpeg'
109785
- }, {
109756
+ },
109757
+ // Krea
109758
+ {
109786
109759
  id: 'fal-ai/flux/krea',
109787
- // ok
109788
109760
  label: 'FLUX.1 Krea',
109789
109761
  output_format: 'jpeg'
109790
- }, {
109791
- id: 'fal-ai/flux-krea-lora',
109792
- // ok
109793
- label: 'FLUX.1 Krea Lora',
109794
- output_format: 'jpeg'
109795
- }, {
109762
+ },
109763
+ // {
109764
+ // id: 'fal-ai/flux-krea-lora',
109765
+ // label: 'FLUX.1 Krea Lora',
109766
+ // output_format: 'jpeg'
109767
+ // },
109768
+ // Kontext
109769
+ {
109796
109770
  id: 'fal-ai/flux-kontext-lora/text-to-image',
109797
- // ok
109798
- label: 'FLUX Kontext Lora',
109771
+ label: 'FLUX.1 Kontext Lora',
109799
109772
  output_format: 'jpeg'
109800
109773
  }, {
109801
109774
  id: 'fal-ai/flux-pro/kontext/text-to-image',
109802
- // ok
109803
109775
  label: 'FLUX.1 Kontext Pro',
109804
109776
  sizes: ['21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'],
109805
109777
  size_param: 'aspect_ratio',
109778
+ // aspect_ratio
109806
109779
  output_format: 'jpeg'
109807
109780
  }, {
109808
109781
  id: 'fal-ai/flux-pro/kontext/max/text-to-image',
109809
- // ok
109810
109782
  label: 'FLUX.1 Kontext Max',
109811
109783
  sizes: ['21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'],
109812
109784
  size_param: 'aspect_ratio',
109785
+ // aspect_ratio
109786
+ output_format: 'jpeg'
109787
+ },
109788
+ // Pro
109789
+ {
109790
+ id: 'fal-ai/flux-pro/new',
109791
+ label: 'FLUX.1 Pro',
109792
+ // new, fast
109793
+ output_format: 'jpeg'
109794
+ }, {
109795
+ id: 'fal-ai/flux-pro/v1.1',
109796
+ label: 'FLUX1.1 Pro',
109813
109797
  output_format: 'jpeg'
109814
109798
  }, {
109815
109799
  id: 'fal-ai/flux-pro/v1.1-ultra',
109816
- // ok
109817
- label: 'FLUX 1.1 Pro Ultra',
109800
+ label: 'FLUX1.1 Pro Ultra',
109818
109801
  sizes: ['21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'],
109819
109802
  size_param: 'aspect_ratio',
109803
+ // aspect_ratio
109820
109804
  output_format: 'jpeg'
109821
109805
  }, {
109822
109806
  id: 'fal-ai/bytedance/seedream/v4/text-to-image',
109823
- // ok
109824
109807
  label: 'ByteDance Seedream 4.0'
109825
109808
  }, {
109826
109809
  id: 'fal-ai/wan/v2.2-5b/text-to-image',
109827
- // ok
109828
109810
  label: 'Wan 2.2 5B',
109829
109811
  output_format: 'jpeg',
109830
109812
  output_param: 'image_format'
109831
109813
  }, {
109832
109814
  id: 'fal-ai/wan/v2.2-a14b/text-to-image',
109833
- // ok
109834
109815
  label: 'Wan 2.2 14B'
109835
109816
  }, {
109836
109817
  id: 'fal-ai/qwen-image',
109837
- // ok
109838
109818
  label: 'Qwen Image',
109839
109819
  output_format: 'jpeg'
109820
+ }, {
109821
+ id: 'fal-ai/hidream-i1-fast',
109822
+ label: 'HiDream-I1 Fast',
109823
+ output_format: 'jpeg'
109824
+ }, {
109825
+ id: 'fal-ai/hidream-i1-dev',
109826
+ label: 'HiDream-I1 Dev',
109827
+ output_format: 'jpeg'
109828
+ }, {
109829
+ id: 'fal-ai/hidream-i1-full',
109830
+ label: 'HiDream-I1 Full',
109831
+ output_format: 'jpeg'
109832
+ }, {
109833
+ id: 'bria/text-to-image/3.2',
109834
+ // new
109835
+ label: 'Bria (3.2)',
109836
+ sizes: ['1:1', '3:2', '4:3', '5:4', '16:9', '2:3', '3:4', '4:5', '9:16']
109837
+ }, {
109838
+ id: 'fal-ai/recraft/v3/text-to-image',
109839
+ label: 'Recraft V3'
109840
109840
  }, {
109841
109841
  id: 'fal-ai/ideogram/v3',
109842
- // ok
109843
109842
  label: 'Ideogram V3'
109844
109843
  }, {
109845
109844
  id: 'fal-ai/minimax/image-01',
109846
- // ok
109845
+ // new
109847
109846
  label: 'MiniMax Image-01',
109848
109847
  sizes: ['21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16'],
109849
- size_param: 'aspect_ratio'
109848
+ size_param: 'aspect_ratio' // aspect_ratio
109850
109849
  }, {
109851
109850
  id: 'fal-ai/playground-v25',
109852
- // ok
109851
+ // new
109853
109852
  label: 'Playground v25',
109854
109853
  output_format: 'jpeg'
109855
109854
  }, {
109856
109855
  id: 'fal-ai/sana',
109857
- // ok
109858
109856
  label: 'Sana Base',
109859
109857
  output_format: 'jpeg'
109860
109858
  }, {
109861
109859
  id: 'fal-ai/sana/sprint',
109862
- // ok
109863
109860
  label: 'Sana Sprint',
109864
109861
  output_format: 'jpeg'
109865
109862
  }, {
109866
109863
  id: 'fal-ai/sana/v1.5/4.8b',
109867
- // ok
109868
109864
  label: 'Sana v1.5 4.8B',
109869
109865
  output_format: 'jpeg'
109870
109866
  }, {
109871
109867
  id: 'fal-ai/sana/v1.5/1.6b',
109872
- // ok
109873
109868
  label: 'Sana v1.5 1.6B',
109874
109869
  output_format: 'jpeg'
109875
109870
  }];
@@ -121493,7 +121488,20 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
121493
121488
  }
121494
121489
  }
121495
121490
  */
121496
-
121491
+ const clickedElementEditable = target.closest('[contenteditable]');
121492
+ let insideEditable = this.doc.activeElement && this.doc.activeElement.closest('[contenteditable]') && this.doc.activeElement.closest('.is-builder');
121493
+ if (insideEditable && !clickedElementEditable) {
121494
+ this.saveSelection();
121495
+ const selection = this.dom.getSelection();
121496
+ if (selection && !selection.isCollapsed) {
121497
+ // Only if there is text selected (not caret selection)
121498
+ const col = this.doc.activeElement.closest('[contenteditable]');
121499
+ if (col) {
121500
+ // this.handleCellClick(col, e);
121501
+ this.activateColumnAndRte(col);
121502
+ }
121503
+ }
121504
+ }
121497
121505
  if (!(a || p || b || c || d || f || g || h || i || j || o || isSpecialElement || clrPicker) || rowClicked && !i || containerClicked) {
121498
121506
  // Click anywhere but is not inside builder area, modal, popup, tool or rte, then clear row/column (cell) selection
121499
121507
 
@@ -125192,6 +125200,32 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
125192
125200
  }
125193
125201
  }
125194
125202
  }
125203
+ activateColumnAndRte(col) {
125204
+ const util = this.util;
125205
+ util.clearActiveCell();
125206
+ this.activeCol = col;
125207
+ col.classList.add('cell-active');
125208
+ let row = col.parentNode;
125209
+ row.classList.add('row-active');
125210
+ const builders = this.doc.querySelectorAll(this.opts.container);
125211
+ builders.forEach(builder => {
125212
+ builder.classList.remove('builder-active');
125213
+ });
125214
+ row.parentNode.classList.add('builder-active');
125215
+ this.doc.body.classList.add('content-edit');
125216
+ if (row.childElementCount - 2 === 1) ; else {
125217
+ row.classList.add('row-outline');
125218
+ }
125219
+
125220
+ // Call onContentClick to indicate click on editable content (eg. for plugin usage)
125221
+ // if(this.opts.onContentClick) this.opts.onContentClick(e);
125222
+
125223
+ this.colTool.click(col);
125224
+ // this.elmTool.click(col, e);
125225
+ this.activeElement = col;
125226
+ this.inspectedElement = col;
125227
+ if (!this.controlPanel) this.rte.click(col);
125228
+ }
125195
125229
  handleCellClick(col, e) {
125196
125230
  if (this.cleanEditing) {
125197
125231
  col.parentNode.querySelector('.is-row-tool').style.display = '';