@innovastudio/contentbuilder 1.4.87 → 1.4.88

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.
@@ -5554,6 +5554,12 @@ class Util {
5554
5554
  localStorage.removeItem('_mic');
5555
5555
  localStorage.removeItem('_autosendcommand');
5556
5556
  localStorage.removeItem('_sampleshown');
5557
+ localStorage.removeItem('_disclaimershown');
5558
+ localStorage.removeItem('_temp');
5559
+ localStorage.removeItem('_top_p');
5560
+ localStorage.removeItem('_autosend_delay');
5561
+ localStorage.removeItem('_auto_editblock');
5562
+ localStorage.removeItem('_command_lang');
5557
5563
 
5558
5564
  //NOT USED
5559
5565
  localStorage.removeItem('_scrollableeditor');
@@ -51648,16 +51654,16 @@ class ButtonEditor {
51648
51654
  const val = btn.getAttribute('data-command');
51649
51655
  const activeButton = this.builder.activeButton || this.builder.activeLinkButton;
51650
51656
  if (val === 'auto') {
51651
- dom.removeClass(activeButton, 'flex');
51652
- dom.removeClass(activeButton, 'justify-center');
51653
- dom.removeClass(activeButton, 'items-center');
51654
- dom.addClass(activeButton, 'inline-block');
51657
+ activeButton.classList.remove('flex');
51658
+ activeButton.classList.remove('justify-center');
51659
+ activeButton.classList.remove('items-center');
51660
+ activeButton.classList.add('inline-block');
51655
51661
  }
51656
51662
  if (val === 'full') {
51657
- dom.removeClass(activeButton, 'inline-block');
51658
- dom.addClass(activeButton, 'flex');
51659
- dom.addClass(activeButton, 'justify-center');
51660
- dom.addClass(activeButton, 'items-center');
51663
+ activeButton.classList.remove('inline-block');
51664
+ activeButton.classList.add('flex');
51665
+ activeButton.classList.add('justify-center');
51666
+ activeButton.classList.add('items-center');
51661
51667
  }
51662
51668
  this.applyDefault(activeButton);
51663
51669
 
@@ -76826,6 +76832,7 @@ class Lib {
76826
76832
  activeBox.classList.add('is-content-bottom');
76827
76833
  activeBox.classList.add('edge-y-2');
76828
76834
  }
76835
+ this.builder.hideElementTools();
76829
76836
  }
76830
76837
  updateContentSize(activeBox, val) {
76831
76838
  const container = activeBox.querySelector('.is-container');
@@ -77425,6 +77432,81 @@ class Lib {
77425
77432
  }
77426
77433
  return null;
77427
77434
  }
77435
+ moveBlockContent(target) {
77436
+ const cell = this.builder.activeCol;
77437
+ if (!cell) return false;
77438
+ if (!(target === 'top' || target === 'bottom' || target === 'left' || target === 'right' || target === 'topleft' || target === 'topcenter' || target === 'topright' || target === 'bottomleft' || target === 'bottomcenter' || target === 'bottomright' || target === 'center')) return;
77439
+ this.builder.saveForUndo();
77440
+ const dom = this.builder.dom;
77441
+ let classes = this.builder.cssClasses.display;
77442
+ dom.addCssClass(cell, classes.flex, classes);
77443
+ classes = this.builder.cssClasses.flexDirection;
77444
+ dom.addCssClass(cell, classes.column, classes);
77445
+ if (target === 'top') {
77446
+ let classes = this.builder.cssClasses.justifyContent;
77447
+ dom.addCssClass(cell, classes.start, classes);
77448
+ classes = this.builder.cssClasses.alignItems;
77449
+ dom.addCssClass(cell, classes.center, classes);
77450
+ } else if (target === 'bottom') {
77451
+ let classes = this.builder.cssClasses.justifyContent;
77452
+ dom.addCssClass(cell, classes.end, classes);
77453
+ classes = this.builder.cssClasses.alignItems;
77454
+ dom.addCssClass(cell, classes.center, classes);
77455
+ } else if (target === 'left') {
77456
+ let classes = this.builder.cssClasses.justifyContent;
77457
+ dom.addCssClass(cell, classes.center, classes);
77458
+ classes = this.builder.cssClasses.alignItems;
77459
+ dom.addCssClass(cell, classes.start, classes);
77460
+ } else if (target === 'right') {
77461
+ let classes = this.builder.cssClasses.justifyContent;
77462
+ dom.addCssClass(cell, classes.center, classes);
77463
+ classes = this.builder.cssClasses.alignItems;
77464
+ dom.addCssClass(cell, classes.end, classes);
77465
+ } else if (target === 'topleft') {
77466
+ let classes = this.builder.cssClasses.justifyContent;
77467
+ dom.addCssClass(cell, classes.start, classes);
77468
+ classes = this.builder.cssClasses.alignItems;
77469
+ dom.addCssClass(cell, classes.start, classes);
77470
+ } else if (target === 'topcenter') {
77471
+ let classes = this.builder.cssClasses.justifyContent;
77472
+ dom.addCssClass(cell, classes.start, classes);
77473
+ classes = this.builder.cssClasses.alignItems;
77474
+ dom.addCssClass(cell, classes.center, classes);
77475
+ } else if (target === 'topright') {
77476
+ let classes = this.builder.cssClasses.justifyContent;
77477
+ dom.addCssClass(cell, classes.start, classes);
77478
+ classes = this.builder.cssClasses.alignItems;
77479
+ dom.addCssClass(cell, classes.end, classes);
77480
+ } else if (target === 'bottomleft') {
77481
+ let classes = this.builder.cssClasses.justifyContent;
77482
+ dom.addCssClass(cell, classes.end, classes);
77483
+ classes = this.builder.cssClasses.alignItems;
77484
+ dom.addCssClass(cell, classes.start, classes);
77485
+ } else if (target === 'bottomcenter') {
77486
+ let classes = this.builder.cssClasses.justifyContent;
77487
+ dom.addCssClass(cell, classes.end, classes);
77488
+ classes = this.builder.cssClasses.alignItems;
77489
+ dom.addCssClass(cell, classes.center, classes);
77490
+ } else if (target === 'bottomright') {
77491
+ let classes = this.builder.cssClasses.justifyContent;
77492
+ dom.addCssClass(cell, classes.end, classes);
77493
+ classes = this.builder.cssClasses.alignItems;
77494
+ dom.addCssClass(cell, classes.end, classes);
77495
+ } else if (target === 'center') {
77496
+ let classes = this.builder.cssClasses.justifyContent;
77497
+ dom.addCssClass(cell, classes.center, classes);
77498
+ classes = this.builder.cssClasses.alignItems;
77499
+ dom.addCssClass(cell, classes.center, classes);
77500
+ } else {
77501
+ let classes = this.builder.cssClasses.justifyContent;
77502
+ dom.addCssClass(cell, classes.center, classes);
77503
+ classes = this.builder.cssClasses.alignItems;
77504
+ dom.addCssClass(cell, classes.center, classes);
77505
+ }
77506
+ cell.style.justifyContent = '';
77507
+ cell.style.alignItems = '';
77508
+ this.builder.onChange();
77509
+ }
77428
77510
  }
