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
/home/sportsfe.../httpdocs/wp-conte.../plugins/themify-.../js/editor/componen...
File: lightbox.mjs
((api, topThemify,topWindowDoc,topWindow,topBody,topBodyCl,_CLICK_,Registry,ThemifyConstructor) => {
[0] Fix | Delete
"use strict";
[1] Fix | Delete
api.LightBox = class {
[2] Fix | Delete
static #storageKey= api.isFrontend? 'themify_builder_lightbox_frontend_pos_size' : 'themify_builder_lightbox_backend_pos_size';
[3] Fix | Delete
static #isStandalone= false;
[4] Fix | Delete
static #size=null;
[5] Fix | Delete
static el= null;
[6] Fix | Delete
static _init() {
[7] Fix | Delete
topBody.appendChild(doc.tfId('tmpl-builder_lightbox').content);
[8] Fix | Delete
this.el = topWindowDoc.tfId('tb_lightbox_parent');
[9] Fix | Delete
this._firstRun();
[10] Fix | Delete
api.Forms._initValidators();
[11] Fix | Delete
}
[12] Fix | Delete
static _firstRun() {
[13] Fix | Delete
Themify.on('tb_opened_lightbox', () => {
[14] Fix | Delete
const _this=this,
[15] Fix | Delete
el=_this.el;
[16] Fix | Delete
el.tfOn('keydown paste copy', e=>{//to prevent copy/paste or undomanager
[17] Fix | Delete
e.stopPropagation();
[18] Fix | Delete
},{passive: true})
[19] Fix | Delete
.tfClass('tb_close_lightbox')[0].tfOn(_CLICK_, () => {
[20] Fix | Delete
_this.close();
[21] Fix | Delete
}, {
[22] Fix | Delete
passive: true
[23] Fix | Delete
});
[24] Fix | Delete
el.tfClass('builder_cancel_docked_mode')[0].tfOn(_CLICK_, e => {
[25] Fix | Delete
e.preventDefault();
[26] Fix | Delete
e.stopPropagation();
[27] Fix | Delete
api.Dock.close(false);
[28] Fix | Delete
_this._updateStorage();
[29] Fix | Delete
api.MainPanel.updateStorage();
[30] Fix | Delete
});
[31] Fix | Delete
if (_this.#isStandalone === false) {
[32] Fix | Delete
_this._updateStorage();
[33] Fix | Delete
_this.setupLightboxSizeClass();
[34] Fix | Delete
}
[35] Fix | Delete
setTimeout(() => {
[36] Fix | Delete
_this._draggable();
[37] Fix | Delete
_this._resize();
[38] Fix | Delete
}, 250);
[39] Fix | Delete
}, true);
[40] Fix | Delete
[41] Fix | Delete
[42] Fix | Delete
if (!themifyBuilder.disableShortcuts) {
[43] Fix | Delete
const shortcutListener = e => {
[44] Fix | Delete
const active = topWindowDoc.activeElement;
[45] Fix | Delete
if (active.tagName !== 'INPUT' && active.tagName !== 'TEXTAREA' && !topWindowDoc.fullscreenElement && !active.isContentEditable) {
[46] Fix | Delete
if ((e.key === 'Escape' || e.code==='Escape')&& (api.activeModel || api.LiteLightBox.isOpen())) {
[47] Fix | Delete
e.preventDefault();
[48] Fix | Delete
e.stopPropagation();
[49] Fix | Delete
if(api.LiteLightBox.isOpen()){
[50] Fix | Delete
api.LiteLightBox.close();
[51] Fix | Delete
}
[52] Fix | Delete
else{
[53] Fix | Delete
this.save().then(() => {
[54] Fix | Delete
this.close();
[55] Fix | Delete
});
[56] Fix | Delete
}
[57] Fix | Delete
}
[58] Fix | Delete
else if ('KeyS' === e.code && (true === e.ctrlKey || true === e.metaKey)) {
[59] Fix | Delete
// Ctrl + s | Cmd + s - Save Builder
[60] Fix | Delete
e.preventDefault();
[61] Fix | Delete
e.stopPropagation();
[62] Fix | Delete
api.LiteLightBox.close();
[63] Fix | Delete
if (api.activeModel) {
[64] Fix | Delete
this.save();
[65] Fix | Delete
} else {
[66] Fix | Delete
api.Builder.get().save();
[67] Fix | Delete
}
[68] Fix | Delete
}
[69] Fix | Delete
}
[70] Fix | Delete
};
[71] Fix | Delete
doc.tfOn('keydown', shortcutListener);
[72] Fix | Delete
if (api.isFrontend) {
[73] Fix | Delete
topWindowDoc.tfOn('keydown', shortcutListener);
[74] Fix | Delete
}
[75] Fix | Delete
}
[76] Fix | Delete
}
[77] Fix | Delete
static open(options, model) {
[78] Fix | Delete
return new Promise(resolve => {
[79] Fix | Delete
const callback = async response => {
[80] Fix | Delete
const el=this.el,
[81] Fix | Delete
lightboxContainer = el.querySelector('#tb_lightbox_container'),
[82] Fix | Delete
action = el.tfClass('tb_lightbox_actions_wrap')[0],
[83] Fix | Delete
save = createElement('button',{class:'builder_button builder_save_button',title:i18n.ctr_save,type:'button'},i18n.done),
[84] Fix | Delete
activeModel=api.activeModel;
[85] Fix | Delete
[86] Fix | Delete
el.classList.add('tf_hide');
[87] Fix | Delete
if(activeModel){
[88] Fix | Delete
el.classList.add('tb_lb_'+activeModel.get('mod_name'));
[89] Fix | Delete
await activeModel.beforeOpenLightbox?.(response);
[90] Fix | Delete
}
[91] Fix | Delete
if (typeof response === 'string') {
[92] Fix | Delete
lightboxContainer.innerHTML = response;
[93] Fix | Delete
} else {
[94] Fix | Delete
lightboxContainer.replaceChildren(response);
[95] Fix | Delete
}
[96] Fix | Delete
action.replaceChildren();
[97] Fix | Delete
if (options.save !== false) {
[98] Fix | Delete
if (activeModel) {
[99] Fix | Delete
if (api.isDocked) {
[100] Fix | Delete
el.classList.add('tb_lightbox_small');
[101] Fix | Delete
}
[102] Fix | Delete
if (api.isVisual) {
[103] Fix | Delete
if (api.GS.activeGS !== null) {
[104] Fix | Delete
api.liveStylingInstance = api.createStyleInstance();
[105] Fix | Delete
api.liveStylingInstance.init(null, true);
[106] Fix | Delete
} else {
[107] Fix | Delete
if (!api.liveStylingInstance) {
[108] Fix | Delete
api.liveStylingInstance = api.createStyleInstance();
[109] Fix | Delete
}
[110] Fix | Delete
api.liveStylingInstance.init();
[111] Fix | Delete
}
[112] Fix | Delete
}
[113] Fix | Delete
const _saveClicked = e => {
[114] Fix | Delete
e.stopImmediatePropagation();
[115] Fix | Delete
this.save().then(() => {
[116] Fix | Delete
if (api.isGSPage !== true) {
[117] Fix | Delete
save.tfOff(e.type, _saveClicked, {passive: true});
[118] Fix | Delete
topSave.tfOff(e.type, _saveClicked, {passive: true});
[119] Fix | Delete
}
[120] Fix | Delete
}).catch(e => {
[121] Fix | Delete
console.log(e);
[122] Fix | Delete
});
[123] Fix | Delete
},
[124] Fix | Delete
topSave = createElement('a',{class:'tb_tooltip',href:'javascript:;'}),
[125] Fix | Delete
li = createElement('li', 'tb_top_save_btn');
[126] Fix | Delete
topSave.append(api.Helper.getIcon('ti-check'), createElement('span','',i18n.done));
[127] Fix | Delete
li.appendChild(topSave);
[128] Fix | Delete
el.tfClass('tb_options_tab')[0].appendChild(li);
[129] Fix | Delete
save.tfOn(_CLICK_, _saveClicked, {passive: true});
[130] Fix | Delete
topSave.tfOn(_CLICK_, _saveClicked, {passive: true});
[131] Fix | Delete
[132] Fix | Delete
api.undoManager.start('saveLightbox', activeModel);
[133] Fix | Delete
api.restoreVals=api.Helper.cloneObject(activeModel.get('mod_settings'));
[134] Fix | Delete
}
[135] Fix | Delete
action.appendChild(save);
[136] Fix | Delete
}
[137] Fix | Delete
if ('html' === options.loadMethod && options.contructor !== true) {
[138] Fix | Delete
const tabs = lightboxContainer.querySelectorAll('.tb_tab_nav a');
[139] Fix | Delete
for (let i = tabs.length - 1; i > -1; --i) {
[140] Fix | Delete
tabs[i].tfOn(_CLICK_, ThemifyConstructor.switchTabs);
[141] Fix | Delete
}
[142] Fix | Delete
}
[143] Fix | Delete
await activeModel?.openLightbox?.(lightboxContainer);
[144] Fix | Delete
el.classList.remove('tf_hide');
[145] Fix | Delete
lightboxContainer.style.scrollBehavior = 'auto';
[146] Fix | Delete
lightboxContainer.scrollTop = 0;
[147] Fix | Delete
lightboxContainer.style.scrollBehavior = '';
[148] Fix | Delete
this._responsiveTabs();
[149] Fix | Delete
Themify.trigger('tb_opened_lightbox');
[150] Fix | Delete
api.Spinner.showLoader('spinhide');
[151] Fix | Delete
api.SmallPanel.hide();
[152] Fix | Delete
el.focus();
[153] Fix | Delete
resolve(el);
[154] Fix | Delete
};
[155] Fix | Delete
[156] Fix | Delete
this.close();
[157] Fix | Delete
if (model) {
[158] Fix | Delete
api.activeModel = model;
[159] Fix | Delete
}
[160] Fix | Delete
try {
[161] Fix | Delete
api.ActionBar.clearClicked();
[162] Fix | Delete
if (options.loadMethod === 'html') {
[163] Fix | Delete
if (options.contructor === true) {
[164] Fix | Delete
callback(ThemifyConstructor.run(options.data));
[165] Fix | Delete
} else {
[166] Fix | Delete
callback(options.data);
[167] Fix | Delete
}
[168] Fix | Delete
} else {
[169] Fix | Delete
callback(ThemifyConstructor.run(options));
[170] Fix | Delete
}
[171] Fix | Delete
} catch (e) {
[172] Fix | Delete
console.log(e);
[173] Fix | Delete
}
[174] Fix | Delete
});
[175] Fix | Delete
}
[176] Fix | Delete
static close() {
[177] Fix | Delete
const el=this.el,
[178] Fix | Delete
model=api.activeModel;
[179] Fix | Delete
if (!el.classList.contains('tf_hide') && api.isGSPage !== true) {
[180] Fix | Delete
Themify.trigger('themify_builder_lightbox_before_close', el);
[181] Fix | Delete
el.classList.add('tf_hide');
[182] Fix | Delete
[183] Fix | Delete
this._cleanLightBoxContent();
[184] Fix | Delete
api.undoManager.enable();
[185] Fix | Delete
api.Utils.removeViewPortClass(el);
[186] Fix | Delete
Themify.trigger('themify_builder_lightbox_close', el);
[187] Fix | Delete
if (api.isVisual) {
[188] Fix | Delete
// Trigger parent iframe
[189] Fix | Delete
topThemify.trigger('themify_builder_lightbox_close', el);
[190] Fix | Delete
}
[191] Fix | Delete
if (model !== null) {
[192] Fix | Delete
el.classList.remove('tb_lb_'+model.get('mod_name'));
[193] Fix | Delete
if (api.isVisual) {
[194] Fix | Delete
api.liveStylingInstance.clear();
[195] Fix | Delete
}
[196] Fix | Delete
if (model.is_new === true) {
[197] Fix | Delete
model.destroy();
[198] Fix | Delete
}
[199] Fix | Delete
else if (!model.is_saved && api.undoManager.has('saveLightbox')) {
[200] Fix | Delete
model.restore();
[201] Fix | Delete
}
[202] Fix | Delete
if (!model.is_saved) {
[203] Fix | Delete
api.undoManager.clear('saveLightbox');
[204] Fix | Delete
}
[205] Fix | Delete
model.close?.();
[206] Fix | Delete
model.el?.classList.remove('tb_current_module','tb_outline_anim');
[207] Fix | Delete
api.activeModel = api.restoreVals=null;
[208] Fix | Delete
}
[209] Fix | Delete
}
[210] Fix | Delete
return this;
[211] Fix | Delete
}
[212] Fix | Delete
static setStandAlone(left, top) {
[213] Fix | Delete
Themify.on('tb_opened_lightbox', () => {
[214] Fix | Delete
const _this=this,
[215] Fix | Delete
st=_this.el.style;
[216] Fix | Delete
_this.#isStandalone = true;
[217] Fix | Delete
topBodyCl.add('tb_standalone_lightbox');
[218] Fix | Delete
st.width = st.height = '';
[219] Fix | Delete
const box = api.ToolBar.el.getBoundingClientRect(),
[220] Fix | Delete
computed = getComputedStyle(_this.el),
[221] Fix | Delete
w = parseInt(computed.width),
[222] Fix | Delete
h = parseInt(computed.height),
[223] Fix | Delete
topW = topWindow.innerWidth - 10,
[224] Fix | Delete
topH = topWindow.innerHeight + 10;
[225] Fix | Delete
if (top < box.bottom) {
[226] Fix | Delete
top = box.bottom;
[227] Fix | Delete
} else if ((top + h) > topH) {
[228] Fix | Delete
top=topH- h;
[229] Fix | Delete
}
[230] Fix | Delete
if (left < 0) {
[231] Fix | Delete
left = 0;
[232] Fix | Delete
} else if ((left + w) > topW) {
[233] Fix | Delete
left=topW-w;
[234] Fix | Delete
}
[235] Fix | Delete
st.transform = 'translate(' + left + 'px,' + top + 'px)';
[236] Fix | Delete
st.width = w + 'px';
[237] Fix | Delete
st.height = h + 'px';
[238] Fix | Delete
_this.setupLightboxSizeClass(w);
[239] Fix | Delete
Themify.on('themify_builder_lightbox_close', lb => {
[240] Fix | Delete
topBodyCl.remove('tb_standalone_lightbox');
[241] Fix | Delete
lb.style.transform = lb.style.width = lb.style.height = '';
[242] Fix | Delete
_this.#isStandalone = false;
[243] Fix | Delete
_this._updateStorage();
[244] Fix | Delete
_this.setupLightboxSizeClass(_this._getStorage().w);
[245] Fix | Delete
}, true);
[246] Fix | Delete
}, true);
[247] Fix | Delete
return this;
[248] Fix | Delete
}
[249] Fix | Delete
static _cleanLightBoxContent() {
[250] Fix | Delete
const items = this.el.querySelectorAll('#tb_lightbox_container,.tb_options_tab,.tb_lightbox_actions_wrap,.tb_action_breadcrumb');
[251] Fix | Delete
for (let i = items.length - 1; i > -1; --i) {
[252] Fix | Delete
items[i].replaceChildren();
[253] Fix | Delete
}
[254] Fix | Delete
return this;
[255] Fix | Delete
}
[256] Fix | Delete
static async save() {
[257] Fix | Delete
const model = api.activeModel;
[258] Fix | Delete
if (!this.el.classList.contains('tf_hide')) {
[259] Fix | Delete
if (model !== null) {
[260] Fix | Delete
if (api.isGSPage !== true && !api.Forms.isValidate(this.el.querySelector('#tb_options_setting'))) {
[261] Fix | Delete
throw 'invalid';
[262] Fix | Delete
}
[263] Fix | Delete
ThemifyConstructor.setStylingValues(api.activeBreakPoint);//save current breakpoint style tab
[264] Fix | Delete
let oldSettings = model.get('mod_settings'),
[265] Fix | Delete
settings = {...api.Helper.cloneObject(ThemifyConstructor.values),...api.Forms.serialize('tb_options_setting', true)};
[266] Fix | Delete
if (model.type !== 'column') {
[267] Fix | Delete
settings={...settings,...api.Forms.serialize('tb_options_animation', true),...api.Forms.serialize('tb_options_visibility', true)};
[268] Fix | Delete
if (api.isVisual) {
[269] Fix | Delete
model.el.classList.toggle('tb_visibility_hidden', settings.visibility_all === 'hide_all' || settings.visibility_desktop === 'hide' || settings.visibility_tablet === 'hide' || settings.visibility_tablet_landscape === 'hide' || settings.visibility_mobile === 'hide');
[270] Fix | Delete
}
[271] Fix | Delete
if (model.type === 'module') {
[272] Fix | Delete
api.Builder.get().removeLayoutButton();
[273] Fix | Delete
}
[274] Fix | Delete
}
[275] Fix | Delete
if (api.ActionBar?.id === model.id) {
[276] Fix | Delete
api.ActionBar.clear();
[277] Fix | Delete
}
[278] Fix | Delete
[279] Fix | Delete
//check diff
[280] Fix | Delete
api.Base.builderSave(settings, 'empty');
[281] Fix | Delete
api.Base.builderSave(oldSettings, 'empty');
[282] Fix | Delete
if(model.saveLightbox){
[283] Fix | Delete
await model.saveLightbox(settings, oldSettings );
[284] Fix | Delete
}
[285] Fix | Delete
[286] Fix | Delete
const hasChange = api.Helper.compareObject(oldSettings, settings);
[287] Fix | Delete
if (hasChange === true) {
[288] Fix | Delete
await Themify.trigger('themify_builder_save_component', [settings, oldSettings]);
[289] Fix | Delete
[290] Fix | Delete
if (api.isVisual) {
[291] Fix | Delete
// Trigger parent iframe
[292] Fix | Delete
await topThemify.trigger('themify_builder_save_component', [settings, oldSettings]);
[293] Fix | Delete
}
[294] Fix | Delete
model.set('mod_settings', settings);
[295] Fix | Delete
}
[296] Fix | Delete
model.is_new = false;
[297] Fix | Delete
model.is_saved = true;
[298] Fix | Delete
this.close();
[299] Fix | Delete
if (api.isGSPage !== true && hasChange === true) {
[300] Fix | Delete
api.undoManager.end('saveLightbox');
[301] Fix | Delete
}
[302] Fix | Delete
else {
[303] Fix | Delete
api.undoManager.clear('saveLightbox');
[304] Fix | Delete
}
[305] Fix | Delete
model.is_new=model.is_saved=null;
[306] Fix | Delete
}
[307] Fix | Delete
else if (topBodyCl.contains('tb_standalone_lightbox')) {
[308] Fix | Delete
await Themify.trigger('tb_save_lb');
[309] Fix | Delete
}
[310] Fix | Delete
if (api.isGSPage === true) {
[311] Fix | Delete
await TF_Notification.showHide('done', themifyBuilder.globalStyleData.save_text, 2000);
[312] Fix | Delete
}
[313] Fix | Delete
}
[314] Fix | Delete
}
[315] Fix | Delete
static _resize() {
[316] Fix | Delete
const self = this,
[317] Fix | Delete
resizeHandler = self.el.tfClass('tb_resizable');
[318] Fix | Delete
[319] Fix | Delete
for (let i = resizeHandler.length - 1; i > -1; --i) {
[320] Fix | Delete
resizeHandler[i].tfOn('pointerdown', function (e) {
[321] Fix | Delete
if (e.button === 0) {
[322] Fix | Delete
e.stopImmediatePropagation();
[323] Fix | Delete
let owner = this.ownerDocument,
[324] Fix | Delete
el = self.el,
[325] Fix | Delete
timer;
[326] Fix | Delete
el.style.willChange = 'transform,width,height';
[327] Fix | Delete
const minWidth = 350,
[328] Fix | Delete
maxWidth = 880,
[329] Fix | Delete
maxHeight = owner.documentElement.clientHeight * .9,
[330] Fix | Delete
minHeight = parseInt(getComputedStyle(el).getPropertyValue('min-height')),
[331] Fix | Delete
axis = this.dataset.axis,
[332] Fix | Delete
startH = ~~el.offsetHeight,
[333] Fix | Delete
startW = ~~el.offsetWidth,
[334] Fix | Delete
{clientX:resizeX,clientY:resizeY} = e,
[335] Fix | Delete
_start = () => {
[336] Fix | Delete
owner.body.classList.add('tb_start_animate');
[337] Fix | Delete
},
[338] Fix | Delete
_resize = e => {
[339] Fix | Delete
e.stopImmediatePropagation();
[340] Fix | Delete
timer = requestAnimationFrame(() => {
[341] Fix | Delete
let w;
[342] Fix | Delete
const {clientX,clientY} = e,
[343] Fix | Delete
matrix = new DOMMatrix(getComputedStyle(el).transform);
[344] Fix | Delete
if (axis === 'w') {
[345] Fix | Delete
w = resizeX + startW - clientX;
[346] Fix | Delete
if (w > maxWidth) {
[347] Fix | Delete
w = maxWidth;
[348] Fix | Delete
}
[349] Fix | Delete
if (w >= minWidth && w <= maxWidth) {
[350] Fix | Delete
matrix.m41 += parseInt(el.style.width) - w;
[351] Fix | Delete
el.style.width = w + 'px';
[352] Fix | Delete
self.setupLightboxSizeClass(w);
[353] Fix | Delete
}
[354] Fix | Delete
} else {
[355] Fix | Delete
const h = axis === '-y' || axis === 'ne' || axis === 'nw' ? (resizeY + startH - clientY) : (startH + clientY - resizeY);
[356] Fix | Delete
w = axis === 'sw' || axis === 'nw' ? (resizeX + startW - clientX) : (startW + clientX - resizeX);
[357] Fix | Delete
if (w > maxWidth) {
[358] Fix | Delete
w = maxWidth;
[359] Fix | Delete
}
[360] Fix | Delete
if ((axis === 'se' || axis === 'x' || axis === 'sw' || axis === 'nw' || axis === 'ne') && w >= minWidth && w <= maxWidth) {
[361] Fix | Delete
if (axis === 'sw' || axis === 'nw') {
[362] Fix | Delete
matrix.m41 += parseInt(el.style.width) - w;
[363] Fix | Delete
}
[364] Fix | Delete
el.style.width = w + 'px';
[365] Fix | Delete
self.setupLightboxSizeClass(w);
[366] Fix | Delete
}
[367] Fix | Delete
if ((axis === 'se' || axis === 'y' || axis === '-y' || axis === 'sw' || axis === 'nw' || axis === 'ne') && h >= minHeight && h <= maxHeight) {
[368] Fix | Delete
if (axis === '-y' || axis === 'nw' || axis === 'ne') {
[369] Fix | Delete
matrix.m42 += parseInt(el.style.height) - h;
[370] Fix | Delete
}
[371] Fix | Delete
el.style.height = h + 'px';
[372] Fix | Delete
}
[373] Fix | Delete
}
[374] Fix | Delete
el.style.transform = 'translate(' + matrix.m41 + 'px,' + matrix.m42 + 'px)';
[375] Fix | Delete
[376] Fix | Delete
Themify.trigger('tb_resize_lightbox');
[377] Fix | Delete
});
[378] Fix | Delete
},
[379] Fix | Delete
_stop = function (e) {
[380] Fix | Delete
e.stopImmediatePropagation();
[381] Fix | Delete
cancelAnimationFrame(timer);
[382] Fix | Delete
this.tfOff('pointermove', _start, {passive: true, once: true})
[383] Fix | Delete
.tfOff('pointermove', _resize, {passive: true})
[384] Fix | Delete
.tfOff('lostpointercapture pointerup', _stop, {passive: true, once: true});
[385] Fix | Delete
el.style.willChange = '';
[386] Fix | Delete
self._updateStorage();
[387] Fix | Delete
owner.body.classList.remove('tb_start_animate');
[388] Fix | Delete
owner = el = timer = null;
[389] Fix | Delete
};
[390] Fix | Delete
this.tfOn('lostpointercapture pointerup', _stop, {
[391] Fix | Delete
passive: true,
[392] Fix | Delete
once: true
[393] Fix | Delete
})
[394] Fix | Delete
.tfOn('pointermove', _start, {
[395] Fix | Delete
passive: true,
[396] Fix | Delete
once: true
[397] Fix | Delete
})
[398] Fix | Delete
.tfOn('pointermove', _resize, {
[399] Fix | Delete
passive: true
[400] Fix | Delete
})
[401] Fix | Delete
.setPointerCapture(e.pointerId);
[402] Fix | Delete
}
[403] Fix | Delete
[404] Fix | Delete
}, {
[405] Fix | Delete
passive: true
[406] Fix | Delete
});
[407] Fix | Delete
}
[408] Fix | Delete
}
[409] Fix | Delete
static _draggable() {
[410] Fix | Delete
const self = this,
[411] Fix | Delete
dragHandler = self.el.querySelectorAll('.tb_lightbox_top_bar,.tb_action_breadcrumb');
[412] Fix | Delete
for (let i = dragHandler.length - 1; i > -1; --i) {
[413] Fix | Delete
dragHandler[i].tfOn('pointerdown', function (e) {
[414] Fix | Delete
if (e.button === 0) {
[415] Fix | Delete
const targetCl = e.target.classList;
[416] Fix | Delete
if (!targetCl.contains('tb_lightbox_top_bar') && !targetCl.contains('tb_action_breadcrumb')) {
[417] Fix | Delete
return;
[418] Fix | Delete
}
[419] Fix | Delete
e.stopImmediatePropagation();
[420] Fix | Delete
let timer,
[421] Fix | Delete
el = self.el,
[422] Fix | Delete
owner = this.ownerDocument,
[423] Fix | Delete
box = el.getBoundingClientRect(),
[424] Fix | Delete
dragX = box.left - e.clientX,
[425] Fix | Delete
dragY = box.top - e.clientY,
[426] Fix | Delete
width = box.width,
[427] Fix | Delete
//topW=topWindow.innerWidth - 10,
[428] Fix | Delete
draggableCallback = e => {
[429] Fix | Delete
e.stopImmediatePropagation();
[430] Fix | Delete
timer = requestAnimationFrame(() => {
[431] Fix | Delete
if(el!==null){
[432] Fix | Delete
let clientX = dragX + e.clientX,
[433] Fix | Delete
clientY = dragY + e.clientY;
[434] Fix | Delete
if(clientY<0){
[435] Fix | Delete
clientY=0;
[436] Fix | Delete
}
[437] Fix | Delete
/*
[438] Fix | Delete
if(clientX<0){
[439] Fix | Delete
clientX=0;
[440] Fix | Delete
}
[441] Fix | Delete
else if((clientX+width)>topW){
[442] Fix | Delete
clientX=topW-width;
[443] Fix | Delete
}*/
[444] Fix | Delete
el.style.transform = 'translate(' + clientX + 'px,' + clientY + 'px)';
[445] Fix | Delete
Themify.trigger('tb_panel_drag', [clientX, width]);
[446] Fix | Delete
}
[447] Fix | Delete
});
[448] Fix | Delete
},
[449] Fix | Delete
startDrag = e => {
[450] Fix | Delete
e.stopImmediatePropagation();
[451] Fix | Delete
owner.body.classList.add('tb_start_animate', 'tb_drag_lightbox');
[452] Fix | Delete
api.ToolBar.el.classList.add('tb_start_animate', 'tb_drag_lightbox');
[453] Fix | Delete
api.MainPanel.el.classList.add('tb_start_animate', 'tb_drag_lightbox');
[454] Fix | Delete
Themify.trigger('tb_panel_drag_start');
[455] Fix | Delete
if (self.#isStandalone === false) {
[456] Fix | Delete
self.setupLightboxSizeClass();
[457] Fix | Delete
}
[458] Fix | Delete
},
[459] Fix | Delete
up = function (e) {
[460] Fix | Delete
e.stopImmediatePropagation();
[461] Fix | Delete
cancelAnimationFrame(timer);
[462] Fix | Delete
this.tfOff('pointermove', startDrag, {passive: true, once: true})
[463] Fix | Delete
.tfOff('pointermove', draggableCallback, {passive: true})
[464] Fix | Delete
.tfOff('lostpointercapture pointerup', up, {passive: true, once: true});
[465] Fix | Delete
el.style.willChange = '';
[466] Fix | Delete
Themify.trigger('tb_panel_drag_end');
[467] Fix | Delete
if (self.#isStandalone === false) {
[468] Fix | Delete
self._updateStorage();
[469] Fix | Delete
self.setupLightboxSizeClass();
[470] Fix | Delete
}
[471] Fix | Delete
owner.body.classList.remove('tb_start_animate', 'tb_drag_lightbox');
[472] Fix | Delete
api.ToolBar.el.classList.remove('tb_start_animate', 'tb_drag_lightbox');
[473] Fix | Delete
api.MainPanel.el.classList.remove('tb_start_animate', 'tb_drag_lightbox');
[474] Fix | Delete
timer = el = owner = dragX=width=dragY=null;
[475] Fix | Delete
};
[476] Fix | Delete
el.style.willChange = 'transform';
[477] Fix | Delete
this.tfOn('lostpointercapture pointerup', up, {passive: true, once: true})
[478] Fix | Delete
.tfOn('pointermove', startDrag, {passive: true, once: true})
[479] Fix | Delete
.tfOn('pointermove', draggableCallback, {passive: true})
[480] Fix | Delete
.setPointerCapture(e.pointerId);
[481] Fix | Delete
}
[482] Fix | Delete
}, {
[483] Fix | Delete
passive: true
[484] Fix | Delete
});
[485] Fix | Delete
}
[486] Fix | Delete
}
[487] Fix | Delete
static _responsiveTabs() {
[488] Fix | Delete
let ul = null,
[489] Fix | Delete
tabsWidth = 0,
[490] Fix | Delete
label = null,
[491] Fix | Delete
callback = () => {
[492] Fix | Delete
const finsih = () => {
[493] Fix | Delete
if (ul === null) {
[494] Fix | Delete
ul = this.el.querySelector('.tb_styling_tab_nav ul');
[495] Fix | Delete
if (ul !== null) {
[496] Fix | Delete
const li = ul.lastElementChild;
[497] Fix | Delete
tabsWidth = li.offsetLeft + li.offsetWidth;
[498] Fix | Delete
}
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function