document.getAnonymousElementByAttribute(this, "anonid", "iframe");
return this.getAttribute("minimized") == "true";
return this.iframe.docShell.isActive;
this.iframe.docShell.isActive = !!val;
// let the chat frame know if it is being shown or hidden
let evt = this.iframe.contentDocument.createEvent("CustomEvent");
evt.initCustomEvent(val ? "socialFrameShow" : "socialFrameHide", true, true, {});
this.iframe.contentDocument.documentElement.dispatchEvent(evt);
this.parentNode.selectedChat = this;
// to avoid reflows we cache the values for various widths.
this.cachedWidthOpen = 0;
this.cachedWidthMinimized = 0;
this.cachedWidthNub = 0;
document.getAnonymousElementByAttribute(this, "anonid", "innerbox");
document.getAnonymousElementByAttribute(this, "anonid", "nubMenu");
document.getAnonymousElementByAttribute(this, "anonid", "nub");
new WeakMap()
new Map();
availWidth) {
// we need to collapse some.
let toCollapse = [];
for (let child of this.collapsibleChildren) {
if (currentWidth <= availWidth)
break;
toCollapse.push(child);
currentWidth -= this.getTotalChildWidth(child);
}
if (toCollapse.length) {
for (let child of toCollapse)
this.collapseChat(child);
}
} else if (currentWidth < availWidth) {
// we *might* be able to expand some - see how many.
// XXX - if this was clever, it could know when removing the nub
// leaves enough space to show all collapsed
let toShow = [];
for (let child of this.collapsedChildren) {
currentWidth += this.getTotalChildWidth(child);
if (currentWidth > availWidth)
break;
toShow.push(child);
}
for (let child of toShow)
this._showChat(child);
// If none remain collapsed remove the nub.
if (!this.hasCollapsedChildren) {
this.nub.collapsed = true;
}
}
// else: achievement unlocked - we are pixel-perfect!
]]>