本文整理汇总了TypeScript中@aurelia/kernel.Tracer类的典型用法代码示例。如果您正苦于以下问题:TypeScript Tracer类的具体用法?TypeScript Tracer怎么用?TypeScript Tracer使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Tracer类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: addChildren
function createElementForTag<T extends INode>(dom: IDOM<T>, tagName: string, props?: Record<string, string | HTMLTargetedInstruction>, children?: ArrayLike<unknown>): RenderPlan<T> {
if (Tracer.enabled) { Tracer.enter('createElement', 'createElementForTag', slice.call(arguments)); }
const instructions: HTMLTargetedInstruction[] = [];
const allInstructions: HTMLTargetedInstruction[][] = [];
const dependencies: IRegistry[] = [];
const element = dom.createElement(tagName);
let hasInstructions = false;
if (props) {
Object.keys(props)
.forEach(to => {
const value = props[to];
if (isHTMLTargetedInstruction(value)) {
hasInstructions = true;
instructions.push(value);
} else {
dom.setAttribute(element, to, value);
}
});
}
if (hasInstructions) {
dom.makeTarget(element);
allInstructions.push(instructions);
}
if (children) {
addChildren(dom, element, children, allInstructions, dependencies);
}
if (Tracer.enabled) { Tracer.leave(); }
return new RenderPlan(dom, element, allInstructions, dependencies);
}
示例2:
public $bind(flags: LifecycleFlags, scope: IScope): void {
if (Tracer.enabled) { Tracer.enter('Listener', '$bind', slice.call(arguments)); }
if (this.$state & State.isBound) {
if (this.$scope === scope) {
if (Tracer.enabled) { Tracer.leave(); }
return;
}
this.$unbind(flags | LifecycleFlags.fromBind);
}
// add isBinding flag
this.$state |= State.isBinding;
this.$scope = scope;
const sourceExpression = this.sourceExpression;
if (hasBind(sourceExpression)) {
sourceExpression.bind(flags, scope, this);
}
this.handler = this.eventManager.addEventListener(
this.dom,
this.target,
this.targetEvent,
this,
this.delegationStrategy
);
// add isBound flag and remove isBinding flag
this.$state |= State.isBound;
this.$state &= ~State.isBinding;
if (Tracer.enabled) { Tracer.leave(); }
}
示例3:
public $unbind(flags: LifecycleFlags): void {
if (Tracer.enabled) { Tracer.enter('Binding', '$unbind', slice.call(arguments)); }
if (!(this.$state & State.isBound)) {
if (Tracer.enabled) { Tracer.leave(); }
return;
}
// add isUnbinding flag
this.$state |= State.isUnbinding;
// clear persistent flags
this.persistentFlags = LifecycleFlags.none;
if (hasUnbind(this.sourceExpression)) {
this.sourceExpression.unbind(flags, this.$scope, this);
}
this.$scope = null;
if ((this.targetObserver as IBindingTargetObserver).unbind) {
(this.targetObserver as IBindingTargetObserver).unbind(flags);
}
if ((this.targetObserver as IBindingTargetObserver).unsubscribe) {
(this.targetObserver as IBindingTargetObserver).unsubscribe(this);
this.targetObserver[this.id] &= ~LifecycleFlags.updateSourceExpression;
}
this.unobserve(true);
// remove isBound and isUnbinding flags
this.$state &= ~(State.isBound | State.isUnbinding);
if (Tracer.enabled) { Tracer.leave(); }
}
示例4:
public $bind(flags: LifecycleFlags, scope: IScope): void {
if (Tracer.enabled) { Tracer.enter('Ref', '$bind', slice.call(arguments)); }
if (this.$state & State.isBound) {
if (this.$scope === scope) {
if (Tracer.enabled) { Tracer.leave(); }
return;
}
this.$unbind(flags | LifecycleFlags.fromBind);
}
// add isBinding flag
this.$state |= State.isBinding;
this.$scope = scope;
if (hasBind(this.sourceExpression)) {
this.sourceExpression.bind(flags, scope, this);
}
this.sourceExpression.assign(flags, this.$scope, this.locator, this.target);
// add isBound flag and remove isBinding flag
this.$state |= State.isBound;
this.$state &= ~State.isBinding;
if (Tracer.enabled) { Tracer.leave(); }
}
示例5:
public $bind(flags: LifecycleFlags, scope: IScope): void {
if (Tracer.enabled) { Tracer.enter('LetBinding', '$bind', slice.call(arguments)); }
if (this.$state & State.isBound) {
if (this.$scope === scope) {
if (Tracer.enabled) { Tracer.leave(); }
return;
}
this.$unbind(flags | LifecycleFlags.fromBind);
}
// add isBinding flag
this.$state |= State.isBinding;
this.$scope = scope;
this.target = (this.toViewModel ? scope.bindingContext : scope.overrideContext) as IIndexable;
const sourceExpression = this.sourceExpression;
if (sourceExpression.bind) {
sourceExpression.bind(flags, scope, this);
}
// sourceExpression might have been changed during bind
this.target[this.targetProperty] = this.sourceExpression.evaluate(LifecycleFlags.fromBind, scope, this.locator);
this.sourceExpression.connect(flags, scope, this);
// add isBound flag and remove isBinding flag
this.$state |= State.isBound;
this.$state &= ~State.isBinding;
if (Tracer.enabled) { Tracer.leave(); }
}
示例6:
export function $attachAttribute(this: Writable<IAttachable>, flags: LifecycleFlags): void {
if (Profiler.enabled) { enter(); }
if (Tracer.enabled) { Tracer.enter(this.constructor.description && this.constructor.description.name || this.constructor.name, '$attach', slice.call(arguments)); }
if (this.$state & State.isAttached) {
if (Profiler.enabled) { leave(); }
if (Tracer.enabled) { Tracer.leave(); }
return;
}
const lifecycle = this.$lifecycle;
lifecycle.beginAttach();
// add isAttaching flag
this.$state |= State.isAttaching;
flags |= LifecycleFlags.fromAttach;
const hooks = this.$hooks;
if (hooks & Hooks.hasAttaching) {
this.attaching(flags);
}
// add isAttached flag, remove isAttaching flag
this.$state |= State.isAttached;
this.$state &= ~State.isAttaching;
if (hooks & Hooks.hasAttached) {
lifecycle.enqueueAttached(this as Required<typeof this>);
}
lifecycle.endAttach(flags);
if (Profiler.enabled) { leave(); }
if (Tracer.enabled) { Tracer.leave(); }
}
示例7: while
export function $lockedBind(this: IBindable, flags: LifecycleFlags): void {
if (Tracer.enabled) { Tracer.enter('IView', 'lockedBind', slice.call(arguments)); }
flags |= LifecycleFlags.fromBind;
if (this.$state & State.isBound) {
if (Tracer.enabled) { Tracer.leave(); }
return;
}
// add isBinding flag
this.$state |= State.isBinding;
const scope = this.$scope;
let binding = this.$bindingHead;
while (binding !== null) {
binding.$bind(flags, scope);
binding = binding.$nextBinding;
}
let component = this.$componentHead;
while (component !== null) {
component.$bind(flags, scope);
component = component.$nextComponent;
}
// add isBound flag and remove isBinding flag
this.$state |= State.isBound;
this.$state &= ~State.isBinding;
if (Tracer.enabled) { Tracer.leave(); }
}
示例8:
export function $unbindAttribute(this: Writable<IBindable>, flags: LifecycleFlags): void {
if (Tracer.enabled) { Tracer.enter(this.constructor.description && this.constructor.description.name || this.constructor.name, '$bind', slice.call(arguments)); }
if (this.$state & State.isBound) {
const lifecycle = this.$lifecycle;
lifecycle.beginUnbind();
// add isUnbinding flag
this.$state |= State.isUnbinding;
const hooks = this.$hooks;
flags |= LifecycleFlags.fromUnbind;
if (hooks & Hooks.hasUnbound) {
lifecycle.enqueueUnbound(this);
}
if (hooks & Hooks.hasUnbinding) {
this.unbinding(flags);
}
// remove isBound and isUnbinding flags
this.$state &= ~(State.isBound | State.isUnbinding);
lifecycle.endUnbind(flags);
}
if (Tracer.enabled) { Tracer.leave(); }
}
示例9: bindChildNodes
private bindChildNodes(node: HTMLTemplateElement | HTMLElement): void {
if (Tracer.enabled) { Tracer.enter('TemplateBinder', 'bindChildNodes', slice.call(arguments)); }
let childNode: ChildNode;
if (node.nodeName === 'TEMPLATE') {
childNode = (node as HTMLTemplateElement).content.firstChild;
} else {
childNode = node.firstChild;
}
let nextChild: ChildNode;
while (childNode !== null) {
switch (childNode.nodeType) {
case NodeType.Element:
nextChild = childNode.nextSibling as ChildNode;
this.bindManifest(this.manifest, childNode as HTMLElement);
childNode = nextChild;
break;
case NodeType.Text:
childNode = this.bindText(childNode as Text).nextSibling as ChildNode;
break;
case NodeType.CDATASection:
case NodeType.ProcessingInstruction:
case NodeType.Comment:
case NodeType.DocumentType:
childNode = childNode.nextSibling as ChildNode;
break;
case NodeType.Document:
case NodeType.DocumentFragment:
childNode = childNode.firstChild;
}
}
if (Tracer.enabled) { Tracer.leave(); }
}
示例10: while
export function $detachView(this: Writable<IAttachable & IMountableComponent>, flags: LifecycleFlags): void {
if (Tracer.enabled) { Tracer.enter('IView', '$detach', slice.call(arguments)); }
if (this.$state & State.isAttached) {
// add isDetaching flag
this.$state |= State.isDetaching;
flags |= LifecycleFlags.fromDetach;
// Only unmount if either:
// - No parent view/element is queued for unmount yet, or
// - Aurelia is stopping (in which case all nodes need to return to their fragments for a clean mount on next start)
if (((flags & LifecycleFlags.parentUnmountQueued) ^ LifecycleFlags.parentUnmountQueued) | (flags & LifecycleFlags.fromStopTask)) {
this.$lifecycle.enqueueUnmount(this);
flags |= LifecycleFlags.parentUnmountQueued;
}
let current = this.$componentTail;
while (current !== null) {
current.$detach(flags);
current = current.$prevComponent;
}
// remove isAttached and isDetaching flags
this.$state &= ~(State.isAttached | State.isDetaching);
}
if (Tracer.enabled) { Tracer.leave(); }
}