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
File: themify-builder-app.mjs
}
[500] Fix | Delete
}
[501] Fix | Delete
if(events[ev].length===0){
[502] Fix | Delete
delete events[ev];
[503] Fix | Delete
}
[504] Fix | Delete
}
[505] Fix | Delete
else{
[506] Fix | Delete
delete events[ev];
[507] Fix | Delete
}
[508] Fix | Delete
this._events.set(id,events);
[509] Fix | Delete
}
[510] Fix | Delete
}
[511] Fix | Delete
return this;
[512] Fix | Delete
},
[513] Fix | Delete
trigger(id, ev, ...args) {
[514] Fix | Delete
const events = this._events.get(id),
[515] Fix | Delete
proms=[];
[516] Fix | Delete
if (events?.[ev]!==undefined) {
[517] Fix | Delete
let _this = typeof id === 'string' ? this.get(id) : id;
[518] Fix | Delete
[519] Fix | Delete
if(!_this){
[520] Fix | Delete
_this=id;
[521] Fix | Delete
}
[522] Fix | Delete
for (let i = events[ev].length-1; i>-1;--i) {
[523] Fix | Delete
let pr=events[ev][i].apply(_this, args);
[524] Fix | Delete
if(pr instanceof Promise){
[525] Fix | Delete
proms.push(pr);
[526] Fix | Delete
}
[527] Fix | Delete
}
[528] Fix | Delete
}
[529] Fix | Delete
return Promise.all(proms).catch(()=>{});
[530] Fix | Delete
}
[531] Fix | Delete
};
[532] Fix | Delete
[533] Fix | Delete
[534] Fix | Delete
[535] Fix | Delete
const isFrontend=api.isFrontend,
[536] Fix | Delete
Registry=api.Registry;
[537] Fix | Delete
[538] Fix | Delete
api.Utils = {
[539] Fix | Delete
_onResizeEvents:new Set,
[540] Fix | Delete
async onResize(trigger) {
[541] Fix | Delete
if(api.isFrontend){
[542] Fix | Delete
const events = $._data(window, 'events')?.resize;
[543] Fix | Delete
if (events) {
[544] Fix | Delete
for (let i = 0; i < events.length; ++i) {
[545] Fix | Delete
if (events[i].handler !== undefined) {
[546] Fix | Delete
this._onResizeEvents.add(events[i].handler);
[547] Fix | Delete
}
[548] Fix | Delete
}
[549] Fix | Delete
}
[550] Fix | Delete
$(window).off('resize');
[551] Fix | Delete
if (trigger) {
[552] Fix | Delete
const e = $.Event('resize', {
[553] Fix | Delete
type: 'resize',
[554] Fix | Delete
isTrigger: false
[555] Fix | Delete
});
[556] Fix | Delete
for (let handler of this._onResizeEvents) {
[557] Fix | Delete
try {
[558] Fix | Delete
handler.apply(window, [e, $]);
[559] Fix | Delete
[560] Fix | Delete
}catch (e) {
[561] Fix | Delete
[562] Fix | Delete
}
[563] Fix | Delete
}
[564] Fix | Delete
Themify.triggerEvent(window,'resize')
[565] Fix | Delete
.trigger('tfsmartresize', {w: Themify.w, h: Themify.h});
[566] Fix | Delete
}
[567] Fix | Delete
}
[568] Fix | Delete
},
[569] Fix | Delete
updateDocumentSize() {
[570] Fix | Delete
if (api.isVisual) {
[571] Fix | Delete
let req,
[572] Fix | Delete
timeout;
[573] Fix | Delete
(new ResizeObserver(entries => {
[574] Fix | Delete
Themify.trigger('documentsize');
[575] Fix | Delete
if (api.activeBreakPoint !== 'desktop') {
[576] Fix | Delete
clearTimeout(timeout);
[577] Fix | Delete
timeout=setTimeout(() => {
[578] Fix | Delete
const _body=entries[0].target;
[579] Fix | Delete
cancelAnimationFrame(req);
[580] Fix | Delete
req = requestAnimationFrame(() => {
[581] Fix | Delete
topBody.style.height = _body.scrollHeight + 'px';
[582] Fix | Delete
setTimeout(() => {
[583] Fix | Delete
this.onResize(true);
[584] Fix | Delete
topBody.style.height = _body.scrollHeight + 'px';
[585] Fix | Delete
timeout=req=null;
[586] Fix | Delete
}, 220);
[587] Fix | Delete
});
[588] Fix | Delete
}, 60);
[589] Fix | Delete
}
[590] Fix | Delete
})).observe(body);
[591] Fix | Delete
}
[592] Fix | Delete
},
[593] Fix | Delete
findCssRule(rules, selector) {
[594] Fix | Delete
selector = selector.replace(/\s*>\s*/g, '>').replace(/\,\s/g, ',').trim();
[595] Fix | Delete
const isCondition=selector[0]==='@';
[596] Fix | Delete
for (let i = rules.length - 1; i > -1; --i) {
[597] Fix | Delete
if ((isCondition===true && rules[i].conditionText && rules[i].cssText.replace(/\s*>\s*/g, '>').replace(/\,\s/g, ',').trim().includes(selector)) || (isCondition===false && !rules[i].conditionText && selector === rules[i].selectorText.replace(/\s*>\s*/g, '>').replace(/\,\s/g, ',').trim())) {
[598] Fix | Delete
return i;
[599] Fix | Delete
}
[600] Fix | Delete
}
[601] Fix | Delete
return false;
[602] Fix | Delete
},
[603] Fix | Delete
_filterClass(cl) {
[604] Fix | Delete
const _COL_CLASSES_VALUES=api.getColClassValues();
[605] Fix | Delete
for (let i = cl.length - 1; i > -1; --i) {
[606] Fix | Delete
if (_COL_CLASSES_VALUES.includes(cl[i])) {
[607] Fix | Delete
return cl[i];
[608] Fix | Delete
}
[609] Fix | Delete
}
[610] Fix | Delete
return '';
[611] Fix | Delete
},
[612] Fix | Delete
getRowSettings(base, type, saving) {
[613] Fix | Delete
type = type || 'row';
[614] Fix | Delete
saving = !!saving;
[615] Fix | Delete
let option_data = {},
[616] Fix | Delete
styling,
[617] Fix | Delete
model_r = Registry.get(base.dataset.cid);
[618] Fix | Delete
if (model_r) {
[619] Fix | Delete
const sel=type==='subrow'?'module_subrow':type + '_inner',
[620] Fix | Delete
inner = base.tfClass(sel)[0],
[621] Fix | Delete
columns=api.Utils.getColumns(inner),
[622] Fix | Delete
count = columns.length,
[623] Fix | Delete
points = api.breakpointsReverse,
[624] Fix | Delete
bpLength = points.length,
[625] Fix | Delete
cols = [],
[626] Fix | Delete
colPaddingsIds=['padding_top','padding_bottom','padding_left','padding_right','margin-bottom','margin-top'],
[627] Fix | Delete
paddingLen=colPaddingsIds.length;
[628] Fix | Delete
[629] Fix | Delete
// cols
[630] Fix | Delete
for (let i = 0; i < count; ++i) {
[631] Fix | Delete
let model_c = Registry.get(columns[i].dataset.cid);
[632] Fix | Delete
if (model_c) {
[633] Fix | Delete
let modules = columns[i].tfClass('tb_holder')[0],
[634] Fix | Delete
cl = this._filterClass(columns[i].classList),
[635] Fix | Delete
index = cols.push({
[636] Fix | Delete
element_id: model_c.id
[637] Fix | Delete
});
[638] Fix | Delete
--index;
[639] Fix | Delete
[640] Fix | Delete
if (cl !== '') { //backward compatibility
[641] Fix | Delete
cols[index].grid_class = cl;
[642] Fix | Delete
}
[643] Fix | Delete
styling = api.Helper.cloneObject(model_c.get('styling'));
[644] Fix | Delete
if (styling && Object.keys(styling).length > 0) {
[645] Fix | Delete
if(saving===true){
[646] Fix | Delete
if(isFrontend){//in admin part we can't use iframe to convert paddings that is why skipping
[647] Fix | Delete
//we need always save padding/margin units as 2 "value1,value2"(when the unit is %) to detect the data is converted
[648] Fix | Delete
for(let j=paddingLen-1;j>-1;--j){
[649] Fix | Delete
let prop=colPaddingsIds[j];
[650] Fix | Delete
if(styling[prop+'_unit']==='%' && styling[prop]!=='' && styling[prop]!==undefined && !styling[prop].toString().includes(',')){
[651] Fix | Delete
styling[prop]=','+styling[prop];
[652] Fix | Delete
}
[653] Fix | Delete
for (let k = bpLength - 2; k>-1; --k) {
[654] Fix | Delete
if(styling['breakpoint_'+points[k]]!==undefined){
[655] Fix | Delete
let p=styling['breakpoint_'+points[k]][prop];
[656] Fix | Delete
if(p!=='' && p!==undefined && !p.toString().includes(',') && ThemifyStyles.getStyleVal(prop+'_unit',styling,points[k])==='%'){
[657] Fix | Delete
styling['breakpoint_'+points[k]][prop]=','+p;
[658] Fix | Delete
}
[659] Fix | Delete
}
[660] Fix | Delete
}
[661] Fix | Delete
}
[662] Fix | Delete
}
[663] Fix | Delete
model_c.constructor.builderSave(styling);
[664] Fix | Delete
}
[665] Fix | Delete
if(styling && Object.keys(styling).length>0){
[666] Fix | Delete
cols[index].styling = styling;
[667] Fix | Delete
}
[668] Fix | Delete
}
[669] Fix | Delete
if (modules !== undefined) {
[670] Fix | Delete
modules = modules.children;
[671] Fix | Delete
let items = [];
[672] Fix | Delete
for (let j = 0; j < modules.length; ++j) {
[673] Fix | Delete
let m = Registry.get(modules[j].dataset.cid),
[674] Fix | Delete
mname=m?.get('mod_name');
[675] Fix | Delete
if (mname) {
[676] Fix | Delete
styling = api.Helper.cloneObject(m.get('mod_settings'));
[677] Fix | Delete
if(styling){
[678] Fix | Delete
if(m.type==='module'){
[679] Fix | Delete
m.parseHtml(styling,saving);
[680] Fix | Delete
}
[681] Fix | Delete
if(saving===true){
[682] Fix | Delete
m.constructor.builderSave(styling);
[683] Fix | Delete
Themify.trigger( 'tb_save_component', {
[684] Fix | Delete
data : styling,
[685] Fix | Delete
slug : mname
[686] Fix | Delete
} );
[687] Fix | Delete
}
[688] Fix | Delete
}
[689] Fix | Delete
let k = items.push({
[690] Fix | Delete
mod_name:mname,
[691] Fix | Delete
element_id: m.id
[692] Fix | Delete
});
[693] Fix | Delete
--k;
[694] Fix | Delete
if (styling && Object.keys(styling).length > 0) {
[695] Fix | Delete
delete styling.cid;
[696] Fix | Delete
items[k].mod_settings = styling;
[697] Fix | Delete
}
[698] Fix | Delete
// Sub Rows
[699] Fix | Delete
if (m.type==='subrow') {
[700] Fix | Delete
items[k] = this.getRowSettings(modules[j], 'subrow', saving);
[701] Fix | Delete
}
[702] Fix | Delete
}
[703] Fix | Delete
}
[704] Fix | Delete
if (items.length > 0) {
[705] Fix | Delete
cols[index].modules = items;
[706] Fix | Delete
}
[707] Fix | Delete
}
[708] Fix | Delete
}
[709] Fix | Delete
}
[710] Fix | Delete
option_data = {
[711] Fix | Delete
element_id: model_r.id,
[712] Fix | Delete
cols: cols
[713] Fix | Delete
};
[714] Fix | Delete
[715] Fix | Delete
let sizes = {...model_r.get('sizes')};
[716] Fix | Delete
if (count>1) {
[717] Fix | Delete
for (let i = bpLength-1;i>-1;--i) {//make equal
[718] Fix | Delete
let bp = points[i],
[719] Fix | Delete
size = sizes[bp + '_size'],
[720] Fix | Delete
area = sizes[bp + '_area'],
[721] Fix | Delete
colh = sizes[bp + '_auto_h'];
[722] Fix | Delete
[723] Fix | Delete
if (size) {
[724] Fix | Delete
size=ThemifyStyles.getColSize(size,false);
[725] Fix | Delete
if (size.includes(' ')) {
[726] Fix | Delete
size = size.replace(/\s\s+/g, ' ').split(' ');
[727] Fix | Delete
for (let j = size.length - 1; j > -1; --j) {
[728] Fix | Delete
let fr = parseFloat(size[j].trim());
[729] Fix | Delete
if (fr !== 1) {
[730] Fix | Delete
size[j] = size[j].replace(fr.toString(), parseFloat(fr.toFixed(5)).toString());
[731] Fix | Delete
}
[732] Fix | Delete
}
[733] Fix | Delete
size = size.join(' ').replaceAll('0.', '.').trim();
[734] Fix | Delete
}
[735] Fix | Delete
sizes[bp + '_size']=size;
[736] Fix | Delete
}
[737] Fix | Delete
if (area) {
[738] Fix | Delete
if(bp==='desktop'){
[739] Fix | Delete
delete sizes[bp + '_area'];
[740] Fix | Delete
}
[741] Fix | Delete
else{
[742] Fix | Delete
if(area.includes(' ')){
[743] Fix | Delete
area=area.replaceAll('col', '').replace(/\s\s+/g, ' ').trim();
[744] Fix | Delete
sizes[bp + '_area']= area;
[745] Fix | Delete
if(size && !size.includes(' ')){
[746] Fix | Delete
let checkArea=model_r.getGridCss({size:size},bp);
[747] Fix | Delete
if(checkArea['--area'] && checkArea['--area'].replaceAll('col', '').replace(/\s\s+/g, ' ').trim()===area){
[748] Fix | Delete
delete sizes[bp + '_area'];
[749] Fix | Delete
}
[750] Fix | Delete
}
[751] Fix | Delete
}
[752] Fix | Delete
else if(!ThemifyStyles.getAreaValue(area)){
[753] Fix | Delete
delete sizes[bp + '_area'];
[754] Fix | Delete
}
[755] Fix | Delete
}
[756] Fix | Delete
}
[757] Fix | Delete
if (colh) {
[758] Fix | Delete
sizes[bp + '_auto_h'] = parseInt(colh);
[759] Fix | Delete
}
[760] Fix | Delete
if (saving === true && sizes[bp + '_dir']!==undefined) {//backward
[761] Fix | Delete
delete sizes[bp + '_dir'];
[762] Fix | Delete
}
[763] Fix | Delete
}
[764] Fix | Delete
for (let i = 0; i < bpLength - 1; ++i) { //clean again duplicates
[765] Fix | Delete
let bp = points[i],
[766] Fix | Delete
gutter = sizes[bp + '_gutter'],
[767] Fix | Delete
colh = sizes[bp + '_auto_h'],
[768] Fix | Delete
size = sizes[bp + '_size'],
[769] Fix | Delete
align = sizes[bp + '_align'];
[770] Fix | Delete
[771] Fix | Delete
if (gutter || align || colh || size) {
[772] Fix | Delete
for (let j = i + 1; j < bpLength; ++j) {
[773] Fix | Delete
let bp2 = points[j];
[774] Fix | Delete
if (gutter && sizes[bp2 + '_gutter']) {
[775] Fix | Delete
if (sizes[bp2 + '_gutter'] === gutter) {
[776] Fix | Delete
delete sizes[bp + '_gutter'];
[777] Fix | Delete
}
[778] Fix | Delete
gutter = null;
[779] Fix | Delete
}
[780] Fix | Delete
if (align && sizes[bp2 + '_align']) {
[781] Fix | Delete
if (sizes[bp2 + '_align'] === align) {
[782] Fix | Delete
delete sizes[bp + '_align'];
[783] Fix | Delete
}
[784] Fix | Delete
align = null;
[785] Fix | Delete
}
[786] Fix | Delete
if (colh && sizes[bp2 + '_auto_h']) {
[787] Fix | Delete
if (sizes[bp2 + '_auto_h'] === colh) {
[788] Fix | Delete
delete sizes[bp + '_auto_h'];
[789] Fix | Delete
}
[790] Fix | Delete
colh = null;
[791] Fix | Delete
}
[792] Fix | Delete
if (size && sizes[bp2 + '_size']) {
[793] Fix | Delete
if (saving === true && sizes[bp2 + '_size'] === size) {
[794] Fix | Delete
delete sizes[bp + '_size'];
[795] Fix | Delete
}
[796] Fix | Delete
size = null;
[797] Fix | Delete
}
[798] Fix | Delete
if (!gutter && !align && !colh && !size) {
[799] Fix | Delete
break;
[800] Fix | Delete
}
[801] Fix | Delete
}
[802] Fix | Delete
}
[803] Fix | Delete
}
[804] Fix | Delete
[805] Fix | Delete
if (sizes.desktop_area) {
[806] Fix | Delete
const area = [];
[807] Fix | Delete
for (let i = 0; i < count; ++i) {
[808] Fix | Delete
area.push(i + 1);
[809] Fix | Delete
}
[810] Fix | Delete
if (area.join(' ') === sizes.desktop_area) {
[811] Fix | Delete
delete sizes.desktop_area;
[812] Fix | Delete
}
[813] Fix | Delete
}
[814] Fix | Delete
//backward
[815] Fix | Delete
if ((sizes.mobile_dir !== undefined && (!sizes.desktop_dir || sizes.desktop_dir === sizes.tablet_landscape_dir) && sizes.tablet_dir === sizes.mobile_dir && sizes.tablet_landscape_dir === sizes.mobile_dir)) {
[816] Fix | Delete
delete sizes.desktop_dir;
[817] Fix | Delete
delete sizes.tablet_landscape_dir;
[818] Fix | Delete
delete sizes.tablet_dir;
[819] Fix | Delete
delete sizes.mobile_dir;
[820] Fix | Delete
}
[821] Fix | Delete
else if (sizes.desktop_dir === 'ltr') {
[822] Fix | Delete
delete sizes.desktop_dir;
[823] Fix | Delete
}
[824] Fix | Delete
if (sizes.desktop_auto_h === -1) {
[825] Fix | Delete
delete sizes.desktop_auto_h;
[826] Fix | Delete
}
[827] Fix | Delete
if (sizes.desktop_align === 'start' && api.isFullSection===false) {
[828] Fix | Delete
delete sizes.desktop_align;
[829] Fix | Delete
}
[830] Fix | Delete
if (sizes.desktop_gutter === 'gutter') {
[831] Fix | Delete
delete sizes.desktop_gutter;
[832] Fix | Delete
}
[833] Fix | Delete
for (let i in sizes) {
[834] Fix | Delete
if (sizes[i] === undefined || sizes[i] === '') {
[835] Fix | Delete
delete sizes[i];
[836] Fix | Delete
}
[837] Fix | Delete
}
[838] Fix | Delete
}
[839] Fix | Delete
else{
[840] Fix | Delete
sizes={};
[841] Fix | Delete
}
[842] Fix | Delete
option_data.sizes = sizes;
[843] Fix | Delete
styling = api.Helper.cloneObject(model_r.get('styling'));
[844] Fix | Delete
if (styling) {
[845] Fix | Delete
delete styling.cid;
[846] Fix | Delete
if(Object.keys(styling).length > 0){
[847] Fix | Delete
if(saving===true){
[848] Fix | Delete
model_r.constructor.builderSave(styling);
[849] Fix | Delete
}
[850] Fix | Delete
option_data.styling = styling;
[851] Fix | Delete
}
[852] Fix | Delete
}
[853] Fix | Delete
}
[854] Fix | Delete
return option_data;
[855] Fix | Delete
},
[856] Fix | Delete
getAllImages(type){
[857] Fix | Delete
const images=new Map,
[858] Fix | Delete
localImages=new Set,
[859] Fix | Delete
externalImages=new Set,
[860] Fix | Delete
themifyImages=new Set,
[861] Fix | Delete
addImage=url=>{
[862] Fix | Delete
if(api.Helper.isImageUrl(url) || url.includes('.mp4') || url.includes('.mpeg') || url.includes('.mp3')){
[863] Fix | Delete
if(url.includes('themify.me')|| url.includes('themify.org')){
[864] Fix | Delete
if(!url.includes(themifyBuilder.site_url)){
[865] Fix | Delete
themifyImages.add(url);
[866] Fix | Delete
}
[867] Fix | Delete
}
[868] Fix | Delete
else if(url.includes(Themify.urlHost)){
[869] Fix | Delete
localImages.add(url);
[870] Fix | Delete
}
[871] Fix | Delete
else{
[872] Fix | Delete
externalImages.add(url);
[873] Fix | Delete
}
[874] Fix | Delete
}
[875] Fix | Delete
},
[876] Fix | Delete
getImages=fields=>{
[877] Fix | Delete
for(let i in fields){
[878] Fix | Delete
if(fields[i]){
[879] Fix | Delete
if(Array.isArray(fields[i]) || typeof fields[i]==='object'){
[880] Fix | Delete
getImages(fields[i]);
[881] Fix | Delete
}
[882] Fix | Delete
else{
[883] Fix | Delete
let v=fields[i].toString().trim();
[884] Fix | Delete
if(v){
[885] Fix | Delete
if(v.includes('<img ') || v.includes('<video ') || v.includes('<audio ')){
[886] Fix | Delete
let tmp=createElement('template');
[887] Fix | Delete
tmp.innerHTML=v;
[888] Fix | Delete
for(let allImages= tmp.content.querySelectorAll('img,video,audio'),j=allImages.length-1;j>-1;--j){
[889] Fix | Delete
let {src,srcset}=allImages[j];
[890] Fix | Delete
srcset=srcset?.split(' ') || [];
[891] Fix | Delete
if(src){
[892] Fix | Delete
srcset.push(src);
[893] Fix | Delete
}
[894] Fix | Delete
for(let k=srcset.length-1;k>-1;--k){
[895] Fix | Delete
if(srcset[k]){
[896] Fix | Delete
addImage(srcset[k].trim());
[897] Fix | Delete
}
[898] Fix | Delete
}
[899] Fix | Delete
}
[900] Fix | Delete
}
[901] Fix | Delete
else if(v[0]==='[' && v.includes('path=')){
[902] Fix | Delete
let m=v.match(/path.*?=.*?['"](.+?)['"]/igm);
[903] Fix | Delete
if(m?.[0]){
[904] Fix | Delete
m=m[0].split('path=')[1].replaceAll('"','').replace("'",'').split(',');
[905] Fix | Delete
for(let j=m.length-1;j>-1;--j){
[906] Fix | Delete
if(m[j]){
[907] Fix | Delete
addImage(m[j].trim());
[908] Fix | Delete
}
[909] Fix | Delete
}
[910] Fix | Delete
}
[911] Fix | Delete
}
[912] Fix | Delete
else{
[913] Fix | Delete
addImage(v);
[914] Fix | Delete
}
[915] Fix | Delete
}
[916] Fix | Delete
}
[917] Fix | Delete
}
[918] Fix | Delete
}
[919] Fix | Delete
};
[920] Fix | Delete
for(let cid of Registry.items.keys()){
[921] Fix | Delete
let v=Registry.get(cid);
[922] Fix | Delete
if(v?.el.isConnected){
[923] Fix | Delete
getImages(v.get('styling'));
[924] Fix | Delete
}
[925] Fix | Delete
}
[926] Fix | Delete
const domImages=api.Builder.get().el.tfTag('img');
[927] Fix | Delete
for(let i=domImages.length-1;i>-1;--i){
[928] Fix | Delete
let src=domImages[i].src,
[929] Fix | Delete
srcset=domImages[i].srcset;
[930] Fix | Delete
srcset=srcset?.split(' ') ||[];
[931] Fix | Delete
if(src){
[932] Fix | Delete
srcset.push(src);
[933] Fix | Delete
}
[934] Fix | Delete
for(let j=srcset.length-1;j>-1;--j){
[935] Fix | Delete
if(srcset[j]){
[936] Fix | Delete
addImage(srcset[j].trim());
[937] Fix | Delete
}
[938] Fix | Delete
}
[939] Fix | Delete
}
[940] Fix | Delete
images.set('themify',themifyImages);
[941] Fix | Delete
images.set('local',localImages);
[942] Fix | Delete
images.set('external',externalImages);
[943] Fix | Delete
return type?images.get(type):images;
[944] Fix | Delete
},
[945] Fix | Delete
async importThemifyImages(images){
[946] Fix | Delete
if(Themify.urlHost.includes('themify.me')){
[947] Fix | Delete
return;
[948] Fix | Delete
}
[949] Fix | Delete
images??=this.getAllImages('themify');
[950] Fix | Delete
if(images.size>0){
[951] Fix | Delete
return new Promise(async (resolve,reject)=>{
[952] Fix | Delete
try{
[953] Fix | Delete
await Themify.loadJs(Themify.url+'js/admin/import/import-images',!!window.TF_ImportImages);
[954] Fix | Delete
const memory=~~themifyBuilder.memory || 64,
[955] Fix | Delete
chunkSize=memory>=255?4:(memory>=120?3:(memory>60?2:1)),
[956] Fix | Delete
res=await TF_ImportImages.init(images,themifyBuilder.nonce,i18n.uploading,chunkSize),
[957] Fix | Delete
breakpoints=api.breakpointsReverse,
[958] Fix | Delete
setImages=fields=>{
[959] Fix | Delete
for(let i in fields){
[960] Fix | Delete
if(fields[i]===undefined){
[961] Fix | Delete
delete fields[i];
[962] Fix | Delete
}
[963] Fix | Delete
else if(fields[i]){
[964] Fix | Delete
if(Array.isArray(fields[i]) || typeof fields[i]==='object'){
[965] Fix | Delete
setImages(fields[i]);
[966] Fix | Delete
}
[967] Fix | Delete
else{
[968] Fix | Delete
let v=fields[i].toString().trim();
[969] Fix | Delete
if(v && isNaN(v)){
[970] Fix | Delete
if(v.includes('<img ') || v.includes('<video ') || v.includes('<audio ')){
[971] Fix | Delete
let tmp=createElement('template');
[972] Fix | Delete
tmp.innerHTML='<div>'+v+'</div>';
[973] Fix | Delete
let content=tmp.content.firstChild,
[974] Fix | Delete
allImages= content.tfTag('img,video,audio');
[975] Fix | Delete
for(let j=allImages.length-1;j>-1;--j){
[976] Fix | Delete
let src=allImages[j].src;
[977] Fix | Delete
if(src){
[978] Fix | Delete
for(let [k,img] of res){
[979] Fix | Delete
if(img!==false && src.includes(k)){
[980] Fix | Delete
allImages[j].outerHTML=img.html;
[981] Fix | Delete
}
[982] Fix | Delete
}
[983] Fix | Delete
}
[984] Fix | Delete
}
[985] Fix | Delete
fields[i]=content.innerHTML;
[986] Fix | Delete
}
[987] Fix | Delete
else if( v[0]==='[' || !v.includes(' ')){
[988] Fix | Delete
if(v[0]==='[' && v.includes('path=')){
[989] Fix | Delete
v=v.replace('path=','ids=');
[990] Fix | Delete
for(let [k,img] of res){
[991] Fix | Delete
if(img!==false){
[992] Fix | Delete
v=v.replaceAll(k,img.id);
[993] Fix | Delete
}
[994] Fix | Delete
}
[995] Fix | Delete
}
[996] Fix | Delete
else{
[997] Fix | Delete
for(let [k,img] of res){
[998] Fix | Delete
if(img!==false){
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function