1function NBUI_AccessibilityOptions(){} 2let body = 'body'; 3let elementsClass = 'body * :not(.nb-accessibility-widget-component-1 *)'; 4let modalNBUI_AccessibilityOptions = new NBUI_AccessibilityOptions() 5let originalFontSizes = new Map(); 6let fontSizeSteps = new Map(); 7 8NBUI_AccessibilityOptions.prototype.openAccessibilityOptions = function (element, component){ 9 if (window.NBAccessibility) { 10 modelNBAccessibility.clickWithKeyboard(element); 11 } 12 $(element).click(function (){ 13 $(component).toggleClass('active'); 14 $(component).find('.nb-accessibility-options, .nb-accessibility-options .nb-custom-text-with-icon-1, .nb-options-heading').attr('tabindex','0'); 15 if (window.NBAccessibility) { 16 modelNBAccessibility.trapFocus('.nb-accessibility-options'); 17 } 18 }) 19} 20NBUI_AccessibilityOptions.prototype.closeAccessibilityOptions = function (element, component){ 21 if (window.NBAccessibility) { 22 modelNBAccessibility.clickWithKeyboard(element); 23 } 24 $(element).click(function (){ 25 $(component).removeClass('active'); 26 $(component).find('.nb-accessibility-options').attr('tabindex','-1'); 27 $(component).find('.nb-accessibility-options .nb-custom-text-with-icon-1').attr('tabindex','-1'); 28 $(component).find('.nbf-accessibility-trigger').focus(); 29 }) 30} 31NBUI_AccessibilityOptions.prototype.changeCursorSize = function (element){ 32 if (window.NBAccessibility) { 33 modelNBAccessibility.clickWithKeyboard(element); 34 } 35 $(element).click(function (){ 36 $(body).toggleClass('enlarge-cursor'); 37 modalNBUI_AccessibilityOptions.cursorPointer('enlarge-cursor'); 38 if($(body).hasClass('enlarge-cursor')){ 39 modalNBUI_AccessibilityOptions.addToCookie('enlarge-cursor'); 40 }else{ 41 modalNBUI_AccessibilityOptions.removeFromCookie('enlarge-cursor'); 42 } 43 }) 44} 45NBUI_AccessibilityOptions.prototype.cursorPointer = function(bodyClass){ 46 if($(body).hasClass(bodyClass)){ 47 $('*').each(function() { 48 let cursorStyle = window.getComputedStyle(this).cursor; 49 if (cursorStyle === 'pointer') { 50 $(this).toggleClass('nb-pointer'); 51 } 52 }); 53 } 54} 55NBUI_AccessibilityOptions.prototype.changeCursorColor = function(element){ 56 if (window.NBAccessibility) { 57 modelNBAccessibility.clickWithKeyboard(element); 58 } 59 $(element).click(function (){ 60 $(body).toggleClass('dark-cursor'); 61 modalNBUI_AccessibilityOptions.cursorPointer('dark-cursor'); 62 if($(body).hasClass('dark-cursor')){ 63 modalNBUI_AccessibilityOptions.addToCookie('dark-cursor'); 64 }else{ 65 modalNBUI_AccessibilityOptions.removeFromCookie('dark-cursor'); 66 } 67 68 modalNBUI_AccessibilityOptions.cursorPointer('dark-cursor'); 69 }) 70} 71NBUI_AccessibilityOptions.prototype.changeFontSize = function (element, direction) { 72 let updatedElements = []; 73 let lastFontStepClass; 74 75 element.each(function () { 76 let computedStyle = window.getComputedStyle(this); 77 let currentFontSize = parseFloat(computedStyle.fontSize); 78 79 if (!originalFontSizes.has(this)) { 80 originalFontSizes.set(this, currentFontSize); 81 fontSizeSteps.set(this, 0); 82 } 83 84 let originalSize = originalFontSizes.get(this); 85 let step = fontSizeSteps.get(this); 86 87 if ((direction === 1 && step < 3) || (direction === -1 && step > -2)) { 88 let newFontSize = originalSize + (step + direction) * 2; 89 updatedElements.push({element: this, newFontSize}); 90 fontSizeSteps.set(this, step + direction); 91 } 92 }); 93 94 // Primeni sve promene odjednom 95 updatedElements.forEach(item => { 96 item.element.style.setProperty('font-size', `${item.newFontSize}px`); 97 lastFontStepClass = 'nbf-font-' + fontSizeSteps.get(item.element); 98 }); 99 100 if (lastFontStepClass) { 101 $('body').removeClass(function(index, className) { 102 return (className.match(/nbf-font-[^\s]+/g) || []).join(' '); 103 }); 104 105 $('body').addClass(lastFontStepClass); 106 modalNBUI_AccessibilityOptions.addToCookie(lastFontStepClass); 107 } 108 109}; 110 111NBUI_AccessibilityOptions.prototype.smallerFontSize = function (element){ 112 if (window.NBAccessibility) { 113 modelNBAccessibility.clickWithKeyboard(element); 114 } 115 116 $(element).click(function (){ 117 let elementAll = $(elementsClass); 118 let elementwithText = elementAll.filter(function () { 119 var justText = $(this).contents().filter(function () { 120 return this.nodeType === 3; 121 }).text().trim(); 122 123 return justText !== ""; 124 }) 125 modalNBUI_AccessibilityOptions.changeFontSize(elementwithText, -1); 126 }) 127 128} 129NBUI_AccessibilityOptions.prototype.largerFontSize = function (element){ 130 if (window.NBAccessibility) { 131 modelNBAccessibility.clickWithKeyboard(element); 132 } 133 $(element).click(function (){ 134 let elementAll = $(elementsClass); 135 let elementwithText = elementAll.filter(function () { 136 var justText = $(this).contents().filter(function () { 137 return this.nodeType === 3; 138 }).text().trim(); 139 140 return justText !== ""; 141 }) 142 modalNBUI_AccessibilityOptions.changeFontSize(elementwithText, 1); 143 }) 144} 145NBUI_AccessibilityOptions.prototype.resetFontSize = function (element){ 146 if (window.NBAccessibility) { 147 modelNBAccessibility.clickWithKeyboard(element); 148 } 149 150 $(element).click(function (){
151 originalFontSizes.forEach((originalSize, el) => { 152 fontSizeSteps.set(el, 0); 153 }); 154 155 let elementAll = $(elementsClass); 156 let elementwithText = elementAll.filter(function () { 157 var justText = $(this).contents().filter(function () { 158 return this.nodeType === 3; 159 }).text().trim(); 160 161 return justText !== ""; 162 }) 163 164 let bodyClasses = $('body').attr('class'); 165 let classList = bodyClasses ? bodyClasses.split(/\s+/) : []; 166 167 let fontClasses = classList.filter(function(cls) { 168 return cls.startsWith('nbf-font-'); 169 }); 170 let stepClass = fontClasses.length > 0 ? fontClasses[0] : null; 171 let step = stepClass ? stepClass.replace('nbf-font-', '') : '0'; 172 173 elementwithText.each(function (){ 174 $(this).css('font-size', ''); 175 }) 176 177 $(body).removeClass('nbf-font-'+step); 178 179 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font-0'); 180 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font-1'); 181 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font-2'); 182 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font-3'); 183 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font--1'); 184 modalNBUI_AccessibilityOptions.removeFromCookie('nbf-font--2'); 185 186 }) 187} 188 189NBUI_AccessibilityOptions.prototype.zoomSite = function (element){ 190 if (window.NBAccessibility) { 191 modelNBAccessibility.clickWithKeyboard(element); 192 } 193 $(element).click(function (){ 194 $(body).toggleClass('zoomed-site'); 195 if($(body).hasClass('zoomed-site')){ 196 modalNBUI_AccessibilityOptions.addToCookie('zoomed-site'); 197 }else{ 198 modalNBUI_AccessibilityOptions.removeFromCookie('zoomed-site'); 199 } 200 }) 201} 202NBUI_AccessibilityOptions.prototype.darkTheme = function (element){ 203 if (window.NBAccessibility) { 204 modelNBAccessibility.clickWithKeyboard(element); 205 } 206 $(element).click(function (){ 207 if($(body).hasClass('dark-theme')){ 208 $(body).removeClass('dark-theme'); 209 }else{ 210 $(body).removeClass('bright-theme').removeClass('monochrome-theme'); 211 $(body).addClass('dark-theme'); 212 } 213 if($(body).hasClass('dark-theme')){ 214 modalNBUI_AccessibilityOptions.addToCookie('dark-theme'); 215 modalNBUI_AccessibilityOptions.removeFromCookie('monochrome-theme'); 216 modalNBUI_AccessibilityOptions.removeFromCookie('bright-theme'); 217 }else{ 218 modalNBUI_AccessibilityOptions.removeFromCookie('dark-theme'); 219 } 220 }) 221} 222NBUI_AccessibilityOptions.prototype.brightTheme = function (element){ 223 if (window.NBAccessibility) { 224 modelNBAccessibility.clickWithKeyboard(element); 225 } 226 $(element).click(function (){ 227 if($(body).hasClass('bright-theme')){ 228 $(body).removeClass('bright-theme'); 229 }else{ 230 $(body).removeClass('dark-theme').removeClass('monochrome-theme'); 231 $(body).addClass('bright-theme'); 232 } 233 if($(body).hasClass('bright-theme')){ 234 modalNBUI_AccessibilityOptions.addToCookie('bright-theme') 235 modalNBUI_AccessibilityOptions.removeFromCookie('dark-theme'); 236 modalNBUI_AccessibilityOptions.removeFromCookie('monochrome-theme'); 237 }else{ 238 modalNBUI_AccessibilityOptions.removeFromCookie('bright-theme'); 239 } 240 }) 241} 242NBUI_AccessibilityOptions.prototype.monochromeTheme = function (element){ 243 if (window.NBAccessibility) { 244 modelNBAccessibility.clickWithKeyboard(element); 245 } 246 $(element).click(function (){ 247 if($(body).hasClass('monochrome-theme')){ 248 $(body).removeClass('monochrome-theme'); 249 }else{ 250 $(body).removeClass('bright-theme').removeClass('dark-theme'); 251 $(body).addClass('monochrome-theme'); 252 } 253 if($(body).hasClass('monochrome-theme')){ 254 modalNBUI_AccessibilityOptions.addToCookie('monochrome-theme')
255 modalNBUI_AccessibilityOptions.removeFromCookie('dark-theme'); 256 modalNBUI_AccessibilityOptions.removeFromCookie('bright-theme'); 257 }else{ 258 modalNBUI_AccessibilityOptions.removeFromCookie('monochrome-theme'); 259 } 260 261 }) 262} 263NBUI_AccessibilityOptions.prototype.addToCookie = function (newClass){ 264 let cookieValue = modalNBUI_AccessibilityOptions.getCookie('accessibilityOptions'); 265 266 if (cookieValue?.startsWith('"') && cookieValue.endsWith('"')) { 267 cookieValue = cookieValue.slice(1, -1); 268 } 269 270 let classes = cookieValue ? cookieValue.split(' ') : []; 271 272 if(newClass.startsWith('nbf-font-')){ 273 classes = classes.filter(className => !className.startsWith('nbf-font-')); 274 } 275 classes.push(newClass); 276 277 let updatedCookieValue = '"' + classes.join(' ') + '"'; 278 createCookie('accessibilityOptions', updatedCookieValue); 279} 280NBUI_AccessibilityOptions.prototype.removeFromCookie = function (exClass){ 281 let cookieValue = modalNBUI_AccessibilityOptions.getCookie('accessibilityOptions'); 282 if (cookieValue?.startsWith('"') && cookieValue.endsWith('"')) { 283 cookieValue = cookieValue.slice(1, -1); 284 } 285 286 let classes = cookieValue ? cookieValue.split(' ') : []; 287 288 classes = classes.filter(function(option){ 289 return option !== exClass; 290 }) 291 292 let updatedCookieValue = '"' + classes.join(' ') + '"'; 293 createCookie('accessibilityOptions', updatedCookieValue); 294} 295 296 297NBUI_AccessibilityOptions.prototype.setParameters = function (){ 298 let cookieValue = modalNBUI_AccessibilityOptions.getCookie('accessibilityOptions'); 299 if (cookieValue) { 300 let classes = cookieValue.replace(/^"|"$/g, ''); // skida navodnike 301
302 $(body).addClass(classes); 303 304 let bodyClasses = $('body').attr('class'); 305 let classesList = bodyClasses ? bodyClasses.split(/\s+/) : [];//razdvajanje po space-u 306 let fontClasses = classesList.filter(function (cls) { 307 return cls.startsWith('nbf-font-'); 308 }); 309 let stepClass = fontClasses.length > 0 ? fontClasses[0] : null; 310 311 if(stepClass) { 312 let step = stepClass ? stepClass.replace('nbf-font-', '') : '0'; 313 let stepVal = parseInt(step); 314 315 let newFontSize 316 let updatedElements = []; 317 let elementAll = $(elementsClass); 318 let elementwithText = elementAll.filter(function () { 319 var justText = $(this).contents().filter(function () { 320 return this.nodeType === 3; 321 }).text().trim(); 322 323 return justText !== ""; 324 }) 325 326 elementwithText.each(function () { 327 let fontSize = parseFloat($(this).css('font-size')); 328 newFontSize = fontSize + stepVal * 2; 329 updatedElements.push({element: this, newFontSize}); 330 331 }) 332 updatedElements.forEach(item => { 333 item.element.style.setProperty('font-size', `${item.newFontSize}px`); 334 }); 335 } 336 337 } 338} 339NBUI_AccessibilityOptions.prototype.getCookie = function (name) { 340 const value = `; ${document.cookie}`; 341 const parts = value.split(`; ${name}=`); 342 if (parts.length === 2) return parts.pop().split(';').shift(); 343 return null; // KolaÄiÄ ne postoji 344} 345 346NBUI_AccessibilityOptions.prototype.resetAllSettings = function (resetBtn){ 347 $(resetBtn).click(function (){ 348 $('.nbf-reset-font-size').click(); 349 350 $(body).removeClass('enlarge-cursor dark-cursor accessible-font zoomed-site dark-theme bright-theme monochrome-theme'); 351 let cookieValue = '' 352 createCookie('accessibilityOptions', cookieValue); 353 }) 354} 355 356$(document).ready(function (){ 357 modalNBUI_AccessibilityOptions.setParameters(); 358 setTimeout(function () { 359 modalNBUI_AccessibilityOptions.cursorPointer('enlarge-cursor'); 360 modalNBUI_AccessibilityOptions.cursorPointer('dark-cursor'); 361 },300); 362 363 //otvaranje i zatvaranje opcija 364 let openElement = '.nbf-accessibility-trigger'; 365 let closeElement = '.nbf-close'; 366 let accessibilityComponent = '.nb-accessibility-widget-component-1'; 367 368 modalNBUI_AccessibilityOptions.openAccessibilityOptions(openElement, accessibilityComponent); 369 modalNBUI_AccessibilityOptions.closeAccessibilityOptions(closeElement, accessibilityComponent); 370 // promena boje i velicine kursora 371 let cursorColorElement = '.nbf-cursor-color'; 372 let cursorSizeElement = '.nbf-cursor-size'; 373 374 modalNBUI_AccessibilityOptions.changeCursorSize(cursorSizeElement); 375 modalNBUI_AccessibilityOptions.changeCursorColor(cursorColorElement); 376 377 // promena font-size-a 378 let smallerFontSizeElement = '.nbf-smaller-font-size'; 379 let largerFontSizeElement = '.nbf-larger-font-size'; 380 let resetFontSizeElement = '.nbf-reset-font-size'; 381 382 modalNBUI_AccessibilityOptions.smallerFontSize(smallerFontSizeElement); 383 modalNBUI_AccessibilityOptions.largerFontSize(largerFontSizeElement); 384 modalNBUI_AccessibilityOptions.resetFontSize(resetFontSizeElement); 385 //zoom sajta 386 let siteZoomElement = '.nbf-site-zoom'; 387 388 modalNBUI_AccessibilityOptions.zoomSite(siteZoomElement); 389 // tema sajta 390 let darkThemeElement = '.nbf-dark-theme'; 391 let brightThemeElement = '.nbf-bright-theme'; 392 let monoThemeElement = '.nbf-monochrome-theme'; 393 394 modalNBUI_AccessibilityOptions.darkTheme(darkThemeElement); 395 modalNBUI_AccessibilityOptions.brightTheme(brightThemeElement); 396 modalNBUI_AccessibilityOptions.monochromeTheme(monoThemeElement); 397 398 //reset all settings 399 let resetBtn = '.nbf-reset-settings'; 400 modalNBUI_AccessibilityOptions.resetAllSettings(resetBtn); 401 402})
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.