Skip to content

Commit

Permalink
refactor(binding-mode-behavior): add trace logging
Browse files Browse the repository at this point in the history
  • Loading branch information
fkleuver committed Oct 5, 2020
1 parent 9943da3 commit fc1a45d
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions packages/runtime/src/resources/binding-behaviors/binding-mode.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { ILogger } from '@aurelia/kernel';
import { PropertyBinding } from '../../binding/property-binding';
import { BindingMode, LifecycleFlags } from '../../flags';
import { IScope } from '../../observation';
Expand All @@ -9,43 +10,56 @@ export abstract class BindingModeBehavior {
private readonly originalModes: WeakMap<PropertyBinding, BindingMode> = new WeakMap();

public constructor(
protected readonly logger: ILogger,
private readonly mode: BindingMode,
) {}

public bind(flags: LifecycleFlags, scope: IScope, binding: PropertyBinding & WithMode): void {
this.logger.trace(`bind(%s, scope, binding)`, flags);

this.originalModes.set(binding, binding.mode);
binding.mode = this.mode;
}

public unbind(flags: LifecycleFlags, scope: IScope, binding: PropertyBinding & WithMode): void {
this.logger.trace(`unbind(%s, scope, binding)`, flags);

binding.mode = this.originalModes.get(binding) as BindingMode;
}
}

@bindingBehavior('oneTime')
export class OneTimeBindingBehavior extends BindingModeBehavior {
public constructor() {
super(BindingMode.oneTime);
public constructor(
@ILogger logger: ILogger,
) {
super(logger.scopeTo('OneTimeBindingBehavior'), BindingMode.oneTime);
}
}

@bindingBehavior('toView')
export class ToViewBindingBehavior extends BindingModeBehavior {
public constructor() {
super(BindingMode.toView);
public constructor(
@ILogger logger: ILogger,
) {
super(logger.scopeTo('ToViewBindingBehavior'), BindingMode.toView);
}
}

@bindingBehavior('fromView')
export class FromViewBindingBehavior extends BindingModeBehavior {
public constructor() {
super(BindingMode.fromView);
public constructor(
@ILogger logger: ILogger,
) {
super(logger.scopeTo('FromViewBindingBehavior'), BindingMode.fromView);
}
}

@bindingBehavior('twoWay')
export class TwoWayBindingBehavior extends BindingModeBehavior {
public constructor() {
super(BindingMode.twoWay);
public constructor(
@ILogger logger: ILogger,
) {
super(logger.scopeTo('TwoWayBindingBehavior'), BindingMode.twoWay);
}
}

0 comments on commit fc1a45d

Please sign in to comment.