Mudanças entre as edições de "Widget:Item"
Ir para navegação
Ir para pesquisar
m |
m |
||
| Linha 267: | Linha 267: | ||
var MARGIN = 8; | var MARGIN = 8; | ||
var GAP = 6; | var GAP = 6; | ||
var XOR_KEY = 0x5A; | var XOR_KEY = 0x5A; /* legado hex — páginas em cache antes do b64 */ | ||
var activeTip = null; | var activeTip = null; | ||
var activeWrapper = null; | var activeWrapper = null; | ||
| Linha 309: | Linha 309: | ||
} | } | ||
function | function bytesToUtf8String(bytes) { | ||
if (typeof TextDecoder !== "undefined") { | if (typeof TextDecoder !== "undefined") { | ||
return new TextDecoder("utf-8").decode(new Uint8Array(bytes)); | return new TextDecoder("utf-8").decode( | ||
bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes) | |||
); | |||
} | } | ||
var bin = ""; | var bin = ""; | ||
| Linha 321: | Linha 319: | ||
bin += String.fromCharCode(bytes[j]); | bin += String.fromCharCode(bytes[j]); | ||
} | } | ||
return decodeURIComponent(escape(bin)); | |||
return | } | ||
} | |||
return | function base64ToUtf8String(b64) { | ||
var bin = atob(b64); | |||
var bytes = new Uint8Array(bin.length); | |||
for (var i = 0; i < bin.length; i++) { | |||
bytes[i] = bin.charCodeAt(i); | |||
} | |||
return bytesToUtf8String(bytes); | |||
} | |||
function hexToUtf8String(hex) { | |||
var bytes = []; | |||
for (var i = 0; i < hex.length; i += 2) { | |||
bytes.push(parseInt(hex.substr(i, 2), 16) ^ XOR_KEY); | |||
} | |||
return bytesToUtf8String(bytes); | |||
} | |||
function payloadToJson(raw) { | |||
if (!raw) return null; | |||
if (raw.indexOf("b64:") === 0) { | |||
return base64ToUtf8String(raw.slice(4)); | |||
} | } | ||
return hexToUtf8String(raw); | |||
} | } | ||
function decodePayload( | function decodePayload(raw) { | ||
if (! | if (!raw) return null; | ||
if (decodeCache[ | if (decodeCache[raw]) return decodeCache[raw]; | ||
try { | try { | ||
var obj = JSON.parse( | var obj = JSON.parse(payloadToJson(raw)); | ||
decodeCache[ | decodeCache[raw] = obj; | ||
return obj; | return obj; | ||
} catch (e) { | } catch (e) { | ||