michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: null michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: 1) { michael@0: verbSet.add('clear'); michael@0: } michael@0: // returns Set michael@0: return verbSet; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: null michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: = 0) { michael@0: let selected = this.getItemAtIndex(val); michael@0: this.selectItem(selected); michael@0: } else { michael@0: this.selectNone(); michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: cnode.getAttribute("value")); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: slotCount) { michael@0: let orphanNode = child; michael@0: child = orphanNode.nextSibling; michael@0: this.removeChild(orphanNode); michael@0: continue; michael@0: } michael@0: if (child.hasAttribute("value")) { michael@0: this._releaseSlot(child); michael@0: } michael@0: child = child.nextSibling; michael@0: childIndex++; michael@0: } michael@0: // create our quota of item slots michael@0: for (let count = this.childElementCount; count < slotCount; count++) { michael@0: this.appendChild( this._createItemElement() ); michael@0: } michael@0: michael@0: if (!aSkipArrange) michael@0: this.arrangeItems(); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: 0; count--) { michael@0: this.appendChild( this._createItemElement() ); michael@0: } michael@0: return this.children[anIndex]; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: 0 && !this.children[childIndex-1].hasAttribute("value")) { michael@0: insertedItem = this.children[childIndex-1]; michael@0: } else { michael@0: insertedItem = this.insertBefore(this._createItemElement(),existing); michael@0: } michael@0: } michael@0: if (!insertedItem) { michael@0: insertedItem = this._slotAt(anIndex); michael@0: } michael@0: insertedItem.setAttribute("value", aValue); michael@0: insertedItem.setAttribute("label", aLabel); michael@0: if (!aSkipArrange) michael@0: this.arrangeItems(); michael@0: return insertedItem; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: = lowerBound && michael@0: this.selectedIndex < higherBound; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: 0 michael@0: michael@0: 0 michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: null michael@0: 0 michael@0: 5 michael@0: michael@0: michael@0: michael@0: michael@0: this._scheduledArrangeItemsTries michael@0: ) { michael@0: this._scheduledArrangeItemsTimerId = setTimeout(this.arrangeItems.bind(this), aTime || 0); michael@0: // track how many times we've attempted arrangeItems michael@0: this._scheduledArrangeItemsTries++; michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: "tiles.css" michael@0: michael@0: michael@0: width/height values michael@0: // The keys in this object are string-matched against the selectorText michael@0: // of rules in our stylesheet. Quoted values in a selector will always use " not ' michael@0: let typeSelectors = { michael@0: 'richgriditem' : "default", michael@0: 'richgriditem[tiletype="thumbnail"]': "thumbnail", michael@0: 'richgriditem[search]': "search", michael@0: 'richgriditem[compact]': "compact" michael@0: }; michael@0: let rules, sheet; michael@0: for (let i=0; (sheet=sheets[i]); i++) { michael@0: if (sheet.href && sheet.href.endsWith( this._tileStyleSheetName )) { michael@0: rules = sheet.cssRules; michael@0: break; michael@0: } michael@0: } michael@0: if (rules) { michael@0: // walk the stylesheet rules until we've matched all our selectors michael@0: for (let i=0, rule;(rule=rules[i]); i++) { michael@0: let type = rule.selectorText && typeSelectors[rule.selectorText]; michael@0: if (type) { michael@0: let sizes = typeSizes[type] = {}; michael@0: typeSelectors[type] = null; michael@0: delete typeSelectors[type]; michael@0: // we assume px unit for tile dimension values michael@0: sizes.width = parseInt(rule.style.getPropertyValue("width")); michael@0: sizes.height = parseInt(rule.style.getPropertyValue("height")); michael@0: } michael@0: if (!Object.keys(typeSelectors).length) michael@0: break; michael@0: } michael@0: } else { michael@0: throw new Error("Failed to find stylesheet to parse out richgriditem dimensions\n"); michael@0: } michael@0: return typeSizes; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: = 0 && anIndex < this.itemCount; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: y) { michael@0: if (1 - y > x) { michael@0: angle = Math.ceil((.5 - y) * deflectY); michael@0: bendNode.style.transform = "perspective("+perspective+") rotateX(" + angle + "deg)"; michael@0: bendNode.style.transformOrigin = "center bottom"; michael@0: } else { michael@0: angle = Math.ceil((x - .5) * deflectX); michael@0: bendNode.style.transform = "perspective("+perspective+") rotateY(" + angle + "deg)"; michael@0: bendNode.style.transformOrigin = "left center"; michael@0: } michael@0: } else { michael@0: if (1 - y < x) { michael@0: angle = -Math.ceil((y - .5) * deflectY); michael@0: bendNode.style.transform = "perspective("+perspective+") rotateX(" + angle + "deg)"; michael@0: bendNode.style.transformOrigin = "center top"; michael@0: } else { michael@0: angle = -Math.ceil((.5 - x) * deflectX); michael@0: bendNode.style.transform = "perspective("+perspective+") rotateY(" + angle + "deg)"; michael@0: bendNode.style.transformOrigin = "right center"; michael@0: } michael@0: } michael@0: // mark when bend effect is applied michael@0: aItem.setAttribute("bending", true); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: null michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: