Skip to content

Commit b8e7912

Browse files
refactor(*): create directives and statebuilders folders for ng1 and ng2
1 parent cbb7f6d commit b8e7912

21 files changed

+134
-103
lines changed

packages/ng1-bower/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"compilerOptions": { "rootDir": ".", "outDir": "../commonjs" },
33
"files": [
44
"ng1.ts",
5-
"ng1/stateEvents.ts",
5+
"ng1/legacy/stateEvents.ts",
66
"../typings/es6-shim/es6-shim.d.ts" ,
77
"../typings/angularjs/angular.d.ts"
88
]

packages/ng1-bower/webpack.config.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ module.exports = {
1212
entry: {
1313
"angular-ui-router": "./ng1.ts",
1414
"angular-ui-router.min": "./ng1.ts",
15-
"stateEvents": "./ng1/stateEvents.ts",
16-
"stateEvents.min": "./ng1/stateEvents.ts"
15+
"stateEvents": "./ng1/legacy/stateEvents.ts",
16+
"stateEvents.min": "./ng1/legacy/stateEvents.ts"
1717
},
1818

1919
output: {

packages/ng1/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"compilerOptions": { "rootDir": ".", "outDir": "../commonjs" },
33
"files": [
44
"ng1.ts",
5-
"ng1/stateEvents.ts",
5+
"ng1/legacy/stateEvents.ts",
66
"../typings/es6-shim/es6-shim.d.ts" ,
77
"../typings/angularjs/angular.d.ts"
88
]

packages/ng1/webpack.config.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ module.exports = {
1212
entry: {
1313
"angular-ui-router": "./ng1.ts",
1414
"angular-ui-router.min": "./ng1.ts",
15-
"stateEvents": "./ng1/stateEvents.ts",
16-
"stateEvents.min": "./ng1/stateEvents.ts"
15+
"stateEvents": "./ng1/legacy/stateEvents.ts",
16+
"stateEvents.min": "./ng1/legacy/stateEvents.ts"
1717
},
1818

1919
output: {

src/common/interface.ts

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* An interface for getting values from dependency injection.
3+
*/
4+
export interface UIRInjector {
5+
/**
6+
* Gets a value from the injector
7+
*
8+
* @example
9+
* ```js
10+
*
11+
* // ng1
12+
* injector.get('$state').go('home');
13+
* ```
14+
*
15+
* @example
16+
* ```js
17+
*
18+
* // ng2
19+
* import {StateService} from "ui-router-ng2";
20+
* injector.get(StateService).go('home');
21+
* ```
22+
*
23+
* Note:
24+
* The code that implements this interface may be Angular 1 `$injector`, Angular 2 `Injector`,
25+
* a [[ResolveContext]], or a `ResolveContext` that delegates to the ng1/ng2 injector if keys are missing.
26+
*
27+
* @param key the key for the value to get. May be a string or arbitrary object.
28+
* @return the Dependency Injection value that matches the key
29+
*/
30+
get(key: any): any;
31+
}

src/ng1.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export * from "./ng1/services";
1010
export * from "./ng1/statebuilders/views";
1111
export * from "./ng1/statebuilders/resolve";
1212

13-
import "./ng1/stateDirectives";
13+
import "./ng1/directives/stateDirectives";
1414
import "./ng1/stateFilters";
15-
import "./ng1/viewDirective";
15+
import "./ng1/directives/viewDirective";
1616
import "./ng1/viewScroll";
1717

1818
export default "ui.router";

src/ng1/stateDirectives.ts renamed to src/ng1/directives/stateDirectives.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
*
66
* @preferred @module ng1_directives
77
*/ /** for typedoc */
8-
import {extend, forEach, toJson} from "../common/common";
9-
import {isString, isObject} from "../common/predicates";
8+
import {extend, forEach, toJson} from "../../common/common";
9+
import {isString, isObject} from "../../common/predicates";
1010
import {UIViewData} from "./viewDirective";
11-
import {parse} from "../common/hof";
11+
import {parse} from "../../common/hof";
1212

1313
/** @hidden */
1414
function parseStateRef(ref, current) {

src/ng1/viewDirective.ts renamed to src/ng1/directives/viewDirective.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
/** @module ng1_directives */ /** for typedoc */
22
"use strict";
3-
import {extend, map, unnestR, filter} from "../common/common";
4-
import {isDefined, isFunction, isString} from "../common/predicates";
5-
import {trace} from "../common/trace";
6-
import {ActiveUIView} from "../view/interface";
7-
import {Ng1ViewConfig} from "./statebuilders/views";
8-
import {TransitionService} from "../transition/transitionService";
9-
import {parse} from "../common/hof";
10-
import {ResolveContext} from "../resolve/resolveContext";
11-
import {Transition} from "../transition/transition";
12-
import {Node} from "../path/node";
13-
import {Param} from "../params/param";
14-
import {kebobString} from "../common/strings";
15-
import {HookRegOptions} from "../transition/interface";
16-
import {Ng1Controller} from "./interface";
3+
import {extend, map, unnestR, filter} from "../../common/common";
4+
import {isDefined, isFunction, isString} from "../../common/predicates";
5+
import {trace} from "../../common/trace";
6+
import {ActiveUIView} from "../../view/interface";
7+
import {Ng1ViewConfig} from "../statebuilders/views";
8+
import {TransitionService} from "../../transition/transitionService";
9+
import {parse} from "../../common/hof";
10+
import {ResolveContext} from "../../resolve/resolveContext";
11+
import {Transition} from "../../transition/transition";
12+
import {Node} from "../../path/node";
13+
import {Param} from "../../params/param";
14+
import {kebobString} from "../../common/strings";
15+
import {HookRegOptions} from "../../transition/interface";
16+
import {Ng1Controller} from "../interface";
1717

1818
/** @hidden */
1919
export type UIViewData = {

src/ng1/statebuilders/onEnterExitRetain.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import {services} from "../../common/coreservices";
1515
export const getStateHookBuilder = (hookName) =>
1616
function stateHookBuilder(state: State, parentFn): TransitionStateHookFn {
1717
let hook = state[hookName];
18-
if (!hook) return;
19-
20-
return function decoratedNg1Hook(trans: Transition, inj: IInjectorService): HookResult {
21-
services.$injector.invoke(hook, this, trans.resolves());
18+
function decoratedNg1Hook(trans: Transition, inj: IInjectorService): HookResult {
19+
return services.$injector.invoke(hook, this, trans.resolves());
2220
}
21+
22+
return hook ? decoratedNg1Hook : undefined;
2323
};

src/ng2.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import "./justjs";
1010
export * from "./ng2/interface";
1111
export * from "./ng2/providers";
1212
export * from "./ng2/location";
13-
export * from "./ng2/directives";
14-
export * from "./ng2/viewsBuilder";
13+
export * from "./ng2/directives/directives";
14+
export * from "./ng2/statebuilders/views";
1515
export * from "./ng2/uiRouterConfig";
1616

src/ng2/componentUtil.ts

-27
This file was deleted.

src/ng2/directives.ts renamed to src/ng2/directives/directives.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
*
88
* @preferred @module ng2_directives
99
*/ /** */
10-
import {UiSref, AnchorUiSref} from "../ng2/uiSref";
11-
import {UiSrefActive} from "../ng2/uiSrefActive";
12-
import {UiView} from "../ng2/uiView";
10+
import {UiSref, AnchorUiSref} from "./uiSref";
11+
import {UiSrefActive} from "./uiSrefActive";
12+
import {UiView} from "./uiView";
1313
import {UiSrefStatus} from "./uiSrefStatus";
1414

1515
export * from "./uiView";

src/ng2/uiSref.ts renamed to src/ng2/directives/uiSref.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/** @module ng2_directives */ /** */
2-
import {UIRouter} from "../router";
2+
import {UIRouter} from "../../router";
33
import {Directive, Inject, Input} from "@angular/core";
44
import {Optional} from "@angular/core";
55
import {ElementRef} from "@angular/core";
66
import {Renderer} from "@angular/core";
77
import {UiView, ParentUiViewInject} from "./uiView";
8-
import {extend} from "../common/common";
8+
import {extend} from "../../common/common";
99

1010
/** @hidden */
1111
@Directive({ selector: 'a[uiSref]' })
File renamed without changes.

src/ng2/uiSrefStatus.ts renamed to src/ng2/directives/uiSrefStatus.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
/** @module ng2_directives */ /** */
22
import {Directive, Output, EventEmitter} from "@angular/core";
3-
import {StateService} from "../state/stateService";
3+
import {StateService} from "../../state/stateService";
44
import {UiSref} from "./uiSref";
5-
import {Node} from "../path/node";
6-
import {TransitionService} from "../transition/transitionService";
7-
import {Transition} from "../transition/transition";
8-
import {TargetState} from "../state/targetState";
9-
import {TreeChanges} from "../transition/interface";
10-
import {State} from "../state/stateObject";
11-
import {anyTrueR, tail, unnestR} from "../common/common";
12-
import {UIRouterGlobals} from "../globals";
13-
import {Param} from "../params/param";
14-
import {PathFactory} from "../path/pathFactory";
5+
import {Node} from "../../path/node";
6+
import {TransitionService} from "../../transition/transitionService";
7+
import {Transition} from "../../transition/transition";
8+
import {TargetState} from "../../state/targetState";
9+
import {TreeChanges} from "../../transition/interface";
10+
import {State} from "../../state/stateObject";
11+
import {anyTrueR, tail, unnestR} from "../../common/common";
12+
import {UIRouterGlobals} from "../../globals";
13+
import {Param} from "../../params/param";
14+
import {PathFactory} from "../../path/pathFactory";
1515

1616
/**
1717
* uiSref status booleans

src/ng2/uiView.ts renamed to src/ng2/directives/uiView.ts

+34-7
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
/** @module ng2_directives */ /** */
22
import {
33
Component, ComponentResolver, ComponentFactory,
4-
ViewContainerRef, ReflectiveInjector
4+
ViewContainerRef, ReflectiveInjector, InputMetadata, ComponentMetadata
55
} from '@angular/core';
66
import {provide} from "@angular/core";
77
import {Input} from "@angular/core";
88
import {ComponentRef} from "@angular/core";
99
import {Type} from "@angular/core";
1010

11-
import {UIRouter} from "../router";
12-
import {trace} from "../common/trace";
11+
import {UIRouter} from "../../router";
12+
import {trace} from "../../common/trace";
1313
import {Inject} from "@angular/core";
14-
import {ViewContext, ViewConfig} from "../view/interface";
15-
import {Ng2ViewDeclaration} from "./interface";
16-
import {ng2ComponentInputs} from "./componentUtil";
17-
import {Ng2ViewConfig} from "./viewsBuilder";
14+
import {ViewContext, ViewConfig} from "../../view/interface";
15+
import {Ng2ViewDeclaration} from "../interface";
16+
import {Ng2ViewConfig} from "../statebuilders/views";
1817

1918
/** @hidden */
2019
let id = 0;
@@ -25,6 +24,34 @@ export interface ParentUiViewInject {
2524
fqn: string;
2625
}
2726

27+
28+
/** @hidden */
29+
const ng2ComponentInputs = (ng2CompClass) => {
30+
/** Get "@Input('foo') _foo" inputs */
31+
let props = Reflect['getMetadata']('propMetadata', ng2CompClass);
32+
let _props = Object.keys(props || {})
33+
// -> { string, anno[] } tuples
34+
.map(key => ({ key, annoArr: props[key] }))
35+
// -> to { string, anno } tuples
36+
.reduce((acc, tuple) => acc.concat(tuple.annoArr.map(anno => ({ key: tuple.key, anno }))), [])
37+
// Only Inputs
38+
.filter(tuple => tuple.anno instanceof InputMetadata)
39+
// If they have a bindingPropertyName, i.e. "@Input('foo') _foo", then foo, else _foo
40+
.map(tuple => ({ resolve: tuple.anno.bindingPropertyName || tuple.key, prop: tuple.key }));
41+
42+
/** Get "inputs: ['foo']" inputs */
43+
let inputs = Reflect['getMetadata']('annotations', ng2CompClass)
44+
// Find the ComponentMetadata class annotation
45+
.filter(x => x instanceof ComponentMetadata && !!x.inputs)
46+
// Get the .inputs string array
47+
.map(x => x.inputs)
48+
// Flatten
49+
.reduce((acc, arr) => acc.concat(arr), [])
50+
.map(input => ({ resolve: input, prop: input }));
51+
52+
return _props.concat(inputs);
53+
};
54+
2855
/**
2956
* A UI-Router viewport directive, which is filled in by a view (component) on a state.
3057
*

src/ng2/providers.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ import {TransitionService} from "../transition/transitionService";
5555
import {UrlMatcherFactory} from "../url/urlMatcherFactory";
5656
import {UrlRouter} from "../url/urlRouter";
5757
import {ViewService} from "../view/view";
58-
import {UiView} from "./uiView";
59-
import {ng2ViewsBuilder, Ng2ViewConfig} from "./viewsBuilder";
58+
import {UiView} from "./directives/uiView";
59+
import {ng2ViewsBuilder, Ng2ViewConfig} from "./statebuilders/views";
6060
import {Ng2ViewDeclaration} from "./interface";
6161
import {UIRouterConfig} from "./uiRouterConfig";
6262
import {UIRouterGlobals} from "../globals";

src/ng2/viewsBuilder.ts renamed to src/ng2/statebuilders/views.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/** @module ng2 */ /** */
2-
import {State} from "../state/stateObject";
3-
import {Node} from "../path/node";
4-
import {pick, forEach} from "../common/common";
5-
import {ViewConfig} from "../view/interface";
6-
import {Ng2ViewDeclaration} from "./interface";
7-
import {services} from "../common/coreservices";
8-
import {ViewService} from "../view/view";
2+
import {State} from "../../state/stateObject";
3+
import {Node} from "../../path/node";
4+
import {pick, forEach} from "../../common/common";
5+
import {ViewConfig} from "../../view/interface";
6+
import {Ng2ViewDeclaration} from "../interface";
7+
import {services} from "../../common/coreservices";
8+
import {ViewService} from "../../view/view";
99

1010
/**
1111
* This is a [[StateBuilder.builder]] function for angular2 `views`.

src/state/hooks/enterExitHooks.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/** @module state */ /** for typedoc */
22
import {Transition} from "../../transition/transition";
3+
import {HookFn} from "../../transition/interface";
34

45
export class EnterExitHooks {
56
private transition: Transition;
@@ -15,20 +16,20 @@ export class EnterExitHooks {
1516
}
1617

1718
registerOnEnterHooks() {
18-
this.transition.entering().map(x => x.$$state()).filter(state => !!state.onEnter)
19+
this.transition.entering().map(x => x.$$state()).filter(state => !!state['onEnter'])
1920
.forEach(state =>
20-
this.transition.onEnter({entering: state.name}, state.onEnter));
21+
this.transition.onEnter({entering: state.name}, state['onEnter']));
2122
}
2223

2324
registerOnRetainHooks() {
24-
this.transition.retained().map(x => x.$$state()).filter(state => !!state.onRetain)
25+
this.transition.retained().map(x => x.$$state()).filter(state => !!state['onRetain'])
2526
.forEach(state =>
26-
this.transition.onRetain({retained: state.name}, state.onRetain));
27+
this.transition.onRetain({retained: state.name}, state['onRetain']));
2728
}
2829

2930
registerOnExitHooks() {
30-
this.transition.exiting().map(x => x.$$state()).filter(state => !!state.onExit)
31+
this.transition.exiting().map(x => x.$$state()).filter(state => !!state['onExit'])
3132
.forEach(state =>
32-
this.transition.onExit({exiting: state.name}, state.onExit));
33+
this.transition.onExit({exiting: state.name}, state['onExit']));
3334
}
3435
}

src/transition/hookRegistry.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/** @module transition */ /** for typedoc */
2-
import {IInjectable, extend, removeFrom, anyTrueR, allTrueR, tail} from "../common/common";
2+
import {extend, removeFrom, allTrueR, tail} from "../common/common";
33
import {isString, isFunction} from "../common/predicates";
4-
import {val} from "../common/hof";
54
import {Node} from "../path/node";
5+
import {TransitionStateHookFn, TransitionHookFn} from "./interface";
66

77
import {
8-
HookRegOptions, HookMatchCriteria, IStateMatch, IEventHook, IHookRegistry, IHookRegistration, TreeChanges,
8+
HookRegOptions, HookMatchCriteria, IEventHook, IHookRegistry, IHookRegistration, TreeChanges,
99
HookMatchCriterion, IMatchingNodes, HookFn
1010
} from "./interface";
1111
import {Glob} from "../common/glob";

0 commit comments

Comments
 (0)