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/componen...
File: constructor.mjs
}
[2000] Fix | Delete
},
[2001] Fix | Delete
_setUpEditors() {
[2002] Fix | Delete
if (this.clicked === 'setting') {
[2003] Fix | Delete
const editors=this._editors;
[2004] Fix | Delete
for (let i = editors.length - 1; i > -1; --i) {
[2005] Fix | Delete
this._initControl(editors[i].el, editors[i].data);
[2006] Fix | Delete
}
[2007] Fix | Delete
this._editors = [];
[2008] Fix | Delete
}
[2009] Fix | Delete
},
[2010] Fix | Delete
switchTabs() {
[2011] Fix | Delete
const id = '#' + this.dataset.id,
[2012] Fix | Delete
li = this.parentNode,
[2013] Fix | Delete
p = li.parentNode,
[2014] Fix | Delete
tabs = p.parentNode,
[2015] Fix | Delete
tabId = id.replace('#tb_options_', '');
[2016] Fix | Delete
[2017] Fix | Delete
let container = tabs.querySelector(id);
[2018] Fix | Delete
if (!container || container.parentNode !== tabs) {
[2019] Fix | Delete
container = this.getRootNode().querySelector(id);
[2020] Fix | Delete
}
[2021] Fix | Delete
if (!container || li.classList.contains('current')) {
[2022] Fix | Delete
return;
[2023] Fix | Delete
}
[2024] Fix | Delete
const children = p.children,
[2025] Fix | Delete
containerChildren = container.parentNode.children;
[2026] Fix | Delete
for (let i = children.length - 1; i > -1; --i) {
[2027] Fix | Delete
children[i].classList.remove('current');
[2028] Fix | Delete
}
[2029] Fix | Delete
li.classList.add('current');
[2030] Fix | Delete
for (let i = containerChildren.length - 1; i > -1; --i) {
[2031] Fix | Delete
if (containerChildren[i].classList.contains('tb_tab')) {
[2032] Fix | Delete
containerChildren[i].style.display = 'none';
[2033] Fix | Delete
}
[2034] Fix | Delete
}
[2035] Fix | Delete
container.style.display = 'block';
[2036] Fix | Delete
Themify.trigger('tb_builder_tabsactive', [tabId, container]);
[2037] Fix | Delete
Themify.triggerEvent(container, 'tb_builder_tabsactive', {id: tabId});
[2038] Fix | Delete
[2039] Fix | Delete
},
[2040] Fix | Delete
run(options) {
[2041] Fix | Delete
let defaultTab,
[2042] Fix | Delete
model = api.activeModel,
[2043] Fix | Delete
_this=this;
[2044] Fix | Delete
_this.styles = {};
[2045] Fix | Delete
_this.settings = {};
[2046] Fix | Delete
_this._editors = [];
[2047] Fix | Delete
_this.afterRun = [];
[2048] Fix | Delete
_this._radioChange = [];
[2049] Fix | Delete
_this._bindings = [];
[2050] Fix | Delete
_this._stylesData = {};
[2051] Fix | Delete
_this.is_repeat = _this.is_sort =_this.component = _this.is_new = _this._is_ajax = _this.type = null;
[2052] Fix | Delete
_this._options = options;
[2053] Fix | Delete
if (model !== null) {
[2054] Fix | Delete
_this.type = model.get('mod_name');
[2055] Fix | Delete
_this.component = model.type;
[2056] Fix | Delete
if (_this.component === 'module') {
[2057] Fix | Delete
_this._is_ajax = model.getPreviewType() === 'ajax';
[2058] Fix | Delete
_this.is_new = !!model.is_new;
[2059] Fix | Delete
}
[2060] Fix | Delete
_this.values = api.Helper.cloneObject(model.get('mod_settings'));
[2061] Fix | Delete
defaultTab = model.tab || 'setting';
[2062] Fix | Delete
delete model.tab;
[2063] Fix | Delete
_this._options.visibility??= true;
[2064] Fix | Delete
_this._options.animation??= true;
[2065] Fix | Delete
} else {
[2066] Fix | Delete
_this.values = {};
[2067] Fix | Delete
_this.component = null;
[2068] Fix | Delete
}
[2069] Fix | Delete
const top_bar = createDocumentFragment(),
[2070] Fix | Delete
container = createDocumentFragment(),
[2071] Fix | Delete
tabIcons = {styling: 'ti-brush', animation: 'ti-layers-alt', visibility: 'ti-eye'},
[2072] Fix | Delete
createTab = (index, options) => {
[2073] Fix | Delete
[2074] Fix | Delete
const fr = createDocumentFragment();
[2075] Fix | Delete
if (index === 'visibility' || index === 'animation') {
[2076] Fix | Delete
options = _this.getOptions(index);
[2077] Fix | Delete
} else if (index === 'styling' && api.LightBox.el.tfClass('tb_styling_tab_header')[0] === undefined) {
[2078] Fix | Delete
const div = createElement('','tb_styling_tab_header'),
[2079] Fix | Delete
globalStylesHTML = api.GS.globalStylesHTML();
[2080] Fix | Delete
div.appendChild(_this._getSwitcher());
[2081] Fix | Delete
if (globalStylesHTML) {
[2082] Fix | Delete
div.appendChild(globalStylesHTML);
[2083] Fix | Delete
}
[2084] Fix | Delete
fr.appendChild(div);
[2085] Fix | Delete
}
[2086] Fix | Delete
// generate html output from the options
[2087] Fix | Delete
fr.appendChild(_this.create(options));
[2088] Fix | Delete
if (index === 'styling') {
[2089] Fix | Delete
const reset = createElement('a',{href:'#',class:'reset-styling'}),
[2090] Fix | Delete
icon = createElement('i','tf_close');
[2091] Fix | Delete
reset.tfOn(_CLICK_, e => {
[2092] Fix | Delete
e.stopPropagation();
[2093] Fix | Delete
e.preventDefault();
[2094] Fix | Delete
this.resetStyling(api.activeModel);
[2095] Fix | Delete
}).append(icon, createTextNode(i18n.reset_style));
[2096] Fix | Delete
fr.appendChild(reset);
[2097] Fix | Delete
if (api.isVisual && model) {
[2098] Fix | Delete
setTimeout(() => {
[2099] Fix | Delete
api.liveStylingInstance.module_rules = _this.styles;//by reference,will be fill when the option has been viewed
[2100] Fix | Delete
}, 600);
[2101] Fix | Delete
}
[2102] Fix | Delete
}
[2103] Fix | Delete
options = null;
[2104] Fix | Delete
return fr;
[2105] Fix | Delete
},
[2106] Fix | Delete
tabSwitch = function (e) {
[2107] Fix | Delete
const index = e.detail.id.replace('#tb_options_', '');
[2108] Fix | Delete
_this.clicked = index;
[2109] Fix | Delete
if (this.dataset.done === undefined) {
[2110] Fix | Delete
this.dataset.done = true;
[2111] Fix | Delete
this.appendChild(createTab(index, _this._options[index].options));
[2112] Fix | Delete
_this.callbacks();
[2113] Fix | Delete
_this._setUpEditors();
[2114] Fix | Delete
[2115] Fix | Delete
Themify.trigger('tb_editing_' + _this.type + '_' + index, api.LightBox.el);
[2116] Fix | Delete
}
[2117] Fix | Delete
};
[2118] Fix | Delete
[2119] Fix | Delete
_this.clicked = null;
[2120] Fix | Delete
for (let k in _this._options) {
[2121] Fix | Delete
let item=_this._options[k];
[2122] Fix | Delete
if (item === false) {
[2123] Fix | Delete
continue;
[2124] Fix | Delete
}
[2125] Fix | Delete
//meneu
[2126] Fix | Delete
let tab_id = 'tb_options_' + k,
[2127] Fix | Delete
label = item.name !== undefined ? (i18n[item.name] || item.name) : i18n[k],
[2128] Fix | Delete
li = createElement('li'),
[2129] Fix | Delete
a = createElement('a',{href:'javascript:;','data-id':tab_id},label),
[2130] Fix | Delete
tooltip = createElement('span'),
[2131] Fix | Delete
wrapper = createElement('',{id:tab_id,class:'tb_tab tb_options_tab_wrapper tf_rel tf_box tf_w tf_hide'});
[2132] Fix | Delete
[2133] Fix | Delete
if (k !== 'setting') {
[2134] Fix | Delete
a.className = 'tb_tooltip';
[2135] Fix | Delete
tooltip.textContent = label;
[2136] Fix | Delete
if (tabIcons[k]) {
[2137] Fix | Delete
a.appendChild(api.Helper.getIcon(tabIcons[k]));
[2138] Fix | Delete
}
[2139] Fix | Delete
a.appendChild(tooltip);
[2140] Fix | Delete
}
[2141] Fix | Delete
if (defaultTab === k || defaultTab === undefined) {
[2142] Fix | Delete
li.className = 'current';
[2143] Fix | Delete
_this.clicked = k;
[2144] Fix | Delete
if (item.html !== undefined) {
[2145] Fix | Delete
wrapper.innerHTML = item.html;
[2146] Fix | Delete
} else {
[2147] Fix | Delete
wrapper.appendChild(createTab(k, item.options));
[2148] Fix | Delete
}
[2149] Fix | Delete
[2150] Fix | Delete
wrapper.style.display = 'block';
[2151] Fix | Delete
wrapper.dataset.done = true;
[2152] Fix | Delete
}
[2153] Fix | Delete
wrapper.tfOn('tb_builder_tabsactive', tabSwitch, {passive: true});
[2154] Fix | Delete
a.tfOn(_CLICK_, _this.switchTabs, {passive: true});
[2155] Fix | Delete
container.appendChild(wrapper);
[2156] Fix | Delete
li.appendChild(a);
[2157] Fix | Delete
top_bar.appendChild(li);
[2158] Fix | Delete
}
[2159] Fix | Delete
const top = api.LightBox.el.tfClass('tb_options_tab')[0],
[2160] Fix | Delete
changeMode = (prevbreakpoint, breakpoint) => {
[2161] Fix | Delete
_this._updateStyles(prevbreakpoint, breakpoint);
[2162] Fix | Delete
};
[2163] Fix | Delete
top?.replaceChildren(top_bar);
[2164] Fix | Delete
Themify.on('themify_builder_lightbox_close', () => {
[2165] Fix | Delete
_this._radioChange = _this.afterRun = _this._bindings = _this._editors = [];
[2166] Fix | Delete
_this._stylesData = _this.settings = _this.styles = {};
[2167] Fix | Delete
_this._is_ajax = _this.is_repeat = _this.is_sort = _this.clicked = null;
[2168] Fix | Delete
if (typeof tinyMCE !== 'undefined') {
[2169] Fix | Delete
for (let i = tinymce.editors.length - 1; i > -1; --i) {
[2170] Fix | Delete
if (tinymce.editors[i].id !== 'content') {
[2171] Fix | Delete
tinyMCE.execCommand('mceRemoveEditor', true, tinymce.editors[i].id);
[2172] Fix | Delete
}
[2173] Fix | Delete
}
[2174] Fix | Delete
}
[2175] Fix | Delete
Themify.off('themify_builder_change_mode', changeMode);
[2176] Fix | Delete
_this.values = {};
[2177] Fix | Delete
_this.tabs.click = 0;
[2178] Fix | Delete
_this.tabs.styleClicked = false;
[2179] Fix | Delete
model = _this.type = _this.component = _this.is_new = _this._options = _this=null;
[2180] Fix | Delete
}, true)
[2181] Fix | Delete
.on('themify_builder_change_mode', changeMode);
[2182] Fix | Delete
[2183] Fix | Delete
setTimeout(() => {
[2184] Fix | Delete
_this._setUpEditors();
[2185] Fix | Delete
_this.callbacks();
[2186] Fix | Delete
Themify.trigger('tb_editing_' + _this.type + '_' + _this.clicked, api.LightBox.el);
[2187] Fix | Delete
/**
[2188] Fix | Delete
* self.type is the module slug, trigger a separate event for all modules regardless of their slug
[2189] Fix | Delete
*/
[2190] Fix | Delete
Themify.trigger('tb_editing_' + _this.component, api.LightBox.el);
[2191] Fix | Delete
}, 5);
[2192] Fix | Delete
[2193] Fix | Delete
return container;
[2194] Fix | Delete
},
[2195] Fix | Delete
getStyleVal(id, bp, vals) {
[2196] Fix | Delete
let v = undefined;
[2197] Fix | Delete
if (id !== undefined && id !== '' && api.activeModel !== null) {
[2198] Fix | Delete
if (vals === undefined) {
[2199] Fix | Delete
vals = this.values;
[2200] Fix | Delete
}
[2201] Fix | Delete
if (bp === undefined) {
[2202] Fix | Delete
bp = api.activeBreakPoint;
[2203] Fix | Delete
}
[2204] Fix | Delete
if (bp === 'desktop' || this.clicked !== 'styling') {
[2205] Fix | Delete
if (vals !== null && vals[id] !== '') {
[2206] Fix | Delete
v = vals[id];
[2207] Fix | Delete
}
[2208] Fix | Delete
} else {
[2209] Fix | Delete
if (vals['breakpoint_' + bp] !== undefined && vals['breakpoint_' + bp][id] !== undefined && vals['breakpoint_' + bp][id] !== '') {
[2210] Fix | Delete
v = vals['breakpoint_' + bp][id];
[2211] Fix | Delete
} else {
[2212] Fix | Delete
const points = this.breakpointsReverse;
[2213] Fix | Delete
for (let i = points.indexOf(bp) + 1; i < points.length; ++i) {
[2214] Fix | Delete
let _bp=points[i];
[2215] Fix | Delete
if (points[i] !== 'desktop') {
[2216] Fix | Delete
if (vals['breakpoint_' + _bp] !== undefined && vals['breakpoint_' + _bp][id] !== undefined && vals['breakpoint_' + _bp][id] !== '') {
[2217] Fix | Delete
v = vals['breakpoint_' + _bp][id];
[2218] Fix | Delete
break;
[2219] Fix | Delete
}
[2220] Fix | Delete
} else if (vals[id] !== undefined && vals[id] !== '') {
[2221] Fix | Delete
// Check for responsive disable
[2222] Fix | Delete
let binding_data = this._stylesData?.[id]?.binding;
[2223] Fix | Delete
if (binding_data?.[vals[id]]?.responsive?.disabled?.includes(id)) {
[2224] Fix | Delete
v = undefined;
[2225] Fix | Delete
} else {
[2226] Fix | Delete
v = vals[id];
[2227] Fix | Delete
}
[2228] Fix | Delete
break;
[2229] Fix | Delete
}
[2230] Fix | Delete
}
[2231] Fix | Delete
}
[2232] Fix | Delete
}
[2233] Fix | Delete
if ((v === undefined || v === '') && id.endsWith('_unit') && id.indexOf('lightbox_')!==0 && !id.includes('frame_')) {//because in the very old version, px wasn't saved and we can't detect after removing it was px value or not
[2234] Fix | Delete
v = 'px';
[2235] Fix | Delete
}
[2236] Fix | Delete
//for columns it can be "value1,value2" where "value1" is value for v5, "value2" is for v7
[2237] Fix | Delete
else if (v !== undefined && v !== '' && api.activeModel.type === 'column' && v.toString().includes(',') && (id.indexOf('padding') === 0 || id.includes('margin'))) {
[2238] Fix | Delete
v = v.trim().split(',');
[2239] Fix | Delete
if (v[1] !== undefined && v[1] !== '') {
[2240] Fix | Delete
v = v[1];
[2241] Fix | Delete
} else {
[2242] Fix | Delete
v = v[0];
[2243] Fix | Delete
}
[2244] Fix | Delete
v = v.trim();
[2245] Fix | Delete
}
[2246] Fix | Delete
}
[2247] Fix | Delete
return v;
[2248] Fix | Delete
},
[2249] Fix | Delete
_updateStyles(prevbreakpoint, breakpoint) {
[2250] Fix | Delete
this.setStylingValues(prevbreakpoint);
[2251] Fix | Delete
const old_tab = this.clicked;
[2252] Fix | Delete
this.clicked = 'styling';
[2253] Fix | Delete
for (let k in this._stylesData) {
[2254] Fix | Delete
let el = this._stylesData[k],
[2255] Fix | Delete
type = el.type;
[2256] Fix | Delete
if (type && type !== 'video' && type !== 'gallery' && type !== 'autocomplete' && type !== 'custom_css' && type !== 'builder' && el.is_responsive !== false) {
[2257] Fix | Delete
if (type === 'icon_radio') {
[2258] Fix | Delete
type = 'radio';
[2259] Fix | Delete
} else if (type === 'icon_checkbox') {
[2260] Fix | Delete
type = 'checkbox';
[2261] Fix | Delete
} else if (type === 'textarea' || type === 'icon' || type === 'hidden' || type === 'number') {
[2262] Fix | Delete
type = 'text';
[2263] Fix | Delete
} else if (type === 'image') {
[2264] Fix | Delete
type = 'mediaFile';
[2265] Fix | Delete
} else if (type === 'padding' || type === 'border_radius') {
[2266] Fix | Delete
type = 'margin';
[2267] Fix | Delete
} else if (type === 'frame') {
[2268] Fix | Delete
type = 'layout';
[2269] Fix | Delete
}
[2270] Fix | Delete
let v = this.getStyleVal(k);
[2271] Fix | Delete
this[type].update(k, v, this,prevbreakpoint,breakpoint);
[2272] Fix | Delete
if (el.binding !== undefined) {
[2273] Fix | Delete
let items = this.getEl(k),
[2274] Fix | Delete
res = [];
[2275] Fix | Delete
if (type === 'layout') {
[2276] Fix | Delete
res = items.tfClass('tfl-icon');
[2277] Fix | Delete
} else if (type === 'radio' || type === 'checkbox') {
[2278] Fix | Delete
res = items.tfTag('input');
[2279] Fix | Delete
} else {
[2280] Fix | Delete
res = [items];
[2281] Fix | Delete
}
[2282] Fix | Delete
for (let i = 0, len = res.length; i < len; ++i) {
[2283] Fix | Delete
this._binding(res[i], el, v);
[2284] Fix | Delete
}
[2285] Fix | Delete
}
[2286] Fix | Delete
}
[2287] Fix | Delete
}
[2288] Fix | Delete
//Disable responsive disable options
[2289] Fix | Delete
const disabled_options = api.LightBox.el.querySelectorAll('#tb_options_styling option.tb_responsive_disable');
[2290] Fix | Delete
for (let j = disabled_options.length - 1; j >= 0; j--) {
[2291] Fix | Delete
disabled_options[j].disabled = 'desktop' !== breakpoint;
[2292] Fix | Delete
}
[2293] Fix | Delete
this.clicked = old_tab;
[2294] Fix | Delete
},
[2295] Fix | Delete
setStylingValues(breakpoint) {
[2296] Fix | Delete
const data = api.Forms.serialize('tb_options_styling', true),
[2297] Fix | Delete
isDesktop = breakpoint === 'desktop';
[2298] Fix | Delete
if (isDesktop === false && this.values['breakpoint_' + breakpoint] === undefined) {
[2299] Fix | Delete
this.values['breakpoint_' + breakpoint] = {};
[2300] Fix | Delete
}
[2301] Fix | Delete
for (let i in data) {
[2302] Fix | Delete
if (isDesktop === true) {
[2303] Fix | Delete
this.values[i] = data[i];
[2304] Fix | Delete
}
[2305] Fix | Delete
else {
[2306] Fix | Delete
this.values['breakpoint_' + breakpoint][i] = data[i];
[2307] Fix | Delete
}
[2308] Fix | Delete
}
[2309] Fix | Delete
},
[2310] Fix | Delete
async resetStyling(model) {
[2311] Fix | Delete
const type = model.get('mod_name');
[2312] Fix | Delete
// Reset GS
[2313] Fix | Delete
if (api.isGSPage === false && api.GS.activeGS === null) {
[2314] Fix | Delete
[2315] Fix | Delete
if (model.id === api.activeModel?.id) {
[2316] Fix | Delete
const field = this.getEl(api.GS.key);
[2317] Fix | Delete
if (field && field.value) {
[2318] Fix | Delete
const vals = field.value.split(' '),
[2319] Fix | Delete
bar = field.parentNode.querySelector('tb-gs');
[2320] Fix | Delete
for (let i = vals.length - 1; i > -1; --i) {
[2321] Fix | Delete
bar.delete(vals[i]);
[2322] Fix | Delete
}
[2323] Fix | Delete
}
[2324] Fix | Delete
} else {
[2325] Fix | Delete
await api.GS.setGsStyle([], true, model);
[2326] Fix | Delete
}
[2327] Fix | Delete
[2328] Fix | Delete
}
[2329] Fix | Delete
if (api.isVisual) {
[2330] Fix | Delete
let live = api.liveStylingInstance;
[2331] Fix | Delete
if (!live || live.el !== model.el) {
[2332] Fix | Delete
live = api.createStyleInstance();
[2333] Fix | Delete
live.init(true, false, model);
[2334] Fix | Delete
}
[2335] Fix | Delete
const prefix = live.prefix,
[2336] Fix | Delete
points = this.breakpointsReverse;
[2337] Fix | Delete
for (let i = points.length - 1; i > -1; --i) {
[2338] Fix | Delete
let stylesheet = ThemifyStyles.getSheet(points[i], api.GS.activeGS !== null),
[2339] Fix | Delete
rules = stylesheet.cssRules || stylesheet.rules;
[2340] Fix | Delete
if (rules.length > 0) {
[2341] Fix | Delete
for (let j = rules.length - 1; j > -1; --j) {
[2342] Fix | Delete
if (rules[j].selectorText.includes(prefix)) {
[2343] Fix | Delete
let css = rules[j].cssText.split('{')[1].split(';');
[2344] Fix | Delete
[2345] Fix | Delete
for (let k = css.length - 2; k > -1; --k) {
[2346] Fix | Delete
let prop = css[k].trim().split(': ')[0].trim();
[2347] Fix | Delete
if (rules[j].style[prop] !== undefined) {
[2348] Fix | Delete
rules[j].style[prop] = '';
[2349] Fix | Delete
}
[2350] Fix | Delete
}
[2351] Fix | Delete
}
[2352] Fix | Delete
}
[2353] Fix | Delete
}
[2354] Fix | Delete
}
[2355] Fix | Delete
if (model.type !== 'module') {
[2356] Fix | Delete
live.removeBgSlider();
[2357] Fix | Delete
live.removeBgVideo();
[2358] Fix | Delete
live.removeFrames();
[2359] Fix | Delete
live.bindBackgroundMode('repeat', 'background_repeat');
[2360] Fix | Delete
live.bindBackgroundMode('repeat', 'b_r_h');
[2361] Fix | Delete
live.el.removeAttribute('data-tb_slider_videos');
[2362] Fix | Delete
live.el.querySelector(':scope>.tb_slider_videos')?.remove();
[2363] Fix | Delete
live.getComponentBgOverlay(type)?.remove();
[2364] Fix | Delete
}
[2365] Fix | Delete
live = null;
[2366] Fix | Delete
}
[2367] Fix | Delete
[2368] Fix | Delete
const styleFields = ThemifyStyles.getStyleOptions(type),
[2369] Fix | Delete
values = model.id === api.activeModel?.id ? this.values : model.get('styling');
[2370] Fix | Delete
[2371] Fix | Delete
for (let i in values) {
[2372] Fix | Delete
let key = i.includes('_color') ? 'color' : (i.includes('_style') ? 'style' : false),
[2373] Fix | Delete
remove = null;
[2374] Fix | Delete
if (i.indexOf('breakpoint_') === 0 || i === api.GS.key || styleFields[i] !== undefined || i.includes('_apply_all')) {
[2375] Fix | Delete
remove = true;
[2376] Fix | Delete
} else if (i.includes('_unit')) {//unit
[2377] Fix | Delete
key = i.replace(/_unit$/ig, '', '');
[2378] Fix | Delete
if (styleFields[key] !== undefined) {
[2379] Fix | Delete
remove = true;
[2380] Fix | Delete
}
[2381] Fix | Delete
} else if (i.includes('_w')) {//weight
[2382] Fix | Delete
key = i.replace(/_w$/ig, '', '');
[2383] Fix | Delete
if (styleFields[key] !== undefined && styleFields[key].type === 'font_select') {
[2384] Fix | Delete
remove = true;
[2385] Fix | Delete
}
[2386] Fix | Delete
} else if (key !== false) {
[2387] Fix | Delete
key = i.replace('_' + key, '_width');
[2388] Fix | Delete
if (styleFields[key] !== undefined && styleFields[key].type === 'border') {
[2389] Fix | Delete
remove = true;
[2390] Fix | Delete
}
[2391] Fix | Delete
}
[2392] Fix | Delete
if (remove === true) {
[2393] Fix | Delete
delete values[i];
[2394] Fix | Delete
}
[2395] Fix | Delete
}
[2396] Fix | Delete
if (model.id === api.activeModel?.id) {
[2397] Fix | Delete
const tabId = 'styling',
[2398] Fix | Delete
container = this.getEl('tb_options_' + tabId);
[2399] Fix | Delete
if (container) {
[2400] Fix | Delete
for (let childs = container.children, i = childs.length - 1; i > -1; --i) {
[2401] Fix | Delete
if (!childs[i].classList.contains('tb_styling_tab_header')) {
[2402] Fix | Delete
childs[i].remove();
[2403] Fix | Delete
}
[2404] Fix | Delete
}
[2405] Fix | Delete
container.removeAttribute('data-done');
[2406] Fix | Delete
Themify.triggerEvent(container, 'tb_builder_tabsactive', {id: tabId});
[2407] Fix | Delete
}
[2408] Fix | Delete
}
[2409] Fix | Delete
},
[2410] Fix | Delete
create(data) {
[2411] Fix | Delete
const content = createDocumentFragment();
[2412] Fix | Delete
if (data === undefined || data.length === 0) {
[2413] Fix | Delete
const info = createElement(),
[2414] Fix | Delete
infoText = createElement('p','',i18n.no_op_module);
[2415] Fix | Delete
info.appendChild(infoText);
[2416] Fix | Delete
content.appendChild(info);
[2417] Fix | Delete
return content;
[2418] Fix | Delete
}
[2419] Fix | Delete
if (data.type === 'tabs') {
[2420] Fix | Delete
content.appendChild(this.tabs.render(data, this));
[2421] Fix | Delete
} else {
[2422] Fix | Delete
for (let i in data) {
[2423] Fix | Delete
let item=data[i];
[2424] Fix | Delete
if (item.hide === true || item.type === undefined || ('visibility' === this.clicked && 'row' === this.component && 'sticky_visibility' === item.id)) {
[2425] Fix | Delete
continue;
[2426] Fix | Delete
}
[2427] Fix | Delete
let type = item.type,
[2428] Fix | Delete
res = this[type].render(item, this);
[2429] Fix | Delete
if (res !== false && type !== 'separator' && type !== 'expand' && type !== 'group') {
[2430] Fix | Delete
let id = item.id || item.topId;
[2431] Fix | Delete
if (type !== 'tabs' && type !== 'multi' && type !== 'margin_opposity') {
[2432] Fix | Delete
if (id) {
[2433] Fix | Delete
if (this.clicked === 'styling') {
[2434] Fix | Delete
if (api.isVisual && item.prop !== undefined) {
[2435] Fix | Delete
this.styles[id] = api.Helper.cloneObject(item);
[2436] Fix | Delete
}
[2437] Fix | Delete
this._stylesData[id] = api.Helper.cloneObject(item);
[2438] Fix | Delete
}
[2439] Fix | Delete
else if (this.clicked === 'setting' && this.values !== null && this.values[id] !== undefined && this.is_repeat !== true) {
[2440] Fix | Delete
this.settings[id] = this.values[item.id];
[2441] Fix | Delete
if (item.units !== undefined && this.values[id + '_unit'] !== undefined) {
[2442] Fix | Delete
this.settings[id + '_unit'] = this.values[id + '_unit'];
[2443] Fix | Delete
}
[2444] Fix | Delete
}
[2445] Fix | Delete
}
[2446] Fix | Delete
}
[2447] Fix | Delete
if (type !== 'hook_content' && type !== 'slider' && type !== 'builder' && type !== 'tooltip' && type !== 'custom_css_id') {
[2448] Fix | Delete
let fieldCl='tb_field',
[2449] Fix | Delete
fieldData={'data-type':type};
[2450] Fix | Delete
if (item.dc !== undefined && !item.dc) {
[2451] Fix | Delete
fieldCl += ' tb_disable_dc';
[2452] Fix | Delete
}
[2453] Fix | Delete
if (id !== undefined) {
[2454] Fix | Delete
fieldCl += ' ' + id;
[2455] Fix | Delete
}
[2456] Fix | Delete
if (item.wrap_class !== undefined) {
[2457] Fix | Delete
fieldCl += ' ' + item.wrap_class;
[2458] Fix | Delete
}
[2459] Fix | Delete
if (type === 'toggle_switch') {
[2460] Fix | Delete
fieldCl += ' switch-wrapper';
[2461] Fix | Delete
} else if (type === 'slider') {
[2462] Fix | Delete
fieldCl += ' tb_slider_options';
[2463] Fix | Delete
} else if (type === 'message' && item.hideIf !== undefined && new Function('return ' + item.hideIf)) {
[2464] Fix | Delete
fieldCl += ' tb_hide_option';
[2465] Fix | Delete
} else if (item.required !== undefined && this.clicked === 'setting') {// validation rules
[2466] Fix | Delete
fieldData['data-validation'] = item.required.rule || 'not_empty';
[2467] Fix | Delete
let msg = item.required.message;
[2468] Fix | Delete
fieldData['data-error-msg'] = msg !== undefined ? (i18n[msg] || msg) : 'not_empty';
[2469] Fix | Delete
fieldCl += ' tb_must_validate';
[2470] Fix | Delete
}
[2471] Fix | Delete
if (this.clicked === 'styling' && item.is_responsive === false) {
[2472] Fix | Delete
fieldCl += ' tb_responsive_disable';
[2473] Fix | Delete
}
[2474] Fix | Delete
fieldData.class=fieldCl;
[2475] Fix | Delete
let txt = this._getTitle(item),
[2476] Fix | Delete
field = createElement('',fieldData);
[2477] Fix | Delete
if (txt !== false) {
[2478] Fix | Delete
txt = txt.trim();
[2479] Fix | Delete
let label = createElement('','tb_label',txt);
[2480] Fix | Delete
if (txt === '') {
[2481] Fix | Delete
label.className += ' tb_empty_label';
[2482] Fix | Delete
}
[2483] Fix | Delete
if (item.help !== undefined && item.label !== '') {
[2484] Fix | Delete
label.className += ' contains-help';
[2485] Fix | Delete
label.appendChild(this.help(item.help));
[2486] Fix | Delete
}
[2487] Fix | Delete
field.appendChild(label);
[2488] Fix | Delete
if (type !== 'multi') {
[2489] Fix | Delete
let input = createElement('','tb_input');
[2490] Fix | Delete
input.appendChild(res);
[2491] Fix | Delete
field.appendChild(input);
[2492] Fix | Delete
} else {
[2493] Fix | Delete
field.appendChild(res);
[2494] Fix | Delete
}
[2495] Fix | Delete
} else {
[2496] Fix | Delete
field.appendChild(res);
[2497] Fix | Delete
}
[2498] Fix | Delete
content.appendChild(field);
[2499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function