1let pageYOld = window.pageYOffset; 2let currentSelectors = old_selector = currentProp = null, isSliding = [], 3 is_outer = is_popup_vis = is_menu_color = is_menu_hover = is_compact_menu = is_for_menu = is_footer_inner = 0, 4 stylesMap, removingMap, 5 edit_enable = [0, 0], icon_top = [1, 1], width_fixed = [0, 0], 6 light_koef = 0.3, bright_koef = 0.7, ton_koef = 0, alpha_koef = 1, borders, is_shadow_checked = [null, null], 7 style_id = 0, saved_style = '', saved_style_arr, saved_settings = null, is_setting_changed = 0, 8 sliderWidth = 1, sliderHeight = 1, currentColorHex = '#000', currentColorRGB = 'rgb(0,0,0)', pointer, offsetX = 0, 9 offsetY = 0, startClientY = 0, isEditable, isWidthFixed, isIconTop, toggle_vars; 10const rgba2hex = (rgba) => `#${rgba.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)$/).slice(1).map((n, i) => (i === 3 ? Math.round(parseFloat(n) * 255) : parseFloat(n)).toString(16).padStart(2, '0').replace('NaN', '')).join('')}` 11const border_width = ['border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width']; 12const toggle_ids = ['editEnable', 'fixedWidth', 'iconPosition'], toggle_ars = [edit_enable, width_fixed, icon_top]; //isBodyEditable or another? 13//ajax_fields = ['enabled', 'fixed', 'icontop'], field_keys = ['e', 'f', 'i']; 14//let palette2 = document.querySelector('div.colorpicker__shadow'); 15//console.log('palette', palette, palette2); 16let baseSelectors = null; 17/*$( ".has_setting" ).append( '<div style="padding-left:27%;width:140px; height: 40px; position: relative;">\n' + 18 ' <button data-v-2b7be7e0="" onclick="showBlockSettings(1);" style="border-radius: 15px;width: 140px; height: 40px; background-color: #eee;border: none;position: absolute; top:-50px;"><svg data-v-3075733c="" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" aria-labelledby="cog-small" role="presentation" data-v-2b7be7e0=""><title data-v-3075733c="" id="cog-small" lang="en"></title><g data-v-3075733c="" fill="currentColor"><path data-v-3075733c="" d="M10.101 4L9.701 6.019C9.03957 6.26234 8.42191 6.61119 7.872 7.052L5.899 6.382L4 9.618L5.579 10.967C5.52 11.3082 5.48923 11.6537 5.487 12C5.487 12.353 5.523 12.697 5.579 13.034L4 14.383L5.899 17.617L7.872 16.948C8.42173 17.3891 9.03943 17.7379 9.701 17.981L10.1 20H13.9L14.3 17.981C14.9614 17.7377 15.5791 17.3888 16.129 16.948L18.102 17.618L20 14.382L18.421 13.033C18.48 12.6918 18.5108 12.3463 18.513 12C18.5108 11.6534 18.4801 11.3075 18.421 10.966L20 9.617L18.101 6.383L16.128 7.052C15.5781 6.61119 14.9604 6.26234 14.299 6.019L13.9 4H10.1H10.101ZM12 8.8C13.798 8.8 15.257 10.233 15.257 12C15.257 13.767 13.798 15.2 12 15.2C10.201 15.2 8.743 13.767 8.743 12C8.743 10.233 10.201 8.8 12 8.8Z" fill-rule="evenodd" clip-rule="evenodd"></path></g></svg> Settings_ </button>\n' + 19 ' </div>' );*/ 20let reloadParentAfterSave = 0; 21const TEXT_STYLED_PROPS = [ 22 'color','font-weight','font-style','text-decoration','text-transform', 23 'font-family','font-size','line-height','letter-spacing' 24]; 25let saved_text_style = ''; 26let saved_text_style_arr = null; 27let is_for_text = 0; 28function reloadParentPage() { 29 try { 30 if (window.parent && window.parent !== window) { 31 window.parent.location.reload(); 32 } else { 33 window.location.reload(); 34 } 35 } catch (e) { 36 window.location.reload(); 37 } 38} 39//let setting_button = `<button data-v-2b7be7e0="" class="setting_editor disp_none" selector="body"><svg style="padding-top:1px;" data-v-3075733c="" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" aria-labelledby="cog-small" role="presentation" data-v-2b7be7e0=""><title data-v-3075733c="" id="cog-small" lang="en"></title><g data-v-3075733c="" fill="currentColor"><path data-v-3075733c="" d="M10.101 4L9.701 6.019C9.03957 6.26234 8.42191 6.61119 7.872 7.052L5.899 6.382L4 9.618L5.579 10.967C5.52 11.3082 5.48923 11.6537 5.487 12C5.487 12.353 5.523 12.697 5.579 13.034L4 14.383L5.899 17.617L7.872 16.948C8.42173 17.3891 9.03943 17.7379 9.701 17.981L10.1 20H13.9L14.3 17.981C14.9614 17.7377 15.5791 17.3888 16.129 16.948L18.102 17.618L20 14.382L18.421 13.033C18.48 12.6918 18.5108 12.3463 18.513 12C18.5108 11.6534 18.4801 11.3075 18.421 10.966L20 9.617L18.101 6.383L16.128 7.052C15.5781 6.61119 14.9604 6.26234 14.299 6.019L13.9 4H10.1H10.101ZM12 8.8C13.798 8.8 15.257 10.233 15.257 12C15.257 13.767 13.798 15.2 12 15.2C10.201 15.2 8.743 13.767 8.743 12C8.743 10.233 10.201 8.8 12 8.8Z" fill-rule="evenodd" clip-rule="evenodd"></path></g></svg>{*setting_name*}</button>`; 40//$('.head_menu').addClass('left-icon'); 41//console.log($('.head_menu')); 42if ((typeof is_partner !== 'undefined') && is_partner) { 43 //isBodyEditable = ((typeof is_body_editable !== 'undefined') && is_body_editable); 44 //isIconTop = ((typeof is_icon_top !== 'undefined') && is_icon_top); 45 //isWidthFixed = ((typeof is_width_fixed !== 'undefined') && is_width_fixed), //unite 46 // setting_buttons = [], setting_containers = ((isEditable || isBodyEditable) ? document.querySelectorAll((isEditable ? '' : 'body > ') + '.setting_container') : []); 47 //toggle_vars = [isEditable, isWidthFixed, isIconTop]; 48 toggle_vars = [isEditable = ((typeof is_editable !== 'undefined') && is_editable), 0, 1]; 49 if (isEditable) document.body.classList.add('mp-interface-edit'); 50 let setting_names = [L_section, L_block, L_heading, L_setting, L_block], 51 tooltip_names = [L_section_settings, L_block_settings, L_heading_settings, L_setting_2, L_block_settings], 52 setting_containers = [], setting_buttons = [], //partner_section 53 /* setting_selectors = [['.section_n > .setting_container', 54 '.main_page-phone_number > .setting_container, body > .head-block .setting_container', '', 'body > .setting_container' 55 // ], ['', '.partner_section .row > div', 56 // '.partner_section h1, .partner_section h2, .partner_section h3, .partner_section h4, .partner_section h5, .partner_section h6', '' 57 // 'h1, h2, h3, h4, h5, h6' 58 //], ['', '.partner_section .row > div', '' 59 ], ['h1, h2, h3, h4, h5, h6', '.partner_section .row > div' 60 ]];*/ 61 setting_selectors = ['.row.sectionEdit > .setting_container', 62 '.section_n > .setting_container', '', 'body > .setting_container', '.main_page-phone_number > .setting_container, body > .head-block .setting_container , .main-menu-list.left-menu > .setting_container ,.nav-tab-item > .setting_container ,.nav-tab-item label > .setting_container, #tab-content > .setting_container , .default-tab-content > .setting_container , .right-menu-main [data-menu-id] > .setting_container ,.left-menu-main [data-menu-id] > .setting_container, .itemcategory .setting_container' 63 ]; 64 /*for (let i = 0, total_sel = '', selector = ':not(.row) h'; i < 3; i+=2, selector = '.row h', total_sel = ''){ 65 for (let j = 1; j < 7; j++){ 66 total_sel += selector + j + ', '; 67 } 68 setting_selectors[1][i] = total_sel.slice(0, -2); 69 } 70 for(let a of Array.from($('.section_n '+setting_selectors[1][0]))){ 71 //console.log('a is' ,a); 72 //a.style.color = 'pink'; 73 }*/ 74 //let headingSelectors = 'h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child'; 75 let headingSelectors = 'h1.title, h2.title, h3.title, h4.title, h5.title, h6.title,h1.title-edit, h2.title-edit, h3.title-edit, h4.title-edit, h5.title-edit'; 76 for (let i = (isEditable ? 0 : 3), f = (isEditable ? 5 : 4), selector = section = section_name = targets = ''; i < f; i++) { 77 if (selector = setting_selectors[i]) { 78 setting_containers = Array.from(document.querySelectorAll(selector)); //document.querySelectorAll('.main_page-phone_number > .setting_container, body > .head-block > div > .setting_container'); //inner 79
80 for (let container of setting_containers) { 81 processSectionItem(container, i, 0); 82 83 if (i == 1) {//or i < 2 84 85 console.log("container", container); 86 section = container.parentElement; 87 section_name = section.classList.item(section.classList.length - 1); 88 89 // ÐÐ°Ñ Ð¾Ð´Ð¸Ð¼ вÑе заголовки и обÑабаÑÑваем каждÑй 90 const headings = section.querySelectorAll(headingSelectors); 91 headings.forEach(heading => { 92 processSectionItem(heading, 2, '.' + section_name); 93 }); 94 95 96 // console.log("container",container); 97 // processSectionItem((section = container.parentElement).querySelector(headingSelectors), 2, '.' + (section_name = section.classList.item(section.classList.length - 1))); 98 99 //console.log('section.classList[-1]', section.classList,section_name); 100 /*for(let k = 0, row, rows = section.querySelectorAll('.row.sectionEdit'); k < rows.length; k++){ 101 processSectionItem(row = rows[k], 0, col_selector = `.${section_name} .container-fluid > div:nth-child(${k+1})`); 102 for(let m = 0, col, col_selector, row = rows[k], cols = row.children; m < cols.length - 1; m++) { 103 processSectionItem(col = cols[m], 1, col_selector = `.${section_name} .container-fluid > div:nth-child(${k+1}) > div:nth-child(${m+1})`); 104 processSectionItem(col.querySelector(headingSelectors), 2, col_selector); 105 } 106 } 107 // console.log('section is', section, container); 108 //console.log('setting_selectors[1]', Array.from($('.section_n '+setting_selectors[1][0]))); 109 */ 110 } 111 } 112 } 113 } 114 //if (typeof is_editable !== 'undefined') { 115//if(is_editable){ 116 //shows the popup window for block settings 117 //let setting_buttons = document.querySelectorAll('.setting_editor[selector]'); 118 //console.log('setting_buttons', setting_buttons); 119 let body_button = $('button.setting_editor[selector="body.partner"]'); 120 for (let button of setting_buttons) { 121 122 //console.log(`button.getAttribute(selector)`, button.getAttribute('selector')); 123 // console.log('button is 0', button); //body .section1 124 const selector = button.getAttribute('selector'); 125 126 //'body > div.wrapper > section:nth-of-type(2)' : selector_tmp); 127 //const selector = ((((selector_tmp = button.getAttribute('selector')) == 'body .section1') && is_landing) ? 'body > div.wrapper > section:nth-of-type(2)' : selector_tmp); 128 if (!selector || (is_landing && !selector.includes('wrapper'))) { 129 130 continue; 131 } 132 button.addEventListener("mouseover", () => { 133 for (let otherButton of setting_buttons) { 134 if (otherButton !== button) { 135 if (otherButton.classList.contains('zoom-in-animation')) { 136 otherButton.classList.remove('zoom-in-animation'); 137 otherButton.classList.add('zoom-open'); 138 otherButton.classList.add('zoom-out-animation'); 139 } 140 } 141 } 142 }); 143 button.addEventListener("mouseout", () => { 144 for (let otherButton of setting_buttons) { 145 if (otherButton !== button) { 146 if (otherButton.classList.contains('zoom-open')) { 147 otherButton.classList.remove('zoom-out-animation'); 148 otherButton.classList.remove('zoom-open'); 149 otherButton.classList.add('zoom-in-animation'); 150 } 151 } 152 } 153 }); 154 // console.log('button is 1', button); 155 button.addEventListener("click", () => { 156 // console.log('button is 2', button); 157 showBlockSettings(0, selector); 158 }); 159 let selector_first = (selector.includes(';') ? selector.slice(0, selector.indexOf(';')) : selector); 160 161 //console.log(`selector_first`, selector_first, $(selector_first), $('.section2583 .container-fluid > div:nth-child(2) > div:nth-child(2)')); 162 /*if(selector_first == 'body'){ 163 selector_first = 'body > div.main-content'; 164 }*/ 165 166 //let disp_class = (selector_first == 'body' ? ) 167 $(selector_first).on("mouseenter", () => { 168//alert(selector_first); 169 button.classList.remove('zoom-out-animation'); 170 // button.classList.remove('disp_none'); 171 button.classList.add('zoom-in-animation'); 172 if (selector_first != 'body.partner') { 173 body_button.addClass('body_disp_none'); 174 } 175 }); 176 $(selector_first).on("mouseleave", () => { 177 button.classList.add('zoom-out-animation'); 178 // button.classList.add('disp_none'); 179 button.classList.remove('zoom-in-animation'); 180 //console.log('selector_first 108',selector_first, $(selector_first)); 181 if (selector_first != 'body.partner') { 182 body_button.removeClass('body_disp_none'); 183 } 184 }); 185 } 186 /*for(let a of document.querySelectorAll('*[data-tooltip]')){ 187 console.log('a is ', a) 188 }*/ 189 let showing = false;
190 //console.log('a.mp_edit', document.querySelectorAll('a.mp_edit')); 191 /*if(isEditable){ 192 $('a.mp_edit:has( > .fa-plus)').attr('data-tooltip', L_add_section); 193 setTimeout(()=>{$('a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit);}, 2000); 194 } else { 195 setTimeout(()=>{$('a.mp_edit:has( > .fa-pencil), a.mp_edit:has( > .fa-plus)').remove(); 196 $('div.sectionAdminWrap').addClass("hidden_vis");}, 2000); 197 }*/ 198 199 200 // Ðакие ÑвойÑÑва показÑваем в styled (можеÑÑ ÑаÑÑиÑиÑÑ ÑпиÑок пÑи желании) 201 const STYLED_PROPS = [ 202 'color', 'font-weight', 'font-style', 'text-decoration', 'text-transform', 203 'font-family', 'font-size', 'line-height', 'letter-spacing' 204 ]; 205 function getMenuLinkSelector(selector_first) { 206 return `${selector_first} a`; 207 } 208 function stripA(sel) { 209 return (sel || '').trim().replace(/\s+a\s*$/i, '').trim(); 210 } 211 function rgbAllToHex(cssText) { 212 return cssText.replace(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)/g, (m)=>rgba2hex(m)); 213 } 214 215 function buildLinkStyleString(selector_first, css_advanced_sheet) { 216 const linkSel = getMenuLinkSelector(selector_first); 217 console.log("linkSel",linkSel); 218 const props = {}; 219 220 console.log("test19"); 221 222 if (css_advanced_sheet) { 223 for (const rule of (css_advanced_sheet.cssRules || css_advanced_sheet.rules)) { 224 console.log("test191"); 225 if (!rule.selectorText) continue; 226 if (rule.selectorText.trim() === linkSel) { 227 console.log("test192"); 228 for (const p of STYLED_PROPS) { 229 const v = rule.style.getPropertyValue(p); 230 console.log(v); 231 if (v) props[p] = v.trim(); 232 } 233 } 234 } 235 } 236 const $firstLink = $(linkSel).not('.mp_edit, .url-r').first(); 237 if ($firstLink.length) { 238 const comp = getComputedStyle($firstLink[0]); 239 for (const p of STYLED_PROPS) { 240 if (!props[p]) { 241 const v = comp.getPropertyValue(p); 242 if (v) props[p] = v.trim(); 243 } 244 } 245 } 246 let out = ''; 247 for (const p of STYLED_PROPS) { 248 if (props[p]) { 249 let v = props[p]; 250 if (p.includes('color') && /rgba?/.test(v)) v = rgba2hex(v); 251 out += `${p}: ${v}; `; 252 } 253 } 254 return rgbAllToHex(out).trim(); 255 } 256 function getTextSelector(selector_first) { 257 return stripA(selector_first); 258 } 259 function normalizeImportant(v) { 260 if (v == null) return v; 261 v = ('' + v).trim(); 262 if (!v) return v; 263 return /!important/i.test(v) ? v : (v + ' !important'); 264 } 265 function buildStyledStringFromObj(obj) { 266 let out = ''; 267 for (const p of TEXT_STYLED_PROPS) { 268 if (obj[p]) { 269 out += `${p}: ${normalizeImportant(obj[p]).replace(/\s*!important\s*/gi,'').trim()} !important; `; 270 } 271 } 272 return out.trim(); 273 } 274 function buildTextStyleString(selector_first, css_advanced_sheet) { 275 const textSel = getTextSelector(selector_first); 276 const props = {}; 277 if (css_advanced_sheet) { 278 for (const rule of (css_advanced_sheet.cssRules || css_advanced_sheet.rules)) { 279 if (!rule.selectorText) continue; 280 if (rule.selectorText.trim() === textSel) { 281 for (const p of TEXT_STYLED_PROPS) { 282 const v = rule.style.getPropertyValue(p); 283 if (v) props[p] = v.trim(); 284 } 285 } 286 } 287 } 288 const $el = $(textSel).first(); 289 if ($el.length) { 290 const comp = getComputedStyle($el[0]); 291 for (const p of TEXT_STYLED_PROPS) { 292 if (!props[p]) { 293 const v = comp.getPropertyValue(p); 294 if (v) props[p] = v.trim(); 295 } 296 } 297 } 298 let out = ''; 299 for (const p of TEXT_STYLED_PROPS) { 300 if (props[p]) { 301 let v = props[p]; 302 if (p.includes('color') && /rgba?/.test(v)) v = rgba2hex(v); 303 out += `${p}: ${v}; `; 304 } 305 } 306 return rgbAllToHex(out).trim(); 307 } 308 309 document.onmouseout = function () { 310 if (showing) { 311 document.body.removeChild(showing); 312 showing = false;
313 } 314 }; 315 document.onmousemove = function (e) { 316 if (showing) { 317 document.body.removeChild(showing); 318 showing = false; 319 } 320 var target = e.target; 321 322 while (target !== this) { 323 var tooltip = target.getAttribute('data-tooltip'); 324 if (tooltip) break; 325 target = target.parentNode; 326 } 327 328 if (!tooltip) return; 329 330 const showTooltip = function (text, elem, x, y) { 331 var tooltipElem = document.createElement('div'); 332 tooltipElem.className = 'tooltip_souvenir'; 333 tooltipElem.innerHTML = text; 334 document.body.appendChild(tooltipElem); 335 var left = x + 50; 336 var top = y - 50; 337 tooltipElem.style.left = left + 'px'; 338 tooltipElem.style.top = top + 'px'; 339 tooltipElem.style.zIndex = 1200; 340 341 return tooltipElem; 342 }; 343 344 showing = showTooltip(tooltip, target, e.pageX, e.pageY); 345 }; 346 347 /*$('#editEnableBody').on('change', (e)=>{ 348 edit_enable[1] = Number(!(edit_enable[1])); 349 console.log(edit_enable); 350 }); 351 $('#iconPosition').on('change', (e)=>{ 352 icon_left[1] = Number(!(icon_left[1])); 353 console.log(icon_left); 354 });*/ 355 /*setting_containers[0] = document.querySelectorAll('section_n > .setting_container'); 356 setting_containers[1] = document.querySelectorAll('.main_page-phone_number > .setting_container, body > .head-block > div > .setting_container'); //inner 357 setting_containers[2] = document.querySelectorAll('.partner_section > h1, .partner_section > h2, .partner_section > h3, .partner_section > h4, .partner_section > h5, .partner_section > h6');*/ 358 //setting_containers = document.querySelectorAll((isEditable ? '' : 'body > ') + '.setting_container'); 359 //console.log(isEditable, isBodyEditable, 'setting_containers', setting_containers); 360 if (isEditable) { 361 if (is_landing) { 362 $(".partner_section").removeClass('partner_section'); 363 $("body > .wrapper > section:has( > .setting_container)").addClass('partner_section'); 364 } else { 365 $("div.overhead, div.head-main, div.main_page-phone_number, div.right-menu-main [data-menu-id], .main-menu-list [data-menu-id], .left-menu-root, div.left-menu-main [data-menu-id], .main-menu-list.left-menu, .default-tab-content").addClass('partner_section'); 366 $(".nav-tab-item") 367 .not("#structureItem-tab .nav-tab-item, #descriptor-tab .nav-tab-item, #album-tab .nav-tab-item, #pageSections-tab .nav-tab-item, #structureItem-advanced .nav-tab-item, #pageSections-tab-mode .nav-tab-item, #settings-tab .nav-tab-item") 368 .addClass('partner_section'); 369 } 370 } 371 if (is_landing) { //make better solution 372 //$("*[selector='body .section1']").attr('selector', 'body>div.wrapper>section:nth-of-type(2)'); 373 } 374 375 //enableEdit(isBodyEditable, 1); 376 setToggles(1); 377 378 for (const type of ['hue', 'alpha', 's']) { 379 const is2d = type == 's'; 380 const selector = (is2d ? '.colorpicker__wrapper.colors .vc-sketch-saturation-wrap' : `.colorpicker__wrapper.colors .vc-${type}-container`); 381 $(selector).on('mousedown', (e) => { 382 isSliding[type] = 1; 383 pointer = `.vc-${type == 's' ? 'saturation' : type}-pointer`; 384 sliderWidth = parseFloat($(selector).css("width")); 385 if (is2d) { 386 sliderHeight = parseFloat($(selector).css("height")); 387 } 388 setOffsetVars(e, is2d); 389 onColorSliderMove(type, offsetX, offsetY); 390 }); 391 392 $(selector).on('mousemove', (e) => { 393 if (isSliding[type]) { 394 setOffsetVars(e, is2d); 395 onColorSliderMove(type, offsetX, offsetY); 396 } 397 }); 398 399 // $('.vc-hue-container, .vc-alpha-container, .vc-sketch-saturation-wrap').on('mouseup', ()=>{ 400 $(selector).on('mouseup', () => { 401 isSliding[type] = 0; 402 changeStyleCss(currentProp, currentColorHex, 0, 1); 403 }); 404 } 405 406 //color_display 407 $('.color_display').bind('click', (e) => { 408 currentProp = e.target.getAttribute('target_prop'); 409 is_for_text = $(e.target).closest("section.tab-section[value='text']").length ? 1 : 0; 410 if (currentProp) { 411 if (currentProp == 'menu-color') { 412 413 old_selector = currentSelectors; 414 if (!is_menu_color) { 415 is_menu_color = 1; 416 } 417 } else if (currentProp == 'menu-hover') { 418 old_selector = currentSelectors; 419 if (!is_menu_hover) { 420 is_menu_hover = 1; 421 } 422 } else if (currentProp == 'background-color-compact') { 423 old_selector = currentSelectors; 424 if (!is_compact_menu) { 425 is_compact_menu = 1; 426 } 427 console.log("is_compact_menu"); 428 } 429 currentColorRGB = e.target.style.backgroundColor; 430 console.log(currentColorRGB); 431 currentColorHex = (rgba2hex(currentColorRGB)).toUpperCase(); 432 console.log(currentColorHex); 433 setPaletteVisible(1, currentProp); 434 } 435 }); 436 437 $('.colorpicker__item').bind('click', (e) => { 438 if (currentProp) { 439 changeColorInput(rgba2hex(currentColorRGB = e.target.style.backgroundColor)); 440 console.log("change"); 441 } 442 } 443 ); 444 $('ul.colorpicker__tabs > li.colorpicker__tab').bind('click', (e) => { 445 chooseColorTab(e.target); 446 }); 447 448 let scroll_container = '.colorpicker__pallete .ps__rail-y'; //check 449 $(scroll_container).on('mousedown', (e) => {
450 isSliding['pltY'] = 1; 451 pointer = scroll_container + ` .ps__thumb-y`; 452 sliderHeight = parseFloat($(scroll_container).css("height")); 453 //startClientY = e.currentTarget.getBoundingClientRect.y; 454 //startClientY = e.clientY; 455 //setOffsetVars(e, is2d); 456 //onColorSliderMove(type, offsetX, offsetY); 457 // console.log('targets are ', e.target, e.currentTarget, e.offsetY, e.target.parentNode.offsetTop, e.currentTarget.offsetTop, e.currentTarget.offsetY, e.offsetParent, e); 458 if (is_outer = e.target.className.includes('rail')) { 459 onPaletteScrolling(e); 460 } else { 461 startClientY = document.querySelector(scroll_container).getBoundingClientRect().y + e.offsetY; 462 } 463 }); 464 465 $(scroll_container).on('mousemove', (e) => { 466 if (isSliding['pltY']) { 467 onPaletteScrolling(e); 468 } 469 }); 470 471 // ÐбÑабоÑÑик Ð´Ð»Ñ Ð¿Ð¾Ð»Ð·Ñнка пÑозÑаÑноÑÑи в палиÑÑе 472 const alphaContainerPalette = '.palettes .vc-alpha-container'; 473 $(alphaContainerPalette).on('mousedown', (e) => { 474 isSliding['alpha_palette'] = 1; 475 pointer = `.palettes .vc-alpha-pointer`; 476 sliderWidth = parseFloat($(alphaContainerPalette).css("width")); 477 setOffsetVars(e, false); 478 onAlphaSliderMovePalette(offsetX); 479 }); 480 481 $(alphaContainerPalette).on('mousemove', (e) => { 482 if (isSliding['alpha_palette']) { 483 setOffsetVars(e, false); 484 onAlphaSliderMovePalette(offsetX); 485 } 486 }); 487 488 $(alphaContainerPalette).on('mouseup', () => { 489 isSliding['alpha_palette'] = 0; 490 changeStyleCss(currentProp, currentColorHex, 0, 1); 491 }); 492 493 function onAlphaSliderMovePalette(offsetX) { 494 let left = Math.round(offsetX) / sliderWidth * 100; 495 $(pointer).css('left', left.toFixed(4) + '%'); 496 497 // ÐбновлÑем пÑозÑаÑноÑÑÑ 498 alpha_koef = offsetX / sliderWidth; 499 500 // ÐбновлÑем гÑÐ°Ð´Ð¸ÐµÐ½Ñ 501 const currentColor = hexToRgb(currentColorHex); 502 $('.palettes .vc-alpha-gradient').css('background', 503 `linear-gradient(to right, rgba(${currentColor.r}, ${currentColor.g}, ${currentColor.b}, 0) 0%, rgb(${currentColor.r}, ${currentColor.g}, ${currentColor.b}) 100%)`); 504 505 // ÐбновлÑем ÑÐ²ÐµÑ Ñ ÑÑеÑом пÑозÑаÑноÑÑи 506 const rgbaColor = `rgba(${currentColor.r}, ${currentColor.g}, ${currentColor.b}, ${alpha_koef})`; 507 changeColorInput(rgba2hex(rgbaColor)); 508 } 509 510 let isBoldActive = false; 511 512 // ФÑнкÑÐ¸Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð¶Ð¸Ñного ÑÑÐ¸Ð»Ñ 513 function toggleBoldStyle() { 514 isBoldActive = !isBoldActive; 515 updateBoldButton(isBoldActive); 516 changeStyleCss('font-weight', isBoldActive ? 'bold' : 'normal'); 517 } 518 519 function updateBoldButton(isBoldActive) { 520 521 const boldButton = document.getElementById('boldButton'); 522 if (isBoldActive) { 523 boldButton.style.backgroundColor = '#8B4513'; // ÐоÑиÑневÑй 524 boldButton.style.color = 'white'; 525 } else { 526 boldButton.style.backgroundColor = '#f0f0f0'; 527 boldButton.style.color = 'black'; 528 } 529 } 530 531 let isTextDecorationActive = false; 532 533 // ФÑнкÑÐ¸Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑкивание 534 function toggleTextDecorationStyle() { 535 isTextDecorationActive = !isTextDecorationActive; 536 updateTextDecorationButton(isTextDecorationActive); 537 changeStyleCss('text-decoration', isTextDecorationActive ? 'underline' : 'none'); 538 } 539 540 function updateTextDecorationButton(isTextDecorationActive) { 541 542 const textDecorationButton = document.getElementById('textDecorationButton'); 543 if (isTextDecorationActive) { 544 textDecorationButton.style.backgroundColor = '#8B4513'; // ÐоÑиÑневÑй 545 textDecorationButton.style.color = 'white'; 546 } else { 547 textDecorationButton.style.backgroundColor = '#f0f0f0'; 548 textDecorationButton.style.color = 'black'; 549 } 550 } 551 552 let isItalicsActive = false;
553 554 // ФÑнкÑÐ¸Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ ÐºÑÑÑива 555 function toggleItalicsStyle() { 556 isItalicsActive = !isItalicsActive; 557 updateItalicsButton(isItalicsActive); 558 changeStyleCss('font-style', isItalicsActive ? 'italic' : 'normal'); 559 } 560 561 function updateItalicsButton(isItalicsActive) { 562 563 const italicButton = document.getElementById('italicsButton'); 564 if (isItalicsActive) { 565 italicButton.style.backgroundColor = '#8B4513'; // ÐоÑиÑневÑй 566 italicButton.style.color = 'white'; 567 } else { 568 italicButton.style.backgroundColor = '#f0f0f0'; 569 italicButton.style.color = 'black'; 570 } 571 } 572 573 let isTextTransformActive = false; 574 575 // ФÑнкÑÐ¸Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ ÐºÑÑÑива 576 function toggleTextTransformStyle() { 577 isTextTransformActive = !isTextTransformActive; 578 updateTextTransformButton(isTextTransformActive); 579 changeStyleCss('text-transform', isTextTransformActive ? 'uppercase' : 'none'); 580 } 581 582 function updateTextTransformButton(isTextTransformActive) { 583 584 const textTransformButton = document.getElementById('textTransformButton'); 585 if (isTextTransformActive) { 586 textTransformButton.style.backgroundColor = '#8B4513'; // ÐоÑиÑневÑй 587 textTransformButton.style.color = 'white'; 588 } else { 589 textTransformButton.style.backgroundColor = '#f0f0f0'; 590 textTransformButton.style.color = 'black'; 591 } 592 } 593 594// ФÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ HEX в RGB 595 function hexToRgb(hex) { 596 // УдалÑем # еÑли еÑÑÑ 597 hex = hex.replace('#', ''); 598 599 // ÐÑеобÑазÑем 3-ÑимволÑнÑй HEX в 6-ÑимволÑнÑй 600 if (hex.length === 3) { 601 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 602 } 603 604 // ÐолÑÑаем компоненÑÑ ÑвеÑа 605 const r = parseInt(hex.substring(0, 2), 16); 606 const g = parseInt(hex.substring(2, 4), 16); 607 const b = parseInt(hex.substring(4, 6), 16); 608 609 return {r, g, b}; 610 } 611 612// ÐодиÑиÑиÑÑем обÑабоÑÑик клика по ÑвеÑÑ Ð² палиÑÑе 613 $('.colorpicker__item').bind('click', (e) => { 614 if (currentProp) { 615 const rgbColor = e.target.style.backgroundColor; 616 currentColorRGB = rgbColor; 617 currentColorHex = rgba2hex(rgbColor).toUpperCase(); 618 619 // ÐбновлÑем гÑÐ°Ð´Ð¸ÐµÐ½Ñ Ð¿ÑозÑаÑноÑÑи Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑвеÑа 620 const rgbValues = rgbColor.match(/\d+/g); 621 $('.palettes .vc-alpha-gradient').css('background', 622 `linear-gradient(to right, rgba(${rgbValues[0]}, ${rgbValues[1]}, ${rgbValues[2]}, 0) 0%, rgb(${rgbValues[0]}, ${rgbValues[1]}, ${rgbValues[2]}) 100%)`); 623 624 // СбÑаÑÑваем ползÑнок пÑозÑаÑноÑÑи в 100% 625 $('.palettes .vc-alpha-pointer').css('left', '100%'); 626 alpha_koef = 1; 627 628 changeColorInput(currentColorHex); 629 } 630 }); 631 632 633 // $('.vc-hue-container, .vc-alpha-container, .vc-sketch-saturation-wrap').on('mouseup', ()=>{ 634 /*$(scroll_container).on('mouseout', (e)=>{ 635 if(e.target.className.includes('ps__rail-y')){ 636 isSliding['pltY'] = 0; 637 } 638 });*/ 639 640 $(scroll_container).on('mouseup mouseout', (e) => { 641 isSliding['pltY'] = 0; 642 }); 643 644 //$('#settings_popup input[target_prop]').each(function(){ //is_shadow_checked 645 // let prop_name = tg_prop = $( this)[0].getAttribute('target_prop') 646 647 $('div.dashboard-popup__content ul.nav.nav-pills.bordered-tabs > li.nav-tab-item > label.page-tab[value]').on('click', (e) => { 648//console.log(e.target); 649 const labelEl = e.currentTarget; 650 const tabVal = labelEl.getAttribute('value'); 651 652 653 if (tabVal === 'block' && baseSelectors) { 654 const baseFirst = (baseSelectors.includes(';') 655 ? baseSelectors.slice(0, baseSelectors.indexOf(';')) 656 : baseSelectors).trim(); 657 658 659 if ($(baseFirst).is('.main-menu-list.left-menu')) { 660 currentSelectors = baseSelectors; 661 is_for_menu = 0; 662 is_menu_color = 0; 663 is_menu_hover = 0; 664 } 665 } 666 if (e.target.classList.contains('active')) { 667 return; 668 } 669 let active_tab = $('div.dashboard-popup__content ul.nav.nav-pills.bordered-tabs > li.nav-tab-item > label.page-tab.active')[0]; 670 active_tab.classList.remove('active'); 671 e.target.classList.add('active'); 672 //console.log(active_tab, active_tab.getAttribute('value'), $(`div.dashboard-popup__content section.tab-section[value='${active_tab.value}']`)); 673 $(`div.dashboard-popup__content section.tab-section[value='${active_tab.getAttribute('value')}']`).css('display', 'none'); 674 $(`div.dashboard-popup__content section.tab-section[value='${e.target.getAttribute('value')}']`).css('display', 'block'); 675 676 }); 677 678 /* $("#bg_style_select").on('change', (e)=>{ 679 //console.log( 'bg_style_select', e.target.value); 680 $("#bg_style").val(e.target.value); 681 changeStyleCss('repeat', e.target.value); 682 });*/ 683 684 685 function onSelectPropVal(prop, val) { 686 if (prop && val) { 687 if (prop == 'repeat') { 688 $("#bg_style").val(val); 689 } else if (prop == 'font-family' && currentSelectors == 'body > div.main_page-phone_number') { 690 is_footer_inner = 1; 691 } else if (prop == 'menu-font-family') { 692 is_for_menu = 1; 693 prop = 'font-family'; //is_for_menu 694 } 695 changeStyleCss(prop, val); 696 } 697 } 698 699 700 function processSectionItem(item, i = 0, selector = '') { 701 if (document.documentElement.classList.contains('mp-mobile-admin') || 702 window.innerWidth <= 767 || 703 Math.min(window.screen.width, window.screen.height) <= 767) { 704 return; 705 } 706 707 //console.log("test8",selector); 708 if (selector != 0) { 709 console.log("sel1", item); 710 } 711 if (!item) { 712 return; 713 } 714 if (selector != 0) { 715 $(item).css("position", "relative"); 716 $(item).css("border", "1px dashed transparent"); 717 $(item).hover( 718 function () { 719 $(this).css("border", "1px dashed black"); 720 }, 721 function () { 722 $(this).css("border", "1px dashed transparent"); 723 } 724 ); 725 } 726 //console.log("test8",selector); 727 if (selector) { 728 let container = `<div class="setting_container" style="left: 0; right: 0; margin: 0 auto; bottom: -25px" selector="${i == 2 ? (selector = selector + ' ' + item.tagName.toLowerCase()) : selector}"></div>` 729 item.innerHTML = (i ? container + item.innerHTML : item.innerHTML + container); 730 item = item.querySelector(".setting_container"); 731 } else { 732 //item.setAttribute('data-tooltip', tooltip_names[i]); 733 } 734 let button_html = `<button data-v-2b7be7e0="" class="setting_editor " data-tooltip="${tooltip_names[i]}" selector="${selector ? selector : item.getAttribute('selector')}"><svg data-v-3075733c="" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0.5 0.5 25 25" aria-labelledby="cog-small" role="presentation" data-v-2b7be7e0=""><title data-v-3075733c="" id="cog-small" lang="en"></title><g data-v-3075733c="" fill="currentColor"><path data-v-3075733c="" d="M10.101 4L9.701 6.019C9.03957 6.26234 8.42191 6.61119 7.872 7.
734052L5.899 6.382L4 9.618L5.579 10.967C5.52 11.3082 5.48923 11.6537 5.487 12C5.487 12.353 5.523 12.697 5.579 13.034L4 14.383L5.899 17.617L7.872 16.948C8.42173 17.3891 9.03943 17.7379 9.701 17.981L10.1 20H13.9L14.3 17.981C14.9614 17.7377 15.5791 17.3888 16.129 16.948L18.102 17.618L20 14.382L18.421 13.033C18.48 12.6918 18.5108 12.3463 18.513 12C18.5108 11.6534 18.4801 11.3075 18.421 10.966L20 9.617L18.101 6.383L16.128 7.052C15.5781 6.61119 14.9604 6.26234 14.299 6.019L13.9 4H10.1H10.101ZM12 8.8C13.798 8.8 15.257 10.233 15.257 12C15.257 13.767 13.798 15.2 12 15.2C10.201 15.2 8.743 13.767 8.743 12C8.743 10.233 10.201 8.8 12 8.8Z" fill-rule="evenodd" clip-rule="evenodd"></path></g></svg> 735<!--<span${i == 2 ? ' style="top: 4px;"' : ''}>${setting_names[i]}</span>--> 736</button>`; //${L_setting} 737 item.innerHTML = button_html + item.innerHTML; 738 setting_buttons.push(item.querySelector('.setting_editor')); 739 740 function checkHover(e, element) { 741 const rect = element[0].getBoundingClientRect(); 742 const adminWrap = element.find('div.sectionAdminWrap:has( > .mp_edit > .fa-plus)'); 743 744 if (e.clientY - rect.top > -100 && e.clientY - rect.top < 0) { 745 adminWrap.find(".mp_edit").addClass("scale_one"); 746 adminWrap.find(".mp_edit").removeClass("scale_none"); 747 } else { 748 adminWrap.find(".mp_edit").removeClass("scale_one"); 749 } 750 } 751 752 if (isEditable && (i == 0)) { 753 document.addEventListener('mousemove', function (event) { 754 checkHover(event, $(item.parentElement)); 755 756 }); 757 item.parentElement.addEventListener('mousemove', 758 function (e) { //optimize 759 const adminWrap = $(this).find('div.sectionAdminWrap:has( > .mp_edit:not(.end) > .fa-plus)'); 760 //console.log(e.currentTarget.offsetTop); 761 //console.log(e.offsetY); 762 //console.log(e.clientY, $(this)[0], $(this)[0].getBoundingClientRect().top, item, plus); 763 if (e.clientY - $(this)[0].getBoundingClientRect().top > 100) { 764 adminWrap.find(".mp_edit:not(.end)").addClass("scale_none"); 765 } else { 766 adminWrap.find(".mp_edit:not(.end)").removeClass("scale_none"); 767 } 768 769 const adminWrapEnd = $(this).find('div.sectionAdminWrap:has( > .mp_edit.end > .fa-plus)'); 770 //console.log(e.currentTarget.offsetTop); 771 //console.log(e.offsetY); 772 //console.log(e.clientY, $(this)[0], $(this)[0].getBoundingClientRect().top, item, plus); 773 if ($(this)[0].getBoundingClientRect().bottom - e.clientY > 100) { 774 adminWrap.find(".mp_edit.end").addClass("scale_none"); 775 } else { 776 adminWrap.find(".mp_edit.end").removeClass("scale_none"); 777 } 778 779 // if(e.clientY - $(this)[0].getBoundingClientRect().top < 100){ 780 // adminWrap.addClass("hidden_vis"); 781 // } else { 782 // adminWrap.removeClass("hidden_vis"); 783 // } 784 }, function () { 785 786 } 787 ); 788 } 789 /*if (selector = setting_selectors[1][i]) { 790 //let index = 0, section_class = '', section_class_last = ''; 791 targets = document.querySelectorAll(selector); //document.querySelectorAll('.main_page-phone_number > .setting_container, body > .head-block > div > .setting_container'); //inner 792 for (let selector_value, section_class = '', target, j = 0; j < targets.length; j++, section_class = '') { 793 //let section_class = target.closest('.partner_section').attr('class').split(' ').pop(); 794 //let heading_id = target.attr('heading-id'); 795 target = targets[j]; 796 console.log(targets, target, target.closest('.partner_section')); 797 //selector_value = ''+(i == 2 && j == 0 ? '.main-content-in > h2' : `${i == 2 ? 'heading' : 'block'}${target.getAttribute('item-id') || 0}`); 798 if(i == 2 && j == 0){ 799 selector_value = target.tagName.toLowerCase()+':first-child'; 800 } else { 801 section_class = target.closest('.partner_section')?.classList; 802 if(section_class){ 803 section_class = section_class[section_class.length - 1]; 804 selector_value = section_class + ' ' + (i==1 ? '.row > div' : target.tagName.toLowerCase()); 805 } else{ 806 continue; 807 } 808 } 809 //if(section_class) {section_class} else {continue}; 810 //target.innerHTML = `<div class="setting_container" style="left: 0; right: auto;" selector="${i == 2 ? 'heading' : 'block'}${target.getAttribute('item-id') || 0}"></div>` + target.innerHTML; 811 target.innerHTML = `<div class="setting_container" style="left: 0; right: auto;" selector="${selector_value}"></div>` + target.innerHTML;
812 setting_containers[i] || (setting_containers[i] = []); 813 console.log('setting_containers[i]',i, setting_containers[i]); 814 setting_containers[i].push(target.querySelector('div')); 815 } 816 } 817 if (setting_containers) { 818 if (i == 1) { 819 // console.log('setting_containers[i]', setting_containers[i]); 820 } 821 for (let container of setting_containers[i]) { 822 if (i == 1) { 823 // console.log('container is', container, container[0]); 824 } 825 let button_html = `<button data-v-2b7be7e0="" class="setting_editor disp_none" selector="${container.getAttribute('selector')}"><svg data-v-3075733c="" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" aria-labelledby="cog-small" role="presentation" data-v-2b7be7e0=""><title data-v-3075733c="" id="cog-small" lang="en"></title><g data-v-3075733c="" fill="currentColor"><path data-v-3075733c="" d="M10.101 4L9.701 6.019C9.03957 6.26234 8.42191 6.61119 7.872 7.052L5.899 6.382L4 9.618L5.579 10.967C5.52 11.3082 5.48923 11.6537 5.487 12C5.487 12.353 5.523 12.697 5.579 13.034L4 14.383L5.899 17.617L7.872 16.948C8.42173 17.3891 9.03943 17.7379 9.701 17.981L10.1 20H13.9L14.3 17.981C14.9614 17.7377 15.5791 17.3888 16.129 16.948L18.102 17.618L20 14.382L18.421 13.033C18.48 12.6918 18.5108 12.3463 18.513 12C18.5108 11.6534 18.4801 11.3075 18.421 10.966L20 9.617L18.101 6.383L16.128 7.052C15.5781 6.61119 14.9604 6.26234 14.299 6.019L13.9 4H10.1H10.101ZM12 8.8C13.798 8.8 15.257 10.233 15.257 12C15.257 13.767 13.798 15.2 12 15.2C10.201 15.2 8.743 13.767 8.743 12C8.743 10.233 10.201 8.8 12 8.8Z" fill-rule="evenodd" clip-rule="evenodd"></path></g></svg><span>${setting_names[i]}</span></button>`; //${L_setting} 826 container.innerHTML = button_html; 827 setting_buttons.push(container.querySelector('.setting_editor')) 828 } 829 }*/ 830 831 } 832 833} 834 835function getTargetElementStyle(selector, prop) { 836 const $el = $(selector); 837 const $link = $el.find('a'); 838 if ($link.length) { 839 return $link.css(prop); 840 } 841 return $el.css(prop); 842} 843 844function showBlockSettings(is_closing = 'x', selector = null) { // = "body > div.head-main" 845 $('#settings_popup').css('display', is_closing ? 'none' : 'block'); 846 is_popup_vis = !!is_closing; 847 848 if (is_closing || !selector) { 849 if (is_closing == 'x') { 850 clearScreenStyles(); //may be unused 851 setToggles(0); 852 //setToggle(id, edit_enable, edit_enable[0]); 853 //setToggle(id, icon_left, icon_left[0]); 854 //enableEdit(edit_enable[0]); 855 //setIconPosition(icon_left[0]); 856 //console.log('saved_settings are ',saved_settings); 857 //$('div.dashboard-popup__sections')[0].innerHTML=saved_settings; 858 if (is_setting_changed) { 859 $('div.dashboard-popup__sections').remove(); 860 $('div.dashboard-popup__content > ul').after(saved_settings); 861 is_setting_changed = 0; 862 } 863 //console.log('saved_settings are ',saved_settings); 864 } else if (is_closing == 'a') { 865 applyStylesAjax(); 866 // saved_settings = $('div.dashboard-popup__sections').clone(); 867 } 868 return; 869 } 870 /*if(!stylesMap){ 871 stylesMap = new Map(); 872 } else { 873 stylesMap.clear(); 874 }*/ 875 style_id++; 876 stylesMap ? stylesMap.clear() : (stylesMap = new Map()); 877 if (selector != currentSelectors) { 878 saved_style = '';//$('input[target_prop="styled"]').val();//'' 879 saved_style_arr = null; 880 currentSelectors = selector; 881 baseSelectors = selector; 882 // console.log(selector); 883 borders = null; 884 let selector_first = (selector.includes(';') ? selector.slice(0, selector.indexOf(';')) : selector).trim(); 885 let tg_prop, edited_elem = $(selector_first); 886 //let lin_param_display = (selector == 'body.partner' ? 'none' : 'block'); 887 //$('#settings_popup section.menu-params').css('display', lin_param_display); 888 /*$('#settings_popup section.block-params div.lin-params, #settings_popup section.menu-params').css( 889 'display', (selector == 'body.partner' ? 'none' : 'inline-block'));*/ 890 let is_head = selector.includes('head-block'), css_advanced_sheet = null; 891 $('#settings_popup section.block-params div.input-holder.onlyhead').css('display', is_head ? 'inline-block' : 'none'); 892 $('#settings_popup div.input-holder.head-foot').css('display', is_head || selector.includes('main_page-phone_number') ? 'inline-block' : 'none'); 893 $(selector_first).addClass('reading'); 894 $.each(document.styleSheets, function (sheetIndex, sheet) {
895 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 896 css_advanced_sheet = sheet; 897 return false; 898 } 899 }); 900 let prop_value = '', css_txt = ''; 901 console.log('css_advanced_sheet.cssRules', css_advanced_sheet.cssRules); 902 icon_top[1] = ($(selector_first + ' .menu li a').css('display') == 'grid' ? 0 : 1); 903 width_fixed[1] = 0; 904 if (css_advanced_sheet) { 905 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function (ruleIndex, rule) { 906 // console.log("rule[" + ruleIndex + "]: " + rule.cssText); 907 if ((css_txt = rule.cssText).includes(selector_first + ' .menu ul li.head_menu_li {')) { //might be repeatings? 908 prop_value = css_txt.slice(css_txt.indexOf('{') + 1, css_txt.indexOf('}')); 909 if (/(^|;|\s)width(:|\s)/.test(prop_value)) { 910 width_fixed[1] = 1; 911 return false; 912 } 913 } 914 }) 915 } 916 let font = $(selector_first).css('font-family'); 917 918 let menu_font = $(selector_first + ' .menu li a').css('font-family'); 919 if (selector_first.includes("right-menu-main")) { 920 menu_font = $(selector_first + ' a').css('font-family'); 921 } else if (selector_first.includes("left-menu-main")) { 922 menu_font = $(selector_first + ' a').css('font-family'); 923 } else if (selector_first.includes("main-menu-list")) { 924 menu_font = $(selector_first + ' a').css('font-family'); 925 }else if (selector_first.includes("left-menu-root")) { 926 menu_font = $(selector_first + ' a').css('font-family'); 927 } 928 929 $('#text_font_select').val(font ? font : ''); 930 $('#menu_font_select').val(menu_font ? menu_font : ''); 931 $('#settings_popup input[target_prop],#settings_popup textarea[target_prop],#settings_popup button[target_prop]').each(function () { //is_shadow_checked 932 let prop_name = tg_prop = $(this)[0].getAttribute('target_prop'), prop_value = ''; 933 console.log("prop_name", prop_name);
934 if (prop_name == 'box-shadow') { 935 let is_topmenu = selector_first.includes('over') ? 1 : 0; 936 if (is_shadow_checked[is_topmenu] === null) { 937 let menu = is_topmenu ? $('body > div.head-block > div.head-main') : edited_elem; 938 let lastClass = menu.attr('class'); 939 menu.attr('class', 'head-main menu-narrow'); 940 prop_value = ((prop_value = edited_elem.css(prop_name)) != undefined) && (prop_value != 'none'); 941 // console.log('prop_value', prop_value); 942 menu.attr('class', lastClass); 943 is_shadow_checked[is_topmenu] = prop_value; 944 } else { 945 prop_value = is_shadow_checked[is_topmenu]; 946 } 947 //$('#settings_popup section.lin-params div.input-holder.shadow input[type="checkbox"]').attr('checked', prop_value); 948 $(this)[0].checked = prop_value; 949 } else if (prop_name == 'text-align-start') { 950 prop_value = ((prop_value = edited_elem.css('text-align')) == 'left') || (prop_value == 'start'); 951 if (prop_value) { 952 $('#align[target_prop="text-align-start"]').prop('checked', true); 953 } 954 } else if (prop_name == 'text-align-end') { 955 prop_value = ((prop_value = edited_elem.css('text-align')) == 'end') || (prop_value == 'right'); 956 if (prop_value) { 957 $('#align[target_prop="text-align-end"]').prop('checked', true); 958 } 959 } else if (prop_name == 'block-align-start' || prop_name == 'block-align-center' || prop_name == 'block-align-end') { 960 961 let isFoundInCSS = false; 962 if (css_advanced_sheet) { 963 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function (ruleIndex, rule) { 964 if (rule.selectorText && $(edited_elem).is(rule.selectorText)) { 965 const marginLeft = rule.style['margin-left']; 966 console.log("marginLeft", marginLeft); 967 const marginRight = rule.style['margin-right']; 968 console.log("marginRight", marginRight); 969 if (marginLeft === 'auto' && marginRight === 'auto') { 970 $('#alignBlock[target_prop="block-align-center"]').prop('checked', true); 971 } else if (marginLeft === 'auto' && marginRight !== 'auto') { 972 $('#alignBlock[target_prop="block-align-end"]').prop('checked', true); 973 } else { 974 $('#alignBlock[target_prop="block-align-start"]').prop('checked', true); 975 } 976 } 977 }); 978 } 979 } else if (prop_name == 'text-align-center') { 980 prop_value = ((prop_value = edited_elem.css('text-align')) == 'center'); 981 if (prop_value) { 982 $('#align[target_prop="text-align-center"]').prop('checked', true); 983 } 984 } else if (prop_name == 'background-attachment-parallax') { 985 prop_value = ((prop_value = edited_elem.css('background-repeat')) == 'no-repeat'); 986 if (prop_value) { 987 $('#background-attachment[target_prop="background-attachment-parallax"]').prop('checked', true); 988 } 989 } else if (['font-weight', 'font-style', 'text-decoration', 'text-transform'].includes(prop_name)) { 990 const currentValue = getTargetElementStyle(selector_first, prop_name); 991
992 if (prop_name === 'font-weight') { 993 isBoldActive = ['bold', '700', '600', 'bolder'].includes(currentValue); 994 updateBoldButton(isBoldActive); 995 } else if (prop_name === 'font-style') { 996 isItalicsActive = currentValue === 'italic'; 997 updateItalicsButton(isItalicsActive); 998 } else if (prop_name === 'text-decoration') { 999 isTextDecorationActive = currentValue.includes('underline'); 1000 updateTextDecorationButton(isTextDecorationActive); 1001 } else if (prop_name === 'text-transform') { 1002 isTextTransformActive = currentValue === 'uppercase'; 1003 updateTextTransformButton(isTextTransformActive); 1004 } 1005 } else if (prop_name == 'background-attachment-fixed') { 1006 prop_value = edited_elem.css('background-attachment') == 'fixed' && edited_elem.css('background-repeat') != 'no-repeat'; 1007 if (prop_value) { 1008 $('#background-attachment[target_prop="background-attachment-fixed"]').prop('checked', true); 1009 } 1010 }else if (prop_name === 'text-styled') { 1011 prop_value = buildTextStyleString(selector_first, css_advanced_sheet); 1012 this.value = prop_value; 1013 1014 saved_text_style = prop_value; 1015 saved_text_style_arr = splitStyles(prop_value); 1016 } else if (prop_name == 'background-attachment-auto') { 1017 prop_value = ((prop_value = edited_elem.css('background-attachment')) == 'scroll'); 1018 if (prop_value) { 1019 $('#background-attachment[target_prop="background-attachment-auto"]').prop('checked', true); 1020 } 1021 } else if (prop_name == 'visibility-pk') { 1022 1023 var targetSelector = edited_elem['selector']; 1024 var foundCssText = null; 1025 $.each(css_advanced_sheet.cssRules, function (index, rule) { 1026 if (rule.selectorText === targetSelector) { 1027 foundCssText = rule.cssText; 1028 return false; 1029 } 1030 }); 1031 if (foundCssText) { 1032 var normalizedCssText = foundCssText.replace(/\s+/g, ' ').trim(); 1033 var targetMediaQuery = '@media (min-width: 768px) { display: none; }'.replace(/\s+/g, ' ').trim(); 1034 if (normalizedCssText.includes(targetMediaQuery)) { 1035 $('.visibility[target_prop="visibility-pk"]').prop('checked', true); 1036 } 1037 } else { 1038 // ÐÑли пÑавило не найдено, Ñнимаем галоÑÐºÑ 1039 $('.visibility[target_prop="visibility-pk"]').prop('checked', false); 1040 } 1041 } else if (prop_name == 'visibility-tablet') { 1042 1043 var targetSelector = edited_elem['selector']; 1044 var foundCssText = null; 1045 $.each(css_advanced_sheet.cssRules, function (index, rule) { 1046 if (rule.selectorText === targetSelector) { 1047 foundCssText = rule.cssText; 1048 return false; 1049 } 1050 }); 1051 if (foundCssText) { 1052 var normalizedCssText = foundCssText.replace(/\s+/g, ' ').trim(); 1053 var targetMediaQuery = '@media (max-width: 767px) and (min-width: 450px) { display: none; }'.replace(/\s+/g, ' ').trim(); 1054 if (normalizedCssText.includes(targetMediaQuery)) { 1055 $('.visibility[target_prop="visibility-tablet"]').prop('checked', true); 1056 } 1057 } 1058 }
1058 else if (prop_name == 'visibility-mob') { 1059 1060 var targetSelector = edited_elem['selector']; 1061 var foundCssText = null; 1062 $.each(css_advanced_sheet.cssRules, function (index, rule) { 1063 if (rule.selectorText === targetSelector) { 1064 foundCssText = rule.cssText; 1065 return false; 1066 } 1067 }); 1068 if (foundCssText) { 1069 var normalizedCssText = foundCssText.replace(/\s+/g, ' ').trim(); 1070 var targetMediaQuery = '@media (max-width: 449px) { display: none; }'.replace(/\s+/g, ' ').trim(); 1071 if (normalizedCssText.includes(targetMediaQuery)) { 1072 $('.visibility[target_prop="visibility-mob"]').prop('checked', true); 1073 } 1074 } 1075 } else if (!(prop_name == 'width' || prop_name == 'height')) { 1076 1077 if (prop_n
1077ame == 'label') { 1078 /*let label_elem = $(selector_first + ' li.head_menu_li .head_menu_li_span_bg')[0]; 1079 let has_w0 = label_elem.classList.contains('w0'); 1080 console.log(label_elem); 1081 if (has_w0) { 1082 label_elem.remove('w0'); 1083 } */ 1084 prop_name = 'width'; 1085 prop_value = ''; 1086 //console.log(selector_first + ' ul.main-menu-list > li.head_menu_li .head_menu_li_span_bg {'); 1087 $.each(document.styleSheets, function (sheetIndex, sheet) { 1088 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 1089 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 1090 $.each((foundSheet = sheet).cssRules, function (ruleIndex, rule) { 1091 //console.log(rule.cssText) 1092 // console.log("rule[" + ruleIndex + "]: " + rule.cssText, selector); 1093 if ((css_txt = rule.cssText).startsWith(selector_first + ' ul.main-menu-list > li.head_menu_li .head_menu_li_span_bg {')) { 1094 prop_value = rule.style['width']; 1095 return false; 1096 } 1097 }); //add here if is abscent 1098 return false; 1099 } 1100 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 1101 }); 1102 1103 /*prop_value = label_elem.styles[prop_name = 'width']; 1104 if (has_w0) { 1105 label_elem.add('w0'); 1106 }*/ 1107 //console.log() 1108 } else if (prop_name == 'repeat') { 1109 for (let prop_name of ['background-repeat', 'background-position']) { 1110 let val = $(selector_first).css(prop_name); 1111 prop_value += ` ${prop_name}: ${val ? val : 'unset'}; `; 1112 } 1113 } else if (prop_name == 'menu-font-size') { 1114 if (selector_first.includes("right-menu-main")) { 1115 prop_value = $(selector_first + ' a').css(prop_name = 'font-size'); 1116 } else if ((selector_first.includes("left-menu-main")) || (selector_first.includes("main-menu-list")) || 1117 selector_first.includes("left-menu-root")) { 1118 prop_value = $(selector_first + ' a').css(prop_name = 'font-size'); 1119 } else { 1120 prop_value = $(selector_first + ' .menu li a').css(prop_name = 'font-size'); 1121 } 1122 1123 } else if (prop_name == 'menu-item-width') { //before it was span text 1124 prop_name = (width_fixed[1] ? 'width' : 'min-width'); 1125 prop_value = ''; 1126 //prop_value = $(selector_first + ' .menu li').css(prop_name = (width_fixed[1] ? 'width' : 'min-width')); 1127 $.each(document.styleSheets, function (sheetIndex, sheet) { 1128 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 1129 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 1130 $.each((foundSheet = sheet).cssRules, function (ruleIndex, rule) { // console.log("rule[" + ruleIndex + "]: " + rule.cssText); 1131 if ((css_txt = rule.cssText).startsWith(selector_first + ' .menu ul li.head_menu_li {')) { 1132 prop_value = rule.style[prop_name]; 1133 // console.log(prop_value , prop_name); 1134 return false; 1135 } 1136 }) 1137 } 1138 }); 1139 1140 }
1140 else if (prop_name === 'menu-color') { 1141 1142 tg_prop = 'menu-color'; 1143 const $links = $(selector_first).find('a').not('.mp_edit, .url-r, .logo_head_img'); 1144 if ($links.length > 0) { 1145 prop_value = $links.first().css('color'); 1146 } else { 1147 prop_value = 'rgb(0, 0, 0)'; 1148 } 1149 1150 // console.log("menu_color3",prop_value,$links); 1151 $(`button.color_display[target_prop='menu-color']`).css('background-color', prop_value); 1152 $(`input.colorpicker__input[target_prop='menu-color']`).val(rgba2hex(prop_value)); 1153 } else if (prop_name == 'background-color-compact') { 1154 tg_prop = 'background-color-compact'; 1155 console.log('background-color-compact', selector_first); 1156 // currentSelectors = selector_first += '.menu-narrow'; 1157 //console.log("prop_value23",prop_value) 1158 prop_value = $(selector_first + '.menu-narrow').css(prop_name = 'background-color'); 1159 // console.log('prop_value is ', prop_value); //prop_value = edited_elem.css(prop_name); 1160 } else if (prop_name === 'menu-hover') { 1161 tg_prop = 'menu-hover'; 1162 const $links = $(selector_first).find('a').not('.mp_edit, .url-r'); 1163 let hoverColor = null; 1164 const hoverSelector = `${selector_first} a:hover`; 1165 for (const sheet of document.styleSheets) { 1166 try { 1167 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 1168 for (const rule of sheet.cssRules) { 1169 if (!rule.selectorText) continue; 1170 if (rule.selectorText.trim() === hoverSelector && rule.style.color) { 1171 hoverColor = rule.style.color; 1172 break; 1173 } 1174 } 1175 } 1176 } catch (e) { 1177 1178 } 1179 if (hoverColor) break; 1180 } 1181 if (!hoverColor && $links.length > 0) { 1182 const firstLink = $links.first()[0]; 1183 hoverColor = window.getComputedStyle(firstLink, ':hover').color; 1184 } 1185 if (!hoverColor) hoverColor = 'rgb(0, 0, 0)'; 1186 1187 prop_value = rgba2hex(hoverColor); 1188 1189 $(`button.color_display[target_prop='menu-hover']`).css('background-color', prop_value); 1190 $(`input.colorpicker__input[target_prop='menu-hover']`).val(prop_value); 1191 }else if (prop_name == 'color' && selector == 'body > div.main_page-phone_number') { 1192 prop_value = $('body > div.main_page-phone_number div.main_page-phone_number_content').css(prop_name); 1193 } else if (prop_name == 'width' || prop_name == 'height') { 1194 1195 return true; 1196 } else if (prop_name == 'bgImg') { 1197 1198 $('.bg-block-image-upload label[for="bg_file_input"]').css('background-image', $(currentSelectors).css('background-image')); 1199 } else if (prop_name == 'styled') { 1200 prop_value = buildLinkStyleString(selector_first, css_advanced_sheet); 1201 1202 // показаÑÑ Ð² поле 1203 $(this)[0].value = prop_value; 1204 1205 // ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ð²Ð½ÑÑÑенние бÑÑеÑÑ, ÑÑÐ¾Ð±Ñ Ð´Ð°Ð»ÑÑе кнопки B/I/U/Aa и ÑÐ²ÐµÑ ÐºÐ¾ÑÑекÑно допиÑÑвалиÑÑ 1206 saved_style = prop_value; 1207 saved_style_arr = splitStyles(prop_value); 1208 }
1208 else if (prop_name === 'translate-x' || prop_name === 'translate-y' || prop_name === 'rotate') { 1209 let transformStr = ''; 1210 if (css_advanced_sheet) { 1211 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function(ruleIndex, rule) { 1212 if (rule.selectorText && $(edited_elem).is(rule.selectorText)) { 1213 const tv = rule.style['transform']; 1214 if (tv) { transformStr = tv; return false; } 1215 } 1216 }); 1217 } 1218 if (!transformStr && edited_elem[0]) transformStr = edited_elem[0].style.transform || ''; 1219 let match; 1220 if (prop_name === 'translate-x') { 1221 match = transformStr.match(/translateX\((-?[\d.]+)/); 1222 } else if (prop_name === 'translate-y') { 1223 match = transformStr.match(/translateY\((-?[\d.]+)/); 1224 } else { 1225 match = transformStr.match(/rotate\((-?[\d.]+)/); 1226 } 1227 prop_value = match ? match[1] : '0'; 1228 const _inputEl = $(this)[0]; 1229 if (!match) { 1230 _inputEl.style.color = 'rgb(153, 153, 153)'; 1231 _inputEl.style.fontStyle = 'italic'; 1232 } else { 1233 _inputEl.style.color = ''; 1234 _inputEl.style.fontStyle = ''; 1235 } 1236 } else { 1237 1238 1239 prop_value = edited_elem.css(prop_name); 1240 let inputElement = $(`#settings_popup input[target_prop='${prop_name}']`)[0];
1241 if (prop_name == 'max-width' || prop_name == 'min-height' || prop_name == 'height') { 1242 console.log('test193'); 1243 let isFoundInCSS = false; 1244 if (css_advanced_sheet) { 1245 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function (ruleIndex, rule) { 1246 if (rule.selectorText && $(edited_elem).is(rule.selectorText)) { 1247 const marginValue = rule.style[prop_name]; 1248 if (!marginValue) { 1249 inputElement.style.color = '#999'; 1250 inputElement.style.fontStyle = 'italic'; 1251 if (!prop_value) prop_value = ''; 1252 } 1253 } 1254 }); 1255 } 1256 }
1257 if (prop_name == 'margin-left' || prop_name == 'margin-right' || prop_name == 'margin-top' || prop_name == 'margin-bottom' || prop_name == 'padding-left' || prop_name == 'padding-right' || prop_name == 'padding-top' || prop_name == 'padding-bottom' || prop_name == 'border-bottom-left-radius' || prop_name == 'border-bottom-right-radius' || prop_name == 'border-top-right-radius' || prop_name == 'border-top-left-radius' || prop_name == 'border-bottom-color' || prop_name == 'border-right-color' || prop_name == 'border-left-color' || prop_name == 'border-top-color' || prop_name == 'border-bottom-width' || prop_name == 'border-right-width' || prop_name == 'border-left-width' || prop_name == 'border-top-width') { 1258 let isFoundInCSS = false; 1259 if (css_advanced_sheet) { 1260 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function (ruleIndex, rule) { 1261 if (rule.selectorText && $(edited_elem).is(rule.selectorText)) { 1262 const marginValue = rule.style[prop_name]; 1263 if (marginValue) { 1264 prop_value = marginValue; 1265 isFoundInCSS = true; 1266 if (inputElement) { 1267 inputElement.style.color = ''; 1268 inputElement.style.fontStyle = ''; 1269 } 1270 } else { 1271 inputElement.style.color = '#999'; 1272 inputElement.style.fontStyle = 'italic'; 1273 if (!prop_value) prop_value = ''; 1274 } 1275 } 1276 }); 1277 } 1278 } 1279 1280 console.log("ep3", prop_value); 1281 }
1282 if (prop_name.includes('color')) { 1283 $(`button.color_display[target_prop='${tg_prop}']`).css('background-color', prop_value); 1284 //is_menu_color = 0; 1285 if (!prop_value) { 1286 prop_value = '#00000000'; 1287 } 1288 if (prop_value.includes('rgb')) { 1289 prop_value = rgba2hex(prop_value); 1290 } 1291 } 1292 $(this)[0].value = (prop_value === undefined ? '' : prop_value); 1293 } else if (prop_name == 'width' || prop_name == 'height') { 1294 let inputElement = $(`#settings_popup input[target_prop='${prop_name}']`)[0]; 1295 let isFoundInCSS = false; 1296 if (css_advanced_sheet) { 1297 $.each(css_advanced_sheet.cssRules || css_advanced_sheet.rules, function (ruleIndex, rule) { 1298 if (rule.selectorText && $(edited_elem).is(rule.selectorText)) { 1299 const marginValue = rule.style[prop_name]; 1300 if (marginValue) { 1301 1302 prop_value = marginValue; 1303 isFoundInCSS = true; 1304 1305 1306 if (inputElement) { 1307 inputElement.style.color = ''; 1308 inputElement.style.fontStyle = ''; 1309 } 1310 } else { 1311 inputElement.style.color = '#999'; 1312 inputElement.style.fontStyle = 'italic'; 1313 if (!prop_value) prop_value = ''; 1314 } 1315 } 1316 }); 1317 } 1318 if (!isFoundInCSS && !prop_value) { 1319 prop_value = edited_elem.css(prop_name) || ''; 1320 } 1321 if (inputElement) inputElement.value = (prop_value === undefined ? '' : prop_value); 1322 } 1323 } 1324 ) 1325 ; 1326 setToggles(0, 1); 1327 $(selector_first).removeClass('reading'); 1328 //console.log("Looking at styleSheet[", document.styleSheets); 1329 /*$('.vc-hue-container').on('click', (e)=>{ 1330 isSliding = true; 1331 sliderWidth = 100; 1332 console.log('container is', window.getComputedStyle(e.target)); 1333 onSliderMove(e); 1334 });*/ 1335 //console.log($('div.dashboard-popup__content')); 1336 } 1337 1338 if (is_setting_changed || selector != currentSelectors) { 1339 saved_settings = $('div.dashboard-popup__sections').clone(); 1340 is_setting_changed = 0; 1341 } 1342//console.log('_settings 0 are ',$('div.dashboard-popup__sections').clone()); 1343} 1344 1345function clearScreenStyles() { 1346 $(`style[style_id='${style_id}']`).remove(); 1347}; 1348 1349function onPaletteScrolling(e = null) { 1350 offsetY = e ? (is_outer ? e.offsetY : (e.clientY - startClientY)) : 0; 1351 if (e) { 1352 //console.log('e.clientY - startClientY ', e.clientY, startClientY, e.offsetY) 1353 //console.log(e.currentTarget.getBoundingClientRect.y, e.currentTarget.getBoundingClientRect, e.currentTarget); 1354 } 1355 //offsetY = e ? (e.currentTarget.offsetTop) : 0; //e.target.offsetTop) /*e.target.offsetHeight + */ 1356 //e.target.parentNode.offsetTop); //e.target.offsetTop 1357 let top = e ? (offsetY / sliderHeight * 100) : 0; 1358 $(pointer).css('top', top.toFixed(4) + '%'); 1359 $('.colorpicker__pallete .colorpicker__list').css('top', '-' + top.toFixed(4) + '%'); 1360} 1361 1362function setOffsetVars(e, is2d) {
1363 let className = e.target.className; 1364 if (className.includes('picker') || className.includes('circle')) { 1365 offsetX = e.target.parentNode.offsetLeft; 1366 offsetY = is2d ? e.target.parentNode.offsetTop : 0; 1367 } else if (className.includes('pointer')) { 1368 offsetX = e.target.offsetLeft; 1369 offsetY = is2d ? e.target.offsetTop : 0; 1370 } else { 1371 offsetX = e.offsetX; 1372 offsetY = is2d ? e.offsetY : 0; 1373 } 1374} 1375 1376function changeColorInput(color, isRewriting = 1) { 1377 currentColorHex = color.toUpperCase(); 1378 // console.log(currentColorHex); 1379 $(`.colorpicker__input[target_prop="${currentProp}"]`).val(currentColorHex); 1380 changeStyleCss(currentProp, currentColorHex, 1, isRewriting); 1381} 1382 1383function chooseColorTab(tab) { 1384 let tab_target = tab.getAttribute('target'); 1385 let is_current_tab = (tab_target == 'colors'); 1386 if (tab && !tab.className.includes('active')) { 1387 if (tab_target) { 1388 for (let name of ['colors', 'palettes']) { 1389 $(`div.colorpicker__wrapper.${name}`).css('display', (is_current_tab ? 'block' : 'none')); 1390 $(`ul.colorpicker__tabs > li.colorpicker__tab[target="${name}"]`).toggleClass('active'); 1391 is_current_tab = !is_current_tab; 1392 } 1393 } 1394 } 1395 if (is_current_tab) { 1396 offsetColorSliders(); 1397 } else { 1398 onPaletteScrolling(); 1399 isSliding['pltY'] = 0; 1400 } 1401} 1402 1403function offsetColorSliders() { 1404 if (currentColorRGB) { 1405//let rgbArray = currentColorRGB.slice(currentColorRGB.indexOf('(')); 1406 let rgbPure = [], i = 0, rgbArray = currentColorRGB.match(/[0-9\.]+/g); 1407 // console.log('rgbArray unsorted ', rgbArray); 1408 alpha_koef = (rgbArray.length > 3 ? Number(rgbArray.pop()) : 1); 1409 (rgbArray = rgbArray.map((n) => [Number(n) / 255, i++])).sort((a, b) => a[0] - b[0]); 1410 // console.log('currentColorRGB is ', currentColorRGB); 1411 // console.log('flat is ', currentColorRGB.match(/[0-9\.]+/g).map((n) => Number(n) / 255)); 1412 // console.log('rgbArray is ', rgbArray); 1413 let rgbKoefs = rgbArray.map(n => n[0]), rgbPoints = rgbArray.map(n => n[1]); 1414 bright_koef = rgbKoefs[2], light_koef = (bright_koef == 0 ? 1 : rgbKoefs[0] / bright_koef); 1415 let h_old = (rgbKoefs[0] == rgbKoefs[2] ? 0 : (rgbKoefs[1] - rgbK
1415oefs[0]) / (rgbKoefs[2] - rgbKoefs[0])); 1416 //h = 2 - h; 1417 // console.log('h is ', h_old); 1418 let third = rgbPoints[2], is_dsc = (third + 1) % 3 != rgbPoints[1], h = h_old; 1419 if (is_dsc) { 1420 h = 2 - h; 1421 third = (3 + third - 1) % 3; 1422 } 1423 ton_koef = h / 2 + third; //h = (ton_koef - third) * 2; 1424 let ton100 = ton_koef / 3; 1425 rgbPure[rgbPoints[0]] = 0; 1426 rgbPure[rgbPoints[1]] = Math.round(h_old * 255); 1427 rgbPure[rgbPoints[2]] = 255; 1428 // console.log('rgbPure is ', rgbPure); 1429 // console.log('ton_koef is ', ton_koef, ton100, rgbKoefs, h); 1430//pointer = .vc-${type == 's' ? 'saturation' : type}-pointer; 1431 $('.vc-hue-pointer').css('left', (ton100 * 100).toFixed(4) + '%'); 1432 $('.vc-alpha-pointer').css('left', (alpha_koef * 100).toFixed(4) + '%'); 1433 $(`.vc-saturation-pointer`).css('left', ((1 - light_koef) * 100).toFixed(4) + '%'); 1434 $(`.vc-saturation-pointer`).css('top', ((1 - bright_koef) * 100).toFixed(4) + '%'); 1435 $('.vc-saturation').css('background', `rgb(${rgbPure.join(', ')})`); 1436 1437 } 1438} 1439 1440//gets the css style from the user input in setting window 1441// and rewrites it in the css file named like the current site alias 1442function changeStyleCss(prop, value, isChangingPageStyle = 1, isRewriting = 1) { //input 1443 if (!is_setting_changed) { 1444 is_setting_changed = 1; 1445 // saved_settings = $('div.dashboard-popup__sections').clone(); 1446 } 1447 if (prop === 'text-styled') { 1448 const selector_first = (currentSelectors.includes(';') 1449 ? currentSelectors.slice(0, currentSelectors.indexOf(';')) 1450 : currentSelectors 1451 ).trim(); 1452 1453 const oldSel = currentSelectors; 1454 currentSelectors = getTextSelector(selector_first); 1455 1456 changeTextStyles(value, null, isChangingPageStyle, isRewriting); 1457 1458 currentSelectors = oldSel; 1459 return; 1460 } 1461 if (is_for_text && TEXT_STYLED_PROPS.includes(prop)) { 1462 const selector_first = (currentSelectors.includes(';') 1463 ? currentSelectors.slice(0, currentSelectors.indexOf(';')) 1464 : currentSelectors 1465 ).trim(); 1466 1467 const oldSel = currentSelectors; 1468 currentSelectors = getTextSelector(selector_first); 1469 1470 changeTextStyles(value, prop, isChangingPageStyle, isRewriting); 1471 1472 currentSelectors = oldSel; 1473 is_for_text = 0; 1474 return; 1475 } 1476 1477 currentProp = prop; 1478 if (!prop || !currentSelectors || !value && value != 0) { 1479 // console.log('is returning'); 1480 return; 1481 } 1482 1483 const textProps = ['font-weight', 'text-decoration', 'font-style', 'text-transform']; 1484 if (textProps.includes(prop) && !currentSelectors.trim().endsWith('a')) { 1485 currentSelectors += ' a'; 1486 } 1487 // console.log('is not returning', prop, currentSelectors, value, is_menu_hover); 1488 1489 let border_pos = border_width.indexOf(prop), is_label = is_shadow = isInMenuStyle = 0; 1490 old_selector = currentSelectors, is_topmenu = 0; 1491 if (border_pos != -1) { 1492 prop = 'border-width'; 1493 if (borders) { 1494 borders[border_pos] = value; 1495 } else { 1496 borders = []; 1497 for (let i = 0; i < 4; i++) { 1498 borders[i] = (i == border_pos ? value : $(`input.colorpicker__input[target_prop='${border_width[i]}']`).val()); 1499 } 1500 } 1501 value = ' ' + borders.join(' '); 1502 } 1503 /*if(prop == 'width'){ 1504 if (currentSelectors.includes('overhead')){ 1505 currentSelectors += ' div.overhead-in'; 1506 } else if (currentSelectors.includes('head-main')){ 1507 currentSelectors += ' div.head-main-in'; 1508 } else if (currentSelectors.includes('main_page-phone_number')){ 1509 currentSelectors += ' div.footer-container'; 1510 } 1511 }*/ 1512 1513 let selector_first = (currentSelectors.includes(';') ? currentSelectors.slice(0, currentSelectors.indexOf(';')) : currentSelectors); 1514 if (prop === 'menu-color') { 1515 prop = 'color'; 1516 value += ' !important'; 1517 const base = stripA(currentSelectors); 1518 currentSelectors = base + ' a'; 1519 1520 } else if (prop === 'menu-hover') { 1521 prop = 'color'; 1522 value += ' !important'; 1523 currentSelectors += ' a:hover'; 1524 } 1525 1526 // if (is_menu_color = (prop == 'menu-color')) { 1527 // prop = 'color'; 1528 // value += ' !important'; 1529 // is_for_menu = 1; 1530 // } 1531 if (is_compact_menu = (prop == 'background-color-compact')) { 1532 prop = 'background-color'; 1533 value += ' !important'; 1534 is_compact_menu = 1; 1535 } 1536 1537 if (is_for_menu) { //unite variants correctly 1538 if (prop == 'width' || prop == 'min-width') { 1539 currentSelectors = selector_first += ' .menu ul li.head_menu_li'; //it was .head_menu_li_span-text 1540 // changeStylesMap(currentSelectors, width_fixed[1] ? 'width' : 'min-width', value, 1); 1541 } else { 1542 if ((selector_first.includes("right-menu-main")) || (selector_first.includes("left-menu-main")) || (selector_first.includes("main-menu-list")) || 1543 selector_first.includes("left-menu-root") || ($(selector_first).parent(".list-left").length)) { 1544 currentSelectors = selector_first += ' a'; 1545 } else if ($(selector_first).find('.mp-bc__list').length) { 1546 currentSelectors = selector_first += ' .mp-bc__list li a'; 1547 } else { 1548 currentSelectors = selector_first += ' .menu li a'; 1549 } 1550 1551 } 1552 /*else if(is_menu_color || (is_menu_color = (prop == 'menu-color'))){ 1553 prop = 'color'; 1554 currentSelectors = selector_first += ' .menu li a'; 1555 }*/ 1556 // console.log('380 is changing'); 1557 isInMenuStyle = (is_menu_color || (is_menu_color = (prop == 'color')) || (prop == 'font-size') || (prop == 'font-family')); 1558 } else if (prop == 'min-height' && selector_first == 'body > div.head-block > div.overhead') { 1559 value += ' !important'; 1560 } else if (prop == 'block-align') { 1561 if (value == 'start') { 1562 changeStyleCss('margin-left', '0', isChangingPageStyle, isRewriting); 1563 changeStyleCss('margin-right', 'auto', isChangingPageStyle, isRewriting); 1564 } else if (value == 'center') { 1565 changeStyleCss('margin-left', 'auto', isChangingPageStyle, isRewriting); 1566 changeStyleCss('margin-right', 'auto', isChangingPageStyle, isRewriting); 1567 } else if (value == 'end') { 1568 changeStyleCss('margin-left', 'auto', isChangingPageStyle, isRewriting); 1569 changeStyleCss('margin-right', '0', isChangingPageStyle, isRewriting); 1570 } 1571 return; 1572 } else if (prop == 'font-weight' || prop == 'font-style' || prop == 'text-decoration' || prop == 'text-transform') { 1573 // if(((selector_first.includes("right-menu-main"))||(selector_first.includes("left-menu-main")) |(selector_first.includes("main-menu-list")) || ($(selector_first).parent(".list-left").length))&& !selector_first.trim().endsWith('a')){ 1574 // currentSelectors = selector_first += ' a'; 1575 // } 1576 value += ' !important'; 1577 }else if (prop == 'background-color' && selector_first.trim() == 'body.partner') { 1578 value += ' !important'; 1579 } else if (prop == 'background-attachment' && value == 'parallax') { 1580 const parallaxEl = document.querySelector(selector_first); 1581 if (parallaxEl) { 1582 parallaxEl.style.backgroundAttachment = 'fixed'; 1583 } 1584 const existingScript = document.getElementById('parallaxScript' + selector_first); 1585 if (!existingScript) { 1586 const script = document.createElement('script'); 1587 script.id = 'parallaxScript' + selector_first; 1588 script.textContent = ` 1589 window.addEventListener('scroll', function() { 1590 const parallaxContainer = document.querySelector('${selector_first}'); 1591 if (parallaxContainer) { 1592 let scrollPosition = window.pageYOffset; 1593 parallaxContainer.style.backgroundPositionY = scrollPosition * 0.1 + 'px'; 1594 } 1595 }); 1596 `; 1597 document.body.appendChild(script); 1598 } 1599 } else if (prop == 'background-attachment' && value == 'fixed') { 1600 const existingScript = document.getElementById('parallaxScript' + selector_first); 1601 if (existingScript) { 1602 existingScript.remove(); 1603 } 1604 } else if (prop === 'translate-x' || prop === 'translate-y' || prop === 'rotate') { 1605 const el = document.querySelector(selector_first); 1606 let tx = '0px', ty = '0px', rot = '0deg'; 1607 if (el) { 1608 const t = el.style.transform || ''; 1609 const txM = t.match(/translateX\(([^)]+)\)/); 1610 const tyM = t.match(/translateY\(([^)]+)\)/); 1611 const rotM = t.match(/rotate\(([^)]+)\)/); 1612 if (txM) tx = txM[1]; 1613 if (tyM) ty = tyM[1]; 1614 if (rotM) rot = rotM[1]; 1615 } 1616 if (prop === 'translate-x') tx = value.replace(/px$/i, '') + 'px'; 1617 else if (prop === 'translate-y') ty = value.replace(/px$/i, '') + 'px'; 1618 else rot = value.replace(/deg$/i, '') + 'deg'; 1619 prop = 'transform'; 1620 value = `translateX(${tx}) translateY(${ty}) rotate(${rot})`; 1621 } else if (prop == 'max-width' || prop == 'width' || prop == 'min-height' || prop == 'height') { 1622 value += '!important'; 1623 } else if (prop == 'background-attachment' && value == 'scroll') { 1624 const parallaxEl = document.querySelector(selector_first); 1625 if (parallaxEl) { 1626 parallaxEl.style.backgroundAttachment = 'scroll'; 1627 } 1628 const existingScript = document.getElementById('parallaxScript' + selector_first); 1629 if (existingScript) { 1630 existingScript.remove(); 1631 } 1632 } else if (is_label = prop == 'label') { 1633 prop = 'width'; 1634 let menu_type = selector_first.includes('main_page-phone_number') ? 'nested' : 'main'; 1635 currentSelectors = selector_first += ` ul.${menu_type}-menu-list li.head_menu_li:not(.dropdown-item):not(.dropdown-submenu) > a > .head_menu_li_span_bg`; 1636 value += ' !important'; 1637 } else if (is_shadow = prop == 'box-shadow') { 1638 // console.log('it is box-shadow'); 1639 is_topmenu = selector_first.includes('over') ? 1 : 0; 1640 currentSelectors = selector_first = is_topmenu ? 'body > div.head-block > .overhead:has(~ div.head-main.menu-narrow)' : 'body > div.head-block > .head-main.menu-narrow'; 1641 value = ((is_shadow_checked[is_topmenu] = value) ? '0 16px 48px #00000029' : 'none'); 1642 } else if (is_alignAuto = prop == 'text-align-auto') { 1643 // console.log('it is box-shadow'); 1644 value = ((is_shadow_checked[is_topmenu] = value) ? '0 16px 48px #00000029' : 'none'); 1645 } else if (is_compact_menu || (is_compact_menu = (prop == 'background-color-compact'))) { 1646 console.log("eee"); 1647 prop = 'background-color'; 1648 currentSelectors = selector_first += '.menu-narrow'; 1649 // value += '!important' // 1650 } else if (prop == 'repeat') { 1651 1652 if (value.includes(':')) { 1653 if (!value.includes('background-size')) { 1654 value += '; background-size: initial'; 1655 } 1656 let styles = value.split(';'); 1657 for (let style of styles) { 1658 if (style) { 1659 style = style.trim() 1660 if (style.includes(':')) { 1661 let words = style.split(':'); 1662 prop = ((prop = words[0]) == 'repeat' ? 'background-repeat' : prop); 1663 if (!prop) { 1664 continue; 1665 } 1666 let val = words[1] ? words[1].trim() : 'unset'; 1667 changeStyleCss(prop.trim(), val ? val : 'unset'); 1668 } 1669 } 1670 } 1671 return; 1672 } else { 1673 prop = 'background-repeat'; 1674 } 1675 } 1676//soglasovat s verhnim 1677 if (is_footer_inner || (is_footer_inner = (prop == 'color' && currentSelectors == 'body > div.main_page-phone_number'))) { 1678 currentSelectors = selector_first = 'body > div.main_page-phone_number div.main_page-phone_number_content'; 1679 } 1680 // console.log('isInMenuStyle', isInMenuStyle, prop); 1681 1682 1683 if (isInMenuStyle || prop == 'styled') { 1684 //console.log("isInMenuStyle"); 1685 if (prop === 'styled') { 1686 const styledSel = getMenuLinkSelector(selector_first); 1687 const oldSel = currentSelectors; 1688 currentSelectors = styledSel; 1689 1690 changeMenuStyles(value, null, isChangingPageStyle, isRewriting); 1691 currentSelectors = oldSel; 1692 } else { 1693 changeMenuStyles(value, prop, isChangingPageStyle, isRewriting); 1694 } 1695 1696 isInMenuStyle = 1; 1697 } 1698 1699 /*if(prop.includes('color')){ 1700 //if(!/#([\da-fA-F]{3})|([\da-fA-F]{6})/.test(value)){ 1701 if(!/#[\da-fA-F]{3,8}/.test(value)){ 1702 return; 1703 } 1704 }*/ //make validation later 1705 if (isRewriting) { 1706 console.log("top4"); 1707 //console.log("isRewriting", currentSelectors,"sx", prop, value); 1708 // console.log('isRewriting', currentSelectors, prop, value); 1709 1710 if (isInMenuStyle) { 1711 1712 } else { 1713 console.log("top11"); 1714 changeStylesMap(currentSelectors, prop, value); 1715 if (isChangingPageStyle) { //POSSIBLE REFACTOR THIS 1716 console.log("top12", currentSelectors, prop, value); 1717 //changeStyleOnPage(prop, value, 0, is_label || is_menu_hover, is_label); 1718 //changeStyleOnPage(prop, value, is_shadow ? (is_topmenu ? 'body > div.head-block > div.overhead:has(~ div.head-main.menu-narrow)' : 'body > div.head-block > div.head-main.menu-narrow') : 0, is_label); 1719 changeStyleOnPage(prop, value, 0, is_label); 1720 } 1721 if (is_shadow) { 1722 console.log("top13"); 1723 currentSelectors = old_selector; 1724 } 1725 1726 } 1727 if (is_label || is_menu_color || is_menu_hover || is_footer_inner || is_for_menu || is_compact_menu) { 1728 console.log("yep") 1729 if (is_label && !currentSelectors.includes(' div.head-main ')) { 1730 console.log("top"); 1731 changeStylesMap(currentSelectors, 'height', value); 1732 changeStyleOnPage('height', value, currentSelectors); 1733 } 1734 currentSelectors = old_selector; 1735 is_menu_color = is_menu_hover = is_for_menu = is_footer_inner = is_compact_menu = 0; 1736 // console.log('isSuccess', currentSelectors, prop, value); 1737 } 1738 old_selector = null; 1739 } else { 1740 //console.log("last"); 1741 if (isChangingPageStyle && !isInMenuStyle) { 1742 console.log("top10"); 1743 changeStyleOnPage(prop, value); 1744 } 1745 } 1746} 1747 1748function uploadImg(filepicker) { 1749 1750 let formData = new FormData(); 1751 formData.append('file', filepicker.files[0]); 1752 formData.append('selector', currentSelectors); 1753 selector = currentSelectors; 1754 1755 // changeStylesMap(currentSelectors, prop, value); 1756 1757 $.ajax({ 1758 type: "POST", 1759 url: '/CMS/AJAX/upload_bg_image.php', 1760 cache: false, 1761 contentType: false, 1762 processData: false, 1763 data: formData, 1764 dataType: 'json', 1765 beforeSend: function () { 1766 $('.lds-dual-ring').show(); 1767 }, 1768 success: function (msg) { 1769 console.log('Response is: ', msg.url); 1770 changeStylesMap(currentSelectors, 'background-image', msg.url); 1771 $(currentSelectors).css('background-image', msg.url); 1772 $('.bg-block-image-upload label[for="bg_file_input"]').css('background-image', msg.url); 1773 // $("#bg_file_inputPreview").css('background-image', msg.url); 1774 1775 }, 1776 error: function (msg) { 1777 // console.log('msg is ', msg.responseText); 1778 $(currentSelectors).css('background-image', msg.url); 1779 //$('.footer-container').css('background-image', "url('/CMS/storage/dev/white-clouds.jpg')"); 1780 }, 1781 complete: function () { 1782 $('.lds-dual-ring').hide(); // СкÑÑÑÑ Ð»Ð¾Ð°Ð´ÐµÑ 1783 } 1784 }); 1785} 1786 1787function changeStyleOnPage(prop, value, selector = '',/*in_header = 0,*/ is
1787_label = 0, is_removing = 0) { 1788 if (!selector) { 1789 selector = currentSelectors; 1790 } 1791 console.log("test17", prop); 1792 if (prop.includes('color')) { 1793 $(`.color_display[target_prop=${is_menu_color ? 'menu-color' : (is_compact_menu ? 'background-color-compact' : (is_menu_hover ? 'menu-hover' : prop))}]`).css('background-color', value); 1794 // $(`.color_display[target_prop=${is_compact_menu ? 'background-color-compact' : prop)}]`).css('background-color', value); 1795 } 1796 1797 // console.log('changeStyleOnPage', prop, value, selector); 1798 let foundSheet = is_found = 0, css_txt = '', 1799 selector_parts = (selector.includes(';') ? selector.split(";") : [selector]); 1800 for (let selector of selector_parts) { 1801 // if(in_header && is_label){ 1802 if (is_label) { 1803 selector = selector.replace('.head_menu_li_span_bg', 'span.head_menu_li_span_bg'); 1804 } 1805 $.each(document.styleSheets, function (sheetIndex, sheet) { 1806 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 1807 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 1808 $.each((foundSheet = sheet).cssRules, function (ruleIndex, rule) { 1809 //console.log(rule) 1810 // console.log("rule[" + ruleIndex + "]: " + rule.cssText, selector); 1811 if ((css_txt = rule.cssText).startsWith(selector + ' {')) { 1812 // rule.style[prop] = is_removing ? null : value.replace(' !important', ''); 1813 1814 let cleanValue = typeof value === 'string' ? value.replace(/\s*!important\s*/g, '') : value; 1815 rule.style.setProperty(prop, is_removing ? null : cleanValue, is_removing ? '' : 'important'); 1816 1817 //бÑло Ñак на 18.04.25 rule.style[prop] = is_removing ? null : (typeof value === 'string' ? value.replace(' !important', '') : value); 1818 1819 1820 //console.log("rule[prop]" + prop, value, rule[prop]); 1821 //sheet.cssRules[ruleIndex][prop] = value; 1822 //console.log(sheet.cssRules, ruleIndex); 1823 // return !(is_found = true); 1824 //if(is_shadow){sheet.deleteRule(ruleIndex)}; 1825 is_found = true; 1826 } 1827 }); //add here if is abscent 1828 console.log("test777"); 1829 return false; 1830 } 1831 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 1832 }); 1833 // console.log(foundSheet, is_removing, is_found, `${selector} { ${prop}: ${value};}`) 1834 if (foundSheet && !(is_removing || is_found)) { 1835 console.log("test9", value); 1836 foundSheet.insertRule(`${selector} { ${prop}: ${value.replace('!important', '')};}`, foundSheet.cssRules.length); 1837 } 1838 if (prop == 'min-height' && selector.includes('head-block')) { 1839 $(selector).css('min-height', value.replace('!important', '')); 1840 } 1841 return; //archive 1842 if (is_removing) { 1843 1844 let soughtStyle = `${selector} { ${prop}: ${value}; }`; 1845 $("style[style_id]").each(function () { 1846 if ($(this).text() == soughtStyle) { 1847 $(this).remove(); 1848 } 1849 }); 1850 } else { 1851 let styleTag = $(`<style type="text/css" style_id="${style_id}"> ${selector} { ${prop}: ${value}; }</style>`) 1852 $('html > head').append(styleTag); 1853 // console.log('styleTag', styleTag, $('html > head')[0].innerHTML); 1854 } 1855 } 1856} 1857 1858function setPaletteVisible(is_vis = 1, target_prop = null) { 1859 if (is_vis) { 1860 $('div.colorpicker__shadow').addClass('block'); 1861 } else { 1862 $('div.colorpicker__shadow').removeClass('block'); 1863 } 1864 //$('div.colorpicker__shadow').css('display', is_vis ? 'block' : 'none'); 1865 //palette.css('visibility', is_vis ? 'visible' : 'hidden'); 1866 if (is_vis && target_prop) { 1867 let paletteTab = document.querySelector('ul.colorpicker__tabs > li.colorpicker__tab[target="palettes"]'); 1868 chooseColorTab(paletteTab); 1869 //currentProp = target_prop; 1870 //console.log('target_prop is', target_prop); 1871 // $('div.colorpicker__shadow').focus(); 1872 } 1873} 1874 1875/*$(document).mouseup(function (e) { 1876 if (palette.has(e.target).length === 0){ 1877 setPaletteVisible(0); 1878 } 1879});*/ 1880function closeColorPicker() { 1881 1882 setPaletteVisible(0); 1883} 1884 1885$(document).click(function (e) { 1886 //palette.hide(); 1887 //console.log('target', e.target.className, e); 1888 //if(!(e.target.className == 'color_display' || e.target.className == 'colorpicker__shadow')){ 1889 //console.log('target', e.target.className, e); //innerHTML 1890 //console.log('innerHTML', $('.colorpicker__shadow').html(), 'target2', e.target.constructor.name, typeof e.target); 1891 if (!is_popup_vis) { 1892 if (e.target.className == 'dashboard-popup background-settings') { 1893 showBlockSettings('x'); 1894 setPaletteVisible(0); 1895 } else { 1896 let is_palette = $('.colorpicker__shadow').length && $('.colorpicker__shadow').html().includes(e.target.outerHTML); 1897 //let is_setting = $('.dashboard-popup__window').html().includes(e.target.outerHTML); 1898 //if(palette){ 1899 if (!(['color_display', 'colorpicker__shadow'].includes(e.target.className) || is_palette)) { 1900 // console.log('class is', e.target.className); 1901 setPaletteVisible(0); 1902 } 1903 } 1904 1905 } 1906 1907 1908 /*if(!(e.target.className.includes('dashboard-popup__window')) || e.target.parentNode.className.includes('setting_editor') || is_palette || is_setting){ 1909 console.log('class is', e.target.className); 1910 showBlockSettings(0); 1911 }*/ 1912 1913 1914}); 1915 1916function onColorSliderMove(type, offsetX, offsetY = 0) { 1917 let left = Math.round(offsetX) / sliderWidth * 100; 1918 $(pointer).css('left', left.toFixed(4) + '%');
1919 //$(`.vc-${type}-pointer`).css('left', left.toFixed(4)+'%'); 1920 /*let ton_koef = (offset/sliderWidth)*2 - 1; 1921 //console.log(offset, sliderWidth, left, ton_koef); 1922 let offset_array = [0, -2/3, 2/3], color, rgb = []; 1923 for(let i = 0; i < 3; i++){ 1924 color = ton_koef + offset_array[i]; 1925 if(color < 0){ 1926 color = - color; 1927 } 1928 if(color > 1){ 1929 color = 2 - color; 1930 } //(color*255).toFixed(4); 1931 rgb[i] = Math.round(color*255); 1932 } 1933 console.log(rgb);*/ 1934 if (type == 's') { 1935 let top = Math.round(offsetY / sliderHeight * 100); 1936 $(pointer).css('top', top.toFixed(4) + '%'); 1937 light_koef = 1 - offsetX / sliderWidth; 1938 bright_koef = 1 - offsetY / sliderHeight; 1939 } else if (type == 'hue') { 1940 ton_koef = (offsetX / sliderWidth) * 3; 1941 } else { 1942 alpha_koef = offsetX / sliderWidth; 1943 } 1944 calcPaletteRGB(); 1945} 1946 1947function calcPaletteRGB() { 1948 let rgb_result = Array(3).fill(255 * bright_koef), rgb_pure = [0, 0, 0], type; 1949 const third_to_color0 = [2, 0, 1, 1]; 1950 const color0_to_max_and_var = {asc: [[1, 2], [2, 0], [0, 1]], dsc: [[2, 1], [0, 2], [1, 0]]}; 1951 // console.log('ton_koef is ', ton_koef); 1952 let third = Math.floor(ton_koef), color_koef = (ton_koef - third) * 2; 1953 let direct = color_koef < 1 ? 'asc' : 'dsc', color0 = third_to_color0[third]; 1954 //console.log(color0_to_max_and_var, direct, color0); 1955 let [color255, color_var] = color0_to_max_and_var[direct][color0]; 1956 if (direct == 'dsc') { 1957 color_koef = 2 - color_koef; 1958 } 1959 rgb_pure[color255] = 255; 1960 rgb_pure[color_var] = 255 * color_koef; 1961 rgb_result[color0] *= light_koef; 1962 rgb_result[color_var] *= color_koef + light_koef * (1 - color_koef); 1963 rgb_result = rgb_result.map((num) => Math.round(num)); 1964 //rgb_str = `rgb(${rgb_result.map((num) => Math.round(num)).join(', ')})`; 1965 type = 'rgb'; 1966 if (alpha_koef == 1) { 1967 type = 'rgb'; 1968 } else { 1969 type = 'rgba'; 1970 rgb_result.push(alpha_koef); 1971 } 1972 rgb_result = `${type}(${rgb_result.join(', ')})`; 1973 rgb_pure = `rgb(${rgb_pure.join(', ')})`; 1974 $('.vc-sketch-active-color').css('background', rgb_result); 1975 $('.vc-saturation').css('background', rgb_pure); 1976 // console.log('rgb_str is ', rgb_result); 1977 //rgb_str = 'rgb(255, 189, 0)'; 1978 changeColorInput(rgba2hex(rgb_result)); 1979} 1980 1981function deleteBgImage() { 1982 changeStyleCss('background-image', 'none'); 1983 document.getElementById('bg_file_input').value = null; 1984 $(currentSelectors).css('background-image', 'none'); 1985 $('.bg-block-image-upload label[for="bg_file_input"]').css('background-image', 'none'); 1986 1987 //$('#bg_file_input').val(null); 1988} 1989 1990function applyStylesAjax() { 1991 1992 //let is_in_header = currentSelectors.includes('head-block'); 1993 1994 1995 let ajax_data = {}; 1996 1997 let styles_ajax = (selector, prop, input, action = null, action_val = null) => { 1998 1999 2000 //console.log(data); 2001 switch (action) { 2002 case 'd': 2003 case 'p': 2004 data.mode = action; 2005 break; 2006 case 'e':
2007 data['enabled'] = toggle_ars[0][0] = (Number(action_val) == 1 ? 1 : 0); 2008 // console.log('data is ', data); 2009 2010 case 'r': 2011 data.mode = 'd'; 2012 break; 2013 case 'e': 2014 case 'f': 2015 case 'i': 2016 data[is_edit ? 'enabled' : 'iconleft'] = icon_left[is_edit][0] = (Number(action_val) == 1 ? 1 : 0); 2017 } 2018 $.ajax({ 2019 type: 'POST', 2020 data: data, 2021 url: "CMS/AJAX/change_css_from_settings.php", 2022 async: true, 2023 success: function (msg) { 2024 console.log('apply msg is ', msg, msg.responseText, data); 2025 }, 2026 error: function (msg) { 2027 console.log('error apply msg is ', msg.responseText); 2028 //$('.footer-container').css('background-image', "url('/CMS/storage/dev/white-clouds.jpg')"); 2029 } 2030 }); //add here 2031 } 2032 // console.log('data.enabled', data.enabled); 2033 let style_data = {}, width_props = null, new_width = null, is_width_fixed_changed = 0; 2034 2035 for (let i = 0, toggle_ar; i < 3; i++) { 2036 if ((toggle_ar = toggle_ars[i])[0] != toggle_ar[1]) { 2037 switch (i) { 2038 case 0:
2039 ajax_data['enabled'] = toggle_ar[1]; 2040 //styles_ajax(null, null, null, 'e', toggle_ar[1]); 2041 break; 2042 case 1: 2043 stylesMap ? 0 : (stylesMap = new Map()); 2044 is_width_fixed_changed = 1; 2045 console.log(stylesMap, currentSelectors + ' .menu ul li.head_menu_li'); 2046 let style_map = stylesMap.get(currentSelectors + ' .menu ul li.head_menu_li'); 2047 if (!style_map) { 2048 stylesMap.set(currentSelectors + ' .menu ul li.head_menu_li', (style_map = new Map())); 2049 } 2050 width_props = toggle_ar[1] ? ['min-width', 'width'] : ['width', 'min-width']; 2051 for (let prop of width_props) { 2052 if (style_map.has(prop)) { 2053 new_width = prop + ': ' + style_map.get(prop) 2054 style_map.delete(prop); 2055 } 2056 ; 2057 } 2058 //styles_ajax(currentSelectors + ' .menu ul li.head_menu_li', width_props[0], width_props[1], 'p'); 2059 //style_map.set(width_props[1], style_map[width_props[0]]); 2060 2061 break; 2062 case 2: 2063 stylesMap ? 0 : (stylesMap = new Map()); 2064 let map_selector = stylesMap.get(currentSelectors + ' .menu li a'); 2065 if (!map_selector) { 2066 map_selector = new Map(); 2067 stylesMap.set(currentSelectors + ' .menu li a', map_selector); 2068 } 2069 map_selector.set('display', toggle_ar[1] ? 'flex' : 'grid'); 2070 } 2071 } 2072 } 2073 console.log(currentSelectors); 2074 console.log('stylesMap', stylesMap); 2075 for (let [selector, innerMap] of stylesMap) { 2076 let entries; 2077 if (!(innerMap && (entries = innerMap.entries()))) { 2078 continue; 2079 } 2080 //check if empty, convert map to array or object 2081 let selector_changes = {v: Object.fromEntries(entries)}; 2082 if (removingMap && removingMap.has(selector)) { 2083 selector_changes['d'] = Object.fromEntries(removingMap.get(selector).entries()); 2084 removingMap.remove(selector); 2085 } 2086 2087 style_data[selector] = selector_changes; 2088 2089 } //ÑоглаÑоваÑÑ Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ñобой 2090 if (removingMap) { //if not empty 2091 for (let [selector, innerMap] of removingMap) { 2092 //check if empty, convert map to array or object 2093 2094 //if ajax_data has not selector - 2095 style_data[selector] = {'d': Object.fromEntries(innerMap.entries())}; 2096 /*for (let [prop, val] of props) { 2097 styles_ajax(selector, prop, val, 'd', 1); 2098 }*/ 2099 } 2100 removingMap.clear(); 2101 } 2102 2103 if (currentSelectors.includes('head-block')) { 2104 //console.log('top_height is ', top_height); 2105 let top_height = $('body > div.head-block').css('height'); 2106 top_height = Number(top_height.match(/\d+\.?\d*/)) + 'px'; 2107 //changeStylesMap('body.partner', 'margin-top', top_height); 2108 //styles_ajax('body.partner', 'margin-top', top_height); 2109 (style_data['body.partner']) || (style_data['body.partner'] = {}); 2110 (style_data['body.partner']['v']) || (style_data['body.partner']['v'] = {}); 2111 style_data['body.partner']['v']['margin-top'] = top_height + ' !important'; 2112 changeStyleOnPage('margin-top', top_height, 'body.partner'); 2113 } 2114 2115 if (is_width_fixed_changed) { 2116 let key = new_width ? 'b' : 'p'; 2117 (style_data[currentSelectors + ' .menu ul li.head_menu_li'][key]) || (style_data[currentSelectors + ' .menu ul li.head_menu_li'][key] = {}); 2118 style_data[currentSelectors + ' .menu ul li.head_menu_li'][new_width ? 'b' : 'p'][width_props[0]] = (new_width ?? width_props[1]); 2119 } 2120 2121 /*if (edit_enable[0] != edit_enable[1]){ 2122 styles_ajax(null, null, null, 'e', edit_enable[1]); 2123 } //icon_left 2124 if (width_fixed[0] != width_fixed[1]){ 2125 styles_ajax(null, null, null, 'f', width_fixed[1]); 2126 } 2127 if (icon_top[0] != icon_top[1]){ 2128 styles_ajax(null, null, null, 'i', icon_top[1]); 2129 }*/ 2130//} 2131 2132 2133 /*function removeStyleInMap(selector, prop, input){ 2134 if(!removingMap){ 2135 removingMap = new Map(); 2136 } 2137 if(removingMap.has(selector)){ 2138 removingMap.get(selector).add(prop); 2139 } else { 2140 let innerSet = new Set(); 2141 innerSet.add(prop); 2142 removingMap.set(selector, innerSet); 2143 } 2144 }*/ 2145 2146 if (Object.keys(style_data).length > 0) { 2147 ajax_data['selectors'] = style_data; 2148 } 2149 2150 console.log(ajax_data['selectors'], "test_selectors"); 2151 $.ajax({ 2152 type: 'POST', 2153 data: ajax_data, 2154 url: "CMS/AJAX/change_css_from_settings.php", 2155 async: true, 2156 success: function (msg) { 2157 console.log('apply msg is ', msg, msg.responseText); 2158 console.log(ajax_data); 2159 if (reloadParentAfterSave) { 2160 reloadParentAfterSave = 0; 2161 reloadParentPage(); 2162 } 2163 }, 2164 error: function (msg) { 2165 console.log('error apply msg is ', msg.responseText); 2166 //$('.footer-container').css('background-image', "url('/CMS/storage/dev/white-clouds.jpg')"); 2167 } 2168 }); //add here 2169 2170} 2171 2172function changeStylesMap(selector, prop, input, is_removing = 0) { 2173 if (is_removing && !removingMap) { 2174 removingMap = new Map(); 2175 } 2176 let map = is_removing ? removingMap : stylesMap; 2177 if (map.has(selector)) { 2178 map.get(selector).set(prop, input); 2179 } else { 2180 let innerMap = new Map(); 2181 innerMap.set(prop, input); 2182 map.set(selector, innerMap); 2183 // console.log('innerMap', innerMap); 2184 } 2185 if (is_removing) {
2186 // console.log('removingMap', removingMap); 2187 } 2188 /*if(selector.includes('head-block')){ 2189 //console.log('top_height is ', top_height); 2190 let top_height = $('body > div.head-block').css('height'); 2191 top_height = Number(top_height.match(/\d+\.?\d*?/)) + 'px'; 2192 changeStylesMap('body.partner', 'margin-top', top_height); 2193 changeStyleOnPage('margin-top', top_height, 'body.partner'); 2194 }*/ 2195 const $elBorder = $(selector); 2196 $elBorder.removeClass('partner_section'); 2197 const borderStyle = $elBorder.css('border-style'); 2198 $elBorder.addClass('partner_section'); 2199 if (!is_removing && prop.includes('border') && prop != 'border-style' && borderStyle === 'none') { 2200 console.log("testBorder2"); 2201 changeStylesMap(currentSelectors, 'border-style', 'solid'); 2202 changeStyleOnPage('border-style', 'solid', selector); 2203 } 2204} 2205 2206function splitStyles(value) { 2207 let parts, style_name, style_value, styles = value.split(';'), result = {}; 2208 // console.log('style is', styles); 2209 for (let style of styles) { 2210 if (parts = style.split(':')) { 2211 [style_name, style_value] = parts; 2212 // console.log('name is', style_name, style_value, parts); 2213 if (style_name && style_value && (style_name = style_name.trim()) && (style_value = style_value.trim())) { 2214 result[style_name] = style_value; 2215 // console.log('name is', style_name, style_value); 2216 //changeStylesMap(currentSelectors, style_name, style_value); 2217 //changeStyleOnPage(style_name, style_value, currentSelectors); 2218 } 2219 } 2220 } 2221 return result; 2222} 2223 2224function changeMenuStyles(style_string, prop, isChangingPageStyle, isRewriting) { 2225 let value; 2226 if (prop) { 2227 value = style_string; 2228 } else if (style_string == saved_style) { 2229 // еÑли ÑÑÑока не изменилаÑÑ â ниÑего не делаем 2230 return; 2231 } 2232 2233 // акÑÑалÑнÑÑ ÑÑÑÐ¾ÐºÑ styled 2234 if (!style_string) { 2235 style_string = $('textarea[target_prop="styled"]').val(); 2236 } 2237 console.log("saved_style",saved_style); 2238 if (!saved_style_arr) { 2239 saved_style_arr = splitStyles(prop 2240 ? $('textarea[target_prop="styled"]').val() 2241 : saved_style); 2242 } 2243 let currentStyles = prop ? saved_style_arr : splitStyles(style_string); 2244 let rewriteDiff = {}, removeDiff = {}; 2245 let difs = [rewriteDiff, removeDiff]; 2246 let menu_styles = [currentStyles, saved_style_arr]; 2247 2248 if (prop) { 2249 let is_deleting = (value ? (!(value = value.trim())) : (value !== '0' && value !== 0)); 2250 2251 currentStyles[prop] = is_deleting ? null : value; 2252 2253 // ÐÑименÑем визÑалÑно (вÑÐ·Ð¾Ð²ÐµÑ changeStyleOnPage + changeStylesMap) 2254 console.log("changeRelatedProps",prop,value); 2255 changeRelatedProps(prop, value, isChangingPageStyle, isRewriting, is_deleting, 0); 2256 2257 // ÐбновлÑем ÑÑÑÐ¾ÐºÑ styled в textarea 2258 let prop_template = new RegExp('(?<!-)\\b' + prop + '\\s*:.*?;', 'g'); 2259 let prop_value = $('textarea[target_prop="styled"]').val(); 2260 2261 if (is_deleting) { 2262 if (prop_template.exec(prop_value)) { 2263 style_string = prop_value.replaceAll(prop_template, ''); 2264 } 2265 } else { 2266 style_string = prop_template.exec(prop_value) 2267 ? prop_value.replaceAll(prop_template, `${prop}: ${value};`) 2268 : (prop_value + `${prop}: ${value};`); 2269 } 2270 2271 $('textarea[target_prop="styled"]').val(style_string); 2272 2273 } else { 2274 //еÑли вÑÑ ÑÑÑоки изменилаÑÑ 2275 for (let i = 0, styles_a; i < 2; i++) { 2276 let styles_b = menu_styles[1 - i]; 2277 let dif = difs[i]; 2278 for (let key in (styles_a = menu_styles[i])) { 2279 if (!(styles_b.hasOwnProperty(key) && (i ? 1 : styles_b[key] == styles_a[key]))) { 2280 dif[key] = styles_a[key]; 2281 } 2282 } 2283 2284 if (Object.keys(dif).length) { 2285 for (let key in dif) { 2286 let val = dif[key]; 2287 2288 // ð¥ ÐобавлÑем !important, еÑли его Ð
2288½ÐµÑ 2289 if (typeof val === 'string' && !/!important/i.test(val)) { 2290 val = val.trim() + ' !important'; 2291 } 2292 2293 console.log("changeRelatedProps2", key, val); 2294 changeRelatedProps(key, val, isChangingPageStyle, isRewriting, i); 2295 } 2296 } 2297 } 2298 } 2299 if (style_string && !style_string.includes('!important')) { 2300 style_string = style_string.replace(/:\s*([^;]+);/g, ': $1 !important;'); 2301 2302 } 2303 2304 // === 7ï¸â£ ÐбновлÑем бÑÑеÑÑ ÑоÑÑоÑÐ½Ð¸Ñ === 2305 saved_style_arr = currentStyles; 2306 saved_style = style_string; 2307} 2308function syncTextInputsFromTextStyled(obj) { 2309 const $sec = $('#settings_popup section.tab-section[value="text"]'); 2310 2311 // ÑÐ²ÐµÑ 2312 if (obj.color) { 2313 const clean = obj.color.replace(/\s*!important\s*/gi,'').trim(); 2314 $sec.find('button.color_display[target_prop="color"]').css('background-color', clean); 2315 // в инпÑÑ Ð¿Ð¸Ñем HEX (как Ñ ÑÐµÐ±Ñ Ð² менÑ) 2316 const hex = /rgba?\(/i.test(clean) ? rgba2hex(clean) : clean; 2317 $sec.find('input.colorpicker__input[target_prop="color"]').val(hex); 2318 } 2319 2320 // font-size 2321 if (obj['font-size']) { 2322 $sec.find('input.colorpicker__input[target_prop="font-size"]').val( 2323 obj['font-size'].replace(/\s*!important\s*/gi,'').trim() 2324 ); 2325 } 2326 2327 // font-family 2328 if (obj['font-family']) { 2329 const fam = obj['font-family'].replace(/\s*!important\s*/gi,'').trim(); 2330 $('#text_font_select').val(fam); 2331 } 2332} 2333 2334function changeRelatedTextProps(key, value, isChangingPageStyle, isRewriting, is_removing = 0) { 2335 const cleanValue = (typeof value === 'string') 2336 ? value.replace(/\s*!important\s*/gi,'').trim() 2337 : value; 2338 2339 // UI ÑÐ¸Ð½Ñ ÑонизаÑÐ¸Ñ 2340 const obj = {}; 2341 if (!is_removing && cleanValue != null) obj[key] = cleanValue; 2342 syncTextInputsFromTextStyled(obj); 2343 2344 // пÑименÑем в каÑÑÑ Ð¸ на ÑÑÑаниÑÑ 2345 const vImp = is_removing ? '' : normalizeImportant(cleanValue); 2346 2347 if (isRewriting) { 2348 changeStylesMap(currentSelectors, key, vImp, is_removing); 2349 } 2350 if (isChangingPageStyle) { 2351 changeStyleOnPage(key, vImp, currentSelectors, 0, is_removing); 2352 } 2353} 2354 2355function changeTextStyles(style_string, prop, isChangingPageStyle, isRewriting) { 2356 const $ta = $('#settings_popup textarea[target_prop="text-styled"]'); 2357 2358 if (!saved_text_style_arr) { 2359 saved_text_style_arr = splitStyles($ta.val() || ''); 2360 } 2361 2362 // 1) изменили ÐÐÐÐ ÑвойÑÑво (из инпÑÑов color/font-size/font-family) 2363 if (prop) { 2364 const v = (style_string ?? '').toString().trim(); 2365 const is_del = (!v && v !== '0'); 2366 2367 if (is_del) { 2368 delete saved_text_style_arr[prop]; 2369 changeRelatedTextProps(prop, null, isChangingPageStyle, isRewriting, 1); 2370 } else { 2371 saved_text_style_arr[prop] = v; 2372 changeRelatedTextProps(prop, v, isChangingPageStyle, isRewriting, 0); 2373 } 2374 2375 const rebuilt = buildStyledStringFromObj(saved_text_style_arr); 2376 $ta.val(rebuilt); 2377 saved_text_style = rebuilt; 2378 return; 2379 } 2380 2381 // 2) изменили ÐСЮ ÑÑÑÐ¾ÐºÑ (в textarea) 2382 if (style_string === saved_text_style) return; 2383 2384 const newObj = splitStyles(style_string || ''); 2385 2386 // ÑдалÑннÑе 2387 for (const k in saved_text_style_arr) { 2388 if (!(k in newObj)) { 2389 changeRelatedTextProps(k, null, isChangingPageStyle, isRewriting, 1); 2390 } 2391 } 2392 // добавленнÑе/изменÑннÑе 2393 for (const k in newObj) { 2394 if (saved_text_style_arr[k] !== newObj[k]) { 2395 changeRelatedTextProps(k, newObj[k], isChangingPageStyle, isRewriting, 0); 2396 } 2397 } 2398 2399 saved_text_style_arr = newObj; 2400 2401 // ноÑмализÑем !important 2402 let norm = (style_string || '').trim(); 2403 if (norm && !/!important/i.test(norm)) { 2404 norm = norm.replace(/:\s*([^;]+);/g, ': $1 !important;'); 2405 } 2406 $ta.val(norm); 2407 saved_text_style = norm; 2408 2409 // ÑÐ¸Ð½Ñ ÑонизиÑÑем L_text_color / L_text_fontsize / L_text_font 2410 syncTextInputsFromTextStyled(saved_text_style_arr); 2411} 2412 2413function changeRelatedProps(key, value, isChangingPageStyle, isRewriting, is_removing = 0, affectInput = 1) { 2414 console.log("currentSelectors3",key,value); 2415 console.log("is_removing",is_removing); 2416 if (isRewriting) { 2417 //console.log("keeyy",key); 2418 if (affectInput) { 2419 if (key == 'color') { 2420 let button = $('button.color_display[target_prop="menu-color"]'); 2421 const cleanValue = typeof value === 'string' ? value.replace(/\s*!important\s*/gi, '').trim() : value; 2422 button.css('background', cleanValue); 2423 const hexValue = rgba2hex(button.css('background-color')); 2424 $('input[target_prop="menu-color"]').val(hexValue); 2425 } else if (key == 'font-size') { 2426 $('input[target_prop="menu-font-size"]').val(value); 2427 } else if (key == 'font-family') { 2428 // console.log(key); 2429 let select = $('#menu_font_select'), has_option = 0; 2430 if (select.val() != value) { 2431 // console.log(value); 2432 $("#menu_font_select option").each(function () { 2433 if ($(this).val() == value) { 2434 select.val(value); 2435 has_option = 1; 2436 return false;
2437 } 2438 // Add $(this).val() to your list 2439 }); 2440 // console.log('select.val', select.val(), has_option); 2441 if (!has_option) { 2442 select.val(''); 2443 } 2444 } 2445 } 2446 } 2447 console.log("currentSelectors2",currentSelectors,key,value); 2448 changeStylesMap(currentSelectors, key, value, is_removing); 2449 } 2450 isChangingPageStyle && changeStyleOnPage(key, value, currentSelectors, 0, is_removing); 2451 // console.log('key i of dif', key, is_removing); 2452} 2453 2454function enableEdit(is_enabled, is_init = false) { 2455 /*$('div:has( > #editEnableBody) > span.'+(isBodyEditable?'right':'left')).addClass('selected'); 2456 $('#editEnableBody').prop('checked', !!isBodyEditable); 2457 edit_enable[0] = edit_enable[1] = (isBodyEditable ? 1 : 0);*/ 2458 /*$('div:has( > #editEnableBody) > span.'+(is_enabled?'right':'left')).addClass('selected'); 2459 if(!is_init){ 2460 $('div:has( > #editEnableBody) > span.'+(is_enabled?'left':'right')).removeClass('selected'); 2461 } 2462 $('#editEnableBody').prop('checked', !!is_enabled); 2463 edit_enable[0] = edit_enable[1] = (is_enabled ? 1 : 0);*/ 2464} //icon_left 2465 2466function setToggles(is_init = false, is_renew = false) { 2467 for (let i = 0, is_enabled, id, var_ar = toggle_ars[0]; i < 3; var_ar = toggle_ars[++i]) { 2468 //is_enabled = (is_init ? (i ? isIconLeft : isBodyEditable) : var_ar[0]); 2469 if ((is_renew && (i == 0 || var_ar[0] == var_ar[1])) || (!is_init && (var_ar[0] == var_ar[1]))) { 2470 console.log('setToggles of', is_renew, i, var_ar); 2471 continue; 2472 } 2473 is_active = (is_init ? toggle_vars[i] : var_ar[is_renew ? 1 : 0]); 2474 // console.log('is_enabled', is_enabled, toggle_ids[i]); 2475 $('div:has( > #' + (id = toggle_ids[i]) + ') > span.' + (is_active ? 'right' : 'left')).addClass('selected'); 2476 if (is_init) { 2477 $('#' + id).on('change', (e) => { 2478 var_ar[1] = Number(!(var_ar[1])); 2479 // console.log(var_ar); 2480 if (id === 'editEnable') { 2481 reloadParentAfterSave = 1; 2482 } 2483 }); 2484 } else { 2485 $('div:has( > #' + id + ') > span.' + (is_active ? 'left' : 'right')).removeClass('selected'); 2486 } 2487 $('#' + id).prop('checked', !!is_active); 2488 var_ar[0] = var_ar[1] = (is_active ? 1 : 0); 2489 } 2490} 2491 2492$(document).ready(function ($) { 2493 window.onscroll = function () { 2494// Widing and narrowing the top menu on scroll 2495 if (window.pageYOffset > 0 && pageYOld == 0) { 2496 $('div.head-main').addClass('menu-narrow'); 2497 $('div.head-main').removeClass('menu-wide'); 2498 } else if (window.pageYOffset == 0 && pageYOld > 0) { 2499 $('div.head-main').addClass('menu-wide'); 2500 $('div.head-main').removeClass('menu-narrow'); 2501 } 2502 2503 if (window.pageYOffset > 200 && pageYOld <= 200) { 2504 $('div.overhead').addClass('overhead-hidden'); 2505 $('div.overhead').removeClass('overhead-shown'); 2506 } else if (window.pageYOffset <= 200 && pageYOld > 200) { 2507 $('div.overhead ul.main-menu-list').addClass('disp_none'); 2508 $('div.overhead').removeClass('overhead-hidden'); 2509 $('div.overhead').addClass('overhead-shown'); 2510 window.setTimeout(() => { 2511 $('div.overhead ul.main-menu-list').removeClass('disp_none'); 2512 }, 280); 2513 } 2514 pageYOld = window.pageYOffset; 2515 } 2516}); 2517 2518$(".menu li a").hover( 2519 function () { 2520 $(this).addClass("hover"); 2521 }, function () { 2522 $(this).removeClass("hover"); 2523 } 2524); 2525$(document).ready(function () { 2526 var nav = $(".nav"); 2527 // console.log(3333); 2528 var navItems = nav.find(".page-tab"); 2529 // console.log(navItems); 2530 var now = 0; 2531 var windowWidth = $(window).width(); 2532 2533 var checkVisibilityOnScroll = function () { 2534 windowWidth = $(window).width(); // ÐбновлÑем ÑиÑÐ¸Ð½Ñ Ð¾ÐºÐ½Ð° пÑи ÑкÑолле 2535 2536 navItems.each(function () { 2537 var $currentElement = $(this); 2538 var elementRight = $currentElement.offset().left + $currentElement.outerWidth(); 2539 2540 if ( 2541 $currentElement.offset().left < 0 || 2542 elementRight > windowWidth 2543 ) { 2544 $currentElement.addClass("hidden"); 2545 } else { 2546 $currentElement.removeClass("hidden"); 2547 } 2548 }); 2549 }; 2550 checkVisibilityOnScroll(); 2551 nav.on('scroll', checkVisibilityOnScroll); 2552}); 2553$(document).ready(function () { 2554 const $container = $('.nav'); 2555 const $leftArrow = $('.left-arrow'); 2556 const $rightArrow = $('.right-arrow'); 2557 2558 if ($container.length && $leftArrow.length && $rightArrow.length) { 2559 // Function to toggle visibility of arrows based on scroll position 2560 function toggleArrows() { 2561 $leftArrow.toggle($container.scrollLeft() > 0); 2562 $rightArrow.toggle($container.scrollLeft() < ($container[0].scrollWidth - $container.outerWidth())); 2563 } 2564 2565 // Initial check for arrow visibility 2566 toggleArrows(); 2567 2568 // Add event listeners for arrow clicks 2569 $leftArrow.on('click', function () { 2570 $container.animate({scrollLeft: '-=100px'}, 'slow', toggleArrows); 2571 }); 2572 2573 $rightArrow.on('click', function () { 2574 $container.animate({scrollLeft: '+=100px'}, 'slow', toggleArrows); 2575 }); 2576 2577 // Add event listener for scroll event to toggle arrow visibility 2578 $container.on('scroll', toggleArrows); 2579 } 2580}); 2581 2582$(document).ready(function () { 2583 if (isEditable) { 2584 $('a.mp_edit:has( > .fa-plus)').attr('data-tooltip', L_add_section); 2585 let lastElement = $('a.mp_edit:has( > .fa-plus)').last(); 2586 let clonedElement = lastElement.clone(); 2587 clonedElement.attr('data-tooltip', L_add_section).addClass('end'); 2588 lastElement.after(clonedElement); 2589 $('a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit); 2590 $('.main-menu-list a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_menu); 2591 $('#logo-wrap a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_logo); 2592 $('.edit-wrapper:has(h1) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2593 $('.edit-wrapper:has(h2) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2594 $('.edit-wrapper:has(h3) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2595 $('.edit-wrapper:has(h4) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2596 $('.edit-wrapper:has(h5) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2597 $('.edit-wrapper:has(h6) a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_title); 2598 $('.edit-content a.mp_edit:has( > .fa-pencil)').attr('data-tooltip', L_edit_text); 2599 } else { 2600 // $('a.mp_edit:has( > .fa-pencil), a.mp_edit:has( > .fa-plus)').remove(); 2601 $('div.sectionAdminWrap').addClass("hidden_vis"); 2602 } 2603 let dropdown_toggle = $(".dropdown-toggle:has( a > .hover-checkbox), .dropdown-toggle:has( a > .hover-checkbox) .dropdown-submenu"); 2604 //dropdown_span = $(".dropdown-toggle > a:has( > .hover-checkbox), .dropdown-toggle > a:has( > .hover-checkbox) .dropdown-submenu");// > a > .head_menu_li_span-text 2605 //console.log(dropdown_span); 2606 //console.log($(".dropdown-submenu > a")); 2607 dropdown_toggle.on('click', (e) => { 2608 e.stopPropagation(); 2609 e.currentTarget.classList.toggle("dropdown-active"); 2610 //console.log(e.currentTarget, e.target); 2611 //console.log(e.currentTarget.closest('li')); 2612 }); 2613 dropdown_toggle.on('mouseover', (e) => { 2614 e.currentTarget.classList.add("dropdown-active"); 2615 //console.log(e.currentTarget.closest('li').classList); 2616 }); 2617 dropdown_toggle.on('mouseout', (e) => { 2618 e.currentTarget.classList.remove("dropdown-active"); 2619 }); 2620 $('.dropdown-toggle .dropdown-menu span.head_menu_li_span_bg').each(function () { 2621 console.log($(this), $(this).css('width'), $(this).parent); 2622 if ($(this).css('width') == '0px') { 2623 $(this).parent().addClass('no_pics'); 2624 } 2625 }); 2626 let is_found, is_fixed = false, endStyleElem = document.head.appendChild(document.createElement("style")), 2627 inner_html = ''; 2628 if ($(".head-main .head-main-in .head_menu ul li a").css('display') == 'grid') { 2629 //$(".head-main .head-main-in .head_menu ul li a:has( > span.w0)").css('gap', '0'); 2630 inner_html = ".head-main .head-main-in .head_menu ul li a:has( > span.w0) {gap:0}"; 2631 //let menu_li_elem = document.querySelector(".head-main .head-main-in div.head_menu ul li.head_menu_li"); 2632 2633 $.each(document.styleSheets, function (sheetIndex, sheet) {
2634 if (sheet.href && sheet.href.includes('CMS/frontend/basic/css-advanced/')) { 2635 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 2636 $.each((foundSheet = sheet).cssRules, function (ruleIndex, rule) { 2637 //console.log(rule.cssText) 2638 // console.log("rule[" + ruleIndex + "]: " + rule.cssText, selector); 2639 if ((css_txt = rule.cssText).startsWith('body > div.head-block > div.head-main .menu ul li.head_menu_li {')) { 2640 is_fixed = /\d.+/.test(rule.style['width']); 2641 is_found = (is_fixed || /\d.+/.test(rule.style['minWidth'])) 2642 console.log(rule.style, /\d.+/.test(rule.style['width']), /\d.+/.test(rule.style['minWidth']), rule.style['minWidth']); 2643 return false; 2644 } 2645 }); //add here if is abscent 2646 return false; 2647 } 2648 //console.log("Looking at styleSheet[" + sheetIndex + "]:"); 2649 }); 2650 2651 //width_fixed[0]
2652 if (is_found) { 2653 inner_html += ".head-main .head-main-in .head_menu > ul.main-menu-list {gap:10px;}"; 2654 } 2655 if (is_fixed) { 2656 $('.head-main .head-main-in .head_menu ul li a').css('grid-template-columns', 'auto fit-content(calc(100% - 45px))'); 2657 console.log('1608'); 2658 } else { 2659 let spans = $("div.head-main div.head-main-in .main-menu-list > li > a > span.head_menu_li_span-text > span") 2660 let then = Date.now(); 2661 for (let i = 0; i < 3; i++) { 2662 spans.each(function () { 2663 let width = Number($(this).css('width').slice(0, -2)), parent = $(this).parent(); 2664 // console.log($(this), /*getComputedStyle($(this).parent()[0]).getPropertyValue("width"),*/ Number(parent.css('width').slice(0, -2)), width, Number(parent.css('width').slice(0, -2)) - width); 2665 2666 // if(Number(parent.css('width').slice(0, -2)) - width > 4){ 2667 parent.css('width', width); 2668 //} 2669 }); 2670 } 2671 ; 2672 console.log(Date.now() - then); 2673 } 2674 } else { 2675 inner_html = ".head-main .head-main-in .head_menu .dropdown-toggle > a > .head_menu_li_span-text::after {top:calc(45px + (100% - 45px) / 2);position:absolute;}"; 2676 inner_html += " .head-main .head-main-in .head_menu > ul.main-menu-list {gap:25px;}"; 2677 } 2678 endStyleElem.innerHTML = inner_html; // calculate the icon 2679 /*let text = $('div.head-main div.head-main-in .main-menu-list > li > a > span.head_menu_li_span-text').contents().filter(function() { 2680 return this.nodeType == Node.TEXT_NODE; 2681 });*/ 2682 //console.log($('div.head-main div.head-main-in .main-menu-list > li > a > span.head_menu_li_span-text').contents(), text); 2683 2684 2685}); 2686document.addEventListener('keydown', function(event) { 2687 if (event.key === 'Escape'&& (typeof is_popup_vis !== 'undefined') && !is_popup_vis) { 2688 console.log(event.key); 2689 showBlockSettings('x'); 2690 setPaletteVisible(0); 2691 } 2692});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.