Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/themify-.../js/editor/modules
File: base.mjs
modules: [args]
[500] Fix | Delete
}]
[501] Fix | Delete
});
[502] Fix | Delete
el = row.el;
[503] Fix | Delete
model = api.Registry.get(el.tfClass('active_module')[0].dataset.cid);
[504] Fix | Delete
} else {
[505] Fix | Delete
model = api.Module.initModule(args);
[506] Fix | Delete
el = model.el;
[507] Fix | Delete
}
[508] Fix | Delete
[509] Fix | Delete
this.el.replaceWith(el);
[510] Fix | Delete
if (api.isVisual) {
[511] Fix | Delete
model.previewReload( model.get('mod_settings'));
[512] Fix | Delete
}
[513] Fix | Delete
}
[514] Fix | Delete
if (api.Library) {
[515] Fix | Delete
let libraryItems = [api.MainPanel.el, api.SmallPanel.el],
[516] Fix | Delete
fr = api.Library.create([data]);
[517] Fix | Delete
for (let i = libraryItems.length - 1; i > -1; --i) {
[518] Fix | Delete
let libItem = libraryItems[i].tfClass('library_container')[0];
[519] Fix | Delete
if (libItem) {
[520] Fix | Delete
let selectedTab = libItem.closest('.panel_tab').querySelector('.library_tab .current');
[521] Fix | Delete
libItem.appendChild(fr.cloneNode(true));
[522] Fix | Delete
if (selectedTab) {
[523] Fix | Delete
Themify.triggerEvent(selectedTab, _CLICK_);
[524] Fix | Delete
}
[525] Fix | Delete
}
[526] Fix | Delete
}
[527] Fix | Delete
}
[528] Fix | Delete
api.Spinner.showLoader('done');
[529] Fix | Delete
api.LightBox.close();
[530] Fix | Delete
}
[531] Fix | Delete
else {
[532] Fix | Delete
api.LiteLightBox.alert(data.msg);
[533] Fix | Delete
}
[534] Fix | Delete
}
[535] Fix | Delete
catch (e) {
[536] Fix | Delete
api.Spinner.showLoader('error');
[537] Fix | Delete
}
[538] Fix | Delete
},
[539] Fix | Delete
saveBtn = lb.tfClass('builder_save_button')[0],
[540] Fix | Delete
titleInput = lb.tfTag('input')[0];
[541] Fix | Delete
saveBtn.tfOn(_CLICK_, saveAsLibraryItem);
[542] Fix | Delete
titleInput.tfOn('keydown', saveAsLibraryItem, {passive: true});
[543] Fix | Delete
[544] Fix | Delete
Themify.on('themify_builder_lightbox_close', () => {
[545] Fix | Delete
lb.classList.remove('tb_save_module_lightbox');
[546] Fix | Delete
saveBtn.tfOff(_CLICK_, saveAsLibraryItem);
[547] Fix | Delete
titleInput.tfOff('keydown', saveAsLibraryItem, {passive: true});
[548] Fix | Delete
}, true);
[549] Fix | Delete
}
[550] Fix | Delete
import() {
[551] Fix | Delete
return new Promise(async(resolve,reject)=>{
[552] Fix | Delete
await api.LightBox.save();
[553] Fix | Delete
const box=this.el.querySelector('.tb_'+this.type+'_action').getBoundingClientRect(),
[554] Fix | Delete
component = this.isSubCol===true?'SubColumn':this.get('mod_name'),
[555] Fix | Delete
name = component.charAt(0).toUpperCase() + component.slice(1),
[556] Fix | Delete
label = this.type === 'subrow' ? 'Sub-Row' : (this.isSubCol===true? 'Sub-Column' : name),
[557] Fix | Delete
options = {
[558] Fix | Delete
contructor: true,
[559] Fix | Delete
loadMethod: 'html',
[560] Fix | Delete
data: {
[561] Fix | Delete
component_form: {
[562] Fix | Delete
name: i18n.import_tab.replace('%s', name),
[563] Fix | Delete
options: [{
[564] Fix | Delete
id: 'tb_data_field',
[565] Fix | Delete
type: 'textarea',
[566] Fix | Delete
label: i18n.import_label.replace('%s', label),
[567] Fix | Delete
help: i18n.import_data.replace('%s', name),
[568] Fix | Delete
class: 'fullwidth',
[569] Fix | Delete
rows: 13
[570] Fix | Delete
}]
[571] Fix | Delete
}
[572] Fix | Delete
}
[573] Fix | Delete
};
[574] Fix | Delete
[575] Fix | Delete
api.LightBox.el.classList.add('tb_import_export_lightbox');
[576] Fix | Delete
const lb=await api.LightBox.setStandAlone(box.left, box.top).open(options),
[577] Fix | Delete
click=async e=> {
[578] Fix | Delete
e.preventDefault();
[579] Fix | Delete
e.stopPropagation();
[580] Fix | Delete
const val = lb.querySelector('#tb_data_field').value;
[581] Fix | Delete
if (val === '') {
[582] Fix | Delete
resolve();
[583] Fix | Delete
api.LightBox.close();
[584] Fix | Delete
return;
[585] Fix | Delete
}
[586] Fix | Delete
let res = JSON.parse(val);
[587] Fix | Delete
if (res.component_name !== this.type) {
[588] Fix | Delete
TF_Notification.showHide('error',i18n.text_alert_wrong_paste);
[589] Fix | Delete
reject();
[590] Fix | Delete
return;
[591] Fix | Delete
}
[592] Fix | Delete
api.undoManager.start('import',this.id);
[593] Fix | Delete
if (res.used_gs !== undefined) {
[594] Fix | Delete
res=await api.GS.setImport(res.used_gs, res);
[595] Fix | Delete
}
[596] Fix | Delete
delete res.component_name;
[597] Fix | Delete
await this.setData(api.Base.builderSave(res,'empty'),this.el);
[598] Fix | Delete
api.ModulePageBreak.countModules();
[599] Fix | Delete
api.LightBox.close();
[600] Fix | Delete
api.undoManager.end('import');
[601] Fix | Delete
},
[602] Fix | Delete
savBtn=lb.tfClass('builder_save_button')[0];
[603] Fix | Delete
savBtn.tfOn(_CLICK_,click);
[604] Fix | Delete
[605] Fix | Delete
Themify.on('themify_builder_lightbox_close', lb => {
[606] Fix | Delete
lb.classList.remove('tb_import_export_lightbox');
[607] Fix | Delete
savBtn.tfOff(_CLICK_,click);
[608] Fix | Delete
resolve();
[609] Fix | Delete
}, true);
[610] Fix | Delete
});
[611] Fix | Delete
}
[612] Fix | Delete
async export(){
[613] Fix | Delete
await api.LightBox.save();
[614] Fix | Delete
const box=this.el.querySelector('.tb_'+this.type+'_action').getBoundingClientRect(),
[615] Fix | Delete
component = this.isSubCol===true?'SubColumn':this.get('mod_name'),
[616] Fix | Delete
name = component.charAt(0).toUpperCase() + component.slice(1),
[617] Fix | Delete
label = this.type === 'subrow' ? 'Sub-Row' : (this.isSubCol===true? 'Sub-Column' : name),
[618] Fix | Delete
options = {
[619] Fix | Delete
contructor: true,
[620] Fix | Delete
loadMethod: 'html',
[621] Fix | Delete
save:false,
[622] Fix | Delete
data: {
[623] Fix | Delete
component_form: {
[624] Fix | Delete
name: i18n.export_tab.replace('%s', name),
[625] Fix | Delete
options: [{
[626] Fix | Delete
id: 'tb_data_field',
[627] Fix | Delete
type: 'textarea',
[628] Fix | Delete
label: i18n.import_label.replace('%s', label),
[629] Fix | Delete
help: i18n.export_data.replace('%s', name),
[630] Fix | Delete
class: 'fullwidth',
[631] Fix | Delete
rows: 13,
[632] Fix | Delete
readonly:true
[633] Fix | Delete
}]
[634] Fix | Delete
}
[635] Fix | Delete
}
[636] Fix | Delete
};
[637] Fix | Delete
api.LightBox.el.classList.add('tb_import_export_lightbox');
[638] Fix | Delete
const lb=await api.LightBox.setStandAlone(box.left, box.top).open(options),
[639] Fix | Delete
data = this.getData(),
[640] Fix | Delete
used_gs = api.GS.findUsedItems(data),
[641] Fix | Delete
input = lb.querySelector('#tb_data_field'),
[642] Fix | Delete
selectText=function(e) {
[643] Fix | Delete
e.stopImmediatePropagation();
[644] Fix | Delete
this.select();
[645] Fix | Delete
};
[646] Fix | Delete
data.component_name = this.type;
[647] Fix | Delete
if (used_gs !== false) {
[648] Fix | Delete
const gsData = {};
[649] Fix | Delete
for (let i = used_gs.length - 1; i > -1; --i) {
[650] Fix | Delete
let gsPost = api.GS.styles[used_gs[i]],
[651] Fix | Delete
styles = api.Helper.cloneObject(gsPost.data[0]);
[652] Fix | Delete
if ('row' === gsPost.type || 'subrow' === gsPost.type) {
[653] Fix | Delete
styles = styles.styling;
[654] Fix | Delete
} else if (styles.cols !== undefined) {
[655] Fix | Delete
styles = styles.cols[0];
[656] Fix | Delete
if (styles) {
[657] Fix | Delete
if ('column' === gsPost.type) {
[658] Fix | Delete
styles = styles.styling;
[659] Fix | Delete
} else {
[660] Fix | Delete
styles = styles.modules?.[0].mod_settings || undefined;
[661] Fix | Delete
}
[662] Fix | Delete
}
[663] Fix | Delete
}
[664] Fix | Delete
else {
[665] Fix | Delete
styles = undefined;
[666] Fix | Delete
}
[667] Fix | Delete
if (styles !== undefined && Object.keys(styles).length > 0) {
[668] Fix | Delete
gsData[used_gs[i]] = {
[669] Fix | Delete
title: gsPost.title,
[670] Fix | Delete
type: gsPost.type,
[671] Fix | Delete
data: api.Base.builderSave(styles,'empty')
[672] Fix | Delete
};
[673] Fix | Delete
}
[674] Fix | Delete
}
[675] Fix | Delete
if (Object.keys(gsData).length) {
[676] Fix | Delete
data.used_gs = gsData;
[677] Fix | Delete
}
[678] Fix | Delete
}
[679] Fix | Delete
[680] Fix | Delete
input.tfOn(_CLICK_, selectText,{passive:true})
[681] Fix | Delete
.value=JSON.stringify(data);
[682] Fix | Delete
[683] Fix | Delete
Themify.on('themify_builder_lightbox_close', lb => {
[684] Fix | Delete
lb.classList.remove('tb_import_export_lightbox');
[685] Fix | Delete
input.tfOff(_CLICK_, selectText,{passive:true});
[686] Fix | Delete
}, true);
[687] Fix | Delete
}
[688] Fix | Delete
async edit(type) {
[689] Fix | Delete
if (api.isPreview || this.isEmpty===true) {
[690] Fix | Delete
throw '';
[691] Fix | Delete
}
[692] Fix | Delete
const _this=this,
[693] Fix | Delete
slug = _this.get('mod_name'),
[694] Fix | Delete
isBuilderEdit=type==='editBuilder' && api.isVisual,
[695] Fix | Delete
lb=api.LightBox,
[696] Fix | Delete
lbEl=lb.el;
[697] Fix | Delete
_this.tab=type==='edit' || type==='swap' || !type?'setting':type;
[698] Fix | Delete
if (api.activeModel !== null) {
[699] Fix | Delete
if (isBuilderEdit===false && api.activeModel.id === _this.id) {
[700] Fix | Delete
if(type){
[701] Fix | Delete
const clicked = lbEl.querySelector('a[data-id="tb_options_'+_this.tab+'"]');
[702] Fix | Delete
if(clicked){
[703] Fix | Delete
Themify.triggerEvent(clicked,_CLICK_);
[704] Fix | Delete
}
[705] Fix | Delete
delete _this.tab;
[706] Fix | Delete
lbEl.focus();
[707] Fix | Delete
}
[708] Fix | Delete
return lbEl;
[709] Fix | Delete
}
[710] Fix | Delete
else {
[711] Fix | Delete
await lb.save();
[712] Fix | Delete
}
[713] Fix | Delete
api.ActionBar.clearClicked();
[714] Fix | Delete
}
[715] Fix | Delete
if(isBuilderEdit===true){
[716] Fix | Delete
_this.editLayoutPart();
[717] Fix | Delete
}
[718] Fix | Delete
else{
[719] Fix | Delete
_this.setBreadCrumbs(lbEl);
[720] Fix | Delete
const el=_this.el,
[721] Fix | Delete
data={//keep order
[722] Fix | Delete
setting:{
[723] Fix | Delete
options:_this.constructor.getOptions(slug),
[724] Fix | Delete
name:_this.constructor.getSettingsName(slug)
[725] Fix | Delete
},
[726] Fix | Delete
styling:{
[727] Fix | Delete
options:api.styleData[slug]
[728] Fix | Delete
},
[729] Fix | Delete
visibility:_this.constructor.getVisibility?.()?? true,
[730] Fix | Delete
animation:_this.constructor.getAnimation?.()??true
[731] Fix | Delete
};
[732] Fix | Delete
if ( this.constructor.enableTooltip?.() !== false ) {
[733] Fix | Delete
data.setting.options.push({
[734] Fix | Delete
type:'tooltip'
[735] Fix | Delete
});
[736] Fix | Delete
}
[737] Fix | Delete
Themify.trigger( 'tb_edit_component', {
[738] Fix | Delete
data : data,
[739] Fix | Delete
slug : slug
[740] Fix | Delete
} );
[741] Fix | Delete
await lb.open(data,_this);
[742] Fix | Delete
lbEl.focus();
[743] Fix | Delete
el.classList.add('tb_current_module');
[744] Fix | Delete
setTimeout(()=>{
[745] Fix | Delete
if(el){
[746] Fix | Delete
el.classList.add('tb_outline_anim');
[747] Fix | Delete
setTimeout(()=>{
[748] Fix | Delete
el?.classList.remove('tb_current_module','tb_outline_anim');
[749] Fix | Delete
},310);
[750] Fix | Delete
}
[751] Fix | Delete
},2700);
[752] Fix | Delete
}
[753] Fix | Delete
delete _this.tab;
[754] Fix | Delete
return lbEl;
[755] Fix | Delete
}
[756] Fix | Delete
async restore(){
[757] Fix | Delete
const _this=this,
[758] Fix | Delete
{el,type}=_this,
[759] Fix | Delete
attr=el.attributes;
[760] Fix | Delete
while (attr.length > 0) {
[761] Fix | Delete
el.removeAttribute(attr[0].name);
[762] Fix | Delete
}
[763] Fix | Delete
_this.setHtmlAttributes();
[764] Fix | Delete
if(api.isVisual){
[765] Fix | Delete
const oldState=api.undoManager.getState('saveLightbox');
[766] Fix | Delete
if(oldState){
[767] Fix | Delete
const diff = api.undoManager.getDiff('saveLightbox',oldState,api.undoManager.getCurrentState('saveLightbox'));
[768] Fix | Delete
api.undoManager.clear('saveLightbox');
[769] Fix | Delete
api.ActionBar.clear();
[770] Fix | Delete
if(diff.styles){
[771] Fix | Delete
api.undoManager.styleChanges(diff.styles,'old',!diff.html);
[772] Fix | Delete
}
[773] Fix | Delete
if(type==='module'){
[774] Fix | Delete
await _this.visualPreview(api.restoreVals);
[775] Fix | Delete
}else{
[776] Fix | Delete
await api.bootstrap([_this.id],undefined,false);
[777] Fix | Delete
if(api.isVisual){
[778] Fix | Delete
api.Utils.runJs(el, type);
[779] Fix | Delete
}
[780] Fix | Delete
}
[781] Fix | Delete
[782] Fix | Delete
}
[783] Fix | Delete
}else if(type==='module'){
[784] Fix | Delete
_this.backendLivePreview(api.restoreVals);
[785] Fix | Delete
}
[786] Fix | Delete
}
[787] Fix | Delete
options(input,type) {
[788] Fix | Delete
let handler,
[789] Fix | Delete
interval,
[790] Fix | Delete
focusOut;
[791] Fix | Delete
const event = input.tagName === 'INPUT' && 'hide_anchor' !== type ? 'keyup' : 'change',
[792] Fix | Delete
onChange=(input,value,ev)=>{
[793] Fix | Delete
const id=input.closest('.tb_lb_option').id;
[794] Fix | Delete
if(api.activeModel?.id===this.id){
[795] Fix | Delete
if(!api.LightBox.el.contains(input)){
[796] Fix | Delete
const lightboxInput=api.LightBox.el.querySelector('#'+id);
[797] Fix | Delete
if(lightboxInput){
[798] Fix | Delete
const type=lightboxInput.closest('[data-type]').dataset.type;
[799] Fix | Delete
if(type==='layout'){
[800] Fix | Delete
for(let items=lightboxInput.children,i=items.length-1;i>-1;--i){
[801] Fix | Delete
items[i].classList.toggle('selected',items[i].id===value);
[802] Fix | Delete
}
[803] Fix | Delete
if(!value){
[804] Fix | Delete
lightboxInput.children[0].classList.add('selected');
[805] Fix | Delete
}
[806] Fix | Delete
}
[807] Fix | Delete
else if (type === 'checkbox'){
[808] Fix | Delete
lightboxInput.tfClass('tb_checkbox')[0].checked=!!value;
[809] Fix | Delete
}
[810] Fix | Delete
else{
[811] Fix | Delete
lightboxInput.value=value;
[812] Fix | Delete
}
[813] Fix | Delete
}
[814] Fix | Delete
}
[815] Fix | Delete
}
[816] Fix | Delete
else if(this.type==='row' && ev==='change' && !input.parentNode.tfClass('tb_field_error_msg')[0] && api.undoManager.has('rowOptions')){
[817] Fix | Delete
[818] Fix | Delete
this.set(id,value);
[819] Fix | Delete
api.undoManager.end('rowOptions');
[820] Fix | Delete
[821] Fix | Delete
}
[822] Fix | Delete
};
[823] Fix | Delete
if(type==='custom_css_id'){
[824] Fix | Delete
handler = e=> {
[825] Fix | Delete
const _this=e.currentTarget,
[826] Fix | Delete
id=_this.id,
[827] Fix | Delete
lightboxInput=api.activeModel?.id===this.id?api.LightBox.el.querySelector('#'+id):null,
[828] Fix | Delete
error2=lightboxInput?.parentNode.tfClass('tb_field_error_msg')[0],
[829] Fix | Delete
error1=_this.parentNode.tfClass('tb_field_error_msg')[0],
[830] Fix | Delete
idText=this.el.tfClass('tb_row_id')[0],
[831] Fix | Delete
validate=api.Forms.getValidator('custom_css_id')(_this,this.el),
[832] Fix | Delete
v=_this.value;
[833] Fix | Delete
if(lightboxInput){
[834] Fix | Delete
lightboxInput.value=v;
[835] Fix | Delete
}
[836] Fix | Delete
if(validate===true){
[837] Fix | Delete
error1?.remove();
[838] Fix | Delete
error2?.remove();
[839] Fix | Delete
lightboxInput?.classList.remove('tb_field_error');
[840] Fix | Delete
if(this.type==='row' && api.activeModel?.id!==this.id && !api.undoManager.has('rowOptions')){
[841] Fix | Delete
api.undoManager.start('rowOptions',this);
[842] Fix | Delete
}
[843] Fix | Delete
this.el.id=v;
[844] Fix | Delete
idText.textContent=v;
[845] Fix | Delete
return v;
[846] Fix | Delete
}
[847] Fix | Delete
this.el.removeAttribute('id');
[848] Fix | Delete
idText.textContent=this.get(id);
[849] Fix | Delete
const errorText=validate===false?i18n.errorId:validate;
[850] Fix | Delete
if (!error1) {
[851] Fix | Delete
const er = createElement('span','tb_field_error_msg',errorText);
[852] Fix | Delete
_this.after(er);
[853] Fix | Delete
if(lightboxInput && !error2 && !api.LightBox.el.contains(_this)){
[854] Fix | Delete
lightboxInput.classList.add('tb_field_error');
[855] Fix | Delete
lightboxInput.after(er.cloneNode(true));
[856] Fix | Delete
}
[857] Fix | Delete
}
[858] Fix | Delete
else{
[859] Fix | Delete
error1.textContent=errorText;
[860] Fix | Delete
if(error2){
[861] Fix | Delete
error2.textContent=errorText;
[862] Fix | Delete
}
[863] Fix | Delete
}
[864] Fix | Delete
return false;
[865] Fix | Delete
[866] Fix | Delete
};
[867] Fix | Delete
}
[868] Fix | Delete
else if(type==='custom_css'){
[869] Fix | Delete
let prev=input.value;
[870] Fix | Delete
handler = e=> {
[871] Fix | Delete
api.Forms.getValidator('custom_css')(e.currentTarget);
[872] Fix | Delete
const v=e.currentTarget.value.trim();
[873] Fix | Delete
if(this.type==='row' && api.activeModel?.id!==this.id && !api.undoManager.has('rowOptions')){
[874] Fix | Delete
api.undoManager.start('rowOptions',this);
[875] Fix | Delete
}
[876] Fix | Delete
if (v && api.isVisual) {
[877] Fix | Delete
const el =this.type==='module'?this.el.tfClass('module')[0]:(this.type==='subrow'?this.el.tfClass('module_subrow')[0]:this.el),
[878] Fix | Delete
cl=el.classList,
[879] Fix | Delete
vCl=v.split(' ');
[880] Fix | Delete
if(prev){
[881] Fix | Delete
const prevCl=prev.split(' ');
[882] Fix | Delete
for(let i=prevCl.length-1;i>-1;--i){
[883] Fix | Delete
prevCl[i]=prevCl[i].trim();
[884] Fix | Delete
if(prevCl[i]){
[885] Fix | Delete
cl.remove(prevCl[i]);
[886] Fix | Delete
}
[887] Fix | Delete
}
[888] Fix | Delete
}
[889] Fix | Delete
for(let i=0;i<vCl.length;++i){
[890] Fix | Delete
vCl[i]=vCl[i].trim();
[891] Fix | Delete
if(vCl[i]){
[892] Fix | Delete
cl.add(vCl[i]);
[893] Fix | Delete
}
[894] Fix | Delete
}
[895] Fix | Delete
prev=v;
[896] Fix | Delete
}
[897] Fix | Delete
return v;
[898] Fix | Delete
};
[899] Fix | Delete
}
[900] Fix | Delete
else if(type==='layout'){
[901] Fix | Delete
handler = e=> {
[902] Fix | Delete
if(this.type==='row' && api.activeModel?.id!==this.id){
[903] Fix | Delete
api.undoManager.start('rowOptions',this);
[904] Fix | Delete
}
[905] Fix | Delete
const layout=e.currentTarget.closest('.tb_lb_option'),
[906] Fix | Delete
v=layout.tfClass('selected')[0].id,
[907] Fix | Delete
id=layout.id;
[908] Fix | Delete
if (api.isVisual) {
[909] Fix | Delete
api.liveStylingInstance.bindRowWidthHeight(id, v, this.el);
[910] Fix | Delete
}
[911] Fix | Delete
else{
[912] Fix | Delete
const cl=this.el.classList;
[913] Fix | Delete
if (id === 'row_height') {
[914] Fix | Delete
cl.toggle('fullheight',v === 'fullheight');
[915] Fix | Delete
}
[916] Fix | Delete
else {
[917] Fix | Delete
cl.remove('fullwidth','fullwidth_row_container');
[918] Fix | Delete
if (v === 'fullwidth') {
[919] Fix | Delete
cl.add('fullwidth_row_container');
[920] Fix | Delete
}
[921] Fix | Delete
else if (v === 'fullwidth-content') {
[922] Fix | Delete
cl.add('fullwidth');
[923] Fix | Delete
}
[924] Fix | Delete
}
[925] Fix | Delete
}
[926] Fix | Delete
return v;
[927] Fix | Delete
};
[928] Fix | Delete
}
[929] Fix | Delete
else if(type==='row_anchor'){
[930] Fix | Delete
handler = e=> {
[931] Fix | Delete
if(this.type==='row' && api.activeModel?.id!==this.id && !api.undoManager.has('rowOptions')){
[932] Fix | Delete
api.undoManager.start('rowOptions',this);
[933] Fix | Delete
}
[934] Fix | Delete
api.Forms.getValidator('row_anchor')(e.currentTarget);
[935] Fix | Delete
const v=e.currentTarget.value,
[936] Fix | Delete
el=this.el;
[937] Fix | Delete
if (api.isVisual) {
[938] Fix | Delete
const cl=el.classList,
[939] Fix | Delete
prev=el.dataset.anchor;
[940] Fix | Delete
if(prev){
[941] Fix | Delete
cl.remove('tb_section-'+prev,'tb_has_section');
[942] Fix | Delete
}
[943] Fix | Delete
if (v !== '') {
[944] Fix | Delete
cl.add('tb_section-'+v,'tb_has_section');
[945] Fix | Delete
el.dataset.anchor=v;
[946] Fix | Delete
}
[947] Fix | Delete
else{
[948] Fix | Delete
el.removeAttribute('data-anchor');
[949] Fix | Delete
}
[950] Fix | Delete
}
[951] Fix | Delete
el.tfClass('tb_row_anchor')[0].textContent=v;
[952] Fix | Delete
return v;
[953] Fix | Delete
};
[954] Fix | Delete
}
[955] Fix | Delete
else if(type==='hide_anchor'){
[956] Fix | Delete
handler = e=> {
[957] Fix | Delete
if(this.type==='row' && api.activeModel?.id!==this.id){
[958] Fix | Delete
api.undoManager.start('rowOptions',this);
[959] Fix | Delete
}
[960] Fix | Delete
const target=e.currentTarget,
[961] Fix | Delete
v=target.checked?target.value:null;
[962] Fix | Delete
if (api.isVisual) {
[963] Fix | Delete
this.el.toggleAttribute('data-hide-anchor', v==='1');
[964] Fix | Delete
}
[965] Fix | Delete
return v;
[966] Fix | Delete
};
[967] Fix | Delete
}
[968] Fix | Delete
input.tfOn(event,e=>{
[969] Fix | Delete
const v=handler(e);
[970] Fix | Delete
if(v!==false){
[971] Fix | Delete
let target=e.currentTarget;
[972] Fix | Delete
onChange(target,v,e.type);
[973] Fix | Delete
if(e.type==='keyup'){
[974] Fix | Delete
if(!focusOut){
[975] Fix | Delete
focusOut=()=>{
[976] Fix | Delete
if(target) {
[977] Fix | Delete
target.tfOff('focusout',focusOut,{passive:true,once:true});
[978] Fix | Delete
clearInterval(interval);
[979] Fix | Delete
onChange(target, target.value, 'change');
[980] Fix | Delete
api.undoManager.clear('rowOptions');
[981] Fix | Delete
interval=target =focusOut=null;
[982] Fix | Delete
}
[983] Fix | Delete
};
[984] Fix | Delete
target.tfOn('focusout',focusOut,{passive:true,once:true});
[985] Fix | Delete
}
[986] Fix | Delete
interval=setInterval(()=>{//workaround for firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=559561
[987] Fix | Delete
if(target && !target.isConnected){
[988] Fix | Delete
clearInterval(interval);
[989] Fix | Delete
interval=null;
[990] Fix | Delete
focusOut?.();
[991] Fix | Delete
}
[992] Fix | Delete
},1000);
[993] Fix | Delete
}
[994] Fix | Delete
}
[995] Fix | Delete
},{passive:true});
[996] Fix | Delete
if(!api.isVisual && event==='keyup'){
[997] Fix | Delete
input.tfOn('keydown focusin focusout copy paste',e=>{//disable guttenberg events
[998] Fix | Delete
e.stopPropagation();
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function