_matchPartial(map:Map<string,string> = null, name, cssSelector, matchedCallback):boolean { if (isBlank(map) || isBlank(name)) { return false; } var nestedSelector = MapWrapper.get(map, name) if (isBlank(nestedSelector)) { return false; } // TODO(perf): get rid of recursion and measure again // TODO(perf): don't pass the whole selector into the recursion, // but only the not processed parts return nestedSelector.match(cssSelector, matchedCallback); }
_getDirectiveByKeyId(keyId:int) { var p = this._proto; if (p._keyId0 === keyId) {if (isBlank(this._obj0)){this._obj0 = this._new(p._binding0);} return this._obj0;} if (p._keyId1 === keyId) {if (isBlank(this._obj1)){this._obj1 = this._new(p._binding1);} return this._obj1;} if (p._keyId2 === keyId) {if (isBlank(this._obj2)){this._obj2 = this._new(p._binding2);} return this._obj2;} if (p._keyId3 === keyId) {if (isBlank(this._obj3)){this._obj3 = this._new(p._binding3);} return this._obj3;} if (p._keyId4 === keyId) {if (isBlank(this._obj4)){this._obj4 = this._new(p._binding4);} return this._obj4;} if (p._keyId5 === keyId) {if (isBlank(this._obj5)){this._obj5 = this._new(p._binding5);} return this._obj5;} if (p._keyId6 === keyId) {if (isBlank(this._obj6)){this._obj6 = this._new(p._binding6);} return this._obj6;} if (p._keyId7 === keyId) {if (isBlank(this._obj7)){this._obj7 = this._new(p._binding7);} return this._obj7;} if (p._keyId8 === keyId) {if (isBlank(this._obj8)){this._obj8 = this._new(p._binding8);} return this._obj8;} if (p._keyId9 === keyId) {if (isBlank(this._obj9)){this._obj9 = this._new(p._binding9);} return this._obj9;} return _undefined; }
finalize(cssSelector: CssSelector, callback) { var result = true; if (isPresent(this.notSelector) && (isBlank(this.listContext) || !this.listContext.alreadyMatched)) { var notMatcher = new SelectorMatcher(); notMatcher.addSelectable(this.notSelector, null, null); result = !notMatcher.match(cssSelector, null); } if (result && isPresent(callback) && (isBlank(this.listContext) || !this.listContext.alreadyMatched)) { if (isPresent(this.listContext)) { this.listContext.alreadyMatched = true; } callback(this.selector, this.cbContext); } return result; }
_checkShadowDomAppInjector(shadowDomAppInjector:Injector) { if (this._proto._binding0IsComponent && isBlank(shadowDomAppInjector)) { throw new BaseException('A shadowDomAppInjector is required as this ElementInjector contains a component'); } else if (!this._proto._binding0IsComponent && isPresent(shadowDomAppInjector)) { throw new BaseException('No shadowDomAppInjector allowed as there is not component stored in this ElementInjector'); } }
var _addResult = (res, cssSel) => { if (isPresent(cssSel.notSelector) && isBlank(cssSel.element) && ListWrapper.isEmpty(cssSel.classNames) && ListWrapper.isEmpty(cssSel.attrs)) { cssSel.element = "*"; } ListWrapper.push(res, cssSel); }
bind(appElementToken).toFactory((appComponentAnnotatedType, appDocument) => { var selector = appComponentAnnotatedType.annotation.selector; var element = DOM.querySelector(appDocument, selector); if (isBlank(element)) { throw new BaseException(`The app selector "${selector}" did not match any elements`); } return element; }, [appComponentAnnotatedTypeToken, appDocumentToken]),
function _createAppInjector(appComponentType: Type, bindings: List<Binding>, zone: VmTurnZone): Injector { if (isBlank(_rootInjector)) _rootInjector = new Injector(_rootBindings); var mergedBindings = isPresent(bindings) ? ListWrapper.concat(_injectorBindings(appComponentType), bindings) : _injectorBindings(appComponentType); ListWrapper.push(mergedBindings, bind(VmTurnZone).toValue(zone)); return _rootInjector.createChild(mergedBindings); }
_addPartial(map:Map<string,string>, name:string) { var matcher = MapWrapper.get(map, name) if (isBlank(matcher)) { matcher = new SelectorMatcher(); MapWrapper.set(map, name, matcher); } return matcher; }
_addTerminal(map:Map<string,string>, name:string, selectable) { var terminalList = MapWrapper.get(map, name) if (isBlank(terminalList)) { terminalList = ListWrapper.create(); MapWrapper.set(map, name, terminalList); } ListWrapper.push(terminalList, selectable); }
classList():List<string> { if (isBlank(this._classList)) { this._classList = ListWrapper.create(); var elClassList = DOM.classList(this.element); for (var i = 0; i < elClassList.length; i++) { ListWrapper.push(this._classList, elClassList[i]); } } return this._classList; }
function createExtension(perfRecords = null) { if (isBlank(perfRecords)) { perfRecords = []; } log = []; extension = new Injector([ IOsDriverExtension.BINDINGS, bind(WebDriverAdapter).toValue(new MockDriverAdapter(log, perfRecords)) ]).get(IOsDriverExtension); return extension; }
function durationRecord(type, startTime, endTime, children = null) { if (isBlank(children)) { children = []; } return { 'type': type, 'startTime': startTime, 'endTime': endTime, 'children': children }; }
addVariableBinding(variableName:string, variableValue:string) { if (isBlank(this.variableBindings)) { this.variableBindings = MapWrapper.create(); } // Store the variable map from value to variable, reflecting how it will be used later by // View. When a local is set to the view, a lookup for the variable name will take place keyed // by the "value", or exported identifier. For example, chang-repeat sets a view local of "index". // When this occurs, a lookup keyed by "index" must occur to find if there is a var referencing // it. MapWrapper.set(this.variableBindings, variableValue, dashCaseToCamelCase(variableName)); }
_matchTerminal(map:Map<string,string> = null, name, cssSelector, matchedCallback):boolean { if (isBlank(map) || isBlank(name)) { return false; } var selectables = MapWrapper.get(map, name); var starSelectables = MapWrapper.get(map, "*"); if (isPresent(starSelectables)) { selectables = ListWrapper.concat(selectables, starSelectables); } if (isBlank(selectables)) { return false; } var selectable; var result = false; for (var index=0; index<selectables.length; index++) { selectable = selectables[index]; result = selectable.finalize(cssSelector, matchedCallback) || result; } return result; }
/** * Add an object that can be found later on by calling `match`. * @param cssSelector A css selector * @param callbackCtxt An opaque object that will be given to the callback of the `match` function */ addSelectable(cssSelector, callbackCtxt, listContext: SelectorListContext) { var matcher = this; var element = cssSelector.element; var classNames = cssSelector.classNames; var attrs = cssSelector.attrs; var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext); if (isPresent(element)) { var isTerminal = attrs.length === 0 && classNames.length === 0; if (isTerminal) { this._addTerminal(matcher._elementMap, element, selectable); } else { matcher = this._addPartial(matcher._elementPartialMap, element); } } if (isPresent(classNames)) { for (var index = 0; index<classNames.length; index++) { var isTerminal = attrs.length === 0 && index === classNames.length - 1; var className = classNames[index]; if (isTerminal) { this._addTerminal(matcher._classMap, className, selectable); } else { matcher = this._addPartial(matcher._classPartialMap, className); } } } if (isPresent(attrs)) { for (var index = 0; index<attrs.length; ) { var isTerminal = index === attrs.length - 2; var attrName = attrs[index++]; var attrValue = attrs[index++]; var map = isTerminal ? matcher._attrValueMap : matcher._attrValuePartialMap; var valuesMap = MapWrapper.get(map, attrName) if (isBlank(valuesMap)) { valuesMap = MapWrapper.create(); MapWrapper.set(map, attrName, valuesMap); } if (isTerminal) { this._addTerminal(valuesMap, attrValue, selectable); } else { matcher = this._addPartial(valuesMap, attrValue); } } } }
function createRunner(defaultBindings = null) { if (isBlank(defaultBindings)) { defaultBindings = []; } runner = new Runner([ defaultBindings, bind(Sampler).toFactory( (_injector) => { injector = _injector; return new MockSampler(); }, [Injector] ), bind(Metric).toFactory( () => new MockMetric(), []), bind(Validator).toFactory( () => new MockValidator(), []), bind(WebDriverAdapter).toFactory( () => new MockWebDriverAdapter(), []) ]); return runner; }
export function getStringParameter(name:string) { var els = DOM.querySelectorAll(document, `input[name="${name}"]`) var value; var el; for (var i=0; i<els.length; i++) { el = els[i]; var type = DOM.type(el); if ((type !== 'radio' && type !== 'checkbox') || DOM.getChecked(el)) { value = DOM.getValue(el); break; } } if (isBlank(value)) { throw new BaseException(`Could not find and input field with name ${name}`); } return value; }
addDirective(directive:DirectiveMetadata) { var annotation = directive.annotation; this._allDirectives = null; if (annotation instanceof Decorator) { if (isBlank(this.decoratorDirectives)) { this.decoratorDirectives = ListWrapper.create(); } ListWrapper.push(this.decoratorDirectives, directive); if (!annotation.compileChildren) { this.compileChildren = false; } } else if (annotation instanceof Viewport) { this.viewportDirective = directive; } else if (annotation instanceof Component) { this.componentDirective = directive; this.hasNestedView = true; } else if (annotation instanceof DynamicComponent) { this.componentDirective = directive; } }
bind(appViewToken).toAsyncFactory((changeDetection, compiler, injector, appElement, appComponentAnnotatedType, strategy, eventManager) => { var annotation = appComponentAnnotatedType.annotation; if(!isBlank(annotation) && !(annotation instanceof Component)) { var type = appComponentAnnotatedType.type; throw new BaseException(`Only Components can be bootstrapped; ` + `Directive of ${stringify(type)} is not a Component`); } return compiler.compile(appComponentAnnotatedType.type).then( (protoView) => { var appProtoView = ProtoView.createRootProtoView(protoView, appElement, appComponentAnnotatedType, changeDetection.createProtoChangeDetector('root'), strategy); // The light Dom of the app element is not considered part of // the changular application. Thus the context and lightDomInjector are // empty. var view = appProtoView.instantiate(null, eventManager); view.hydrate(injector, null, null, new Object(), null); return view; }); }, [ChangeDetection, Compiler, Injector, appElementToken, appComponentAnnotatedTypeToken,
events.forEach( (event) => { var ph = event['ph']; var name = event['name']; if (StringWrapper.equals(ph, 'b') && StringWrapper.equals(name, markName)) { markStartEvent = event; } else if (StringWrapper.equals(ph, 'e') && StringWrapper.equals(name, markName)) { markEndEvent = event; } if (isPresent(markStartEvent) && isBlank(markEndEvent) && event['pid'] === markStartEvent['pid']) { if (StringWrapper.equals(ph, 'B')) { intervalStarts[name] = event; } else if (StringWrapper.equals(ph, 'E') && isPresent(intervalStarts[name])) { var startEvent = intervalStarts[name]; var duration = event['ts'] - startEvent['ts']; intervalStarts[name] = null; if (StringWrapper.equals(name, 'gc')) { result['gcTime'] += duration; var amount = (startEvent['args']['usedHeapSize'] - event['args']['usedHeapSize']) / 1000; result['gcAmount'] += amount; var majorGc = event['args']['majorGc']; if (isPresent(majorGc) && majorGc) { result['majorGcTime'] += duration; } if (isPresent(intervalStarts['script'])) { gcTimeInScript += duration; } } else if (StringWrapper.equals(name, 'render')) { result['renderTime'] += duration; if (isPresent(intervalStarts['script'])) { renderTimeInScript += duration; } } else if (StringWrapper.equals(name, 'script')) { result['scriptTime'] += duration; } } } });
static instance() { if (isBlank(_staticKeys)) _staticKeys = new StaticKeys(); return _staticKeys; }
addPropertyBinding(property:string, expression:AST) { if (isBlank(this.propertyBindings)) { this.propertyBindings = MapWrapper.create(); } MapWrapper.set(this.propertyBindings, dashCaseToCamelCase(property), expression); }
addTextNodeBinding(indexInParent:int, expression:AST) { if (isBlank(this.textNodeBindings)) { this.textNodeBindings = MapWrapper.create(); } MapWrapper.set(this.textNodeBindings, indexInParent, expression); }
attrs():Map<string,string> { if (isBlank(this._attrs)) { this._attrs = DOM.attributeMap(this.element); } return this._attrs; }
addEventBinding(eventName:string, expression:AST) { if (isBlank(this.eventBindings)) { this.eventBindings = MapWrapper.create(); } MapWrapper.set(this.eventBindings, eventName, expression); }
static required(c:modelModule.Control) { return isBlank(c.value) || c.value == "" ? {"required": true} : null; }
_asString(value) { return (isBlank(value) ? 'null' : value.toString()); }
_constructDependencies(factoryFunction:Function, dependencies:List) { return isBlank(dependencies) ? _dependenciesFor(factoryFunction) : ListWrapper.map(dependencies, (t) => Dependency.fromKey(Key.get(t))); }
if (ListWrapper.any(params, (p) => isBlank(p))) throw new NoAnnotationError(typeOrFunc);
function _dependenciesFor(typeOrFunc):List { var params = reflector.parameters(typeOrFunc); if (isBlank(params)) return []; if (ListWrapper.any(params, (p) => isBlank(p))) throw new NoAnnotationError(typeOrFunc); return ListWrapper.map(params, (p) => _extractToken(typeOrFunc, p)); }