1 | import { BindingOnSyntax } from "./binding_on_syntax";
|
2 | import { namedConstraint, taggedConstraint, traverseAncerstors, typeConstraint } from "./constraint_helpers";
|
3 | var BindingWhenSyntax = (function () {
|
4 | function BindingWhenSyntax(binding) {
|
5 | this._binding = binding;
|
6 | }
|
7 | BindingWhenSyntax.prototype.when = function (constraint) {
|
8 | this._binding.constraint = constraint;
|
9 | return new BindingOnSyntax(this._binding);
|
10 | };
|
11 | BindingWhenSyntax.prototype.whenTargetNamed = function (name) {
|
12 | this._binding.constraint = namedConstraint(name);
|
13 | return new BindingOnSyntax(this._binding);
|
14 | };
|
15 | BindingWhenSyntax.prototype.whenTargetIsDefault = function () {
|
16 | this._binding.constraint = function (request) {
|
17 | if (request === null) {
|
18 | return false;
|
19 | }
|
20 | var targetIsDefault = (request.target !== null) &&
|
21 | (!request.target.isNamed()) &&
|
22 | (!request.target.isTagged());
|
23 | return targetIsDefault;
|
24 | };
|
25 | return new BindingOnSyntax(this._binding);
|
26 | };
|
27 | BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {
|
28 | this._binding.constraint = taggedConstraint(tag)(value);
|
29 | return new BindingOnSyntax(this._binding);
|
30 | };
|
31 | BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {
|
32 | this._binding.constraint = function (request) {
|
33 | return request !== null && typeConstraint(parent)(request.parentRequest);
|
34 | };
|
35 | return new BindingOnSyntax(this._binding);
|
36 | };
|
37 | BindingWhenSyntax.prototype.whenParentNamed = function (name) {
|
38 | this._binding.constraint = function (request) {
|
39 | return request !== null && namedConstraint(name)(request.parentRequest);
|
40 | };
|
41 | return new BindingOnSyntax(this._binding);
|
42 | };
|
43 | BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {
|
44 | this._binding.constraint = function (request) {
|
45 | return request !== null && taggedConstraint(tag)(value)(request.parentRequest);
|
46 | };
|
47 | return new BindingOnSyntax(this._binding);
|
48 | };
|
49 | BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {
|
50 | this._binding.constraint = function (request) {
|
51 | return request !== null && traverseAncerstors(request, typeConstraint(ancestor));
|
52 | };
|
53 | return new BindingOnSyntax(this._binding);
|
54 | };
|
55 | BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {
|
56 | this._binding.constraint = function (request) {
|
57 | return request !== null && !traverseAncerstors(request, typeConstraint(ancestor));
|
58 | };
|
59 | return new BindingOnSyntax(this._binding);
|
60 | };
|
61 | BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {
|
62 | this._binding.constraint = function (request) {
|
63 | return request !== null && traverseAncerstors(request, namedConstraint(name));
|
64 | };
|
65 | return new BindingOnSyntax(this._binding);
|
66 | };
|
67 | BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {
|
68 | this._binding.constraint = function (request) {
|
69 | return request !== null && !traverseAncerstors(request, namedConstraint(name));
|
70 | };
|
71 | return new BindingOnSyntax(this._binding);
|
72 | };
|
73 | BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {
|
74 | this._binding.constraint = function (request) {
|
75 | return request !== null && traverseAncerstors(request, taggedConstraint(tag)(value));
|
76 | };
|
77 | return new BindingOnSyntax(this._binding);
|
78 | };
|
79 | BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {
|
80 | this._binding.constraint = function (request) {
|
81 | return request !== null && !traverseAncerstors(request, taggedConstraint(tag)(value));
|
82 | };
|
83 | return new BindingOnSyntax(this._binding);
|
84 | };
|
85 | BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {
|
86 | this._binding.constraint = function (request) {
|
87 | return request !== null && traverseAncerstors(request, constraint);
|
88 | };
|
89 | return new BindingOnSyntax(this._binding);
|
90 | };
|
91 | BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {
|
92 | this._binding.constraint = function (request) {
|
93 | return request !== null && !traverseAncerstors(request, constraint);
|
94 | };
|
95 | return new BindingOnSyntax(this._binding);
|
96 | };
|
97 | return BindingWhenSyntax;
|
98 | }());
|
99 | export { BindingWhenSyntax };
|
100 |
|
\ | No newline at end of file |