1/* 2 * iFactory Notes: 3 * Manual Edit to Vendor File for accessibility ("Attribute name not allowed on element tbody at this point."): 4 * Where: Line 59 5 * Original: if (!(name = el.getAttribute('name'))) { 6 * New: if (!(name = el.getAttribute('data-name'))) { 7 */ 8 9/** 10 * @fileoverview syncscroll - scroll several areas simultaniously 11 * @version 0.0.3 12 * 13 * @license MIT, see http://github.com/asvd/intence 14 * @copyright 2015 asvd <[email protected]> 15 */ 16 17 18(function (root, factory) { 19 if (typeof define === 'function' && define.amd) { 20 define(['exports'], factory); 21 } else if (typeof exports !== 'undefined') { 22 factory(exports); 23 } else { 24 factory((root.syncscroll = {})); 25 } 26}(this, function (exports) { 27 var Width = 'Width'; 28 var Height = 'Height'; 29 var Top = 'Top'; 30 var Left = 'Left'; 31 var scroll = 'scroll'; 32 var client = 'client'; 33 var EventListener = 'EventListener'; 34 var addEventListener = 'add' + EventListener; 35 var length = 'length'; 36 var Math_round = Math.round; 37 38 var names = {}; 39 40 var reset = function () { 41 var elems = document.getElementsByClassName('sync' + scroll); 42 43 // clearing existing listeners 44 var i, j, el, found, name; 45 for (name in names) { 46 if (names.hasOwnProperty(name)) { 47 for (i = 0; i < names[name][length]; i++) { 48 names[name][i]['remove' + EventListener]( 49 scroll, names[name][i].syn, 0 50 ); 51 } 52 } 53 } 54 55 // setting-up the new listeners 56 for (i = 0; i < elems[length];) { 57 found = j = 0; 58 el = elems[i++]; 59 if (!(name = el.getAttribute('data-name'))) { 60 // name attribute is not set 61 continue; 62 } 63 64 el = el[scroll + 'er'] || el; // needed for intence 65 66 // searching for existing entry in array of names; 67 // searching for the element in that entry 68 for (; j < (names[name] = names[name] || [])[length];) { 69 found |= names[name][j++] == el; 70 } 71 72 if (!found) { 73 names[name].push(el); 74 } 75 76 el.eX = el.eY = 0; 77 78 (function (el, name) { 79 el[addEventListener]( 80 scroll, 81 el.syn = function () { 82 var elems = names[name]; 83 84 var scrollX = el[scroll + Left]; 85 var scrollY = el[scroll + Top]; 86 87 var xRate = 88 scrollX / 89 (el[scroll + Width] - el[client + Width]); 90 var yRate = 91 scrollY / 92 (el[scroll + Height] - el[client + Height]); 93 94 var updateX = scrollX != el.eX; 95 var updateY = scrollY != el.eY; 96 97 var otherEl, i = 0; 98 99 el.eX = scrollX; 100 el.eY = scrollY; 101 102 for (; i < elems[length];) { 103 otherEl = elems[i++]; 104 if (otherEl != el) { 105 if (updateX && 106 Math_round( 107 otherEl[scroll + Left] - 108 (scrollX = otherEl.eX = 109 Math_round(xRate * 110 (otherEl[scroll + Width] - 111 otherEl[client + Width])) 112 ) 113 ) 114 ) { 115 otherEl[scroll + Left] = scrollX; 116 } 117 118 if (updateY && 119 Math_round( 120 otherEl[scroll + Top] - 121 (scrollY = otherEl.eY = 122 Math_round(yRate * 123 (otherEl[scroll + Height] - 124 otherEl[client + Height])) 125 ) 126 ) 127 ) { 128 otherEl[scroll + Top] = scrollY; 129 } 130 } 131 } 132 }, 0 133 ); 134 })(el, name); 135 } 136 } 137 138 139 if (document.readyState == "complete") { 140 reset(); 141 } else { 142 window[addEventListener]("load", reset, 0); 143 } 144 145 exports.reset = reset; 146}));
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.