77429
77511
 
77430
77512
  // import RecordRTC from 'recordrtc';
@@ -77447,32 +77529,56 @@ class Dictation {
77447
77529
  }
77448
77530
 
77449
77531
  this.builder.isInProgress = false;
77450
- const commandInfo = this.builder.commandInfo;
77451
- let htmlList = '';
77452
- for (const key in commandInfo) {
77453
- if (Object.prototype.hasOwnProperty.call(commandInfo, key)) {
77454
- const {
77455
- title,
77456
- list,
77457
- width
77458
- } = commandInfo[key];
77459
- if (!this.builder.enableShortCommands) {
77460
- if (key === 'general') {
77461
- htmlList += `<h2>${title}</h2>`;
77462
- for (const item of list) {
77463
- if (width) htmlList += `<div role="button" tabindex="0" class="command-item" style="width:${width}">${item}</div>`;else htmlList += `<div role="button" tabindex="0" class="command-item">${item}</div>`;
77464
- }
77465
- }
77466
- } else {
77467
- htmlList += `<h2>${title}</h2>`;
77468
- for (const item of list) {
77469
- if (width) htmlList += `<div role="button" tabindex="0" class="command-item" style="width:${width}">${item}</div>`;else htmlList += `<div role="button" tabindex="0" class="command-item">${item}</div>`;
77470
- }
77471
- }
77472
- }
77473
- }
77474
77532
  let html = `
77475
77533
  <style>
77534
+ #_cbhtml .is-modal.page-command {
77535
+ width: 25vw;
77536
+ min-width: 393px;
77537
+ max-width: 600px;
77538
+ height: 230px;
77539
+ top: auto;
77540
+ bottom: 30px;
77541
+ left: auto;
77542
+ right: 30px;
77543
+ z-index: 10005;
77544
+ font-size: 12px;
77545
+ border-radius: 6px;
77546
+ }
77547
+ #_cbhtml .is-modal.page-command textarea {
77548
+ border:none;border-top: rgb(133 133 133 / 14%) 1px solid;resize:none;width:100%;
77549
+ height:170px;outline:none;background:transparent;line-height: 1.2;
77550
+ font-family: sans-serif;font-weight: 300;font-size: 17px;padding-top:12px;
77551
+ }
77552
+ .page-command-overlay {
77553
+ position: fixed;
77554
+ background: rgb(148 148 148 / 22%);
77555
+ display: none;
77556
+ z-index: 10004;
77557
+ justify-content: center;
77558
+ align-items:center;
77559
+ }
77560
+ #_cbhtml .div-assistant-mode button {
77561
+ padding: 0 17px;height:26px;border-radius:20px;box-shadow:none;
77562
+ }
77563
+ #_cbhtml .div-assistant-mode button[disabled] {
77564
+ pointer-events: none;
77565
+ opacity: 0.5;
77566
+ background: transparent;
77567
+ }
77568
+ /*
77569
+ .is-modal.commandconfig,
77570
+ #_cbhtml .is-modal.commandconfig label {
77571
+ font-size: 14px;
77572
+ }
77573
+ */
77574
+ .is-modal.commandconfig ul {
77575
+ margin: 0;
77576
+ padding: 0 0 0 16px;
77577
+ }
77578
+ .is-modal.commandconfig ul li {
77579
+ font-size: inherit;
77580
+ line-height: 1.2;
77581
+ }
77476
77582
  .is-modal.commandlist {
77477
77583
  z-index: 10005 !important
77478
77584
  }
@@ -77512,9 +77618,18 @@ class Dictation {
77512
77618
  flex: none;
77513
77619
  font-family: "Open Sans", sans-serif;
77514
77620
  font-weight: 300;
77515
- margin-bottom: 30px;
77621
+ margin-bottom: 10px;
77516
77622
  font-size: 28px;
77517
77623
  }
77624
+ .is-modal.commandlist .is-modal-content > div > p {
77625
+ display: block;
77626
+ width: 100%;
77627
+ flex: none;
77628
+ font-family: "Open Sans", sans-serif;
77629
+ font-weight: 300;
77630
+ font-size: 17px !important;
77631
+ margin: 0 0 30px;
77632
+ }
77518
77633
  .is-modal.commandlist .is-modal-content > div > div {
77519
77634
  margin-right: 2.2rem;
77520
77635
  margin-bottom: 2.2rem;
@@ -77543,24 +77658,6 @@ class Dictation {
77543
77658
  .dark .is-modal.commandlist .is-modal-content > div > div:hover {
77544
77659
  background: rgba(255, 255, 255, 0.05);
77545
77660
  }
77546
- .is-modal.page-command {
77547
- width: 340px !important;
77548
- height: 200px !important;
77549
- top: auto !important;
77550
- bottom: 30px !important;
77551
- left: auto !important;
77552
- right: 30px !important;
77553
- z-index: 10005 !important;
77554
- font-size: 12px;
77555
- }
77556
- .page-command-overlay {
77557
- position: fixed;
77558
- background: rgb(148 148 148 / 22%);
77559
- display: none;
77560
- z-index: 10004;
77561
- justify-content: center;
77562
- align-items:center;
77563
- }
77564
77661
 
77565
77662
  .spinner {
77566
77663
  -webkit-animation: rotator 1.4s linear infinite;
@@ -77619,6 +77716,11 @@ class Dictation {
77619
77716
  .inp-command::placeholder {
77620
77717
  color: #aaa;
77621
77718
  }
77719
+
77720
+ .label-chk-autosend-command,
77721
+ .label-input-autosend-command {
77722
+ display: none !important;
77723
+ }
77622
77724
  </style>
77623
77725
  <div class="is-overlay page-command-overlay">
77624
77726
  <svg class="spinner" width="40px" height="40px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
@@ -77631,25 +77733,36 @@ class Dictation {
77631
77733
  justify-content: center;
77632
77734
  align-items: center;">
77633
77735
  ${util.out('AI Assistant')}</span>
77736
+
77634
77737
  <button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">
77635
- <svg class="is-icon-flex"style="width:20px;height:20px"><use xlink:href="#ion-ios-close-empty"></use></svg>
77738
+ <svg class="is-icon-flex"style="width:22px;height:22px"><use xlink:href="#ion-ios-close-empty"></use></svg>
77636
77739
  </button>
77637
77740
  </div>
77638
77741
  <div style="display:flex;flex-direction:column;justify-content:space-between;position:absolute;box-sizing:border-box;top:0;left:0;width:100%;height:100%;border-top:transparent 35px solid;overflow-y:hidden;overflow-x:auto;">
77639
-
77640
- <textarea class="inp-command" style="resize:none;width:100%;height:121px;border:none;outline:none;background:transparent;line-height: 1.2;
77641
- font-family: sans-serif;font-weight: 300;font-size: 17px;"></textarea>
77642
- <div style="display:flex">
77742
+ <div style="display:flex;align-items:center;justify-content:center;padding: 2px 13px 10px;">
77743
+ <div class="div-assistant-mode" style="display:flex;align-items: center;">
77744
+ <button class="scope-section on" title="${util.out('General')}" data-value="general" style="margin-right:5px">${util.out('General')}</button>
77745
+ <button class="scope-others" title="${util.out('Ask Questions')}" data-value="others">${util.out('Ask Questions')}</button>
77746
+ <button class="scope-block" title="${util.out('Edit Selected Block')}" data-value="block" style="">${util.out('Edit Selected Block')}</button>
77747
+ </div>
77748
+ </div>
77749
+ <textarea class="inp-command"></textarea>
77750
+ <div style="display:flex;padding-left:3px;">
77751
+ <button title="${util.out('Settings')}" class="cmd-command-config classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77752
+ <svg class="is-icon-flex" style="width:15px;height:15px;flex:none;"><use xlink:href="#icon-settings"></use></svg>
77753
+ </button>
77643
77754
  <button title="${util.out('Mic')}" class="cmd-enable-dictation classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77644
77755
  <svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-microphone"></use></svg>
77645
77756
  </button>
77646
- <button title="${util.out('Commands')}" class="cmd-command-list classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77757
+ <button title="${util.out('Command Examples')}" class="cmd-command-list classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77647
77758
  <svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-message-search"></use></svg>
77648
77759
  </button>
77649
- <button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77760
+ <button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="margin-right:6px;width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
77650
77761
  <svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-eraser"></use></svg>
77651
77762
  </button>
77652
- <label for="chkAutoSendCommand" style="margin:0;display:flex;padding-left:10px;padding-right:10px;white-space:nowrap;width:100%;align-items:center;letter-spacing:0"><input id="chkAutoSendCommand" type="checkbox"> <span style="margin-left:3px">${util.out('Auto Send')}</span></label>
77763
+
77764
+ <label class="label-chk-autosend-command" for="chkAutoSendCommand" style="margin:0;display:flex;padding-left:10px;padding-right:25px;white-space:nowrap;align-items:center;letter-spacing:0"><input id="chkAutoSendCommand" type="checkbox"> <span style="margin-left:3px">${util.out('Auto Send')}</span></label>
77765
+
77653
77766
  <button title="${util.out('Send')}" class="cmd-send-command classic-primary" style="width:100%;padding-left:5px;padding-right:5px;height:43px;outline-offset:-2px;">Send</button>
77654
77767
  </div>
77655
77768
  </div>
@@ -77662,10 +77775,55 @@ class Dictation {
77662
77775
  <button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">
77663
77776
  <svg class="is-icon-flex"><use xlink:href="#ion-ios-close-empty"></use></svg>
77664
77777
  </button>
77665
- <div>
77778
+ <div class="div-command-list">
77666
77779
 
77667
- ${htmlList}
77780
+ </div>
77781
+ </div>
77782
+ </div>
77668
77783
 
77784
+ <div class="is-modal commandconfig" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
77785
+ <div class="is-modal-content" style="max-width:380px;padding:55px 40px 35px;">
77786
+ <div class="is-modal-bar is-draggable">
77787
+ ${util.out('Settings')}
77788
+ <button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">&#10005;</button>
77789
+ </div>
77790
+
77791
+ <div class="is-label"><span>${util.out('Temperature')}</span>: <span class="val-temp">0.6</span></div>
77792
+ <div style="padding-top:4px">
77793
+ <input type="range" min="0" max="2" step="0.01" value="0.6" class="temperature-slider is-rangeslider" style="margin:0 !important;">
77794
+ </div>
77795
+
77796
+ <div class="is-label" style="margin-top:15px"><span>${util.out('Top P')}</span>: <span class="val-top-p">0.9</span></div>
77797
+ <div style="padding-top:4px">
77798
+ <input type="range" min="0" max="1" step="0.01" value="0.9" class="top-p-slider is-rangeslider" style="margin:0 !important;">
77799
+ </div>
77800
+
77801
+ <div style="text-align:right">
77802
+ <button title="${util.out('Reset')}" class="input-reset classic-secondary" style="text-decoration: underline;padding: 0;box-shadow: none;">${util.out('Reset')}</button>
77803
+ </div>
77804
+
77805
+ <label for="chkAutoEditBlock" style="margin:0;display:flex;align-items:center;letter-spacing:0">
77806
+ <input id="chkAutoEditBlock" type="checkbox" style="margin:0 5px 0 0;">
77807
+ <span style="line-height: 1;">${util.out('Auto select \'Edit Selected Block\' mode.')}</span>
77808
+ </label>
77809
+
77810
+ <label class="label-input-autosend-command" style="margin:18px 0 0 0;display:flex;align-items:center;letter-spacing:0">
77811
+ <span>${util.out('Auto send command delay')}</soan>:
77812
+ <input class="input-autosend-delay" style="width:60px;text-align:center;padding-left:0;height:33px;margin-right:3px;" type="text" value="4000"> <span>ms</span>
77813
+ </label>
77814
+
77815
+ <div class="command-settings-info" style="display:none"></div>
77816
+
77817
+ <label class="label-input-command-lang" style="display:none;flex-direction:column;letter-spacing:0;margin:18px 0 0 0;">
77818
+ <span>${util.out('Language')}:</span>
77819
+ <div style="display:flex; align-items: baseline;flex-direction: row;">
77820
+ <input class="input-command-lang" style="width:70px;text-align:center;padding-left:0;height:33px;margin-top:5px;margin-right:10px" type="text" value="en-us">
77821
+ <span>(${util.out('BCP-47 format')})</span>
77822
+ </div>
77823
+ </label>
77824
+
77825
+ <div style="text-align:right;margin-top:25px;">
77826
+ <button title="${util.out('Ok')}" class="input-ok classic-primary" style="width:100%;">${util.out('Ok')}</button>
77669
77827
  </div>
77670
77828
  </div>
77671
77829
  </div>
@@ -77675,10 +77833,47 @@ class Dictation {
77675
77833
  this.modalCommand = modalCommand;
77676
77834
  const modalCommandList = builderStuff.querySelector('.commandlist');
77677
77835
  this.modalCommandList = modalCommandList;
77836
+ const modalConfig = builderStuff.querySelector('.commandconfig');
77837
+ this.modalConfig = modalConfig;
77838
+ const btnConfig = builderStuff.querySelector('.cmd-command-config');
77678
77839
  const btnDictation = builderStuff.querySelector('.cmd-enable-dictation');
77679
77840
  const btnClear = builderStuff.querySelector('.cmd-clear-command');
77680
77841
  const chkAutoSend = builderStuff.querySelector('#chkAutoSendCommand');
77681
77842
  const btnCommandList = builderStuff.querySelector('.cmd-command-list');
77843
+ const divInfo = builderStuff.querySelector('.command-settings-info');
77844
+ let info = `
77845
+ <div style="font-weight:500;margin: 25px 0 7px;">${util.out('Dictation')}</div>
77846
+ <div style="line-height: 1.4;margin: 0 0 7px;">${util.out('These words trigger command actions')}:</div>
77847
+ <ul>`;
77848
+ const triggerWords = this.builder.triggerWords;
77849
+ for (const key in triggerWords) {
77850
+ if (key === 'send') {
77851
+ let s = '';
77852
+ triggerWords[key].forEach(word => {
77853
+ s += `, ${word}`;
77854
+ });
77855
+ s = s.substring(1);
77856
+ info += `<li><span>${s}</span></li>`;
77857
+ }
77858
+ if (key === 'abort') {
77859
+ let s = '';
77860
+ triggerWords[key].forEach(word => {
77861
+ s += `, ${word}`;
77862
+ });
77863
+ s = s.substring(1);
77864
+ info += `<li><span>${s}</span></li>`;
77865
+ }
77866
+ if (key === 'clear') {
77867
+ let s = '';
77868
+ triggerWords[key].forEach(word => {
77869
+ s += `, ${word}`;
77870
+ });
77871
+ s = s.substring(1);
77872
+ info += `<li><span>${s}</span></li>`;
77873
+ }
77874
+ }
77875
+ info += '</ul>';
77876
+ divInfo.innerHTML = info;
77682
77877
  const inpCommand = this.builderStuff.querySelector('.inp-command');
77683
77878
  if (localStorage.getItem('_sampleshown') === null) {
77684
77879
  inpCommand.setAttribute('placeholder', this.builder.commandPlaceholderText);
@@ -77702,7 +77897,6 @@ class Dictation {
77702
77897
  if (localStorage.getItem('_mic') === '0') {
77703
77898
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
77704
77899
  chkAutoSend.parentNode.style.display = 'none';
77705
- btnClear.style.marginRight = '6px';
77706
77900
  }
77707
77901
  }
77708
77902
  if (localStorage.getItem('_autosendcommand') !== null) {
@@ -77716,48 +77910,148 @@ class Dictation {
77716
77910
  util.saveSelection(); // must be called in case used by formatText()
77717
77911
  });
77718
77912
 
77913
+ btnConfig.addEventListener('click', () => {
77914
+ this.config();
77915
+
77916
+ // util.showModal(this.modalConfig, false, ()=>{
77917
+
77918
+ // btnConfig.removeAttribute('data-focus');
77919
+ // btnConfig.focus();
77920
+
77921
+ // }, false);
77922
+
77923
+ // btnConfig.setAttribute('data-focus',true);
77924
+ });
77925
+
77926
+ if (localStorage.getItem('_temp') !== null) {
77927
+ let val = localStorage.getItem('_temp');
77928
+ this.builder.temperature = val;
77929
+ }
77930
+ if (localStorage.getItem('_top_p') !== null) {
77931
+ let val = localStorage.getItem('_top_p');
77932
+ this.builder.topP = val;
77933
+ }
77934
+ if (localStorage.getItem('_autosend_delay') !== null) {
77935
+ let val = localStorage.getItem('_autosend_delay');
77936
+ this.builder.autoSendDelay = val;
77937
+ }
77938
+ if (localStorage.getItem('_auto_editblock') !== null) {
77939
+ let val = localStorage.getItem('_auto_editblock');
77940
+ this.builder.autoEditBlock = val;
77941
+ }
77942
+ if (localStorage.getItem('_command_lang') !== null) {
77943
+ let val = localStorage.getItem('_command_lang');
77944
+ this.builder.speechRecognitionLang = val;
77945
+ }
77946
+ const btnConfigOk = this.modalConfig.querySelector('.input-ok');
77947
+ btnConfigOk.addEventListener('click', () => {
77948
+ const tempSlider = this.modalConfig.querySelector('.temperature-slider');
77949
+ localStorage.setItem('_temp', tempSlider.value);
77950
+ this.builder.temperature = tempSlider.value;
77951
+ const topPSlider = this.modalConfig.querySelector('.top-p-slider');
77952
+ localStorage.setItem('_top_p', topPSlider.value);
77953
+ this.builder.topP = topPSlider.value;
77954
+ const chkAutoEditBlock = this.modalConfig.querySelector('#chkAutoEditBlock');
77955
+ if (chkAutoEditBlock.checked) {
77956
+ localStorage.setItem('_auto_editblock', 1);
77957
+ this.builder.autoEditBlock = true;
77958
+ } else {
77959
+ localStorage.setItem('_auto_editblock', 0);
77960
+ this.builder.autoEditBlock = false;
77961
+ }
77962
+ const inpAutoSendDelay = this.modalConfig.querySelector('.input-autosend-delay');
77963
+ localStorage.setItem('_autosend_delay', inpAutoSendDelay.value);
77964
+ this.builder.autoSendDelay = inpAutoSendDelay.value;
77965
+ const inpCommandLang = this.modalConfig.querySelector('.input-command-lang');
77966
+ localStorage.setItem('_command_lang', inpCommandLang.value);
77967
+ this.builder.speechRecognitionLang = inpCommandLang.value;
77968
+ this.builder.hideModal(this.modalConfig);
77969
+ });
77970
+ const btnConfigReset = this.modalConfig.querySelector('.input-reset');
77971
+ btnConfigReset.addEventListener('click', () => {
77972
+ this.resetConfig();
77973
+ });
77974
+ const valTemp = this.modalConfig.querySelector('.val-temp');
77975
+ const tempSlider = this.modalConfig.querySelector('.temperature-slider');
77976
+ tempSlider.oninput = () => {
77977
+ valTemp.innerHTML = tempSlider.value;
77978
+ };
77979
+ const valTopP = this.modalConfig.querySelector('.val-top-p');
77980
+ const topPSlider = this.modalConfig.querySelector('.top-p-slider');
77981
+ topPSlider.oninput = () => {
77982
+ valTopP.innerHTML = topPSlider.value;
77983
+ };
77719
77984
  btnCommandList.addEventListener('click', () => {
77985
+ let htmlList = '';
77986
+ const commandInfo = this.builder.commandInfo;
77987
+ for (const key in commandInfo) {
77988
+ if (Object.prototype.hasOwnProperty.call(commandInfo, key)) {
77989
+ const {
77990
+ title,
77991
+ description,
77992
+ list,
77993
+ width
77994
+ } = commandInfo[key];
77995
+ if (!this.builder.enableShortCommands) {
77996
+ if (description) {
77997
+ htmlList += `<h2>${title}</h2>`;
77998
+ htmlList += `<p>${description}</p>`;
77999
+ } else {
78000
+ htmlList += `<h2 style="margin-bottom:30px">${title}</h2>`;
78001
+ }
78002
+ for (const item of list) {
78003
+ if (width) htmlList += `<div role="button" tabindex="0" class="command-item" style="width:${width}">${item}</div>`;else htmlList += `<div role="button" tabindex="0" class="command-item">${item}</div>`;
78004
+ }
78005
+ } else {
78006
+ htmlList += `<h2>${title}</h2>`;
78007
+ for (const item of list) {
78008
+ if (width) htmlList += `<div role="button" tabindex="0" class="command-item" style="width:${width}">${item}</div>`;else htmlList += `<div role="button" tabindex="0" class="command-item">${item}</div>`;
78009
+ }
78010
+ }
78011
+ }
78012
+ }
78013
+ const divCommandList = this.modalCommandList.querySelector('.div-command-list');
78014
+ divCommandList.innerHTML = htmlList;
78015
+ const handleSelect = s => {
78016
+ const inpCommand = this.builderStuff.querySelector('.inp-command');
78017
+ inpCommand.value = s;
78018
+ this.builder.commandText = inpCommand.value;
78019
+ util.hideModal(this.modalCommandList);
78020
+ };
78021
+ let items = this.modalCommandList.querySelectorAll('.command-item');
78022
+ items.forEach(elm => {
78023
+ elm.addEventListener('click', () => {
78024
+ handleSelect(elm.innerText);
78025
+ inpCommand.focus();
78026
+ });
78027
+ elm.addEventListener('keydown', e => {
78028
+ if (e.which === 13 && !e.shiftKey) {
78029
+ e.preventDefault();
78030
+ e.stopImmediatePropagation();
78031
+ handleSelect(elm.innerText);
78032
+ setTimeout(() => {
78033
+ inpCommand.focus();
78034
+ }, 300);
78035
+ }
78036
+ });
78037
+ });
77720
78038
  util.showModal(this.modalCommandList, false, () => {
77721
78039
  btnCommandList.removeAttribute('data-focus');
77722
78040
  btnCommandList.focus();
77723
78041
  }, false);
77724
78042
  btnCommandList.setAttribute('data-focus', true);
77725
78043
  });
77726
- const handleSelect = s => {
77727
- const inpCommand = this.builderStuff.querySelector('.inp-command');
77728
- inpCommand.value = s;
77729
- util.hideModal(this.modalCommandList);
77730
- };
77731
- let items = modalCommandList.querySelectorAll('.command-item');
77732
- items.forEach(elm => {
77733
- elm.addEventListener('click', () => {
77734
- handleSelect(elm.innerText);
77735
- inpCommand.focus();
77736
- });
77737
- elm.addEventListener('keydown', e => {
77738
- if (e.which === 13 && !e.shiftKey) {
77739
- e.preventDefault();
77740
- e.stopImmediatePropagation();
77741
- handleSelect(elm.innerText);
77742
- setTimeout(() => {
77743
- inpCommand.focus();
77744
- }, 300);
77745
- }
77746
- });
77747
- });
77748
78044
  btnDictation.addEventListener('click', () => {
77749
78045
  if (!this.checkMic()) {
77750
78046
  this.startDictation();
77751
78047
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone"></use></svg>';
77752
78048
  localStorage.setItem('_mic', '1');
77753
78049
  chkAutoSend.parentNode.style.display = 'flex';
77754
- btnClear.style.marginRight = '';
77755
78050
  } else {
77756
78051
  this.stopDictation();
77757
78052
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
77758
78053
  localStorage.setItem('_mic', '0');
77759
78054
  chkAutoSend.parentNode.style.display = 'none';
77760
- btnClear.style.marginRight = '6px';
77761
78055
  }
77762
78056
  });
77763
78057
  chkAutoSend.addEventListener('change', () => {
@@ -77781,6 +78075,8 @@ class Dictation {
77781
78075
  // Abort
77782
78076
 
77783
78077
  this.opts.abort();
78078
+ const inpCommand = this.builderStuff.querySelector('.inp-command');
78079
+ this.builder.commandText = inpCommand.value;
77784
78080
  return;
77785
78081
  }
77786
78082
  const inpCommand = this.modalCommand.querySelector('.inp-command');
@@ -77792,6 +78088,8 @@ class Dictation {
77792
78088
 
77793
78089
  // this.startSending();
77794
78090
 
78091
+ // Clear
78092
+ this.builder.commandText = '';
77795
78093
  this.opts.send(question);
77796
78094
  });
77797
78095
  inpCommand.addEventListener('keydown', e => {
@@ -77814,9 +78112,123 @@ class Dictation {
77814
78112
  this.stopDictation();
77815
78113
  localStorage.setItem('_dictation', '0');
77816
78114
  });
78115
+ const btnScopeSection = this.modalCommand.querySelector('.scope-section');
78116
+ const btnScopeBlock = this.modalCommand.querySelector('.scope-block');
78117
+ const btnScopeOthers = this.modalCommand.querySelector('.scope-others');
78118
+ btnScopeBlock.disabled = true;
78119
+ const assistModeBtns = modalCommand.querySelectorAll('.div-assistant-mode button');
78120
+ assistModeBtns.forEach(btn => {
78121
+ btn.addEventListener('click', () => {
78122
+ assistModeBtns.forEach(item => {
78123
+ item.classList.remove('on');
78124
+ });
78125
+ btn.classList.add('on');
78126
+ const val = btn.getAttribute('data-value');
78127
+ this.builder.assistantMode = val; // general, block, others
78128
+
78129
+ /*
78130
+ // ContentBox
78131
+ if(val==='general') {
78132
+ if(!this.builder.activeCol) return;
78133
+ const box = this.builder.activeCol.closest('.is-box');
78134
+ const section = this.builder.activeCol.closest('.is-section');
78135
+ const wrapper = this.builder.activeCol.closest('.is-wrapper');
78136
+ if(!(box && section && wrapper)) return;
78137
+
78138
+ box.click();
78139
+
78140
+ if(!wrapper.classList.contains('hard-select')) box.click();
78141
+ }
78142
+ */
78143
+ });
78144
+ });
78145
+
78146
+ //Extend onSelectionChange
78147
+ let old = this.builder.settings.onSelectionChange;
78148
+ this.builder.settings.onSelectionChange = () => {
78149
+ if (old) old.call(this); // call user's defined onRender
78150
+
78151
+ if (this.builder.activeCol) {
78152
+ if (this.builder.autoEditBlock) {
78153
+ // change
78154
+ this.builder.assistantMode = 'block';
78155
+ btnScopeBlock.classList.add('on');
78156
+ btnScopeSection.classList.remove('on');
78157
+ btnScopeOthers.classList.remove('on');
78158
+ }
78159
+ btnScopeBlock.removeAttribute('disabled');
78160
+ } else {
78161
+ btnScopeBlock.disabled = true;
78162
+ if (btnScopeOthers.classList.contains('on')) return;
78163
+
78164
+ // change
78165
+ this.builder.assistantMode = 'general';
78166
+ btnScopeSection.classList.add('on');
78167
+ btnScopeBlock.classList.remove('on');
78168
+ btnScopeOthers.classList.remove('on');
78169
+ }
78170
+ };
77817
78171
  this.initialStart = false; // for Safari
77818
78172
  }
77819
78173
 
78174
+ resetConfig() {
78175
+ const tempSlider = this.modalConfig.querySelector('.temperature-slider');
78176
+ const valTemp = this.modalConfig.querySelector('.val-temp');
78177
+ tempSlider.value = this.builder.temperature;
78178
+ valTemp.innerHTML = this.builder.temperature;
78179
+ const topPSlider = this.modalConfig.querySelector('.top-p-slider');
78180
+ const valTopP = this.modalConfig.querySelector('.val-top-p');
78181
+ topPSlider.value = this.builder.topP;
78182
+ valTopP.innerHTML = this.builder.topP;
78183
+ }
78184
+ config() {
78185
+ this.builder.showModal(this.modalConfig, false);
78186
+ const tempSlider = this.modalConfig.querySelector('.temperature-slider');
78187
+ const valTemp = this.modalConfig.querySelector('.val-temp');
78188
+ if (localStorage.getItem('_temp') !== null) {
78189
+ let val = localStorage.getItem('_temp');
78190
+ tempSlider.value = val;
78191
+ valTemp.innerHTML = val;
78192
+ } else {
78193
+ tempSlider.value = this.builder.temperature;
78194
+ valTemp.innerHTML = this.builder.temperature;
78195
+ }
78196
+ const topPSlider = this.modalConfig.querySelector('.top-p-slider');
78197
+ const valTopP = this.modalConfig.querySelector('.val-top-p');
78198
+ if (localStorage.getItem('_top_p') !== null) {
78199
+ let val = localStorage.getItem('_top_p');
78200
+ topPSlider.value = val;
78201
+ valTopP.innerHTML = val;
78202
+ } else {
78203
+ topPSlider.value = this.builder.topP;
78204
+ valTopP.innerHTML = this.builder.topP;
78205
+ }
78206
+ const chkAutoEditBlock = this.modalConfig.querySelector('#chkAutoEditBlock');
78207
+ if (localStorage.getItem('_auto_editblock') !== null) {
78208
+ let val = localStorage.getItem('_auto_editblock');
78209
+ if (val === '1') {
78210
+ chkAutoEditBlock.checked = true;
78211
+ } else {
78212
+ chkAutoEditBlock.checked = false;
78213
+ }
78214
+ } else {
78215
+ chkAutoEditBlock.checked = this.builder.autoEditBlock;
78216
+ }
78217
+ const inpAutoSendDelay = this.modalConfig.querySelector('.input-autosend-delay');
78218
+ if (localStorage.getItem('_autosend_delay') !== null) {
78219
+ let val = localStorage.getItem('_autosend_delay');
78220
+ inpAutoSendDelay.value = val;
78221
+ } else {
78222
+ inpAutoSendDelay.value = this.builder.autoSendDelay;
78223
+ }
78224
+ const inpCommandLang = this.modalConfig.querySelector('.input-command-lang');
78225
+ if (localStorage.getItem('_command_lang') !== null) {
78226
+ let val = localStorage.getItem('_command_lang');
78227
+ inpCommandLang.value = val;
78228
+ } else {
78229
+ inpCommandLang.value = this.builder.speechRecognitionLang;
78230
+ }
78231
+ }
77820
78232
  checkMic() {
77821
78233
  if (localStorage.getItem('_mic') !== null) {
77822
78234
  if (localStorage.getItem('_mic') === '0') {
@@ -77841,16 +78253,13 @@ class Dictation {
77841
78253
  inpCommand.focus();
77842
78254
  localStorage.setItem('_dictation', '1');
77843
78255
  const chkAutoSend = this.builderStuff.querySelector('#chkAutoSendCommand');
77844
- const btnClear = this.builderStuff.querySelector('.cmd-clear-command');
77845
78256
  if (this.checkMic()) {
77846
78257
  // Do Nothing
77847
78258
  chkAutoSend.parentNode.style.display = 'flex';
77848
- btnClear.style.marginRight = '';
77849
78259
  } else {
77850
78260
  const btnDictation = this.builderStuff.querySelector('.cmd-enable-dictation');
77851
78261
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
77852
78262
  chkAutoSend.parentNode.style.display = 'none';
77853
- btnClear.style.marginRight = '6px';
77854
78263
  return;
77855
78264
  }
77856
78265
  this.startDictation();
@@ -77886,13 +78295,11 @@ class Dictation {
77886
78295
  if (this.builder.onlineDemo) {
77887
78296
  setTimeout(() => {
77888
78297
  const btnDictation = this.builderStuff.querySelector('.cmd-enable-dictation');
77889
- const btnClear = this.builderStuff.querySelector('.cmd-clear-command');
77890
78298
  const chkAutoSend = this.builderStuff.querySelector('#chkAutoSendCommand');
77891
78299
  this.stopDictation();
77892
78300
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
77893
78301
  localStorage.setItem('_mic', '0');
77894
78302
  chkAutoSend.parentNode.style.display = 'none';
77895
- btnClear.style.marginRight = '6px';
77896
78303
  }, 1); // to give delay from the btnDictation click
77897
78304
 
77898
78305
  //Show info
@@ -77910,13 +78317,11 @@ class Dictation {
77910
78317
  } catch (e) {
77911
78318
  setTimeout(() => {
77912
78319
  const btnDictation = this.builderStuff.querySelector('.cmd-enable-dictation');
77913
- const btnClear = this.builderStuff.querySelector('.cmd-clear-command');
77914
78320
  const chkAutoSend = this.builderStuff.querySelector('#chkAutoSendCommand');
77915
78321
  this.stopDictation();
77916
78322
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
77917
78323
  localStorage.setItem('_mic', '0');
77918
78324
  chkAutoSend.parentNode.style.display = 'none';
77919
- btnClear.style.marginRight = '6px';
77920
78325
  }, 1); // to give delay from the btnDictation click
77921
78326
 
77922
78327
  //Show info
@@ -77937,10 +78342,6 @@ class Dictation {
77937
78342
  this.mediaRecorder = new MediaRecorder(stream);
77938
78343
  this.mediaRecorder.addEventListener('dataavailable', event => {
77939
78344
  if (this.aborted) return;
77940
-
77941
- // console.log(event.data);
77942
- // if (event.data.size > 0) {
77943
- // }
77944
78345
  this.websocket.send(event.data);
77945
78346
  });
77946
78347
 
@@ -77992,6 +78393,7 @@ class Dictation {
77992
78393
  this.startDictation();
77993
78394
  }, 2000);
77994
78395
  }
78396
+ this.builder.commandText = '';
77995
78397
  let finalTranscripts = '';
77996
78398
  let speechTimeout;
77997
78399
  this.websocket.onmessage = event => {
@@ -78005,28 +78407,74 @@ class Dictation {
78005
78407
  this.recorder.start(); // Using Recorder
78006
78408
  } */
78007
78409
 
78008
- // console.log('Start Dictation');
78009
78410
  this.aborted = false;
78010
78411
  }
78011
78412
  if (message.event === 'transcript-result') {
78413
+ const transcript = message.data.channel.alternatives[0].transcript;
78414
+
78415
+ // Actions
78416
+ const triggerWords = this.builder.triggerWords;
78417
+ const findMatchingTrigger = transcript => {
78418
+ transcript = transcript.toLowerCase();
78419
+ transcript = transcript.replace('.', '');
78420
+ for (const key in triggerWords) {
78421
+ if (triggerWords[key].some(word => transcript.includes(word))) {
78422
+ return key;
78423
+ }
78424
+ let result;
78425
+ triggerWords[key].forEach(word => {
78426
+ const similarity = this.builder.similarity.checkSimilarity(transcript, word);
78427
+ if (similarity > 0.5) {
78428
+ result = key;
78429
+ return;
78430
+ }
78431
+ });
78432
+ if (result) return result;
78433
+ }
78434
+ return null; // No match found
78435
+ };
78436
+
78437
+ if (transcript && message.data.is_final) {
78438
+ const matchingKey = findMatchingTrigger(transcript);
78439
+ if (matchingKey) {
78440
+ if (matchingKey === 'send') {
78441
+ if (inpCommand.value.trim() === '') return;
78442
+ const btnSend = this.modalCommand.querySelector('.cmd-send-command');
78443
+ btnSend.click();
78444
+ return;
78445
+ } else if (matchingKey === 'abort') {
78446
+ if (this.builder.isInProgress) {
78447
+ // Abort
78448
+ this.opts.abort();
78449
+ const inpCommand = this.builderStuff.querySelector('.inp-command');
78450
+ this.builder.commandText = inpCommand.value;
78451
+ }
78452
+ return;
78453
+ } else if (matchingKey === 'clear') {
78454
+ this.builder.commandText = '';
78455
+ inpCommand.value = '';
78456
+ return;
78457
+ }
78458
+ }
78459
+ }
78012
78460
  if (this.builder.isInProgress || this.aborted) {
78013
78461
  return;
78014
78462
  }
78015
- const transcript = message.data.channel.alternatives[0].transcript;
78463
+ finalTranscripts = this.builder.commandText;
78016
78464
  if (transcript && message.data.is_final) {
78017
- finalTranscripts += ' ' + transcript;
78465
+ finalTranscripts += ' ' + transcript.trim();
78018
78466
  }
78019
78467
 
78020
78468
  // Format
78021
78469
  finalTranscripts = finalTranscripts.charAt(0).toUpperCase() + finalTranscripts.slice(1);
78022
78470
  finalTranscripts = finalTranscripts.trim();
78023
- inpCommand.value = finalTranscripts;
78471
+ this.builder.commandText = finalTranscripts;
78472
+ if (transcript && message.data.is_final) {
78473
+ this.builder.commandText = finalTranscripts;
78474
+ inpCommand.value = finalTranscripts;
78475
+ }
78024
78476
  clearTimeout(speechTimeout);
78025
- console.log('Writing..');
78026
78477
  speechTimeout = setTimeout(() => {
78027
- console.log('Clear');
78028
- this.builder.commandText = '';
78029
- finalTranscripts = '';
78030
78478
  if (this.builder.autoSendCommand) {
78031
78479
  if (inpCommand.value.trim() === '') return;
78032
78480
  const btnSend = this.modalCommand.querySelector('.cmd-send-command');
@@ -78046,30 +78494,71 @@ class Dictation {
78046
78494
  this.recognition.start();
78047
78495
  this.speechTimeout;
78048
78496
  this.builder.commandText = '';
78497
+ let finalTranscripts = '';
78049
78498
  this.recognition.onresult = event => {
78050
- if (this.builder.isInProgress) {
78051
- return;
78052
- }
78053
- let interimTranscripts = '';
78054
- let finalTranscripts = '';
78499
+ let transcript = '';
78055
78500
  for (var i = event.resultIndex; i < event.results.length; ++i) {
78056
78501
  if (event.results[i].isFinal) {
78057
- finalTranscripts += event.results[i][0].transcript;
78058
- } else {
78059
- interimTranscripts += event.results[i][0].transcript;
78502
+ transcript = event.results[i][0].transcript;
78060
78503
  }
78061
78504
  }
78062
- if (interimTranscripts.indexOf('send') !== -1 || finalTranscripts.indexOf('send') !== -1) {
78063
- const btnSend = this.modalCommand.querySelector('.cmd-send-command');
78064
- btnSend.click();
78505
+ if (!transcript) return;
78506
+
78507
+ // Actions
78508
+ const triggerWords = this.builder.triggerWords;
78509
+ const findMatchingTrigger = transcript => {
78510
+ transcript = transcript.toLowerCase();
78511
+ for (const key in triggerWords) {
78512
+ if (triggerWords[key].some(word => transcript.includes(word))) {
78513
+ return key;
78514
+ }
78515
+ let result;
78516
+ triggerWords[key].forEach(word => {
78517
+ const similarity = this.builder.similarity.checkSimilarity(transcript, word);
78518
+ if (similarity > 0.5) {
78519
+ result = key;
78520
+ return;
78521
+ }
78522
+ });
78523
+ if (result) return result;
78524
+ }
78525
+ return null; // No match found
78526
+ };
78527
+
78528
+ const matchingKey = findMatchingTrigger(transcript);
78529
+ if (matchingKey) {
78530
+ if (matchingKey === 'send') {
78531
+ if (inpCommand.value.trim() === '') return;
78532
+ const btnSend = this.modalCommand.querySelector('.cmd-send-command');
78533
+ btnSend.click();
78534
+ return;
78535
+ } else if (matchingKey === 'abort') {
78536
+ if (this.builder.isInProgress) {
78537
+ // Abort
78538
+ this.opts.abort();
78539
+ const inpCommand = this.builderStuff.querySelector('.inp-command');
78540
+ this.builder.commandText = inpCommand.value;
78541
+ }
78542
+ return;
78543
+ } else if (matchingKey === 'clear') {
78544
+ this.builder.commandText = '';
78545
+ inpCommand.value = '';
78546
+ return;
78547
+ }
78548
+ }
78549
+ if (this.builder.isInProgress) {
78065
78550
  return;
78066
78551
  }
78067
- this.builder.commandText += finalTranscripts; // + '<i style="color:#999">' + interimTranscripts + '</i>';
78552
+ finalTranscripts = this.builder.commandText;
78553
+ finalTranscripts += ' ' + transcript.trim();
78068
78554
 
78069
- inpCommand.value = this.builder.commandText;
78555
+ // Format
78556
+ finalTranscripts = finalTranscripts.trim();
78557
+ finalTranscripts = finalTranscripts.charAt(0).toUpperCase() + finalTranscripts.slice(1);
78558
+ this.builder.commandText = finalTranscripts;
78559
+ inpCommand.value = finalTranscripts;
78070
78560
  clearTimeout(this.speechTimeout);
78071
78561
  this.speechTimeout = setTimeout(() => {
78072
- this.builder.commandText = '';
78073
78562
  if (this.builder.autoSendCommand) {
78074
78563
  if (inpCommand.value.trim() === '') return;
78075
78564
  const btnSend = this.modalCommand.querySelector('.cmd-send-command');
@@ -78090,13 +78579,11 @@ class Dictation {
78090
78579
  // See btnDictation click
78091
78580
  setTimeout(() => {
78092
78581
  const btnDictation = this.builderStuff.querySelector('.cmd-enable-dictation');
78093
- const btnClear = this.builderStuff.querySelector('.cmd-clear-command');
78094
78582
  const chkAutoSend = this.builderStuff.querySelector('#chkAutoSendCommand');
78095
78583
  this.stopDictation();
78096
78584
  btnDictation.innerHTML = '<svg class="is-icon-flex" style="width:18px; height:18px;"><use xlink:href="#icon-microphone-off"></use></svg>';
78097
78585
  localStorage.setItem('_mic', '0');
78098
78586
  chkAutoSend.parentNode.style.display = 'none';
78099
- btnClear.style.marginRight = '6px';
78100
78587
  }, 1); // to give delay from the btnDictation click
78101
78588
 
78102
78589
  //Show info
@@ -78174,6 +78661,12 @@ class Similarity {
78174
78661
  constructor(builder) {
78175
78662
  this.builder = builder;
78176
78663
  }
78664
+ checkSimilarity(word1, word2) {
78665
+ word1 = word1.toLowerCase();
78666
+ word2 = word2.toLowerCase();
78667
+ const similarity = stringSimilarity.stringSimilarity(word1, word2);
78668
+ return similarity;
78669
+ }
78177
78670
  check(command) {
78178
78671
  const {
78179
78672
  commandList
@@ -78830,9 +79323,20 @@ class ContentBuilder {
78830
79323
  // speechTranscribeUrl: 'http://192.168.1.7:8081',
78831
79324
  onlineDemo: false,
78832
79325
  autoSendDelay: 4000,
79326
+ autoEditBlock: false,
78833
79327
  commandPlaceholderText: '',
78834
79328
  enableShortCommands: true,
78835
79329
  speechRecognitionLang: 'en-US',
79330
+ assistantMode: 'general',
79331
+ triggerWords: {
79332
+ send: ['send', 'okay', 'execute', 'run'],
79333
+ abort: ['abort', 'cancel'],
79334
+ clear: ['clear', 'erase']
79335
+ },
79336
+ temperature: 0.6,
79337
+ //0.4,
79338
+ topP: 0.9,
79339
+ //0.6,
78836
79340
  useMediaRecorder: true,
78837
79341
  // do not change
78838
79342
  encoderPath: '',
@@ -79440,6 +79944,7 @@ class ContentBuilder {
79440
79944
  if (this.toolbarDisplay !== 'auto') {
79441
79945
  this.rte.showDefaultToolbar();
79442
79946
  }
79947
+ if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
79443
79948
  }
79444
79949
  }
79445
79950
  this.element.hyperlink.buttonEditor.hide();
@@ -81484,6 +81989,7 @@ class ContentBuilder {
81484
81989
  this.resize.enable();
81485
81990
  }
81486
81991
  }
81992
+ if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
81487
81993
  }
81488
81994
  handleCellKeypress(e) {
81489
81995
  if (e.ctrlKey || e.metaKey) {
@@ -82546,6 +83052,19 @@ class ContentBuilder {
82546
83052
  });
82547
83053
  }
82548
83054
  }
83055
+ hideElementTools() {
83056
+ let elmTool = document.querySelector('.is-element-tool');
83057
+ let divImageTool = document.querySelector('#divImageTool');
83058
+ let divImageResizer = document.querySelector('#divImageResizer');
83059
+ if (divImageTool) if (divImageTool.style.display === 'flex') {
83060
+ if (this.editor.moveable) this.editor.moveable.updateRect();
83061
+ let controlBox = this.doc.querySelector('.moveable-control-box');
83062
+ if (controlBox) controlBox.style.display = 'none';
83063
+ }
83064
+ if (elmTool) elmTool.style.display = '';
83065
+ if (divImageTool) divImageTool.style.display = '';
83066
+ if (divImageResizer) divImageResizer.style.display = '';
83067
+ }
82549
83068
  }
82550
83069
 
82551
83070
  // (function(window){