Showing preview only (8,795K chars total). Download the full file or copy to clipboard to get everything.
Repository: angular-ui/ui-router
Branch: master
Commit: 99a1232907ed
Files: 87
Total size: 8.4 MB
Directory structure:
gitextract_u4zorm0b/
├── .github/
│ ├── stale.yml
│ └── workflows/
│ ├── ci.yml
│ └── update_dependencies.yml
├── .npmignore
├── .npmrc
├── .prettierignore
├── .prettierrc.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── DOCS.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── artifacts.json
├── bower.json
├── downstream_projects.json
├── jest.config.js
├── karma.conf.js
├── package.json
├── rollup.config.js
├── scripts/
│ ├── bower_release.js
│ └── npm_angular_ui_router_release.js
├── src/
│ ├── angular.ts
│ ├── directives/
│ │ ├── stateDirectives.ts
│ │ └── viewDirective.ts
│ ├── index.ts
│ ├── injectables.ts
│ ├── interface.ts
│ ├── legacy/
│ │ ├── core-adapter.js
│ │ ├── resolveService.ts
│ │ └── stateEvents.ts
│ ├── locationServices.ts
│ ├── services.ts
│ ├── stateFilters.ts
│ ├── stateProvider.ts
│ ├── statebuilders/
│ │ ├── onEnterExitRetain.ts
│ │ └── views.ts
│ ├── templateFactory.ts
│ ├── urlRouterProvider.ts
│ └── viewScroll.ts
├── test/
│ ├── angular/
│ │ ├── 1.2/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── 1.3/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── 1.4/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── 1.5/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── 1.6/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── 1.7/
│ │ │ ├── angular-animate.js
│ │ │ ├── angular-mocks.js
│ │ │ └── angular.js
│ │ ├── jest-angular.js
│ │ └── update_all.sh
│ ├── jest.init.ts
│ ├── ng1StateBuilderSpec.ts
│ ├── resolveSpec.ts
│ ├── servicesSpec.ts
│ ├── stateDirectivesSpec.ts
│ ├── stateEventsSpec.ts
│ ├── stateFiltersSpec.ts
│ ├── stateSpec.ts
│ ├── templateFactorySpec.ts
│ ├── tsconfig.json
│ ├── typescript/
│ │ ├── 3.9/
│ │ │ ├── index.ts
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ │ ├── mktest.sh
│ │ └── template/
│ │ ├── index.ts
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── urlMatcherFactorySpec.ts
│ ├── urlRouterSpec.ts
│ ├── util/
│ │ └── testUtilsNg1.ts
│ ├── viewDirectiveSpec.ts
│ ├── viewHookSpec.ts
│ ├── viewScrollSpec.ts
│ └── viewSpec.ts
├── tsconfig.docgen.json
├── tsconfig.json
└── typedoc.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 180
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 14
# Issues with these labels will never be considered stale
exemptLabels:
- notstale
- security
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: |
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs.
This does not mean that the issue is invalid. Valid issues
may be reopened.
Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
================================================
FILE: .github/workflows/ci.yml
================================================
name: 'CI'
on:
push:
branches:
- master
pull_request:
jobs:
ci:
needs: [test]
runs-on: ubuntu-latest
steps:
- run: true
test:
name: yarn ${{ matrix.yarncmd }}
runs-on: ubuntu-latest
strategy:
matrix:
yarncmd: ['test', 'test:downstream', 'docs']
steps:
- uses: actions/checkout@v2
- name: Configure Environment
run: |
git config --global user.email uirouter@github.actions
git config --global user.name uirouter_github_actions
- name: Install Dependencies
run: yarn install --pure-lockfile
- name: Check Peer Dependencies
run: npx check-peer-dependencies
- name: Run yarn ${{ matrix.yarncmd }}
run: yarn ${{ matrix.yarncmd }}
================================================
FILE: .github/workflows/update_dependencies.yml
================================================
# This workflow requires a personal access token for uirouterbot
name: Weekly Dependency Bumps
on:
repository_dispatch:
types: [update_dependencies]
schedule:
- cron: '0 20 * * 0'
jobs:
upgrade-dependencies:
runs-on: ubuntu-latest
name: Update dependencies
strategy:
matrix:
excludes: ['']
deptype: ['dependencies', 'devDependencies']
latest: [false]
steps:
- uses: actions/checkout@v2
- run: |
git config user.name uirouterbot
git config user.password ${{ secrets.UIROUTERBOT_PAT }}
git remote set-url origin $(git remote get-url origin | sed -e 's/ui-router/uirouterbot/')
git fetch --unshallow -p origin
- name: Update dependencies
id: upgrade
uses: ui-router/publish-scripts/actions/upgrade@actions-upgrade-v1.0.3
with:
excludes: ${{ matrix.excludes }}
deptype: ${{ matrix.deptype }}
latest: ${{ matrix.latest }}
- name: Create Pull Request
id: cpr
if: ${{ steps.upgrade.outputs.upgrades != '' }}
# the following hash is from https://github.com/peter-evans/create-pull-request/releases/tag/v2.7.0
uses: peter-evans/create-pull-request@340e629d2f63059fb3e3f15437e92cfbc7acd85b
with:
token: ${{ secrets.UIROUTERBOT_PAT }}
request-to-parent: true
branch-suffix: 'random'
commit-message: 'chore(package): Update ${{ steps.upgrade.outputs.upgradecount }} ${{ matrix.deptype }} to ${{ steps.upgrade.outputs.upgradestrategy }}'
title: 'chore(package): Update ${{ steps.upgrade.outputs.upgradecount }} ${{ matrix.deptype }} to ${{ steps.upgrade.outputs.upgradestrategy }}'
body: |
chore(package): Update ${{ steps.upgrade.outputs.upgradecount }} ${{ matrix.deptype }} to ${{ steps.upgrade.outputs.upgradestrategy }}
```
${{ steps.upgrade.outputs.upgrades }}
```
Auto-generated by [create-pull-request][1]
[1]: https://github.com/peter-evans/create-pull-request
- name: Apply Merge Label
if: ${{ steps.cpr.outputs.pr_number != '' }}
uses: actions/github-script@0.9.0
with:
github-token: ${{ secrets.UIROUTERBOT_PAT }}
script: |
await github.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ steps.cpr.outputs.pr_number }},
labels: ['ready to squash and merge']
});
================================================
FILE: .npmignore
================================================
# Any hidden files
**/.*
node_modules
scripts
src
test
_docs
bower.json
karma.conf.js
tsconfig.json
tsconfig.**.json
webpack.config.js
*.iml
*.ipr
*.iws
idea-out
================================================
FILE: .npmrc
================================================
scripts-prepend-node-path=auto
================================================
FILE: .prettierignore
================================================
package.json
bower.json
CHANGELOG.md
test/**/angular.js
test/**/angular-mocks.js
test/**/angular-animate.js
release/**
================================================
FILE: .prettierrc.json
================================================
{
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 120
}
================================================
FILE: CHANGELOG.md
================================================
## 1.1.2 (2025-12-31)
[Compare `@uirouter/angularjs` versions 1.1.1 and 1.1.2](https://github.com/angular-ui/ui-router/compare/1.1.1...1.1.2)
---
### Updated `@uirouter/core` from 6.1.1 to 6.1.2
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.1.1 and 6.1.2](https://github.com/ui-router/core/compare/6.1.1...6.1.2)
### Bug Fixes
* **urlMatcher:** Fix potential ReDoS, thanks to www.HeroDevs.com ([0db52a1](https://github.com/ui-router/core/commit/0db52a1))
## 1.1.1 (2024-07-15)
[Compare `@uirouter/angularjs` versions 1.1.0 and 1.1.1](https://github.com/angular-ui/ui-router/compare/1.1.0...1.1.1)
### Features
* update uirouter core ([#3859](https://github.com/angular-ui/ui-router/issues/3859)) ([275c595](https://github.com/angular-ui/ui-router/commit/275c595))
---
### Updated `@uirouter/core` from 6.1.0 to 6.1.1
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.1.0 and 6.1.1](https://github.com/ui-router/core/compare/6.1.0...6.1.1)
### Bug Fixes
* **stateParams:** $inherit is not affected by enumerable prototype custom methods ([#841](https://github.com/ui-router/core/issues/841)) ([9c94c2a](https://github.com/ui-router/core/commit/9c94c2a))
# 1.1.0 (2023-04-16)
[Compare `@uirouter/angularjs` versions 1.0.30 and 1.1.0](https://github.com/angular-ui/ui-router/compare/1.0.30...1.1.0)
### Features
* **package:** move [@uirouter](https://github.com/uirouter)/core to peerDeps as per other uirouter packages ([#3850](https://github.com/angular-ui/ui-router/issues/3850)) ([6dd057c](https://github.com/angular-ui/ui-router/commit/6dd057c))
---
### Updated `@uirouter/core` from 6.0.8 to 6.1.0
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.8 and 6.1.0](https://github.com/ui-router/core/compare/6.0.8...6.1.0)
### Bug Fixes
* **angular-compiler:** remove index.metadata.json from uirouter core, ([37b5ebe](https://github.com/ui-router/core/commit/37b5ebe))
* **stateService:** make sure `$state.href` (and by extension `uiSref`) handle `inherit: false` ([#834](https://github.com/ui-router/core/issues/834)) ([12cd951](https://github.com/ui-router/core/commit/12cd951)), closes [/github.com/ui-router/core/pull/834#issuecomment-1379019917](https://github.com//github.com/ui-router/core/pull/834/issues/issuecomment-1379019917) [/github.com/ui-router/core/pull/834#issuecomment-1379195131](https://github.com//github.com/ui-router/core/pull/834/issues/issuecomment-1379195131)
## 1.0.30 (2021-12-01)
[Compare `@uirouter/angularjs` versions 1.0.29 and 1.0.30](https://github.com/angular-ui/ui-router/compare/1.0.29...1.0.30)
---
### Updated `@uirouter/core` from 6.0.7 to 6.0.8
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.7 and 6.0.8](https://github.com/ui-router/core/compare/6.0.7...6.0.8)
## 1.0.29 (2020-12-21)
[Compare `@uirouter/angularjs` versions 1.0.28 and 1.0.29](https://github.com/angular-ui/ui-router/compare/1.0.28...1.0.29)
---
### Updated `@uirouter/core` from 6.0.6 to 6.0.7
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.6 and 6.0.7](https://github.com/ui-router/core/compare/6.0.6...6.0.7)
### Bug Fixes
* **array:** Fix decoding of array-type query parameters ([44ebfae](https://github.com/ui-router/core/commit/44ebfae))
- Note: this fix does not affect angularjs
## 1.0.28 (2020-08-08)
[Compare `@uirouter/angularjs` versions 1.0.27 and 1.0.28](https://github.com/angular-ui/ui-router/compare/1.0.27...1.0.28)
### Bug Fixes
* should not transition states when alt-clicked ([8080adb](https://github.com/angular-ui/ui-router/commit/8080adb))
## 1.0.27 (2020-07-21)
[Compare `@uirouter/angularjs` versions 1.0.26 and 1.0.27](https://github.com/angular-ui/ui-router/compare/1.0.26...1.0.27)
### Bug Fixes
* make augmented StateRegistry.register overload better match the signature in core ([db4e63f](https://github.com/angular-ui/ui-router/commit/db4e63f))
---
### Updated `@uirouter/core` from 6.0.5 to 6.0.6
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.5 and 6.0.6](https://github.com/ui-router/core/compare/6.0.5...6.0.6)
### Bug Fixes
* **params:** Bi-directionally en/decode path and search params. ([#618](https://github.com/ui-router/core/issues/618)) ([89e99cd](https://github.com/ui-router/core/commit/89e99cd))
## 1.0.26 (2020-04-29)
[Compare `@uirouter/angularjs` versions 1.0.25 and 1.0.26](https://github.com/angular-ui/ui-router/compare/1.0.25...1.0.26)
---
### Updated `@uirouter/core` from 6.0.4 to 6.0.5
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.4 and 6.0.5](https://github.com/ui-router/core/compare/6.0.4...6.0.5)
### Bug Fixes
* **TargetState:** make isDef check more thorough ([e657cfe](https://github.com/ui-router/core/commit/e657cfe))
### Features
* **urlRuleFactory:** Add support for StateDeclarations in UrlRuleFactory.fromState() ([539d33a](https://github.com/ui-router/core/commit/539d33a))
## 1.0.25 (2020-02-04)
[Compare `@uirouter/angularjs` versions 1.0.24 and 1.0.25](https://github.com/angular-ui/ui-router/compare/1.0.24...1.0.25)
---
### Updated `@uirouter/core` from 6.0.3 to 6.0.4
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.3 and 6.0.4](https://github.com/ui-router/core/compare/6.0.3...6.0.4)
### Bug Fixes
* **safeConsole:** check if document is defined to avoid issues in node environments ([da29d88](https://github.com/ui-router/core/commit/da29d88))
## 1.0.24 (2019-12-30)
[Compare `@uirouter/angularjs` versions 1.0.23 and 1.0.24](https://github.com/angular-ui/ui-router/compare/1.0.23...1.0.24)
---
### Updated `@uirouter/core` from 6.0.1 to 6.0.3
Changelog for `@uirouter/core`:
[Compare `@uirouter/core` versions 6.0.1 and 6.0.3](https://github.com/ui-router/core/compare/6.0.1...6.0.3)
### Bug Fixes
* **hof:** Rewrite curry from scratch ([fc324c6](https://github.com/ui-router/core/commit/fc324c6)), closes [#350](https://github.com/ui-router/core/issues/350)
* **IE9:** Add safeConsole so IE9 doesn't break ([9c8579d](https://github.com/ui-router/core/commit/9c8579d))
### Features
* **stateService:** add transition option 'supercede' so transition can be ignored if one is pending ([6e5a56f](https://github.com/ui-router/core/commit/6e5a56f))
## 1.0.23 (2019-10-02)
[Compare `@uirouter/angularjs` versions 1.0.22 and 1.0.23](https://github.com/angular-ui/ui-router/compare/1.0.22...1.0.23)
### Bug Fixes
* **stateFilters:** Export each function individually ([978b882](https://github.com/angular-ui/ui-router/commit/978b882))
* **travis:** Fix travis build ([dc0f58a](https://github.com/angular-ui/ui-router/commit/dc0f58a))
* **types:** Remove [@types/jquery](https://github.com/types/jquery) from devDependencies, upgrade [@types/angular](https://github.com/types/angular) ([b12bc84](https://github.com/angular-ui/ui-router/commit/b12bc84))
* **viewDirective:** add check for componentProvider, avoid extra trigger for $onInit (fixing [#3735](https://github.com/angular-ui/ui-router/issues/3735)) ([#3779](https://github.com/angular-ui/ui-router/issues/3779)) ([c3e87ad](https://github.com/angular-ui/ui-router/commit/c3e87ad))
---
### Updated `@uirouter/core` from 5.0.23 to 6.0.1
[Compare `@uirouter/core` versions 5.0.23 and 6.0.1](https://github.com/ui-router/core/compare/5.0.23...6.0.1)
### Bug Fixes
* **resolve:** remove unnecessary generics from CustomAsyncPolicy ([#452](https://github.com/ui-router/core/issues/452)) ([61f4ee9](https://github.com/ui-router/core/commit/61f4ee9))
* **travis:** use service: xvfb instead of launching it manually. install libgconf debian package ([ac1ef4b](https://github.com/ui-router/core/commit/ac1ef4b))
### Features
* **resolve:** Remove RXWAIT async policy in favour of allowing user defined async policy function ([#366](https://github.com/ui-router/core/issues/366)) ([0ad87f6](https://github.com/ui-router/core/commit/0ad87f6))
### BREAKING CHANGES
* **resolve:** RXWAIT async policy has been removed, but it never worked in the first place
## 1.0.22 (2019-01-29)
[Compare `@uirouter/angularjs` versions 1.0.21 and 1.0.22](https://github.com/angular-ui/ui-router/compare/1.0.21...1.0.22)
### Updated `@uirouter/core` from 5.0.22 to 5.0.23
[Compare `@uirouter/core` versions 5.0.22 and 5.0.23](https://github.com/ui-router/core/compare/5.0.22...5.0.23)
### Bug Fixes
* **test_downstream_projects:** don't double build core while testing downstreams ([148b16b](https://github.com/ui-router/core/commit/148b16b))
* **typescript:** Fix typing of onChange callback in UrlService ([961ed0f](https://github.com/ui-router/core/commit/961ed0f)), closes [#229](https://github.com/ui-router/core/issues/229)
* **typescript:** Mark `params` as optional in StateService.href ([614bfb4](https://github.com/ui-router/core/commit/614bfb4)), closes [#287](https://github.com/ui-router/core/issues/287)
* **vanilla:** Fix baseHref parsing with chrome-extension:// urls ([f11be4d](https://github.com/ui-router/core/commit/f11be4d)), closes [#304](https://github.com/ui-router/core/issues/304)
## 1.0.21 (2019-01-10)
[Compare `@uirouter/angularjs` versions 1.0.20 and 1.0.21](https://github.com/angular-ui/ui-router/compare/1.0.20...1.0.21)
### Updated `@uirouter/core` from 5.0.21 to 5.0.22
[Compare `@uirouter/core` versions 5.0.21 and 5.0.22](https://github.com/ui-router/core/compare/5.0.21...5.0.22)
### Bug Fixes
* **lazyLoad:** StateBuilder should not mutate the state declaration ([1478a3c](https://github.com/ui-router/core/commit/1478a3c)), closes [/github.com/ui-router/core/commit/3cd5a2a#r31260154](https://github.com//github.com/ui-router/core/commit/3cd5a2a/issues/r31260154)
* **state:** Update URL in response to ignored transition due to redirect ([c64c252](https://github.com/ui-router/core/commit/c64c252))
### Features
* **TransitionHook:** Pass in transition to HookMatchCriteria ([#255](https://github.com/ui-router/core/issues/255)) ([926705e](https://github.com/ui-router/core/commit/926705e))
## 1.0.20 (2018-08-11)
[Compare `@uirouter/angularjs` versions 1.0.19 and 1.0.20](https://github.com/angular-ui/ui-router/compare/1.0.19...1.0.20)
### Updated `@uirouter/core` from 5.0.20 to 5.0.21
[Compare `@uirouter/core` versions 5.0.20 and 5.0.21](https://github.com/ui-router/core/compare/5.0.20...5.0.21)
### Bug Fixes
* **dynamic:** Use 'find' from common.ts instead of Array.prototype.find ([66a3244](https://github.com/ui-router/core/commit/66a3244)), closes [#215](https://github.com/ui-router/core/issues/215)
* **url:** When using html5Mode and no <base> tag is present, default to '/' ([23742e3](https://github.com/ui-router/core/commit/23742e3)), closes [#223](https://github.com/ui-router/core/issues/223)
## 1.0.19 (2018-07-20)
[Compare `@uirouter/angularjs` versions 1.0.18 and 1.0.19](https://github.com/angular-ui/ui-router/compare/1.0.18...1.0.19)
### Bug Fixes
* **npm:** Publish to the old angular-ui-router npm package too ([8fc3bb2](https://github.com/angular-ui/ui-router/commit/8fc3bb2))
* **resolve:** Detect and honor strictDi in angularjs versions 1.3 and 1.4 ([1368c18](https://github.com/angular-ui/ui-router/commit/1368c18)), closes [#3678](https://github.com/angular-ui/ui-router/issues/3678)
* **state:** When creating absolute hrefs in hashbang mode, include the location.pathname ([cd426e5](https://github.com/angular-ui/ui-router/commit/cd426e5)), closes [#3710](https://github.com/angular-ui/ui-router/issues/3710)
* **uiview:** Allow uiOnParamsChanged to work with states that have a componentProvider ([fe91bd3](https://github.com/angular-ui/ui-router/commit/fe91bd3)), closes [#3707](https://github.com/angular-ui/ui-router/issues/3707)
### Updated `@uirouter/core` from 5.0.19 to 5.0.20
[Compare `@uirouter/core` versions 5.0.19 and 5.0.20](https://github.com/ui-router/core/compare/5.0.19...5.0.20)
### Bug Fixes
* **params:** When creating an array parameter from a custom type, copy the `raw` property ([b6dd738](https://github.com/ui-router/core/commit/b6dd738)), closes [#178](https://github.com/ui-router/core/issues/178)
### Features
* **dynamic:** Support dynamic flag on a state declaration ([3cd5a2a](https://github.com/ui-router/core/commit/3cd5a2a))
* **transition:** Added transition.paramsChanged() to get added/deleted/changed parameter values for a transition ([10b7fde](https://github.com/ui-router/core/commit/10b7fde))
* **view:** Add _pluginapi._registeredUIView() to get a ui-view by id ([6533b51](https://github.com/ui-router/core/commit/6533b51))
## 1.0.18 (2018-05-19)
[Compare `@uirouter/angularjs` versions 1.0.17 and 1.0.18](https://github.com/angular-ui/ui-router/compare/1.0.17...1.0.18)
### Bug Fixes
* **bundles:** Do not run prettier against release/* bundles when publishing to bower ([9b420fa](https://github.com/angular-ui/ui-router/commit/9b420fa))
## 1.0.17 (2018-05-13)
[Compare `@uirouter/angularjs` versions 1.0.16 and 1.0.17](https://github.com/angular-ui/ui-router/compare/1.0.16...1.0.17)
### Updated `@uirouter/core` from 5.0.18 to 5.0.19
[Compare `@uirouter/core` versions 5.0.18 and 5.0.19](https://github.com/ui-router/core/compare/5.0.18...5.0.19)
### Bug Fixes
* **enums:** Workaround angular compiler export issue https://github.com/angular/angular/issues/23759 ([38d25fa](https://github.com/ui-router/core/commit/38d25fa))
## 1.0.16 (2018-05-03)
[Compare `@uirouter/angularjs` versions 1.0.15 and 1.0.16](https://github.com/angular-ui/ui-router/compare/1.0.15...1.0.16)
### Bug Fixes
* **docs:** downgrade to [@types](https://github.com/types)/angular[@1](https://github.com/1).6.25 to fix typings error when generating docs ([5850136](https://github.com/angular-ui/ui-router/commit/5850136))
### Updated `@uirouter/core` from 5.0.17 to 5.0.18
[Compare `@uirouter/core` versions 5.0.17 and 5.0.18](https://github.com/ui-router/core/compare/5.0.17...5.0.18)
### Bug Fixes
* **angular:** A hack to force the Angular compiler to import from module index ([d56a2be](https://github.com/ui-router/core/commit/d56a2be))
* **StateRegistry:** Notify listeners of added states when there are orphans in the state queue ([5a9bac9](https://github.com/ui-router/core/commit/5a9bac9))
* **transition:** Fix typing of Transition.params() ([ebea30e](https://github.com/ui-router/core/commit/ebea30e))
* **transition:** Normalize `error()` to always return `Rejection` ([9bcc5db](https://github.com/ui-router/core/commit/9bcc5db))
## 1.0.15 (2018-02-12)
[Compare `@uirouter/angularjs` versions 1.0.14 and 1.0.15](https://github.com/angular-ui/ui-router/compare/1.0.14...1.0.15)
### Bug Fixes
* **package:** update [@uirouter](https://github.com/uirouter)/core to version 5.0.17 ([1b54264](https://github.com/angular-ui/ui-router/commit/1b54264))
### Updated `@uirouter/core` from 5.0.16 to 5.0.17
[Compare `@uirouter/core` versions 5.0.16 and 5.0.17](https://github.com/ui-router/core/compare/5.0.16...5.0.17)
### Bug Fixes
* **core:** Fix leak of old transitions by mutating pathnode*.resolvables*.data ([0a1f518](https://github.com/ui-router/core/commit/0a1f518))
## 1.0.14 (2018-01-31)
[Compare `@uirouter/angularjs` versions 1.0.13 and 1.0.14](https://github.com/angular-ui/ui-router/compare/1.0.13...1.0.14)
### Bug Fixes
* **uiSrefActive:** don't match fuzzy on lazy loaded future states ([01430ee](https://github.com/angular-ui/ui-router/commit/01430ee))
### Features
* **uiSrefActive:** Support arrays of globs for ng-class style ([b215343](https://github.com/angular-ui/ui-router/commit/b215343))
### Updated `@uirouter/core` from 5.0.14 to 5.0.16
[Compare `@uirouter/core` versions 5.0.14 and 5.0.16](https://github.com/ui-router/core/compare/5.0.14...5.0.16)
### Bug Fixes
* **common:** Fix signature of for objects (make target optional) ([61d0afc](https://github.com/ui-router/core/commit/61d0afc))
* **core:** Fix memory leak of resolve data from ALL transitions ever ([7f2aed1](https://github.com/ui-router/core/commit/7f2aed1))
* **pathNode:** add backwards compat for PathNode.clone(). Add retainedWithToParams to treeChanges interface. ([4833a32](https://github.com/ui-router/core/commit/4833a32))
### Features
* **common:** Add map-in-place support to map() ([12bc7d8](https://github.com/ui-router/core/commit/12bc7d8))
* **common:** Add onEvict() callback registry for queues with max length ([c19d007](https://github.com/ui-router/core/commit/c19d007))
## 1.0.13 (2018-01-10)
[Compare `@uirouter/angularjs` versions 1.0.12 and 1.0.13](https://github.com/angular-ui/ui-router/compare/1.0.12...1.0.13)
### Updated `@uirouter/core` from 5.0.13 to 5.0.14
[Compare `@uirouter/core` versions 5.0.13 and 5.0.14](https://github.com/ui-router/core/compare/5.0.13...5.0.14)
### Bug Fixes
* **trace:** Fix null reference in uiview name sort function ([59cb067](https://github.com/ui-router/core/commit/59cb067))
* **treeChanges:** apply toParams to 'retained' path ([#72](https://github.com/ui-router/core/issues/72)) ([cf63d11](https://github.com/ui-router/core/commit/cf63d11))
## 1.0.12 (2017-12-22)
[Compare `@uirouter/angularjs` versions 1.0.11 and 1.0.12](https://github.com/angular-ui/ui-router/compare/1.0.11...1.0.12)
### Bug Fixes
* **location:** allow empty string param: Ng1LocationServices.url('') ([01bbaf0](https://github.com/angular-ui/ui-router/commit/01bbaf0))
* **onEnter:** Do not inject child-state data into ng1 onEnter hooks ([cdec6a0](https://github.com/angular-ui/ui-router/commit/cdec6a0))
* **package:** update [@uirouter](https://github.com/uirouter)/core to version 5.0.13 ([6c63f2d](https://github.com/angular-ui/ui-router/commit/6c63f2d))
* **travis:** regenerate and encrypt secret ([c718ce5](https://github.com/angular-ui/ui-router/commit/c718ce5))
### Updated `@uirouter/core` from 5.0.11 to 5.0.13
[Compare `@uirouter/core` versions 5.0.11 and 5.0.13](https://github.com/ui-router/core/compare/5.0.11...5.0.13)
### Bug Fixes
* **browserLocation:** Use location.pathname (not href) or '/' when no base tag found ([db461d6](https://github.com/ui-router/core/commit/db461d6))
* **browserLocationConfig:** If no base href found, use location.href (not empty string) ([0251424](https://github.com/ui-router/core/commit/0251424))
* **pushStateLocation:** Fix URLs: add slash between base and path when necessary ([bfa5755](https://github.com/ui-router/core/commit/bfa5755))
* **pushStateLocation:** When url is "" or "/", use baseHref for pushState ([042a950](https://github.com/ui-router/core/commit/042a950))
* **resolve:** Add onFinish hook to resolve any dynamicly added resolvables ([7d1ca54](https://github.com/ui-router/core/commit/7d1ca54))
* **urlRouter:** Update query params when resetting url via .update() ([7664cd0](https://github.com/ui-router/core/commit/7664cd0))
### Features
* **view:** Add onSync callback API to plugin API ([9544ae5](https://github.com/ui-router/core/commit/9544ae5))
## 1.0.11 (2017-11-13)
[Compare `@uirouter/angularjs` versions 1.0.10 and 1.0.11](https://github.com/angular-ui/ui-router/compare/1.0.10...1.0.11)
### Bug Fixes
* **uiView:** Fix cfg.getTemplate is undefined ([f4d99b0](https://github.com/angular-ui/ui-router/commit/f4d99b0))
## 1.0.10 (2017-10-18)
[Compare `@uirouter/angularjs` versions 1.0.9 and 1.0.10](https://github.com/angular-ui/ui-router/compare/1.0.9...1.0.10)
### Bug Fixes
* **artifactory:** Add trailing newline to package.json to work around artifactory issue ([#3551](https://github.com/angular-ui/ui-router/issues/3551)) ([d09a345](https://github.com/angular-ui/ui-router/commit/d09a345)), closes [#3550](https://github.com/angular-ui/ui-router/issues/3550)
## 1.0.9 (2017-10-17)
[Compare `@uirouter/angularjs` versions 1.0.8 and 1.0.9](https://github.com/angular-ui/ui-router/compare/1.0.8...1.0.9)
### Updated `@uirouter/core` from 5.0.10 to 5.0.11
[Compare `@uirouter/core` versions 5.0.10 and 5.0.11](https://github.com/ui-router/core/compare/5.0.10...5.0.11)
### Bug Fixes
* **ie9:** make console.bind work in ie9 ([#85](https://github.com/ui-router/core/issues/85)) ([318214b](https://github.com/ui-router/core/commit/318214b))
## 1.0.8 (2017-10-07)
[Compare `@uirouter/angularjs` versions 1.0.7 and 1.0.8](https://github.com/angular-ui/ui-router/compare/1.0.7...1.0.8)
## 5.0.10 (2017-10-07)
[Compare `@uirouter/core` versions 5.0.8 and 5.0.10](https://github.com/ui-router/core/compare/5.0.8...5.0.10)
### Bug Fixes
* **angular/cli:** Use package.json fields: 'typings', 'main', 'jsnext:main' ([74143d9](https://github.com/ui-router/core/commit/74143d9))
* **isomorphic:** Remove use of CustomEvent. Detect root scope (global/window/self) for nodejs, browser, or web-worker. ([2d206ba](https://github.com/ui-router/core/commit/2d206ba))
* **typings:** Use StateObject for parameter to hook criteria functions ([5b58566](https://github.com/ui-router/core/commit/5b58566))
### Features
* **TransitionHook:** Add hook registration option `invokeLimit` to limit the number of times a hook is invoked before being auto-deregistered. ([2cb17ef](https://github.com/ui-router/core/commit/2cb17ef))
## 1.0.7 (2017-09-30)
[Compare `@uirouter/angularjs` versions 1.0.6 and 1.0.7](https://github.com/angular-ui/ui-router/compare/1.0.6...1.0.7)
### Bug Fixes
* **typings:** Allow views: { foo: 'string' } in Ng1StateDeclaration ([2f7a3f2](https://github.com/angular-ui/ui-router/commit/2f7a3f2))
### Updated `@uirouter/core` from 5.0.6 to 5.0.8 (2017-09-30)
[Compare `@uirouter/core` versions 5.0.6 and 5.0.8](https://github.com/ui-router/core/compare/5.0.6...5.0.8)
### Bug Fixes
* **bundle:** Rollup: Do not warn on THIS_IS_UNDEFINED ([a4581b1](https://github.com/ui-router/core/commit/a4581b1))
* **globals:** Use shallow copy to update the globals.params / $state.params object ([e883afc](https://github.com/ui-router/core/commit/e883afc))
* **Injector:** When getting tokens from native injector, only throw on undefined (not on falsey values) ([ada9ca2](https://github.com/ui-router/core/commit/ada9ca2))
* **redirectTo:** Fix typings for redirectTo. Allow a function that returns a target state or a promise for one. ([3904487](https://github.com/ui-router/core/commit/3904487))
* **trace:** Fall back to console.log if .table is unavailable (IE) ([c8110fc](https://github.com/ui-router/core/commit/c8110fc))
* **trace:** Support tracing of object-parameters with circular references ([2f1ae9a](https://github.com/ui-router/core/commit/2f1ae9a))
* **url:** Add CustomEvent polyfill for IE ([a50db21](https://github.com/ui-router/core/commit/a50db21))
* **vanilla:** fix base path handling for vanilla push state ([ad61d74](https://github.com/ui-router/core/commit/ad61d74))
* **vanilla:** Use `self` instead of `window` for webworker compat ([a4629ee](https://github.com/ui-router/core/commit/a4629ee))
### Features
* **TargetState:** Add builder methods .withState, .withParams, and .withOptions ([6b93142](https://github.com/ui-router/core/commit/6b93142))
## `@uirouter/angularjs` 1.0.6 (2017-08-12)
[Compare `@uirouter/angularjs` versions 1.0.5 and 1.0.6](https://github.com/angular-ui/ui-router/compare/1.0.5...1.0.6)
### Bug Fixes
* **sourcemaps:** Embed sources inline into sourcemaps ([4baa430](https://github.com/angular-ui/ui-router/commit/4baa430))
## Changes in `@uirouter/core` between versions [5.0.5 and 5.0.6](https://github.com/ui-router/core/compare/5.0.5...5.0.6) (2017-08-12)
### Bug Fixes
* **sourceMaps:** Embed typescript sources in sourcemaps ([10558a3](https://github.com/ui-router/core/commit/10558a3))
* **typescript:** Fix strictNullCheck type error ([0ae585e](https://github.com/ui-router/core/commit/0ae585e))
* **urlRouter:** Fix absolute 'href' generation by using location.hostname (not location.host) ([a28b68a](https://github.com/ui-router/core/commit/a28b68a))
* **urlService:** Fix priority sorting of URL rules ([73a1fe0](https://github.com/ui-router/core/commit/73a1fe0))
<a name="1.0.5"></a>
## [1.0.5](https://github.com/angular-ui/ui-router/compare/1.0.4...1.0.5) (2017-06-29)
Updated to @uirouter/core 5.0.5 and addressed typescript 2.4 breaking changes
## Changes in `@uirouter/core` between versions [5.0.3 and 5.0.5](https://github.com/ui-router/core/compare/5.0.3...5.0.5) (2017-06-29)
### Bug Fixes
* **future:** Allow future states to specify a `parent:` ([828fe1b](https://github.com/ui-router/core/commit/828fe1b))
* **typescript:** Update to typescript 2.4 ([ce1669b](https://github.com/ui-router/core/commit/ce1669b))
* **view:** only sync views which are of the same name *and type* ([c48da4a](https://github.com/ui-router/core/commit/c48da4a))
### Features
* **invalidTransition:** Better error messaging when param values are invalid ([2a15d1a](https://github.com/ui-router/core/commit/2a15d1a))
* **trace:** Trace view synchronization. Allow trace.enable(...string) ([284392d](https://github.com/ui-router/core/commit/284392d))
* **urlMatcher:** add support for multiline urls ([5b11ce0](https://github.com/ui-router/core/commit/5b11ce0))
<a name="1.0.4"></a>
## [1.0.4](https://github.com/angular-ui/ui-router/compare/1.0.3...1.0.4) (2017-06-09)
### Bug Fixes
* **bundle:** work around rollup bug https://github.com/rollup/rollup/issues/1322 ([befb50a](https://github.com/angular-ui/ui-router/commit/befb50a))
* **uiSrefActive:** Avoid "Possibly unhandled rejection" in console ([5c09e28](https://github.com/angular-ui/ui-router/commit/5c09e28))
### @uirouter/core changes
## [5.0.4](https://github.com/ui-router/core/compare/5.0.3...5.0.4) (2017-06-09)
### Bug Fixes
* **future:** Allow future states to specify a `parent:` ([828fe1b](https://github.com/ui-router/core/commit/828fe1b))
* **view:** only sync views which are of the same name *and type* ([c48da4a](https://github.com/ui-router/core/commit/c48da4a))
### Features
* **invalidTransition:** Better error messaging when param values are invalid ([2a15d1a](https://github.com/ui-router/core/commit/2a15d1a))
* **trace:** Trace view synchronization. Allow trace.enable(...string) ([284392d](https://github.com/ui-router/core/commit/284392d))
<a name="1.0.3"></a>
## [1.0.3](https://github.com/angular-ui/ui-router/compare/1.0.1...1.0.3) (2017-05-07)
### Bug Fixes
* **templateFactory:** Do not prepend x- to attribute names unless necessary. ([e573f06](https://github.com/angular-ui/ui-router/commit/e573f06))
### Features
* **build:** Publish non-monolithic @uirouter/angularjs UMD bundle `ui-router-angularjs.js` ([8db3696](https://github.com/angular-ui/ui-router/commit/8db3696))
** Note: this change is necessary to properly support plugins which depend on @uirouter/core
### @uirouter/core changes
## [5.0.3](https://github.com/ui-router/core/compare/5.0.1...5.0.3) (2017-05-07)
### Bug Fixes
* **common:** Fix implementation of 'pick' -- use hasOwnProperty ([09848a4](https://github.com/ui-router/core/commit/09848a4))
* **common:** Re-fix implementation of 'pick' using for .. in ([f2da7f4](https://github.com/ui-router/core/commit/f2da7f4))
### Features
* **build:** Build and distribute @uirouter/core UMD bundles ([0a8da85](https://github.com/ui-router/core/commit/0a8da85))
<a name="1.0.1"></a>
## [1.0.1](https://github.com/angular-ui/ui-router/compare/1.0.0...1.0.1) (2017-05-04)
### Bug Fixes
* **routeToComponent:** Do not prefix component element with `x-` unless necessary. ([60b9ef9](https://github.com/angular-ui/ui-router/commit/60b9ef9))
<a name="1.0.0"></a>
# [1.0.0](https://github.com/angular-ui/ui-router/compare/1.0.0-rc.1...1.0.0) (2017-04-30)
# NOTICE: The npm package is renamed from `angular-ui-router` to `@uirouter/angularjs`
### Bug Fixes
* **noImplicitAny:** move noimplicitany compliance test file to correct location ([ec6e5e4](https://github.com/angular-ui/ui-router/commit/ec6e5e4))
* **onEnter:** Fix typescript typing for onEnter/onRetain/onExit ([df6ee24](https://github.com/angular-ui/ui-router/commit/df6ee24))
* **routeToComponent:** Bind resolves that start with data- or x- ([4559c32](https://github.com/angular-ui/ui-router/commit/4559c32))
* **StateRegistry:** Allow stateRegistry.register() to take a Ng1StateDeclaration ([cc88525](https://github.com/angular-ui/ui-router/commit/cc88525)), closes [#3345](https://github.com/angular-ui/ui-router/issues/3345)
* **uiCanExit:** Only process uiCanExit hook once during redirects ([7a086ee](https://github.com/angular-ui/ui-router/commit/7a086ee))
* **uiSref:** replace angular.copy with extend (PR [#3330](https://github.com/angular-ui/ui-router/issues/3330)) ([20d1fcd](https://github.com/angular-ui/ui-router/commit/20d1fcd)), closes [#3189](https://github.com/angular-ui/ui-router/issues/3189)
* **UrlRouterProvider:** export `UrlRouterProvider` symbol for use with .d.ts typings ([d71bad0](https://github.com/angular-ui/ui-router/commit/d71bad0)), closes [#3296](https://github.com/angular-ui/ui-router/issues/3296)
* **view:** Allow targeting nested named ui-view by simple ui-view name ([8fe5b1f](https://github.com/angular-ui/ui-router/commit/8fe5b1f))
* **views:** Allow same views object to be reused in multiple states ([66103fc](https://github.com/angular-ui/ui-router/commit/66103fc)), closes [#3353](https://github.com/angular-ui/ui-router/issues/3353)
* **views:** Better validation of view declarations (throw when there are state-level and view-level conflicts) ([7573156](https://github.com/angular-ui/ui-router/commit/7573156))
### Features
* **uiSref:** Bind ui-sref to other DOM events (PR [#3343](https://github.com/angular-ui/ui-router/issues/3343)) ([193ac2e](https://github.com/angular-ui/ui-router/commit/193ac2e)), closes [#3169](https://github.com/angular-ui/ui-router/issues/3169)
* **uiSref:** switch custom events prop from `event:` to `events:` ([d3942a6](https://github.com/angular-ui/ui-router/commit/d3942a6))
UI-Router for AngularJS version 1.0.0 updates `ui-router-core@3.1.0` to `@uirouter/core@5.0.1`.
Please keep reading to see if the breaking changes from core between 3.1.0 and 5.0.1 affect you.
### `@uirouter/core` changes
# [diff to 3.1.0](https://github.com/ui-router/core/compare/3.1.0...5.0.1) (2017-04-30)
### Bug Fixes
* **BrowserLocationConfig:** fixed protocol + port value ([#38](https://github.com/ui-router/core/issues/38)) ([5559382](https://github.com/ui-router/core/commit/5559382))
* **lazyLoad:** Allow `lazyLoad` stateBuilder: Get lazyLoad fn from internal State object, not StateDeclaration ([9313880](https://github.com/ui-router/core/commit/9313880))
* **lazyLoad:** Wait for future state to be replaced before registering lazy children ([4bdce47](https://github.com/ui-router/core/commit/4bdce47))
* **noImplicitAny:** Fix noimplicitany compliance ([1a6cdfc](https://github.com/ui-router/core/commit/1a6cdfc))
* **pushStateLocation:** call listeners in url() ([#24](https://github.com/ui-router/core/issues/24)) ([7c90911](https://github.com/ui-router/core/commit/7c90911)), closes [#23](https://github.com/ui-router/core/issues/23)
* **redirect:** Do not update URL after redirect with { location: false } ([652a760](https://github.com/ui-router/core/commit/652a760))
* **resolve:** Allow resolve's state context to be injected as `$state$` ([a06948b](https://github.com/ui-router/core/commit/a06948b))
* **tfs:** Rename $q.ts and $injector.ts files, removing leading dollar signs ([cb653ee](https://github.com/ui-router/core/commit/cb653ee))
* **trace:** Re-add transitionStart trace ([b019036](https://github.com/ui-router/core/commit/b019036))
* **transitionHook:** Do not process transition hooks after router has been disposed. ([666c6d7](https://github.com/ui-router/core/commit/666c6d7))
* **TransitionHook:** Transition hooks no longer expose the internal StateObject ([2b0e48b](https://github.com/ui-router/core/commit/2b0e48b))
* **typings:** Allow strictNullChecks for HookMatchCriteria ([d92d4d5](https://github.com/ui-router/core/commit/d92d4d5))
* **ui-sref:** Improve performance of generating hrefs ([c3967bd](https://github.com/ui-router/core/commit/c3967bd))
* **view:** Do not throw when uiView doesn't have a state context ([f76ee2a](https://github.com/ui-router/core/commit/f76ee2a))
* **view:** Update views in order of ui-view depth and also by state depth ([46dea2b](https://github.com/ui-router/core/commit/46dea2b))
### Features
* **abort:** Add API to manually abort/cancel a transition ([39f8a53](https://github.com/ui-router/core/commit/39f8a53))
* **common:** Perf improvements in hot functions: ([4193244](https://github.com/ui-router/core/commit/4193244))
* **core:** Export all vanilla.* code from `ui-router-core` ([f3392d1](https://github.com/ui-router/core/commit/f3392d1))
* **core:** Switch to [@uirouter](https://github.com/uirouter)/core npm module ([e3f389f](https://github.com/ui-router/core/commit/e3f389f))
* **decorators:** Add state, resolve and resolve data decorators ([642df0b](https://github.com/ui-router/core/commit/642df0b))
* **defaultErrorHandler:** Do not invoke default error handler for ABORTED transitions ([b07a24b](https://github.com/ui-router/core/commit/b07a24b))
* **globals:** Removed `UIRouterGlobals` interface. Renamed `Globals` class to `UIRouterGlobals` ([8719334](https://github.com/ui-router/core/commit/8719334))
* **Globals:** implement Disposable and delete global transition data ([a794018](https://github.com/ui-router/core/commit/a794018))
* **onBefore:** Run onBefore hooks asynchronously. ([30b82aa](https://github.com/ui-router/core/commit/30b82aa))
* **onEnter/Exit/Retain:** Use onExit/onEnter/onRetain from 56955state(), not state.self ([bc1f554](https://github.com/ui-router/core/commit/bc1f554))
* **Rejection:** Add $id to ease debugging of transition rejections ([d456d54](https://github.com/ui-router/core/commit/d456d54))
* **State:** Support registration of ES6 state classes (as opposed to object literals) ([3a5d055](https://github.com/ui-router/core/commit/3a5d055))
* **State:** Switch Internal State Object to prototypally inherit from the State Declaration ([027c995](https://github.com/ui-router/core/commit/027c995)), closes [#34](https://github.com/ui-router/core/issues/34)
* **StateObject:** Rename internal `State` object to `StateObject` ([feceaf9](https://github.com/ui-router/core/commit/feceaf9))
* **StateRegistry:** improve perf for: `.register()` and `StateMatcher.find()` misses ([fdb3ab9](https://github.com/ui-router/core/commit/fdb3ab9))
* **transition:** Ignore duplicate transitions (double clicks) ([bd1bd0b](https://github.com/ui-router/core/commit/bd1bd0b))
* **transition:** Improve supersede logic: Do not supersede if the new trans is aborted before onStart ([3141a8f](https://github.com/ui-router/core/commit/3141a8f))
* **transition:** Run hooks synchronously in current stack, when possible ([953e618](https://github.com/ui-router/core/commit/953e618))
* **Transition:** deprecate `Transition.is()` which was never implemented ([1edff4b](https://github.com/ui-router/core/commit/1edff4b))
* **Transition:** Normalize all transition errors to a Rejection. ([a7464bb](https://github.com/ui-router/core/commit/a7464bb))
* **UIRouter:** Add `trace` global to the `UIRouter` object ([48c5af6](https://github.com/ui-router/core/commit/48c5af6))
* **UrlService:** (`UrlRouter`) improve perf of registering Url Rules and sorting Url Rules ([64fbfff](https://github.com/ui-router/core/commit/64fbfff))
* **UrlService:** Add `rules.initial("/home")` to config initial state (like otherwise) ([bbe4209](https://github.com/ui-router/core/commit/bbe4209))
* **View:** Allow targeting views on own state using `viewname@.` (normalizeUIViewTarget) ([7078216](https://github.com/ui-router/core/commit/7078216)), closes [#25](https://github.com/ui-router/core/issues/25)
### BREAKING CHANGES
## **TransitionHook:** Transition hooks no longer expose the internal `State` object (now named `StateObject`)
#### Before:
```js
import { State } from "ui-router-core";
const match = { to: (state: State) => state.data.auth };
transitionsvc.onEnter(match, (trans: Transition, state: State) => {
// state is the internal State object
if (state.includes["foo"]) { // internal ui-router API
return false;
}
}
```
#### Now:
```js
import { StateDeclaration } from "ui-router-core";
const match = { to: (state: StateDeclaration) => state.data.auth };
transitionsvc.onEnter(match, (trans: Transition, state: StateDeclaration) => {
// state === the state object you registered
// Access internal ui-router API using $$state()
if (state.$$state().includes["foo"]) {
return false;
}
}
```
#### Motivation:
The `State` object (now named `StateObject`) is an internal API and should not be exposed via any public APIs.
If you depend on the internal APIs, you can still access the internal object by calling `state.$$state()`.
#### BC Likelihood
How likely is this BC to affect me?
Medium: You will likely be affected you 1) have transition hooks, 2) are using typescript and/or 3) use the internal ui-router State API.
#### BC Severity
How severe is this BC?
Low: Access to the internal api is still available using `$$state()`.
## **StateObject:** Renamed internal API `State` object to `StateObject`
#### Before:
```
import {State} from "ui-router-core";
```
- #### Now:
```
import {StateObject} from "ui-router-core";
```
#### Motivation:
We'd like to use the `State` name/symbol as a public API.
It will likely be an ES7/TS decorator for ES6/TS state definition classes, i.e:
```js
@State("foo")
export class FooState implements StateDeclaration {
url = "/foo";
component = FooComponent;
@Resolve({ deps: [FooService] })
fooData(fooService) {
return fooService.getFoos();
}
}
```
#### BC Likelihood
How likely is this to affect me?
Low: This only affects code that imports the internal API symbol `State`.
You will likely be affected you 1) import that symbol, 2) are using typescript and 3) explicitly
typed a variable such as `let internalStateObject = state.$$state();`
#### BC Severity
How severe is this change?
Low: Find all places where `State` is imported and rename to `StateObject`
## **Transition:** All Transition errors are now wrapped in a Rejection object.
#### Before:
Previously, if a transition hook returned a rejected promise:
```js
.onStart({}, () => Promise.reject('reject transition'));
```
In `onError` or `transtion.promise.catch()`, the raw rejection was returned:
```js
.onError({}, (trans, err) => err === 'reject transition')
```
#### Now:
Now, the error is wrapped in a Rejection object.
- The detail (thrown error or rejected value) is still available as `.detail`.
```js
.onError({}, (trans, err) =>
err instanceof Rejection && err.detail === 'reject transition')
```
- The Rejection object indicates the `.type` of transition rejection (ABORTED, ERROR, SUPERSEDED and/or redirection).
```js
.onError({}, (trans, err) => {
err.type === RejectType.ABORTED === 3
});
```
#### Motivation:
Errors *thrown from* a hook and rejection values *returned from* a hook can now be processed in the same way.
#### BC Likelihood
How likely is this to affect me?
Medium: apps which have onError handlers for rejected values
#### BC Severity
How severe is this change?
Low: Find all error handlers (or .catch/.then chains) that do not understand Rejection. Add `err.detail` processing.
## **onBefore:** `onBefore` hooks are now run asynchronously like all the other hooks.
#### Old behavior
Previously, the `onBefore` hooks were run in the same stackframe as `transitionTo`.
If they threw an error, it could be caught using try/catch.
```js
transitionService.onBefore({ to: 'foo' }), () => { throw new Error('doh'); });
try {
stateService.go('foo');
} catch (error) {
// handle error
}
```
#### New behavior
Now, `onBefore` hooks are processed asynchronously.
To handle errors, use any of the async error handling paradigms:
- Chain off the promise
```js
transitionService.onBefore({ to: 'foo' }), () => { throw new Error('doh'); });
stateService.go('foo').catch(error => { //handle error });
```
- Define an error handler
```js
transitionService.onBefore({ to: 'foo' }), () => { throw new Error('doh'); });
transitionService.onError({ to: 'foo' }), () => { // handle error });
stateService.go('foo');
```
- Use the global defaultErrorHandler
```js
transitionService.onBefore({ to: 'foo' }), () => { throw new Error('doh'); });
stateService.go('foo');
stateService.defaultErrorHandler(error => { // global error handler });
```
#### Motivation
Why introduce a BC?
- No subtle behavior differences by hook type
- Simpler code and mental model
- Fewer edge cases to account for
#### BC Liklihood
How likely is this to affect my app?
Very Low: Apps that registered onBefore hooks and depend on
synchronous execution are affected.
#### BC Severity
How severe is this BC?
Low: Switch to asynchronous handling, such as chaining off the
transition promise
## **defaultErrorHandler:** ABORTED transitions do not invoke the `defaultErrorHandler`
Returning `false` from a transition hook will abort the transition.
#### Old behavior
Previously, this case was considered an error and was logged by
`defaultErrorHandler`.
After your feedback, we agree that this is not typically an error.
#### New behavior
Now, aborted transitions do not trigger the `defaultErrorHandler`
#### Motivation:
> Why introduce a BC?
Most users do not consider ABORT to be an error. The default error
handler should match this assumption.
#### BC liklihood
> How likely am I to be affected?
Low: Most users do not consider ABORT to be an error. For most users
this will not be a BC.
#### BC severity
> How severe is this BC?
Low: Users who want to handle all transition rejections can
register a `.onError` handler and filter/process accordingly.
## **globals:** This change will likely only affect a small subset of typescript users and probably only those using `ui-router-ng2`.
If you're injecting the `Globals` class somewhere, e.g.:
```
@Injectable()
class MyService {
_globals: UIRouterGlobals;
constructor(globals: Globals) {
this._globals = <UIRouterGlobals> globals;
}
}
```
you should now inject `UIRouterGlobals`, e.g.:
```
@Injectable()
class MyService {
constructor(public globals: UIRouterGlobals) { }
}
```
Likewise, if you were casting the `UIRouter.globals` object as a `UIRouterGlobals`, it is no longer necessary:
```js
function myHook(trans: Transition) {
let globals: UIRouterGlobals = trans.router.globals; // cast is no longer necessary
}
```
Closes https://github.com/ui-router/core/issues/31
<a name="1.0.0-rc.1"></a>
# [1.0.0-rc.1](https://github.com/angular-ui/ui-router/compare/1.0.0-beta.3...v1.0.0-rc.1) (2017-01-09)
### Bug Fixes
* Post-process .d.ts files to make them compatible with TS 1.8 ([c8162ee](https://github.com/angular-ui/ui-router/commit/c8162ee)), closes [#3070](https://github.com/angular-ui/ui-router/issues/3070)
* **$stateChangeSuccess:** fire polyfill `$stateChangeSuccess` right after global state are updated ([3984f9b](https://github.com/angular-ui/ui-router/commit/3984f9b)), closes [#3144](https://github.com/angular-ui/ui-router/issues/3144)
* **$viewContentLoading:** Add $viewContentLoading event back ([c346a28](https://github.com/angular-ui/ui-router/commit/c346a28))
* **build:** Use global `angular` reference if require('angular') is falsey or empty ([2982613](https://github.com/angular-ui/ui-router/commit/2982613)), closes [#3113](https://github.com/angular-ui/ui-router/issues/3113)
* **component:** Do not throw err when component has `&` binding ([b5c731d](https://github.com/angular-ui/ui-router/commit/b5c731d)), closes [#3099](https://github.com/angular-ui/ui-router/issues/3099)
* **Ng1ViewDeclaration:** Make controllerProvider IInjectable ([#3056](https://github.com/angular-ui/ui-router/issues/3056)) ([a3136ae](https://github.com/angular-ui/ui-router/commit/a3136ae)), closes [#3044](https://github.com/angular-ui/ui-router/issues/3044)
* **ng2.uiSrefActive:** Allow ng-if on nested uiSrefs ([e3051f5](https://github.com/angular-ui/ui-router/commit/e3051f5)), closes [#3046](https://github.com/angular-ui/ui-router/issues/3046)
* **onExit:** inject resolve values using the "from path" ([c91b65a](https://github.com/angular-ui/ui-router/commit/c91b65a))
* **onExit:** inject the current transition as `$transition$` ([c91b65a](https://github.com/angular-ui/ui-router/commit/c91b65a)), closes [#3081](https://github.com/angular-ui/ui-router/issues/3081)
* **package:** use engines: node: >=4.0.0 ([6801b0c](https://github.com/angular-ui/ui-router/commit/6801b0c)), closes [#3086](https://github.com/angular-ui/ui-router/issues/3086)
* **Resolve:** Fix NOWAIT resolve injection into controllers and bindings to components. ([cb57ce9](https://github.com/angular-ui/ui-router/commit/cb57ce9))
* **typings:** Change Ng1ViewDeclaration.controller type to IInjectable|string ([d2b5d84](https://github.com/angular-ui/ui-router/commit/d2b5d84)), closes [#3089](https://github.com/angular-ui/ui-router/issues/3089)
* **typings:** Change Ng1ViewDeclaration.controller type to IInjectable|string ([8e91dc9](https://github.com/angular-ui/ui-router/commit/8e91dc9))
* **ui-sref:** Update `ui-sref/state` href when states are added/removed ([389dfd5](https://github.com/angular-ui/ui-router/commit/389dfd5))
* **ui-sref:** Update params-only sref when state changes ([3c1bd0e](https://github.com/angular-ui/ui-router/commit/3c1bd0e)), closes [#1031](https://github.com/angular-ui/ui-router/issues/1031) [#2541](https://github.com/angular-ui/ui-router/issues/2541)
* **ui-sref:** Use either .on or .bind for click handlers ([b00f044](https://github.com/angular-ui/ui-router/commit/b00f044)), closes [#3035](https://github.com/angular-ui/ui-router/issues/3035)
* **ui-sref-active:** Add CSS class immediately (avoid delay) ([27eb5e9](https://github.com/angular-ui/ui-router/commit/27eb5e9)), closes [#2503](https://github.com/angular-ui/ui-router/issues/2503)
* **ui-sref-active:** Avoid add/remove class race condition ([126a4ad](https://github.com/angular-ui/ui-router/commit/126a4ad))
* **ui-sref-active:** Use `$scope.$evalAsync` to apply css class ([6a9d9ae](https://github.com/angular-ui/ui-router/commit/6a9d9ae)), closes [#2503](https://github.com/angular-ui/ui-router/issues/2503) [#1997](https://github.com/angular-ui/ui-router/issues/1997) [#2503](https://github.com/angular-ui/ui-router/issues/2503) [#1997](https://github.com/angular-ui/ui-router/issues/1997)
* **ui-state:** Process ui-state links relative to where they are created ([cae4dc4](https://github.com/angular-ui/ui-router/commit/cae4dc4))
* **ui-state:** Support one time bindings in ng 1.3 ([389dfd5](https://github.com/angular-ui/ui-router/commit/389dfd5)), closes [#3131](https://github.com/angular-ui/ui-router/issues/3131) [#3054](https://github.com/angular-ui/ui-router/issues/3054)
* **uiView:** do not leave initial view scope undestroyed ([#3164](https://github.com/angular-ui/ui-router/issues/3164)) ([37d6f9a](https://github.com/angular-ui/ui-router/commit/37d6f9a)), closes [#1896](https://github.com/angular-ui/ui-router/issues/1896)
### Features
* bundle using rollupjs for smaller bundle and faster init times ([a4b5500](https://github.com/angular-ui/ui-router/commit/a4b5500))
* Deprecate public use of `$urlRouter` and `$urlMatcherFactory` in favor of `$urlService` ([6ee7f21](https://github.com/angular-ui/ui-router/commit/6ee7f21))
* Move imperative `$resolve` service out of main bundle ([cae6d03](https://github.com/angular-ui/ui-router/commit/cae6d03))
* remove component.json ([af736c4](https://github.com/angular-ui/ui-router/commit/af736c4))
* Use angular 1.3+ `$templateRequest` service to fetch templates ([7e1f36e](https://github.com/angular-ui/ui-router/commit/7e1f36e)), closes [#3193](https://github.com/angular-ui/ui-router/issues/3193) [#1882](https://github.com/angular-ui/ui-router/issues/1882)
* **$uiRouter:** expose router instance at config-time as `$uiRouterProvider.router` ([9d2661c](https://github.com/angular-ui/ui-router/commit/9d2661c))
* **injectables:** Expose `$uiRouterProvider`, `$uiRouterGlobals`, and `$stateRegistry` injectables ([7fa72a6](https://github.com/angular-ui/ui-router/commit/7fa72a6))
* **ui-sref-active:** improve performance by reducing $watches ([126a4ad](https://github.com/angular-ui/ui-router/commit/126a4ad))
* **ui-view:** Route-to-component: Wire component "&" bindings ([af95206](https://github.com/angular-ui/ui-router/commit/af95206)), closes [#3239](https://github.com/angular-ui/ui-router/issues/3239) [#3111](https://github.com/angular-ui/ui-router/issues/3111)
* **UrlService:** Create UrlService API (facade) for easier access to URL based APIs ([6ee7f21](https://github.com/angular-ui/ui-router/commit/6ee7f21))
* **view:** A view without anything to render defaults to `<ui-view></ui-view>` ([7d28fdd](https://github.com/angular-ui/ui-router/commit/7d28fdd)), closes [#3178](https://github.com/angular-ui/ui-router/issues/3178)
* **view:** Route a view to a directive using `componentProvider` ([#3165](https://github.com/angular-ui/ui-router/issues/3165)) ([090d2e3](https://github.com/angular-ui/ui-router/commit/090d2e3))
### BREAKING CHANGES
# BREAKING CHANGE: Deprecate public use of `$urlRouter` and `$urlMatcherFactory` in favor of `$urlService`
The `UrlService` combines the commonly used URL APIs in a single place.
The service may be injected in a run block as `$urlService`, or in a config block as `$urlServiceProvider`.
The service object has two nested API objects, `rules` and `config`. An example usage is `$urlService.rules.otherwise('/home')`
The existing API for `$urlRouter` and `$urlMatcherFactory` will continue to function as before, but are now considered an "internal API".\
The new `$urlService` is a facade which delegates to the appropriate internal APIs.
# BREAKING CHANGE: Use angular 1.3+ `$templateRequest` service to fetch templates
We now fetch templates using `$templateRequest` when it is available (angular 1.3+).
You can revert to previous template fetching behavior using `$http` by configuring the ui-router `$templateFactoryProvider`.
```js
.config(function($templateFactoryProvider) {
$templateFactoryProvider.shouldUnsafelyUseHttp(true);
});
```
There are security ramifications to using `$http` to fetch templates.
Read
[Impact on loading templates](https://docs.angularjs.org/api/ng/service/$sce#impact-on-loading-templates)
for more details
# BREAKING CHANGE: Move imperative `$resolve` service out of main bundle
The `$resolve` service's `.resolve()` method can be used to perform async dependency injection imperatively.
The code has been moved out of the main angular-ui-router codebase and is now opt-in.
For prebuilt bundle users, add `release/legacy/resolveService.js` to your project.
For self-bundlers (e.g., webpack), add `angular-ui-router/lib/legacy/resolveService` as an `import` or `require()`.
It's unlikely you use this service.
Its most common usage is with the UI-Bootstrap `$modal` service.
# BREAKING CHANGE: remove component.json
## ui-router-core changes
This release of angular-ui-router (1.0.0-rc.1) updates ui-router-core to 3.1.0
These are the changes in ui-router-core from 1.0.0-beta.3 to 3.1.0
# [3.1.0](https://github.com/ui-router/core/compare/1.0.0-beta.3...3.1.0) (2017-01-09)
### Bug Fixes
* **lazyLoad:** Sync by URL after nested lazy load triggered by URL ([1c6220c](https://github.com/ui-router/core/commit/1c6220c))
* **lazyLoad:** Use UrlService.match() to retry url sync after successful lazy load triggered by url ([8c2461d](https://github.com/ui-router/core/commit/8c2461d)), closes [#19](https://github.com/ui-router/core/issues/19)
* **Ng1ViewDeclaration:** Make controllerProvider IInjectable ([#3056](https://github.com/ui-router/core/issues/3056)) ([a3136ae](https://github.com/ui-router/core/commit/a3136ae)), closes [#3044](https://github.com/ui-router/core/issues/3044)
* **ng2.uiSrefActive:** Allow ng-if on nested uiSrefs ([e3051f5](https://github.com/ui-router/core/commit/e3051f5)), closes [#3046](https://github.com/ui-router/core/issues/3046)
* **onBefore:** Skip remaining hooks after the ([#2](https://github.com/ui-router/core/issues/2)) ([8a45d04](https://github.com/ui-router/core/commit/8a45d04))
* **param:** `params: { foo: { raw: true } }` overrides `ParamType.raw` ([aefeabf](https://github.com/ui-router/core/commit/aefeabf))
* **Param:** Mark all query parameters as optional ([7334d98](https://github.com/ui-router/core/commit/7334d98))
* **params:** Check for null in `int` param type `is()` check ([aa551e4](https://github.com/ui-router/core/commit/aa551e4)), closes [#3197](https://github.com/ui-router/core/issues/3197)
* **redirect:** Do not allow `onBefore` hooks to cause infinite redirect loops ([5c5f7eb](https://github.com/ui-router/core/commit/5c5f7eb)), closes [#6](https://github.com/ui-router/core/issues/6)
* **redirectTo:** Do not puke when redirectTo returns undefined ([bde9c0f](https://github.com/ui-router/core/commit/bde9c0f))
* **redirectTo:** fix TS type signature of `redirectTo` ([2c059c4](https://github.com/ui-router/core/commit/2c059c4))
* **StateQueueManager:** Compare parsed url parameters using typed parameters ([beca1f5](https://github.com/ui-router/core/commit/beca1f5))
* **StateRegistry:** Fix error message: State '' is already defined ([f5bd96b](https://github.com/ui-router/core/commit/f5bd96b))
* **StateService:** Compare typed parameters in .is() and .includes() ([b1a5155](https://github.com/ui-router/core/commit/b1a5155))
* **TargetState:** Narrow `name()` return type to `String` ([a02f4a7](https://github.com/ui-router/core/commit/a02f4a7))
* **Transition:** Use { location: replace } when redirecting a transtition in response to a URL sync ([23e2b78](https://github.com/ui-router/core/commit/23e2b78))
* **typescript:** Emit TS 1.8 compatible .d.ts files ([65badf4](https://github.com/ui-router/core/commit/65badf4))
* **typings:** Allow urlRouter.rule to return void ([0b78bdf](https://github.com/ui-router/core/commit/0b78bdf))
* **ui-sref:** Use either .on or .bind for click handlers ([b00f044](https://github.com/ui-router/core/commit/b00f044)), closes [#3035](https://github.com/ui-router/core/issues/3035)
* **UrlRouter:** Use { location: 'replace' } whenever a url redirect happens ([6cf9b8f](https://github.com/ui-router/core/commit/6cf9b8f))
* **UrlService:** Wire urlMatcherFactory and urlRouter functions ([a7b58d6](https://github.com/ui-router/core/commit/a7b58d6))
* **vanilla:** vanilla locations: do not parse "empty string" query key parameter ([f949480](https://github.com/ui-router/core/commit/f949480))
* **view:** Load view prerequisites in `onFinish` ([cc85e76](https://github.com/ui-router/core/commit/cc85e76))
* **view.load:** Allow view.load to return synchronously ([8619cf9](https://github.com/ui-router/core/commit/8619cf9))
### Features
* (CoreServices) Move `location` and `locationConfig` from `services` to `UIRouter.locationService` and `UIRouter.locationConfig`. ([029fb00](https://github.com/ui-router/core/commit/029fb00))
* Built-in `string` parameter type no longer encodes slashes as `~2F` nor tildes as `~~` ([72bb2d8](https://github.com/ui-router/core/commit/72bb2d8))
* Create router.dispose() to dispose a router instance and resources. ([0690917](https://github.com/ui-router/core/commit/0690917))
* Hook errors are all normalized to a "Rejection" type. To access the detail of the error thrown (`throw "Error 123"`), use `.detail`, i.e.: ([f486ced](https://github.com/ui-router/core/commit/f486ced))
* Move `html5Mode` and `hashPrefix` from `LocationServices` to `LocationConfig` interface ([9d316a7](https://github.com/ui-router/core/commit/9d316a7))
* move `ViewService.viewConfigFactory` and `rootContext` to `_pluginapi.*` ([65badf4](https://github.com/ui-router/core/commit/65badf4))
* Move html5Mode and hashPrefix to LocationServices from LocationConfig ([f7ac2bb](https://github.com/ui-router/core/commit/f7ac2bb))
* Order URL Matching Rules by priority, not registration order ([eb2f5d7](https://github.com/ui-router/core/commit/eb2f5d7))
* Path/Query parameters no longer default to `string` param type ([72bb2d8](https://github.com/ui-router/core/commit/72bb2d8))
* Previously, a state with a `lazyLoad` function was considered a future state. ([ec50da4](https://github.com/ui-router/core/commit/ec50da4))
* Remove `getResolveValue` and `getResolvable` methods from `Transition` in favor of `injector().get()` and `injector().getAsync()` ([111d259](https://github.com/ui-router/core/commit/111d259))
* Replace `LocationServices.setUrl` with `LocationServices.url` ([4c39dcb](https://github.com/ui-router/core/commit/4c39dcb))
* Replace UrlRouterProvider/UrlRouter with just UrlRouter ([fddd1e2](https://github.com/ui-router/core/commit/fddd1e2))
* **assertMap:** Add a [].map() helper that asserts that each element is truthy ([f044f53](https://github.com/ui-router/core/commit/f044f53))
* **futureState:** States with a `.**` name suffix (i.e., `foo.**`) are considered future states ([ec50da4](https://github.com/ui-router/core/commit/ec50da4))
* **hash:** Change the hash parameter type (`'#'`) to `inherit: false` so it is cleared out when another transition occurs. ([849f84f](https://github.com/ui-router/core/commit/849f84f)), closes [#3245](https://github.com/ui-router/core/issues/3245) [#3218](https://github.com/ui-router/core/issues/3218) [#3017](https://github.com/ui-router/core/issues/3017)
* **HookBuilder:** Allow custom hook types (to be defined by a plugin) ([3f146e6](https://github.com/ui-router/core/commit/3f146e6))
* **lazyLoad:** Created `StateService.lazyLoad` method to imperatively lazy load a state ([ec50da4](https://github.com/ui-router/core/commit/ec50da4)), closes [#8](https://github.com/ui-router/core/issues/8)
* **lazyLoad:** Exported/exposed the `lazyLoadState` function ([ec50da4](https://github.com/ui-router/core/commit/ec50da4))
* **lazyLoad:** the `lazyLoad` hook can be used to lazy load anything (component code, etc) ([ec50da4](https://github.com/ui-router/core/commit/ec50da4)), closes [#4](https://github.com/ui-router/core/issues/4)
* **LocationServices:** Add a `parts()` method which returns the URL parts as an object ([32e64f0](https://github.com/ui-router/core/commit/32e64f0))
* **onCreate:** Add onCreate transition hook ([f486ced](https://github.com/ui-router/core/commit/f486ced))
* **params:** Add `path` and `query` param types ([72bb2d8](https://github.com/ui-router/core/commit/72bb2d8))
* **params:** add option to use generic type for Transition.params ([#17](https://github.com/ui-router/core/issues/17)) ([eb12ec8](https://github.com/ui-router/core/commit/eb12ec8)), closes [#16](https://github.com/ui-router/core/issues/16)
* **Params:** Allow `inherit: false` specified per parameter or type ([849f84f](https://github.com/ui-router/core/commit/849f84f))
* **plugin:** Allow all plugins to be gotted. ([e324973](https://github.com/ui-router/core/commit/e324973))
* **plugin:** Allow registration by ES6 class, JS constructor fn, JS factory fn ([b9f4541](https://github.com/ui-router/core/commit/b9f4541))
* **plugin:** Create plugin API ([36a5215](https://github.com/ui-router/core/commit/36a5215)), closes [#7](https://github.com/ui-router/core/issues/7)
* **Resolve:** implement NOWAIT policy: Do not wait for resolves before completing a transition. ([05d4c73](https://github.com/ui-router/core/commit/05d4c73)), closes [#3243](https://github.com/ui-router/core/issues/3243) [#2691](https://github.com/ui-router/core/issues/2691)
* **State:** add .parameters() option for filtering to matching keys ([beca1f5](https://github.com/ui-router/core/commit/beca1f5))
* **transition:** Allow plugins to define own transition events like `onEnter` ([0dc2c19](https://github.com/ui-router/core/commit/0dc2c19))
* **transition:** Create ([2673406](https://github.com/ui-router/core/commit/2673406))
* **Transition:** Add Transition.originalTransition() to return the initial transition in a chain of redirects ([4fe39e3](https://github.com/ui-router/core/commit/4fe39e3))
* **Transition:** Allow `injector()` to retrieve resolves for the exiting states/path ([df502e8](https://github.com/ui-router/core/commit/df502e8))
* **Transition:** Allow a plain object `ResolvableLiteral` in `Transition.addResolvable` ([ad9ae81](https://github.com/ui-router/core/commit/ad9ae81))
* **Transition:** Make Transition.params() immutable to avoid confusion about mutability ([0162212](https://github.com/ui-router/core/commit/0162212))
* **Transition:** Support treechange paths in API for Resolve+transition ([beedc82](https://github.com/ui-router/core/commit/beedc82))
* **UrlMatcher:** Add comparison function by UrlMatcher specificity ([eb2f5d7](https://github.com/ui-router/core/commit/eb2f5d7))
* **UrlRouter:** sort url rules by specificity, not by registration order. ([eb2f5d7](https://github.com/ui-router/core/commit/eb2f5d7))
* **UrlService:** allow eager or lazy binding of location objects during construction ([7e0a8af](https://github.com/ui-router/core/commit/7e0a8af))
* **UrlServices:** Add `match()`: given a URL, return the best matching Url Rule ([32e64f0](https://github.com/ui-router/core/commit/32e64f0))
* **vanilla:** Implement in-memory-only location api ([f64aace](https://github.com/ui-router/core/commit/f64aace))
### BREAKING CHANGES
# BREAKING CHANGE: Remove `getResolveValue` and `getResolvable` methods from `Transition` in favor of `injector().get()` and `injector().getAsync()`
In beta.3, the Transition APIs: `injector()`, `getResolvable`, and `getResolveValue` duplicated functionality.
Instead of:
```js
trans.getResolveValue('myResolve');
```
use:
```js
trans.injector().get('myResolve')
```
# BREAKING CHANGE: Hook errors are all normalized to a "Rejection" type. To access the detail of the error thrown (`throw "Error 123"`), use `.detail`, i.e.:
### Before
```js
$state.go('foo').catch(err => { if (err === "Error 123") .. });
```
### New way
```js
$state.go('foo').catch(err => { if (err.detail === "Error 123") .. });
```
# BREAKING CHANGE: Replace `LocationServices.setUrl` with `LocationServices.url`
This makes `url()` a getter/setter. It also adds the optional `state` parameter to pass through to the browser history when using pushstate.
End users should not notice this change, but plugin authors may.
# BREAKING CHANGE: Replace UrlRouterProvider/UrlRouter with just UrlRouter
The configuration functions from the provider object have been integrated into the normal UrlRouter object.
The `UIRouter` object no longer has a `uriRouterProvider`, but the equivalent functions can be found on `uiRouter`
One difference between the old functions on `urlRouterProvider` and the new ones on `uriRouter` is that new functions do not accept injectable functions.
# BREAKING CHANGE: Built-in `string` parameter type no longer encodes slashes as `~2F` nor tildes as `~~`
Previously, the `string` parameter type pre-encoded tilde chars (`~`) as two tilde chars (`~~`) and slashes (`/`) as `~2F`.
Now, the `string` parameter type does not pre-encode slashes nor tildes.
If you rely on the previous encoding, create a custom parameter type that implements the behavior:
```js
urlMatcherFactory.type('tildes', {
encode: (val: any) =>
val != null ? val.toString().replace(/(~|\/)/g, m => ({ '~': '~~', '/': '~2F' }[m])) : val;
decode: (val: string) =>
val != null ? val.toString().replace(/(~~|~2F)/g, m => ({ '~~': '~', '~2F': '/' }[m])) : val;
pattern: /[^/]*/
});
```
# BREAKING CHANGE: Path/Query parameters no longer default to `string` param type
Previously, if a url parameter's type was not specified (in either the path or query), it defaulted to the `string` type.
Now, path parameters default to the new `path` type and query parameters default to the new `query` type.
**In Angular 1 only**, the new `path` parameter type retains the old behavior of pre-encoding `~` to `~~` and `/` to `~2F`
# BREAKING CHANGE: Order URL Matching Rules by priority, not registration order
URL Rules can come from registered states' `.url`s, calling `.when()`, or calling `.rule()`.
It's possible that two or more URL Rules could match the URL.
### Previously
Previously, url rules were matched in the order in which they were registered.
The rule which was registered first would handle the URL change.
### Now
Now, the URL rules are sorted according to a sort function.
More specific rules are preferred over less specific rules
### Why
It's possible to have multiple url rules that match a given URL.
Consider the following states:
- `{ name: 'books', url: '/books/index' }''`
- `{ name: 'book', url: '/books/:bookId' }''`
Both states match when the url is `/books/index`.
Additionally, you might have some custom url rewrite rules such as:
`.when('/books/list', '/books/index')`.
The `book` state also matches when the rewrite rule is matched.
Previously, we simply used the first rule that matched. However, now that lazy loading is officially supported, it can be difficult for developers to ensure the rules are registered in the right order.
Instead, we now prioritize url rules by how specific they are. More specific rules are matched earlier than less specific rules.
We split the path on `/`. A static segment (such as `index` in the example) is more specific than a parameter (such as`:bookId`).
### More Details
The built-in rule sorting function (see `UrlRouter.defaultRuleSortFn`) sorts rules in this order:
- Explicit priority: `.when('/foo', '/bar', { priority: 1 })` (default priority is 0)
- Rule Type:
- UrlMatchers first (registered states and `.when(string, ...)`)
- then regular Expressions (`.when(regexp, ...)`)
- finally, everything else (`.rule()`)
- UrlMatcher specificity: static path segments are more specific than variables (see `UrlMatcher.compare`)
- Registration order (except for UrlMatcher based rules)
For complete control, a custom sort function can be registered with `UrlService.rules.sort(sortFn)`
### Query params
Because query parameters are optional, they are not considered during sorting.
For example, both these rules will match when the url is `'/foo/bar'`:
```
.when('/foo/bar', doSomething);
.when('/foo/bar?queryparam', doSomethingElse);
```
To choose the most specific rule, we match both rules, then choose the rule with the "best ratio" of matched optional parameters (see `UrlRuleFactory.fromUrlMatcher`)
This allows child states to be defined with only query params for a URL.
The state only activates when the query parameter is present.
```
.state('parent', { url: '/parent' });
.state('parent.child', { url: '?queryParam' });
```
## Restoring the previous behavior
For backwards compatibility, register a sort function which sorts by the registration order:
```js
myApp.config(function ($urlServiceProvider) {
function sortByRegistrationOrder(a, b) {
return a.$id - b.$id;
}
$urlServiceProvider.rules.sort(sortByRegistrationOrder);
});
```
# BREAKING CHANGE: Move `html5Mode` and `hashPrefix` from `LocationServices` to `LocationConfig` interface
### End users should not notice
# BREAKING CHANGE: move `ViewService.viewConfigFactory` and `rootContext` to `_pluginapi.*`
This BC happened in commit 6c42285
# BREAKING CHANGE: Move html5Mode and hashPrefix to LocationServices from LocationConfig
# BREAKING CHANGE: Previously, a state with a `lazyLoad` function was considered a future state.
Now, a state whose name ends with `.**` (i.e., a glob pattern which matches all children) is a future state.
### All future states should be given a name that ends in `.**`.
Change your future states from:
```
{ name: 'future', url: '/future', lazyLoad: () => ... }
```
to:
```
{ name: 'future.**', url: '/future', lazyLoad: () => ... }
```
# BREAKING CHANGE: (CoreServices) Move `location` and `locationConfig` from `services` to `UIRouter.locationService` and `UIRouter.locationConfig`.
The core `services` object is a mutable object which each framework was monkey patching.
This change removes the requirement to monkey patch a global mutable object.
Instead, framework implementors should pass the `LocationServices` and `LocationConfig` implementations into the `UIRouter` constructor.
### End Users
End users who were accessing `services.location` or `services.locationConfig` should access these off the `UIRouter` instance instead.
<a name="1.0.0-beta.3"></a>
# [1.0.0-beta.3 commits](https://github.com/angular-ui/ui-router/compare/1.0.0-beta.2...1.0.0-beta.3) (2016-09-23)
[Read more on the blog](https://ui-router.github.io/blog/uirouter-1.0.0-beta.3/)
This release adds Angular 2.0.0 final support.
It changes the NgModule mechanism to use `UIRouterModule.forRoot()` and `UIRouterModule.forChild()`.
See the blog and the breaking changes section.
### Bug Fixes
This release fixes bugs for both ng1 and ng2
* **common:** Remove `url()` from LocationService interface ([#2990](https://github.com/angular-ui/ui-router/issues/2990)) ([d6c2580](https://github.com/angular-ui/ui-router/commit/d6c2580))
* **lazyLoad:** Always delete the lazy load promise after it settles. ([dd2f101](https://github.com/angular-ui/ui-router/commit/dd2f101))
* **ng1.StateProvider:** Export StateProvider class so type can be used ([167770d](https://github.com/angular-ui/ui-router/commit/167770d))
* **ng1.uiView:** Remove deprecated jquery functions bind/unbind in favor of on/off ([60ebd44](https://github.com/angular-ui/ui-router/commit/60ebd44))
* **ng2:** Angular 2.0.0 final compatibility ([7c54b75](https://github.com/angular-ui/ui-router/commit/7c54b75)), closes [#2991](https://github.com/angular-ui/ui-router/issues/2991)
* **ng2.NgModule:** Allow apps with no forChild modules ([d3bd332](https://github.com/angular-ui/ui-router/commit/d3bd332)), closes [#3009](https://github.com/angular-ui/ui-router/issues/3009)
* **ng2.uiView:** Use ReflectorReader to get component inputs
* **resolve:** Don't re-resolve data when redirected to same state, but only dynamic params changed. ([98cd2d2](https://github.com/angular-ui/ui-router/commit/98cd2d2)), closes [#3033](https://github.com/angular-ui/ui-router/issues/3033)
* **trace:** Show function definition during logging of trace.enable('HOOK') ([190d122](https://github.com/angular-ui/ui-router/commit/190d122))
* **transition:** Fail a transition if a new one has started while resolves are loading ([bc87d9e](https://github.com/angular-ui/ui-router/commit/bc87d9e)), closes [#2972](https://github.com/angular-ui/ui-router/issues/2972)
* **urlMatcherFactory:** fix tilde edge case with "string" encoding ([#3018](https://github.com/angular-ui/ui-router/issues/3018)) ([a201906](https://github.com/angular-ui/ui-router/commit/a201906))
* **viewService:** Allow root ui-view to be wrapped in ng-if ([32f718a](https://github.com/angular-ui/ui-router/commit/32f718a)), closes [#3004](https://github.com/angular-ui/ui-router/issues/3004)
### Features
* **StateBuilder:** Calculate parent state name when ends in two wildcards `**` ([b4621f3](https://github.com/angular-ui/ui-router/commit/b4621f3))
### BREAKING CHANGES
#### BC in Core
* Remove `UIInjector.native` infavor of `UIInjector.getNative()` ([d11b7dc](https://github.com/angular-ui/ui-router/commit/d11b7dc))
* Remove `stateProvider` from ui-router-core. Use `stateRegistry` and `stateService` in 88c6494
* We now enforce states with an explicit `parent:` may NOT ALSO specify a parent state in their name (i.e., `parent.child`)
#### BC in Angular 2
Major breaking changes for Angular 2 bootstrap between beta.2 and beta.3
- Removed `@UIRouterModule` decorator.
- Added `UIRouterModule.forRoot()` and `UIRouterModule.forChild()` factory methods
- See https://ui-router.github.io/docs/latest/classes/ng2.uiroutermodule.html
@NgModule({
imports: [
UIRouterModule.forRoot({
states: INITIAL_STATES,
useHash: true,
configClass: MyUIRouterConfig
}),
BrowserModule,
FeatureModule,
],
declarations: INITIAL_COMPONENTS
})
class RootAppModule {}
@NgModule({
imports: [
UIRouterModule.forChild({
states: FEATURE_STATES,
configClass: FeatureConfig
}),
CommonModule,
],
declarations: FEATURE_COMPONENTS
})
<a name="1.0.0-beta.2"></a>
# [1.0.0-beta.2 commits](https://github.com/angular-ui/ui-router/compare/1.0.0-beta.1...1.0.0-beta.2) (2016-09-09)
[Read more on the blog](https://ui-router.github.io/blog/uirouter-1.0.0-beta.2/)
### Features
#### Core
* **lazyLoad:** Add state.lazyLoad hook to lazy load a tree of states ([bef5257](https://github.com/angular-ui/ui-router/commit/bef5257)) ([8ecb6c6](https://github.com/angular-ui/ui-router/commit/8ecb6c6)), closes [#146](https://github.com/angular-ui/ui-router/issues/146) [#2739](https://github.com/angular-ui/ui-router/issues/2739)
* **StateRegistry:** Add `deregister` method. ([44579ec](https://github.com/angular-ui/ui-router/commit/44579ec)), closes [#1095](https://github.com/angular-ui/ui-router/issues/1095) [#2711](https://github.com/angular-ui/ui-router/issues/2711)
* **redirectTo:** Process `redirectTo` property of a state as a redirect string/object/hook function ([6becb12](https://github.com/angular-ui/ui-router/commit/6becb12)), closes [#27](https://github.com/angular-ui/ui-router/issues/27) [#948](https://github.com/angular-ui/ui-router/issues/948)
* **redirect:** Error after 20+ redirected transitions ([88052bf](https://github.com/angular-ui/ui-router/commit/88052bf))
* **rejectFactory:** separate transition aborted and transition errored reject types ([55995fd](https://github.com/angular-ui/ui-router/commit/55995fd))
* **Resolve:** support ng2-like provide object literals ([a7e5ea6](https://github.com/angular-ui/ui-router/commit/a7e5ea6))
* **Resolve:** Switch state.resolve to be an array of Resolvables ([6743a60](https://github.com/angular-ui/ui-router/commit/6743a60))
* **Transition:** Add the transition source (url/sref) to TransitionOptions ([5d42d79](https://github.com/angular-ui/ui-router/commit/5d42d79))
* **Transition:** Added `getResolvable(token)` method ([3aee2b7](https://github.com/angular-ui/ui-router/commit/3aee2b7))
* **Transition:** expose the current `UiRouter` object as a public property ([52f1308](https://github.com/angular-ui/ui-router/commit/52f1308))
* **Transition:** expose the transition rejection reason as `Transition.error()` ([7a9e383](https://github.com/angular-ui/ui-router/commit/7a9e383)), closes [#2866](https://github.com/angular-ui/ui-router/issues/2866)
* **Transition:** Expose the transition's TargetState as targetState() ([f06f6b6](https://github.com/angular-ui/ui-router/commit/f06f6b6))
* **urlRouter:** Allow a rule to be deleted. ([55f3d3d](https://github.com/angular-ui/ui-router/commit/55f3d3d))
#### ng2
* **ng2.rx:** Added RxJS Observables for transitions and states: ([2a2f381](https://github.com/angular-ui/ui-router/commit/2a2f381))
* **ng2:** Add [@UIRouterModule](https://github.com/UIRouterModule) decorator ([e7bedc2](https://github.com/angular-ui/ui-router/commit/e7bedc2)), closes [#2922](https://github.com/angular-ui/ui-router/issues/2922)
* **ng2:** Improve ng2 bootstrap flexibility with provideUIRouter() provider factory function ([bc17066](https://github.com/angular-ui/ui-router/commit/bc17066)), closes [#2958](https://github.com/angular-ui/ui-router/issues/2958)
* **ng2.UrlRouter:** Implement { location: replace } ([b8c6146](https://github.com/angular-ui/ui-router/commit/b8c6146)), closes [#2850](https://github.com/angular-ui/ui-router/issues/2850)
* **ng2.NgModule:** Add module's states to DI using UIROUTER_STATES_TOKEN ([0cb628e](https://github.com/angular-ui/ui-router/commit/0cb628e))
* **ng2.stateRegistry:** Automatically register states defined on a UIRouterModule ([58a3c84](https://github.com/angular-ui/ui-router/commit/58a3c84))
* **ng2.UIView:** Use merged NgModule/ParentComp to inject routed component ([37241e7](https://github.com/angular-ui/ui-router/commit/37241e7))
* **ng2.upgrade:** Enable ng1-to-ng2 ([0bf4eb4](https://github.com/angular-ui/ui-router/commit/0bf4eb4))
* **uiView:** Support Components loaded via AppModule ([696148f](https://github.com/angular-ui/ui-router/commit/696148f))
### Bug Fixes
#### Core
* **defaultErrorHandler:** Invoke handler when a transition is Canceled. ([4fcccd8](https://github.com/angular-ui/ui-router/commit/4fcccd8)), closes [#2924](https://github.com/angular-ui/ui-router/issues/2924)
* **defaultErrorHandler:** log Error and Error.stack by default ([e102a85](https://github.com/angular-ui/ui-router/commit/e102a85))
* **defaultErrorHandler:** Reduce console.error noise when redirected ([8c0344f](https://github.com/angular-ui/ui-router/commit/8c0344f))
* **common:** Add concrete import to interface.ts to fix unit tests ([2d16740](https://github.com/angular-ui/ui-router/commit/2d16740))
* **redirect:** fix bug where redirected transitions with reload: true got wrong resolve values copied ([bd0e3a3](https://github.com/angular-ui/ui-router/commit/bd0e3a3))
* **redirectTo:** fix redirectTo definition (interface) ([eff7195](https://github.com/angular-ui/ui-router/commit/eff7195)), closes [#2871](https://github.com/angular-ui/ui-router/issues/2871)
* **Rejection:** Silence "Error: Uncaught (in Exception)" ([38432f4](https://github.com/angular-ui/ui-router/commit/38432f4)), closes [#2676](https://github.com/angular-ui/ui-router/issues/2676)
* **Resolve:** prevent RXWAIT from waiting for the observable to complete ([a02caf3](https://github.com/angular-ui/ui-router/commit/a02caf3))
* **ResolvePolicy:** Fix resolve policy config loading ([4440811](https://github.com/angular-ui/ui-router/commit/4440811)), closes [#2945](https://github.com/angular-ui/ui-router/issues/2945)
* **stateService:** change reloadState parameter in reload function is optional ([#2973](https://github.com/angular-ui/ui-router/issues/2973)) ([839dc4a](https://github.com/angular-ui/ui-router/commit/839dc4a))
* **StateService:** remove jQuery deprecated feature ([fa40acc](https://github.com/angular-ui/ui-router/commit/fa40acc))
* **trace:** make TRANSITION trace less noisy when a transition is redirected ([a65c58f](https://github.com/angular-ui/ui-router/commit/a65c58f))
* **Trace:** Fix error in console after $trace.enable() ([013c77a](https://github.com/angular-ui/ui-router/commit/013c77a)), closes [#2752](https://github.com/angular-ui/ui-router/issues/2752)
* **transitionHook:** Prevent queued hookFn to be called if deregistered ([#2939](https://github.com/angular-ui/ui-router/issues/2939)) ([39e1ba7](https://github.com/angular-ui/ui-router/commit/39e1ba7)), closes [#2928](https://github.com/angular-ui/ui-router/issues/2928)
* **typescript:** Make UI-Router `noImplicitAny` safe. ([0769bc2](https://github.com/angular-ui/ui-router/commit/0769bc2)), closes [#2693](https://github.com/angular-ui/ui-router/issues/2693)
* **typescript:** Remove angular1 specific types from ui-router-core methods ([30124bd](https://github.com/angular-ui/ui-router/commit/30124bd)), closes [#2693](https://github.com/angular-ui/ui-router/issues/2693)
#### ng1
* **ng1.stateService:** Coerce 'null' `params` value to empty object ([f674151](https://github.com/angular-ui/ui-router/commit/f674151)), closes [#2952](https://github.com/angular-ui/ui-router/issues/2952)
* **ng1.uiSref:** Allow nested UISrefs by stopping event propagation on-click ([b4a2499](https://github.com/angular-ui/ui-router/commit/b4a2499)), closes [#2962](https://github.com/angular-ui/ui-router/issues/2962)
* **ng1.uiSrefActive:** update sref-active after existing transition-in-progress completes ([0994c71](https://github.com/angular-ui/ui-router/commit/0994c71)), closes [#2908](https://github.com/angular-ui/ui-router/issues/2908)
* **uiSref, uiState:** added click unbind to prevent memory leaks ([79d501e](https://github.com/angular-ui/ui-router/commit/79d501e))
* **uiView:** separate $uiView and $uiViewAnim element.data() ([a94117d](https://github.com/angular-ui/ui-router/commit/a94117d)), closes [#2763](https://github.com/angular-ui/ui-router/issues/2763)
#### ng2
* **ng2.pushState:** Properly match urls when base path set ([b9be2dc](https://github.com/angular-ui/ui-router/commit/b9be2dc)), closes [#2745](https://github.com/angular-ui/ui-router/issues/2745)
* **ng2.UIRouterConfig:** Allow new UIRouter() to finish before configuring it ([a151f71](https://github.com/angular-ui/ui-router/commit/a151f71))
* **ng2.uiSrefActive:** Allow uiSrefActive on ancestor element. ([874fc07](https://github.com/angular-ui/ui-router/commit/874fc07)), closes [#2950](https://github.com/angular-ui/ui-router/issues/2950)
* **ng2.uiSrefActive:** don't puke on sref to invalid target state ([c9b6570](https://github.com/angular-ui/ui-router/commit/c9b6570))
* **ng2.UISrefActive:** Use [@ContentChildren](https://github.com/ContentChildren) to query for the nested UISref ([999c42a](https://github.com/angular-ui/ui-router/commit/999c42a)), closes [#2950](https://github.com/angular-ui/ui-router/issues/2950)
* **ng2.UiView:** fix input resolve binding ([4f53f81](https://github.com/angular-ui/ui-router/commit/4f53f81))
* **ng2.UIView:** Make routed to component appear *inside* UIView, not next to it. ([558fc80](https://github.com/angular-ui/ui-router/commit/558fc80))
### BREAKING CHANGES:
1) State Glob patterns have been changed slightly.
Previously, a single wildcard `foo.*` could match "missing segments" on the end of a state name.
For example, `foo.*` would match the state `foo`.
Likewise, `foo.*.*.*` would also match the `foo` state.
Now, a single wildcard matches exactly one segment.
`foo.*` will match `foo.bar` and `foo.baz`, but neither `foo` nor `foo.bar.baz`.
If you previously relied on the single wildcard to match missing segments, use a double wildcard, `foo.**`.
Double wildcards match 0 or more segments.
[Read more about Glob matching](https://ui-router.github.io/docs/latest/classes/common.glob.html)
2) (obscure) Angular 1 DI token `ng1UIRouter` renamed to `$uiRouter`
3) (obscure) Renamed `Transition.previous()` to `Transition.redirectedFrom()`
<a name="1.0.0-beta.1"></a>
# [1.0.0-beta.1 commits](https://github.com/angular-ui/ui-router/compare/1.0.0-alpha.5...1.0.0-beta.1) (2016-06-30)
# UI-Router 1.0 is in beta
## UI-Router has a new home!
https://ui-router.github.io/new-ui-router-site/
# BREAKING CHANGES
These breaking changes are for users upgrading from a previous alpha, not from 0.x legacy series.
This list is extensive, but typical users won't be affected by most of these changes.
The most common breaks will be #1 and #2
1) BC-BREAK: renamed all Ui* (lowercase 'i') symbols to UI* (uppercase 'I') for more consistent naming.
- UiView -> UIView
- UiSref -> UISref (and related directives)
- UiInjector -> UIInjector
2) BC-BREAK: Transition Hooks are no longer injected (onBefore/onStart/onExit/onRetain/onEnter/onFinish/onSuccess/onError)
Previously, a hook like `['$state', ($state) => $state.target('foo')]` would get `$state` injected.
Now, all hooks receive two parameters:
- transition: the current Transition, which has an `injector()` function
- state: for onEnter/onRetain/onExit hooks only, the State which the hook is being run for. This value will be null for onBefore/onStart/onFinish/onSuccess/onError hooks.
Refactor your hooks
from: `['$state', 'mySvc', ($state, mySvc) => mySvc.foo() ? $state.target('foo')] : true`
to: `(trans) => trans.injector().get('mySvc').foo() ? trans.router.stateService.target('foo') : true`
Note: for backwards compatiblity, angular 1 onEnter/onExit/onRetain hooks are still injected
3) BC-BREAK: - The (internal API) State object's .resolve property is now an array of Resolvables, built from your state definitions by the StateBuilder
4) BC-BREAK: - Removed the default resolve called `$resolve$`, which was added in a previous alpha
5) BC-BREAK: - `Transition.addResolves()` replaced with `Transition.addResolvable()`
6) BC-BREAK: remove `ResolveContext.getResolvables()` in favor of `.getToken()`` and `.getResolvable()`
7) BC-BREAK: remove `ResolveContext.invokeLater()` and `.invokeNow()`
8) BC-BREAK: remove support for `JIT` resolves. This also eliminated the need for the `loadAllControllerLocals` hook which was also removed
9) BC-BREAK: Replaced `ViewConfig.node` with `ViewConfig.path`. Angular 1's `$(element).data('$uiView')` is affected.
Previously the .node was the node for the view. Now the last element in the path is the node for the view.
10) BC-BREAK: Nodes no longer have (stateful) `.resolveContext` properties. Instead, a new ResolveContext is wrapped over a Path of Nodes. Removed `PathFactory.bindResolveContexts()`.
11) BC-BREAK: ResolveContext.resolvePath returns a promise for resolved data as an array of tuples, instead of a promise for an object of resolved data. Removed `ResolveContext.resolvePathElement()`.
12) BC-BREAK: Removed ResolvePolicy enum in favor of the ResolvePolicy interface `{ when: "", async: "" }`
13) BC-BREAK: renamed `ResolveContext.isolateRootTo` to `subContext`
14) BC-BREAK: rename `UIRouterGlobals` class to `Globals`; add `UIRouterGlobals` back as an interface
15) BC-BREAK: Moved `defaultErrorHandler` from `TransitionService` to `StateService`
### Features
* **Resolve:** Switch state.resolve to be an array of Resolvables ([6743a60](https://github.com/angular-ui/ui-router/commit/6743a60))
* **Resolve:** support ng2-like provide object literals. Support injection of arbitrary tokens, not just strings. ([a7e5ea6](https://github.com/angular-ui/ui-router/commit/a7e5ea6))
* **Resolve:** support ng2-like provide object literals ([a7e5ea6](https://github.com/angular-ui/ui-router/commit/a7e5ea6))
* **Transition:** expose the current `UiRouter` object as a public property ([52f1308](https://github.com/angular-ui/ui-router/commit/52f1308))
* **redirectTo:** Process `redirectTo` property of a state as a redirect string/object/hook function ([6becb12](https://github.com/angular-ui/ui-router/commit/6becb12)), closes [#27](https://github.com/angular-ui/ui-router/issues/27) [#948](https://github.com/angular-ui/ui-router/issues/948)
* **rejectFactory:** separate transition aborted and transition errored reject types ([55995fd](https://github.com/angular-ui/ui-router/commit/55995fd))
* **ParamType:** allow a custom parameter Type to specify a default value for a parameter's `dynamic` property
* **Resolvable:** Added a new Resolve Policy 'RXWAIT'. If an Observable is returned, pass the observable as the value, but also wait for it to emit its first value
### Bug Fixes
* **ng2.pushState:** Properly match urls when base path set ([b9be2dc](https://github.com/angular-ui/ui-router/commit/b9be2dc)), closes [#2745](https://github.com/angular-ui/ui-router/issues/2745)
* **ng2.UIRouterConfig:** Allow new UIRouter() to finish before configuring it ([a151f71](https://github.com/angular-ui/ui-router/commit/a151f71))
* **ng2.UiView:** fix input resolve binding ([4f53f81](https://github.com/angular-ui/ui-router/commit/4f53f81))
* **ng2.UIView:** Make routed to component appear *inside* UIView, not next to it. ([558fc80](https://github.com/angular-ui/ui-router/commit/558fc80))
* **redirect:** fix bug where redirected transitions with reload: true got wrong resolve values copied ([bd0e3a3](https://github.com/angular-ui/ui-router/commit/bd0e3a3))
* **Rejection:** Silence "Error: Uncaught (in Exception)" ([38432f4](https://github.com/angular-ui/ui-router/commit/38432f4)), closes [#2676](https://github.com/angular-ui/ui-router/issues/2676)
* **Trace:** Fix error in console after $trace.enable() ([013c77a](https://github.com/angular-ui/ui-router/commit/013c77a)), closes [#2752](https://github.com/angular-ui/ui-router/issues/2752)
* **ng2.UIView:** Trigger change detection once for routed components
<a name="1.0.0-alpha.5"></a>
# [1.0.0-alpha.5 commits](https://github.com/angular-ui/ui-router/compare/1.0.0-alpha.4...1.0.0-alpha.5) (2016-05-13)
### Bug Fixes
## Core
* **attachRoute:** Do not update URL after syncing from url([8742511](https://github.com/angular-ui/ui-router/commit/8742511)), closes [#2730](https://github.com/angular-ui/ui-router/issues/2730)
* **common:** only use window if available([32ff988](https://github.com/angular-ui/ui-router/commit/32ff988))
* **coreservices:** Use Promise.reject()/resolve()/all()([62b2ebc](https://github.com/angular-ui/ui-router/commit/62b2ebc)), closes [#2683](https://github.com/angular-ui/ui-router/issues/2683)
* **paramTypes.hash:** Update hash for each transition([79d4fd7](https://github.com/angular-ui/ui-router/commit/79d4fd7)), closes [#2742](https://github.com/angular-ui/ui-router/issues/2742)
* **Rejection:** Dont log an ignored trans as console.error([7522c26](https://github.com/angular-ui/ui-router/commit/7522c26)), closes [#2676](https://github.com/angular-ui/ui-router/issues/2676)
* **resolve:** Fix regression; Allow resolve values to be service names([a34fd3b](https://github.com/angular-ui/ui-router/commit/a34fd3b)), closes [#2588](https://github.com/angular-ui/ui-router/issues/2588)
* **StateQueueManager:** Do not throw on orphan states.([95ae0cf](https://github.com/angular-ui/ui-router/commit/95ae0cf)), closes [#2546](https://github.com/angular-ui/ui-router/issues/2546)
* **TransitionManager:** Update url even when the Transition is ignored.([f9c3e3c](https://github.com/angular-ui/ui-router/commit/f9c3e3c)), closes [#2723](https://github.com/angular-ui/ui-router/issues/2723)
## ng1
* **ng1.component:** Allow route-to-component "@" and optional bindings([71b3393](https://github.com/angular-ui/ui-router/commit/71b3393)), closes [#2708](https://github.com/angular-ui/ui-router/issues/2708)
* **view:** only run ng1 route-to-component code if component: is a string([ec1c534](https://github.com/angular-ui/ui-router/commit/ec1c534))
## ng2
* **ng2.uiSrefStatus:** Avoid "dehydrated detector" error([9111727](https://github.com/angular-ui/ui-router/commit/9111727)), closes [#2684](https://github.com/angular-ui/ui-router/issues/2684)
* **ng2.uiView:** Fix "Invalid left-hand in assignment"([3f711a1](https://github.com/angular-ui/ui-router/commit/3f711a1))
* **build:** declare external dep on `angular/core` in webpack bundle([adfbde3](https://github.com/angular-ui/ui-router/commit/adfbde3)), closes [#2687](https://github.com/angular-ui/ui-router/issues/2687)
### Features
## ng2
* **ng2.uiView:** bind resolve data to input[] and [@Input](https://github.com/Input)(), process bindings:([f6dae28](https://github.com/angular-ui/ui-router/commit/f6dae28))
* **ng2.urlRouter:** HTML5 PushState support([9842fb7](https://github.com/angular-ui/ui-router/commit/9842fb7)), closes [#2688](https://github.com/angular-ui/ui-router/issues/2688)
* **ng2.UIRouter:** update to ng2 beta.17([45c0758](https://github.com/angular-ui/ui-router/commit/45c0758))
* **ng2.UIRouter:** Update ui-router for ng2 rc.1([3219406](https://github.com/angular-ui/ui-router/commit/3219406)), closes [#2722](https://github.com/angular-ui/ui-router/issues/2722)
<a name="1.0.0-alpha.4"></a>
# [1.0.0-alpha.4 commits](https://github.com/angular-ui/ui-router/compare/1.0.0-alpha.3...1.0.0-alpha.4) (2016-04-06)
### Bug Fixes
* **ng2.uiView:** Fix "Invalid left-hand in assignment" ([3f711a1](https://github.com/angular-ui/ui-router/commit/3f711a1))
* **view:** only run ng1 route-to-component code if component: is a string ([ec1c534](https://github.com/angular-ui/ui-router/commit/ec1c534))
### Features
* **uiView:** add support for hybrid ng1/ng2 ui-router apps via ng-upgrade and http://github.com/ui-router/ng1-to-ng2
* **ng2.uiView:** bind resolve data to input[] and @Input(), process bindings: ([f6dae28](https://github.com/angular-ui/ui-router/commit/f6dae28))
<a name="1.0.0-alpha.2"></a>
# [1.0.0-alpha.2](https://github.com/angular-ui/ui-router/compare/1.0.0-alpha.1...v1.0.0-alpha.2) (2016-04-03)
Changes between 1.0.0-alpha.1 and 1.0.0-alpha.2
## Angular 2
This is the first release with angular 2 support. See http://github.com/ui-router/quickstart-ng2 for a small ui-router-ng2 app
### Bug Fixes
* **ViewHooks:** Avoid calling $onInit if angular 1.5 will call it for us ([d42b617](https://github.com/angular-ui/ui-router/commit/d42b617)), closes [#2660](https://github.com/angular-ui/ui-router/issues/2660)
* **ViewHooks:** Fix problem with injecting uiCanExit ([76ab22d](https://github.com/angular-ui/ui-router/commit/76ab22d)), closes [#2661](https://github.com/angular-ui/ui-router/issues/2661)
* **view:** temporary sanity check that a node exists ([1c0edeb](https://github.com/angular-ui/ui-router/commit/1c0edeb)), closes [#2657](https://github.com/angular-ui/ui-router/issues/2657)
* **justjs.$q:** Fix $q.all([..]) and $q.all({...}) ([b1624c6](https://github.com/angular-ui/ui-router/commit/b1624c6))
* **ng2.uiSref:** Fix anchor href generation ([98b5b42](https://github.com/angular-ui/ui-router/commit/98b5b42))
* **ng2.uiSrefStatus:** calculate target state parameters ([46cdf4c](https://github.com/angular-ui/ui-router/commit/46cdf4c))
* **ng2.uiView:** Dispose prev comp on empty viewconfig ([f28e0c3](https://github.com/angular-ui/ui-router/commit/f28e0c3))
### Features
* **UIRouterConfig:** Define UIRouterConfig class for router bootstrap ([c16b9e6](https://github.com/angular-ui/ui-router/commit/c16b9e6))
* **UIRouterGlobals:** Create UIRouterGlobals ([0eb7406](https://github.com/angular-ui/ui-router/commit/0eb7406)), closes [#2525](https://github.com/angular-ui/ui-router/issues/2525)
* **ui-router-ng2:** Update providers and viewsBuilder to match new 1.0 API ([ff54d61](https://github.com/angular-ui/ui-router/commit/ff54d61))
* **ng2.uiSrefActive:** Implement uiSrefStatus, uiSrefActive, uiSrefActiveEq ([fcb15c5](https://github.com/angular-ui/ui-router/commit/fcb15c5))
<a name="1.0.0-alpha.1"></a>
# [1.0.0-alpha.1 commits](https://github.com/angular-ui/ui-router/compare/1.0.0alpha0...1.0.0-alpha.1) (2016-03-27)
## We will maintain a list of [Known BC from 0.2.x to 1.0 final](https://github.com/angular-ui/ui-router/issues/2219) to help people upgrade to the 1.0 release.
## Bug fixes and features since 1.0.0alpha0
### Bug Fixes
* **date:** Compare dates only using year, month, date ([7a68ade](https://github.com/angular-ui/ui-router/commit/7a68ade)), closes [#2484](https://github.com/angular-ui/ui-router/issues/2484)
* **params:** Clone all properties of a Node. Introduce applyRawParams() ([88c624d](https://github.com/angular-ui/ui-router/commit/88c624d))
* **RejectFactory:** stringify rejections with circular dependency-aware stringify ([199db79](https://github.com/angular-ui/ui-router/commit/199db79)), closes [#2538](https://github.com/angular-ui/ui-router/issues/2538)
* **src/resolve:** use injector's strictDi value in calls to .annotate ([4c5b5d8](https://github.com/angular-ui/ui-router/commit/4c5b5d8))
* **stateQueueManager:** Use `location: true` for url-matched transitions ([25e0c04](https://github.com/angular-ui/ui-router/commit/25e0c04)), closes [#2455](https://github.com/angular-ui/ui-router/issues/2455)
* **stateService:** Process reload: in the StateService.target() ([081da32](https://github.com/angular-ui/ui-router/commit/081da32)), closes [#2537](https://github.com/angular-ui/ui-router/issues/2537)
* **Transition:** Do not reuse resolves for reloaded state during redirect ([0c123c3](https://github.com/angular-ui/ui-router/commit/0c123c3)), closes [#2539](https://github.com/angular-ui/ui-router/issues/2539)
* **Transition:** Reject Transition promise when onBefore error ([4b6d56f](https://github.com/angular-ui/ui-router/commit/4b6d56f)), closes [#2561](https://github.com/angular-ui/ui-router/issues/2561)
* **Transition:** Reset URL to current state after aborted transition ([3a1308b](https://github.com/angular-ui/ui-router/commit/3a1308b)), closes [#2611](https://github.com/angular-ui/ui-router/issues/2611)
* **transition/transitionService:** uses console.error to log error in default error handler ([43a8fc5](https://github.com/angular-ui/ui-router/commit/43a8fc5))
* **ui-sref:** update ui-sref-active/eq info when params change ([dcbaebf](https://github.com/angular-ui/ui-router/commit/dcbaebf)), closes [#2554](https://github.com/angular-ui/ui-router/issues/2554)
* **ui-state:** update ui-sref-active/eq info ([025ebc8](https://github.com/angular-ui/ui-router/commit/025ebc8)), closes [#2488](https://github.com/angular-ui/ui-router/issues/2488)
* **UrlMatcher:** Format parent/child UrlMatchers properly ([86e07ef](https://github.com/angular-ui/ui-router/commit/86e07ef)), closes [##2504](https://github.com/#/issues/2504)
* **UrlMatcher:** isOptional always false for empty parameter ([4e85db4](https://github.com/angular-ui/ui-router/commit/4e85db4))
### Features
* **params:** Add uiOnParamsChanged controller callback ([961c96d](https://github.com/angular-ui/ui-router/commit/961c96d)), closes [#2608](https://github.com/angular-ui/ui-router/issues/2608) [#2470](https://github.com/angular-ui/ui-router/issues/2470) [#2391](https://github.com/angular-ui/ui-router/issues/2391) [#1967](https://github.com/angular-ui/ui-router/issues/1967)
* **resolve:** Allow all resolved data for a node to be injected as `$resolve$` ([e432c27](https://github.com/angular-ui/ui-router/commit/e432c27))
* **state:** Expose the internal state API via `$$state()` ([92053f1](https://github.com/angular-ui/ui-router/commit/92053f1)), closes [#13](https://github.com/angular-ui/ui-router/issues/13)
* **ui-router-ng2:** Initial angular2 support ([217de70](https://github.com/angular-ui/ui-router/commit/217de70))
* **uiCanExit:** Add controller lifecycle hook "uiCanExit" ([afcfe95](https://github.com/angular-ui/ui-router/commit/afcfe95))
* **uiView:** Expose the resolved data for a state as $scope.$resolve ([0f6aea6](https://github.com/angular-ui/ui-router/commit/0f6aea6)), closes [#2175](https://github.com/angular-ui/ui-router/issues/2175) [#2547](https://github.com/angular-ui/ui-router/issues/2547)
* **uiView:** Fire the $onInit hook ([c8afc38](https://github.com/angular-ui/ui-router/commit/c8afc38)), closes [#2559](https://github.com/angular-ui/ui-router/issues/2559)
* **uiView:** Put $animate promises on element.data('$uiView') ([a5578de](https://github.com/angular-ui/ui-router/commit/a5578de)), closes [#2562](https://github.com/angular-ui/ui-router/issues/2562) [#2579](https://github.com/angular-ui/ui-router/issues/2579)
* **view:** Route a view to a directive using `component:` ([1552032](https://github.com/angular-ui/ui-router/commit/1552032)), closes [#2627](https://github.com/angular-ui/ui-router/issues/2627)
## Other commits
Many of these commits are merged from 0.2.x `legacy` branch
* **uiSrefActive:** allow multiple classes ([120d7ad](https://github.com/angular-ui/ui-router/commit/120d7ad)), closes [#2481](https://github.com/angular-ui/ui-router/issues/2481) [#2482](https://github.com/angular-ui/ui-router/issues/2482)
* **justjs:** provide naive implementation of most of the coreservices api ([426f134](https://github.com/angular-ui/ui-router/commit/426f134))
* **resolve:** add $resolve service back to 1.0 ([70c6659](https://github.com/angular-ui/ui-router/commit/70c6659))
* **uiSrefActive:** allow active & active-eq on same element ([d9a676b](https://github.com/angular-ui/ui-router/commit/d9a676b)), closes [#1997](https://github.com/angular-ui/ui-router/issues/1997)
* **uiSrefActive:** provide a ng-{class,style} like interface ([a9ff6fe](https://github.com/angular-ui/ui-router/commit/a9ff6fe)), closes [#1431](https://github.com/angular-ui/ui-router/issues/1431)
* **uiSrefActive:** Added support for multiple nested uiSref directives ([b184494](https://github.com/angular-ui/ui-router/commit/b184494))
* **uiState:** add ui-state directive ([3831af1](https://github.com/angular-ui/ui-router/commit/3831af1)), closes [#395](https://github.com/angular-ui/ui-router/issues/395) [#900](https://github.com/angular-ui/ui-router/issues/900) [#1932](https://github.com/angular-ui/ui-router/issues/1932)
* **urlMatcher:** add support for optional spaces ([4b7f304](https://github.com/angular-ui/ui-router/commit/4b7f304))
* **urlMatcher:** Add param only type names ([6a371f9](https://github.com/angular-ui/ui-router/commit/6a371f9))
* **$IncludedByStateFilter:** add parameters to $IncludedByStateFilter ([963f6e7](https://github.com/angular-ui/ui-router/commit/963f6e7)), closes [#1735](https://github.com/angular-ui/ui-router/issues/1735)
* **$state:** make state data inheritance prototypical ([c4fec8c](https://github.com/angular-ui/ui-router/commit/c4fec8c))
* **$state:** Inject templateProvider with resolved values ([afa20f2](https://github.com/angular-ui/ui-router/commit/afa20f2))
* **$state:** added 'state' to state reload method (feat no.1612) ([b8f0457](https://github.com/angular-ui/ui-router/commit/b8f0457))
* **$state:** broadcast $stateChangeCancel event when event.preventDefault() is called in $sta ([ecefb75](https://github.com/angular-ui/ui-router/commit/ecefb75))
* **$state:** inject resolve params into controllerProvider ([b380c22](https://github.com/angular-ui/ui-router/commit/b380c22)), closes [#1131](https://github.com/angular-ui/ui-router/issues/1131)
* **$state:** support URLs with #fragments ([3da0a17](https://github.com/angular-ui/ui-router/commit/3da0a17))
* **$uiViewScroll:** change function to return promise ([c2a9a31](https://github.com/angular-ui/ui-router/commit/c2a9a31)), closes [#1702](https://github.com/angular-ui/ui-router/issues/1702)
<a name="0.2.18"></a>
### 0.2.18 (2016-02-07)
This is a maintenance release which fixes a few known bugs introduced in 0.2.16.
#### Bug Fixes
* **$urlRouter:** revert BC: resolve clashing of routes This reverts commit b5c57c8ec2e14e17e75104 ([2f1ebefc](https://github.com/angular-ui/ui-router/commit/2f1ebefc242ff48960e0bf63da359296a38f6852), closes [#2501](https://github.com/angular-ui/ui-router/issues/2501))
* **uiState:** Corrected typo for 'ref' variable (#2488, #2508) ([b8f3c144](https://github.com/angular-ui/ui-router/commit/b8f3c144b913e620f177b78f3b4f52afa61d41a6))
* **$urlMatcherFactory:** Fix to make the YUI Javascript compressor work ([ad9c41d2](https://github.com/angular-ui/ui-router/commit/ad9c41d2e723d50e30dd3452fbd274b7057dc3d9))
* **stateBuilder:** fix non-url params on a state without a url. The parameters are now applied when ([d6d8c332](https://github.com/angular-ui/ui-router/commit/d6d8c3322c4dde8bb5b8dde25f9fcda49e9c4c81), closes [#2025](https://github.com/angular-ui/ui-router/issues/2025))
* **ui-view:** (ui-view) use static renderer when no animation is present for a ui-view ([2523bbdb](https://github.com/angular-ui/ui-router/commit/2523bbdb5542483a489c22804f1751b8b9f71703), closes [#2485](https://github.com/angular-ui/ui-router/issues/2485)). This allows a ui-view scope to be destroyed when switching states, before the next view is initialized.
#### Features
* **ui-view:** Add noanimation attribute to specify static renderer. ([2523bbdb](https://github.com/angular-ui/ui-router/commit/2523bbdb5542483a489c22804f1751b8b9f71703), closes [#2485](https://github.com/angular-ui/ui-router/issues/2485)). This allows a ui-view scope to be destroyed before the next ui-view is initialized, when ui-view animation is not present.
<a name="0.2.17"></a>
### 0.2.17 (2016-01-25)
#### Bug Fixes
* **uiSrefActive:** allow multiple classes ([a89114a0](https://github.com/angular-ui/ui-router/commit/a89114a083813c1a7280c48fc18e626caa5a31f4), closes [#2481](https://github.com/angular-ui/ui-router/issues/2481), [#2482](https://github.com/angular-ui/ui-router/issues/2482))
<a name="0.2.16"></a>
### 0.2.16 (2016-01-24)
#### Bug Fixes
* **$state:**
* statechangeCancel: Avoid infinite digest in .otherwise/redirect case. Don't clobber url if a new transition has started. Closes #222 ([e00aa695](https://github.com/angular-ui/ui-router/commit/e00aa695e41ddc5ebd5d2b226aa0917a751b11aa), closes [#2238](https://github.com/angular-ui/ui-router/issues/2238))
* transitionTo: Allow hash (#) value to be read as toParams['#'] in events. Re-add the saved hash before broadcasting $stateChangeStart event. ([8c1bf30d](https://github.com/angular-ui/ui-router/commit/8c1bf30d2a3b78ba40b330f12d854c885d6cc117))
* **$stateParams:** Fix for testing: reset service instance between tests ([2aeb0c4b](https://github.com/angular-ui/ui-router/commit/2aeb0c4b205baf6cfa2ef25bb986bb160dc13bf9))
* **$urlRouter:**
* Sort URL rules by specificity. Potential minor BC if apps were relying on rule registration order. ([b5c57c8e](https://github.com/angular-ui/ui-router/commit/b5c57c8ec2e14e17e75104c1424654f126ea4011))
* Use $sniffer for pushstate compat check ([c219e801](https://github.com/angular-ui/ui-router/commit/c219e801797f340ef9c5c919ab890ef003a7a042))
* **UrlMatcher:**
* Properly encode/decode slashes in parameters Closes #2172 Closes #2250 Closes #1 ([02e98660](https://github.com/angular-ui/ui-router/commit/02e98660a80dfd1ca4b113dd24ee304af91e9f8c), closes [#2339](https://github.com/angular-ui/ui-router/issues/2339))
* Array types: Fix default value for array query parameters. Pass empty arrays through in handler. ([20d6e243](https://github.com/angular-ui/ui-router/commit/20d6e243f1745ddbf257217245a1dc22eabe13da), closes [#2222](https://github.com/angular-ui/ui-router/issues/2222))
* Remove trailing slash, if parameter is optional and was squashed from URL ([77fa11bf](https://github.com/angular-ui/ui-router/commit/77fa11bf0787d0f6da97ab0003ab29afb7411391), closes [#1902](https://github.com/angular-ui/ui-router/issues/1902))
* Allow a parameter declaration to configure the parameter type by name. closes #2294 ([e4010249](https://github.com/angular-ui/ui-router/commit/e40102492d40fe1cf6ba14d955fcc9f345c16458))
* include the slash when recognizing squashed params in url ([b5130bb1](https://github.com/angular-ui/ui-router/commit/b5130bb1215e15f832ea6daa670410b9a950c0d4), closes [#2064](https://github.com/angular-ui/ui-router/issues/2064))
* Allow url query param names to contain periods ([d31b3337](https://github.com/angular-ui/ui-router/commit/d31b3337cc2ce71d87c92fdded629e46558d0b49))
* **reloadOnSearch:** Update `locals.globals.$stateParams` when reloadOnSearch=false ([350d3e87](https://github.com/angular-ui/ui-router/commit/350d3e87783a2263fd7d23913da34f1268c3300b), closes [#2356](https://github.com/angular-ui/ui-router/issues/2356))
* **ui-view:**
* fix $animate usage for ng 1.4+ ([9b6d9a2d](https://github.com/angular-ui/ui-router/commit/9b6d9a2d0ce4ae08384165cb517bddea59b67892))
* change $viewContentLoading to pair with $viewContentLoaded ([f9b43d66](https://github.com/angular-ui/ui-router/commit/f9b43d66833f0e17de41fd8d1cc3b491e3ba4a0e), closes [#685](https://github.com/angular-ui/ui-router/issues/685))
* $destroy event is triggered before animation ends ([1be13795](https://github.com/angular-ui/ui-router/commit/1be13795686ab78abb2d5094bc8addcacb928975))
* **uiSref:**
* Ensure URL once param checks pass ([9dc31c54](https://github.com/angular-ui/ui-router/commit/9dc31c5465328e5666468b0c2319ce205f4b72f8), closes [#2091](https://github.com/angular-ui/ui-router/issues/2091))
* uiSrefActive: update the active classes after linking directive ([7c914030](https://github.com/angular-ui/ui-router/commit/7c914030f13e05e45a941c1b723cb785db729890))
#### Features
* **$IncludedByStateFilter:** add parameters to $IncludedByStateFilter ([963f6e71](https://github.com/angular-ui/ui-router/commit/963f6e71633b9c3a266f3991d79089b7d14786b4), closes [#1735](https://github.com/angular-ui/ui-router/issues/1735))
* **isStateFilter:** Include optional state params. ([71d74699](https://github.com/angular-ui/ui-router/commit/71d7469987ee9ca86a41c8c6393ccd5d8913c3d6))
* **$state:** make state data inheritance prototypical ([c4fec8c7](https://github.com/angular-ui/ui-router/commit/c4fec8c7998113902af4152d716c42dada6eb465))
* **$stateChangeStart:** Add options to event ([a1f07559](https://github.com/angular-ui/ui-router/commit/a1f07559ec74e10ff80bc4be81f287e3772b8fcb))
* **UrlMatcher:** Add param only type names ([6a371f9b](https://github.com/angular-ui/ui-router/commit/6a371f9b70e37a82eb324122879e4473c3f6d526))
* **uiSrefActive:**
* provide a ng-{class,style} like interface ([a9ff6feb](https://github.com/angular-ui/ui-router/commit/a9ff6febb469e0d5cd49054216c4472df7a6259d))
* allow active & active-eq on same element ([d9a676ba](https://github.com/angular-ui/ui-router/commit/d9a676ba2c4d9e954be224c60496bcb38f6074e3))
* **uiState:** add ui-state directive ([3831af1d](https://github.com/angular-ui/ui-router/commit/3831af1dc71b601351e6694af0665a77297f8f7f), closes [#395](https://github.com/angular-ui/ui-router/issues/395), [#900](https://github.com/angular-ui/ui-router/issues/900), [#1932](https://github.com/angular-ui/ui-router/issues/1932))
* **urlMatcher:** add support for optional spaces in params ([4b7f3046](https://github.com/angular-ui/ui-router/commit/4b7f304617f0b3590b532103b5c2fb526c98a9e4))
<a name="0.2.15"></a>
### 0.2.15 (2015-05-19)
#### Bug Fixes
* **$state:** reloadOnSearch should not affect non-search param changes. ([6ca0d770](https://github.com/angular-ui/ui-router/commit/6ca0d7704cf7de9c6e6b7bb64df2f9c68fe081cc), closes [#1079](https://github.com/angular-ui/ui-router/issues/1079))
* **urlMatcherFactory:** Revert to 0.2.13 behavior where all string parameters are considered optional fi ([495a02c3](https://github.com/angular-ui/ui-router/commit/495a02c3cbde501c1c149bce137806669209bc29), closes [#1963](https://github.com/angular-ui/ui-router/issues/1963))
* **urlRouter:** allow .when() to redirect, even after a successful $state.go() - This partially ([48aeaff6](https://github.com/angular-ui/ui-router/commit/48aeaff645baf3f42f5a8940ebd97563791ad9f8), closes [#1584](https://github.com/angular-ui/ui-router/issues/1584))
#### Features
* **$state:** Inject templateProvider with resolved values ([afa20f22](https://github.com/angular-ui/ui-router/commit/afa20f22373b7176b26daa7e1099750c4254a354))
<a name="0.2.14"></a>
### 0.2.14 (2015-04-23)
#### Bug Fixes
* **$StateRefDirective:** resolve missing support for svg anchor elements #1667 ([0149a7bb](https://github.com/angular-ui/ui-router/commit/0149a7bb38b7af99388a1ad7cc9909a7b7c4439d))
* **$urlMatcherFactory:**
* regex params should respect case-sensitivity ([1e10519f](https://github.com/angular-ui/ui-router/commit/1e10519f3be6bbf0cefdcce623cd2ade06e649e5), closes [#1671](https://github.com/angular-ui/ui-router/issues/1671))
* unquote all dashes from array params ([06664d33](https://github.com/angular-ui/ui-router/commit/06664d330f882390655dcfa83e10276110d0d0fa))
* add Type.$normalize function ([b0c6aa23](https://github.com/angular-ui/ui-router/commit/b0c6aa2350fdd3ce8483144774adc12f5a72b7e9))
* make optional params regex grouping optional ([06f73794](https://github.com/angular-ui/ui-router/commit/06f737945e83e668d09cfc3bcffd04a500ff1963), closes [#1576](https://github.com/angular-ui/ui-router/issues/1576))
* **$state:** allow about.*.** glob patterns ([e39b27a2](https://github.com/angular-ui/ui-router/commit/e39b27a2cb7d88525c446a041f9fbf1553202010))
* **uiSref:**
* use Object's toString instead of Window's toString ([2aa7f4d1](https://github.com/angular-ui/ui-router/commit/2aa7f4d139dbd5b9fcc4afdcf2ab6642c87f5671))
* add absolute to allowed transition options ([ae1b3c4e](https://github.com/angular-ui/ui-router/commit/ae1b3c4eedc37983400d830895afb50457c63af4))
* **uiSrefActive:** Apply active classes on lazy loaded states ([f0ddbe7b](https://github.com/angular-ui/ui-router/commit/f0ddbe7b4a91daf279c3b7d0cee732bb1f3be5b4))
* **uiView:** add `$element` to locals for view controller ([db68914c](https://github.com/angular-ui/ui-router/commit/db68914cd6c821e7dec8155bd33142a3a97f5453))
#### Features
* **$state:**
* support URLs with #fragments ([3da0a170](https://github.com/angular-ui/ui-router/commit/3da0a17069e27598c0f9d9164e104dd5ce05cdc6))
* inject resolve params into controllerProvider ([b380c223](https://github.com/angular-ui/ui-router/commit/b380c223fe12e2fde7582c0d6b1ed7b15a23579b), closes [#1131](https://github.com/angular-ui/ui-router/issues/1131))
* added 'state' to state reload method (feat no.1612) - modiefied options.reload ([b8f04575](https://github.com/angular-ui/ui-router/commit/b8f04575a8557035c1858c4d5c8dbde3e1855aaa))
* broadcast $stateChangeCancel event when event.preventDefault() is called in $sta ([ecefb758](https://github.com/angular-ui/ui-router/commit/ecefb758cb445e41620b62a272aafa3638613d7a))
* **$uiViewScroll:** change function to return promise ([c2a9a311](https://github.com/angular-ui/ui-router/commit/c2a9a311388bb212e5a2e820536d1d739f829ccd), closes [#1702](https://github.com/angular-ui/ui-router/issues/1702))
* **uiSrefActive:** Added support for multiple nested uiSref directives ([b1844948](https://github.com/angular-ui/ui-router/commit/b18449481d152b50705abfce2493a444eb059fa5))
<a name="0.2.13"></a>
### 0.2.13 (2014-11-20)
This release primarily fixes issues reported against 0.2.12
#### Bug Fixes
* **$state:** fix $state.includes/.is to apply param types before comparisions fix(uiSref): ma ([19715d15](https://github.com/angular-ui/ui-router/commit/19715d15e3cbfff724519e9febedd05b49c75baa), closes [#1513](https://github.com/angular-ui/ui-router/issues/1513))
* Avoid re-synchronizing from url after .transitionTo ([b267ecd3](https://github.com/angular-ui/ui-router/commit/b267ecd348e5c415233573ef95ebdbd051875f52), closes [#1573](https://github.com/angular-ui/ui-router/issues/1573))
* **$urlMatcherFactory:**
* Built-in date type uses local time zone ([d726bedc](https://github.com/angular-ui/ui-router/commit/d726bedcbb5f70a5660addf43fd52ec730790293))
* make date type fn check .is before running ([aa94ce3b](https://github.com/angular-ui/ui-router/commit/aa94ce3b86632ad05301530a2213099da73a3dc0), closes [#1564](https://github.com/angular-ui/ui-router/issues/1564))
* early binding of array handler bypasses type resolution ([ada4bc27](https://github.com/angular-ui/ui-router/commit/ada4bc27df5eff3ba3ab0de94a09bd91b0f7a28c))
* add 'any' Type for non-encoding non-url params ([3bfd75ab](https://github.com/angular-ui/ui-router/commit/3bfd75ab445ee2f1dd55275465059ed116b10b27), closes [#1562](https://github.com/angular-ui/ui-router/issues/1562))
* fix encoding slashes in params ([0c983a08](https://github.com/angular-ui/ui-router/commit/0c983a08e2947f999683571477debd73038e95cf), closes [#1119](https://github.com/angular-ui/ui-router/issues/1119))
* fix mixed path/query params ordering problem ([a479fbd0](https://github.com/angular-ui/ui-router/commit/a479fbd0b8eb393a94320973e5b9a62d83912ee2), closes [#1543](https://github.com/angular-ui/ui-router/issues/1543))
* **ArrayType:**
* specify empty array mapping corner case ([74aa6091](https://github.com/angular-ui/ui-router/commit/74aa60917e996b0b4e27bbb4eb88c3c03832021d), closes [#1511](https://github.com/angular-ui/ui-router/issues/1511))
* fix .equals for array types ([5e6783b7](https://github.com/angular-ui/ui-router/commit/5e6783b77af9a90ddff154f990b43dbb17eeda6e), closes [#1538](https://github.com/angular-ui/ui-router/issues/1538))
* **Param:** fix default value shorthand declaration ([831d812a](https://github.com/angular-ui/ui-router/commit/831d812a524524c71f0ee1c9afaf0487a5a66230), closes [#1554](https://github.com/angular-ui/ui-router/issues/1554))
* **common:** fixed the _.filter clone to not create sparse arrays ([750f5cf5](https://github.com/angular-ui/ui-router/commit/750f5cf5fd91f9ada96f39e50d39aceb2caf22b6), closes [#1563](https://github.com/angular-ui/ui-router/issues/1563))
* **ie8:** fix calls to indexOf and filter ([dcb31b84](https://github.com/angular-ui/ui-router/commit/dcb31b843391b3e61dee4de13f368c109541813e), closes [#1556](https://github.com/angular-ui/ui-router/issues/1556))
#### Features
* add json parameter Type ([027f1fcf](https://github.com/angular-ui/ui-router/commit/027f1fcf9c0916cea651e88981345da6f9ff214a))
<a name="0.2.12"></a>
### 0.2.12 (2014-11-13)
#### Bug Fixes
* **$resolve:** use resolve fn result, not parent resolved value of same name ([67f5e00c](https://github.com/angular-ui/ui-router/commit/67f5e00cc9aa006ce3fe6cde9dff261c28eab70a), closes [#1317], [#1353])
* **$state:**
* populate default params in .transitionTo. ([3f60fbe6](https://github.com/angular-ui/ui-router/commit/3f60fbe6d65ebeca8d97952c05aa1d269f1b7ba1), closes [#1396])
* reload() now reinvokes controllers ([73443420](https://github.com/angular-ui/ui-router/commit/7344342018847902594dc1fc62d30a5c30f01763), closes [#582])
* do not emit $viewContentLoading if notify: false ([74255feb](https://github.com/angular-ui/ui-router/commit/74255febdf48ae082a02ca1e735165f2c369a463), closes [#1387](https://github.com/angular-ui/ui-router/issues/1387))
* register states at config-time ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a))
* handle parent.name when parent is obj ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a))
* **$urlMatcherFactory:**
* register types at config ([4533fe36](https://github.com/angular-ui/ui-router/commit/4533fe36e0ab2f0143edd854a4145deaa013915a), closes [#1476])
* made path params default value "" for backwards compat ([8f998e71](https://github.com/angular-ui/ui-router/commit/8f998e71e43a0b31293331c981f5db0f0097b8ba))
* Pre-replace certain param values for better mapping ([6374a3e2](https://github.com/angular-ui/ui-router/commit/6374a3e29ab932014a7c77d2e1ab884cc841a2e3))
* fixed ParamSet.$$keys() ordering ([9136fecb](https://github.com/angular-ui/ui-router/commit/9136fecbc2bfd4fda748a9914f0225a46c933860))
* empty string policy now respected in Param.value() ([db12c85c](https://github.com/angular-ui/ui-router/commit/db12c85c16f2d105415f9bbbdeb11863f64728e0))
* "string" type now encodes/decodes slashes ([3045e415](https://github.com/angular-ui/ui-router/commit/3045e41577a8b8b8afc6039f42adddf5f3c061ec), closes [#1119])
* allow arrays in both path and query params ([fdd2f2c1](https://github.com/angular-ui/ui-router/commit/fdd2f2c191c4a67c874fdb9ec9a34f8dde9ad180), closes [#1073], [#1045], [#1486], [#1394])
* typed params in search ([8d4cab69](https://github.com/angular-ui/ui-router/commit/8d4cab69dd67058e1a716892cc37b7d80a57037f), closes [#1488](https://github.com/angular-ui/ui-router/issues/1488))
* no longer generate unroutable urls ([cb9fd9d8](https://github.com/angular-ui/ui-router/commit/cb9fd9d8943cb26c7223f6990db29c82ae8740f8), closes [#1487](https://github.com/angular-ui/ui-router/issues/1487))
* handle optional parameter followed by required parameter in url format. ([efc72106](https://github.com/angular-ui/ui-router/commit/efc72106ddcc4774b48ea176a505ef9e95193b41))
* default to parameter string coersion. ([13a468a7](https://github.com/angular-ui/ui-router/commit/13a468a7d54c2fb0751b94c0c1841d580b71e6dc), closes [#1414](https://github.com/angular-ui/ui-router/issues/1414))
* concat respects strictMode/caseInsensitive ([dd72e103](https://github.com/angular-ui/ui-router/commit/dd72e103edb342d9cf802816fe127e1bbd68fd5f), closes [#1395])
* **ui-sref:**
* Allow sref state options to take a scope object ([b5f7b596](https://github.com/angular-ui/ui-router/commit/b5f7b59692ce4933e2d63eb5df3f50a4ba68ccc0))
* replace raw href modification with attrs. ([08c96782](https://github.com/angular-ui/ui-router/commit/08c96782faf881b0c7ab00afc233ee6729548fa0))
* nagivate to state when url is "" fix($state.href): generate href for state with ([656b5aab](https://github.com/angular-ui/ui-router/commit/656b5aab906e5749db9b5a080c6a83b95f50fd91), closes [#1363](https://github.com/angular-ui/ui-router/issues/1363))
* Check that state is defined in isMatch() ([92aebc75](https://github.com/angular-ui/ui-router/commit/92aebc7520f88babdc6e266536086e07263514c3), closes [#1314](https://github.com/angular-ui/ui-router/issues/1314), [#1332](https://github.com/angular-ui/ui-router/issues/1332))
* **uiView:**
* allow inteprolated ui-view names ([81f6a19a](https://github.com/angular-ui/ui-router/commit/81f6a19a432dac9198fd33243855bfd3b4fea8c0), closes [#1324](https://github.com/angular-ui/ui-router/issues/1324))
* Made anim work with angular 1.3 ([c3bb7ad9](https://github.com/angular-ui/ui-router/commit/c3bb7ad903da1e1f3c91019cfd255be8489ff4ef), closes [#1367](https://github.com/angular-ui/ui-router/issues/1367), [#1345](https://github.com/angular-ui/ui-router/issues/1345))
* **urlRouter:** html5Mode accepts an object from angular v1.3.0-rc.3 ([7fea1e9d](https://github.com/angular-ui/ui-router/commit/7fea1e9d0d8c6e09cc6c895ecb93d4221e9adf48))
* **stateFilters:** mark state filters as stateful. ([a00b353e](https://github.com/angular-ui/ui-router/commit/a00b353e3036f64a81245c4e7898646ba218f833), closes [#1479])
* **ui-router:** re-add IE8 compatibility for map/filter/keys ([8ce69d9f](https://github.com/angular-ui/ui-router/commit/8ce69d9f7c886888ab53eca7e53536f36b428aae), closes [#1518], [#1383])
* **package:** point 'main' to a valid filename ([ac903350](https://github.com/angular-ui/ui-router/commit/ac9033501debb63364539d91fbf3a0cba4579f8e))
* **travis:** make CI build faster ([0531de05](https://github.com/angular-ui/ui-router/commit/0531de052e414a8d839fbb4e7635e923e94865b3))
#### Features
##### Default and Typed params
This release includes a lot of bug fixes around default/optional and typed parameters. As such, 0.2.12 is the first release where we recommend those features be used.
* **$state:**
* add state params validation ([b1379e6a](https://github.com/angular-ui/ui-router/commit/b1379e6a4d38f7ed7436e05873932d7c279af578), closes [#1433](https://github.com/angular-ui/ui-router/issues/1433))
* is/includes/get work on relative stateOrName ([232e94b3](https://github.com/angular-ui/ui-router/commit/232e94b3c2ca2c764bb9510046e4b61690c87852))
* .reload() returns state transition promise ([639e0565](https://github.com/angular-ui/ui-router/commit/639e0565dece9d5544cc93b3eee6e11c99bd7373))
* **$templateFactory:** request templateURL as text/html ([ccd60769](https://github.com/angular-ui/ui-router/commit/ccd6076904a4b801d77b47f6e2de4c06ce9962f8), closes [#1287])
* **$urlMatcherFactory:** Made a Params and ParamSet class ([0cc1e6cc](https://github.com/angular-ui/ui-router/commit/0cc1e6cc461a4640618e2bb594566551c54834e2))
<a name="0.2.11"></a>
### 0.2.11 (2014-08-26)
#### Bug Fixes
* **$resolve:** Resolves only inherit from immediate parent fixes #702 ([df34e20c](https://github.com/angular-ui/ui-router/commit/df34e20c576299e7a3c8bd4ebc68d42341c0ace9))
* **$state:**
* change $state.href default options.inherit to true ([deea695f](https://github.com/angular-ui/ui-router/commit/deea695f5cacc55de351ab985144fd233c02a769))
* sanity-check state lookups ([456fd5ae](https://github.com/angular-ui/ui-router/commit/456fd5aec9ea507518927bfabd62b4afad4cf714), closes [#980](https://github.com/angular-ui/ui-router/issues/980))
* didn't comply to inherit parameter ([09836781](https://github.com/angular-ui/ui-router/commit/09836781f126c1c485b06551eb9cfd4fa0f45c35))
* allow view content loading broadcast ([7b78edee](https://github.com/angular-ui/ui-router/commit/7b78edeeb52a74abf4d3f00f79534033d5a08d1a))
* **$urlMatcherFactory:**
* detect injected functions ([91f75ae6](https://github.com/angular-ui/ui-router/commit/91f75ae66c4d129f6f69e53bd547594e9661f5d5))
* syntax ([1ebed370](https://github.com/angular-ui/ui-router/commit/1ebed37069bae8614d41541d56521f5c45f703f3))
* **UrlMatcher:**
* query param function defaults ([f9c20530](https://github.com/angular-ui/ui-router/commit/f9c205304f10d8a4ebe7efe9025e642016479a51))
* don't decode default values ([63607bdb](https://github.com/angular-ui/ui-router/commit/63607bdbbcb432d3fb37856a1cb3da0cd496804e))
* **travis:** update Node version to fix build ([d6b95ef2](https://github.com/angular-ui/ui-router/commit/d6b95ef23d9dacb4eba08897f5190a0bcddb3a48))
* **uiSref:**
* Generate an href for states with a blank url. closes #1293 ([691745b1](https://github.com/angular-ui/ui-router/commit/691745b12fa05d3700dd28f0c8d25f8a105074ad))
* should inherit params by default ([b973dad1](https://github.com/angular-ui/ui-router/commit/b973dad155ad09a7975e1476bd096f7b2c758eeb))
* cancel transition if preventDefault() has been called ([2e6d9167](https://github.com/angular-ui/ui-router/commit/2e6d9167d3afbfbca6427e53e012f94fb5fb8022))
* **uiView:** Fixed infinite loop when is called .go() from a controller. ([e13988b8](https://github.com/angular-ui/ui-router/commit/e13988b8cd6231d75c78876ee9d012cc87f4a8d9), closes [#1194](https://github.com/angular-ui/ui-router/issues/1194))
* **docs:**
* Fixed link to milestones ([6c0ae500](https://github.com/angular-ui/ui-router/commit/6c0ae500cc238ea9fc95adcc15415c55fc9e1f33))
* fix bug in decorator example ([4bd00af5](https://github.com/angular-ui/ui-router/commit/4bd00af50b8b88a49d1545a76290731cb8e0feb1))
* Removed an incorrect semi-colon ([af97cef8](https://github.com/angular-ui/ui-router/commit/af97cef8b967f2e32177e539ef41450dca131a7d))
* Explain return value of rule as function ([5e887890](https://github.com/angular-ui/ui-router/commit/5e8878900a6ffe59a81aed531a3925e34a297377))
#### Features
* **$state:**
* allow parameters to pass unharmed ([8939d057](https://github.com/angular-ui/ui-router/commit/8939d0572ab1316e458ef016317ecff53131a822))
* **BREAKING CHANGE**: state parameters are no longer automatically coerced to strings, and unspecified parameter values are now set to undefined rather than null.
* allow prevent syncUrl on failure ([753060b9](https://github.com/angular-ui/ui-router/commit/753060b910d5d2da600a6fa0757976e401c33172))
* **typescript:** Add typescript definitions for component builds ([521ceb3f](https://github.com/angular-ui/ui-router/commit/521ceb3fd7850646422f411921e21ce5e7d82e0f))
* **uiSref:** extend syntax for ui-sref ([71cad3d6](https://github.com/angular-ui/ui-router/commit/71cad3d636508b5a9fe004775ad1f1adc0c80c3e))
* **uiSrefActive:**
* Also activate for child states. ([bf163ad6](https://github.com/angular-ui/ui-router/commit/bf163ad6ce176ce28792696c8302d7cdf5c05a01), closes [#818](https://github.com/angular-ui/ui-router/issues/818))
* **BREAKING CHANGE** Since ui-sref-active now activates even when child states are active you may need to swap out your ui-sref-active with ui-sref-active-eq, thought typically we think devs want the auto inheritance.
* uiSrefActiveEq: new directive with old ui-sref-active behavior
* **$urlRouter:**
* defer URL change interception ([c72d8ce1](https://github.com/angular-ui/ui-router/commit/c72d8ce11916d0ac22c81b409c9e61d7048554d7))
* force URLs to have valid params ([d48505cd](https://github.com/angular-ui/ui-router/commit/d48505cd328d83e39d5706e085ba319715f999a6))
* abstract $location handling ([08b4636b](https://github.com/angular-ui/ui-router/commit/08b4636b294611f08db35f00641eb5211686fb50))
* **$urlMatcherFactory:**
* fail on bad parameters ([d8f124c1](https://github.com/angular-ui/ui-router/commit/d8f124c10d00c7e5dde88c602d966db261aea221))
* date type support ([b7f074ff](https://github.com/angular-ui/ui-router/commit/b7f074ff65ca150a3cdbda4d5ad6cb17107300eb))
* implement type support ([450b1f0e](https://github.com/angular-ui/ui-router/commit/450b1f0e8e03c738174ff967f688b9a6373290f4))
* **UrlMatcher:**
* handle query string arrays ([9cf764ef](https://github.com/angular-ui/ui-router/commit/9cf764efab45fa9309368688d535ddf6e96d6449), closes [#373](https://github.com/angular-ui/ui-router/issues/373))
* injectable functions as defaults ([00966ecd](https://github.com/angular-ui/ui-router/commit/00966ecd91fb745846039160cab707bfca8b3bec))
* default values & type decoding for query params ([a472b301](https://github.com/angular-ui/ui-router/commit/a472b301389fbe84d1c1fa9f24852b492a569d11))
* allow shorthand definitions ([5b724304](https://github.com/angular-ui/ui-router/commit/5b7243049793505e44b6608ea09878c37c95b1f5))
* validates whole interface ([32b27db1](https://github.com/angular-ui/ui-router/commit/32b27db173722e9194ef1d5c0ea7d93f25a98d11))
* implement non-strict matching ([a3e21366](https://github.com/angular-ui/ui-router/commit/a3e21366bee0475c9795a1ec76f70eec41c5b4e3))
* add per-param config support ([07b3029f](https://github.com/angular-ui/ui-router/commit/07b3029f4d409cf955780113df92e36401b47580))
* **BREAKING CHANGE**: the `params` option in state configurations must now be an object keyed by parameter name.
### 0.2.10 (2014-03-12)
#### Bug Fixes
* **$state:** use $browser.baseHref() when generating urls with .href() ([cbcc8488](https://github.com/angular-ui/ui-router/commit/cbcc84887d6b6d35258adabb97c714cd9c1e272d))
* **bower.json:** JS files should not be ignored ([ccdab193](https://github.com/angular-ui/ui-router/commit/ccdab193315f304eb3be5f5b97c47a926c79263e))
* **dev:** karma:background task is missing, can't run grunt:dev. ([d9f7b898](https://github.com/angular-ui/ui-router/commit/d9f7b898e8e3abb8c846b0faa16a382913d7b22b))
* **sample:** Contacts menu button not staying active when navigating to detail states. Need t ([2fcb8443](https://github.com/angular-ui/ui-router/commit/2fcb84437cb43ade12682a92b764f13cac77dfe7))
* **uiSref:** support mock-clicks/events with no data ([717d3ff7](https://github.com/angular-ui/ui-router/commit/717d3ff7d0ba72d239892dee562b401cdf90e418))
* **uiView:**
* Do NOT autoscroll when autoscroll attr is missing ([affe5bd7](https://github.com/angular-ui/ui-router/commit/affe5bd785cdc3f02b7a9f64a52e3900386ec3a0), closes [#807](https://github.com/angular-ui/ui-router/issues/807))
* Refactoring uiView directive to copy ngView logic ([548fab6a](https://github.com/angular-ui/ui-router/commit/548fab6ab9debc9904c5865c8bc68b4fc3271dd0), closes [#857](https://github.com/angular-ui/ui-router/issues/857), [#552](https://github.com/angular-ui/ui-router/issues/552))
#### Features
* **$state:** includes() allows glob patterns for state matching. ([2d5f6b37](https://github.com/angular-ui/ui-router/commit/2d5f6b37191a3135f4a6d9e8f344c54edcdc065b))
* **UrlMatcher:** Add support for case insensitive url matching ([642d5247](https://github.com/angular-ui/ui-router/commit/642d524799f604811e680331002feec7199a1fb5))
* **uiSref:** add support for transition options ([2ed7a728](https://github.com/angular-ui/ui-router/commit/2ed7a728cee6854b38501fbc1df6139d3de5b28a))
* **uiView:** add controllerAs config with function ([1ee7334a](https://github.com/angular-ui/ui-router/commit/1ee7334a73efeccc9b95340e315cdfd59944762d))
### 0.2.9 (2014-01-17)
This release is identical to 0.2.8. 0.2.8 was re-tagged in git to fix a problem with bower.
### 0.2.8 (2014-01-16)
#### Bug Fixes
* **$state:** allow null to be passed as 'params' param ([094dc30e](https://github.com/angular-ui/ui-router/commit/094dc30e883e1bd14e50a475553bafeaade3b178))
* **$state.go:** param inheritance shouldn't inherit from siblings ([aea872e0](https://github.com/angular-ui/ui-router/commit/aea872e0b983cb433436ce5875df10c838fccedb))
* **bower.json:** fixes bower.json ([eed3cc4d](https://github.com/angular-ui/ui-router/commit/eed3cc4d4dfef1d3ef84b9fd063127538ebf59d3))
* **uiSrefActive:** annotate controller injection ([85921422](https://github.com/angular-ui/ui-router/commit/85921422ff7fb0effed358136426d616cce3d583), closes [#671](https://github.com/angular-ui/ui-router/issues/671))
* **uiView:**
* autoscroll tests pass on 1.2.4 & 1.1.5 ([86eacac0](https://github.com/angular-ui/ui-router/commit/86eacac09ca5e9000bd3b9c7ba6e2cc95d883a3a))
* don't animate initial load ([83b6634d](https://github.com/angular-ui/ui-router/commit/83b6634d27942ca74766b2b1244a7fc52c5643d9))
* test pass against 1.0.8 and 1.2.4 ([a402415a](https://github.com/angular-ui/ui-router/commit/a402415a2a28b360c43b9fe8f4f54c540f6c33de))
* it should autoscroll when expr is missing. ([8bb9e27a](https://github.com/angular-ui/ui-router/commit/8bb9e27a2986725f45daf44c4c9f846385095aff))
#### Features
* **uiSref:** add target attribute behaviour ([c12bf9a5](https://github.com/angular-ui/ui-router/commit/c12bf9a520d30d70294e3d82de7661900f8e394e))
* **uiView:**
* merge autoscroll expression test. ([b89e0f87](https://github.com/angular-ui/ui-router/commit/b89e0f871d5cc35c10925ede986c10684d5c9252))
* cache and test autoscroll expression ([ee262282](https://github.com/angular-ui/ui-router/commit/ee2622828c2ce83807f006a459ac4e11406d9258))
================================================
FILE: CONTRIBUTING.md
================================================
# Report an Issue
Help us make UI-Router better! If you think you might have found a bug, or some other weirdness, start by making sure
it hasn't already been reported. You can [search through existing issues](https://github.com/angular-ui/ui-router/search?q=wat%3F&type=Issues)
to see if someone's reported one similar to yours.
If not, then [create a plunkr](http://bit.ly/UIR-Plunk) that demonstrates the problem (try to use as little code
as possible: the more minimalist, the faster we can debug it).
Next, [create a new issue](https://github.com/angular-ui/ui-router/issues/new) that briefly explains the problem,
and provides a bit of background as to the circumstances that triggered it. Don't forget to include the link to
that plunkr you created!
**Note**: If you're unsure how a feature is used, or are encountering some unexpected behavior that you aren't sure
is a bug, it's best to talk it out on
[StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) before reporting it. This
keeps development streamlined, and helps us focus on building great software.
Issues only! |
-------------|
Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). |
#### Purple Labels
A purple label means that **you** need to take some further action.
- : Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
- : Please [create a plunkr](http://bit.ly/UIR-Plunk)
- : We suspect your issue is really a help request, or could be answered by the community. Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router). If you determine that is an actual issue, please explain why.
If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately.
# Contribute
**(1)** See the **[Developing](#developing)** section below, to get the development version of UI-Router up and running on your local machine.
**(2)** Check out the [roadmap](https://github.com/angular-ui/ui-router/milestones) to see where the project is headed, and if your feature idea fits with where we're headed.
**(3)** If you're not sure, [open an RFC](https://github.com/angular-ui/ui-router/issues/new?title=RFC:%20My%20idea) to get some feedback on your idea.
**(4)** Finally, commit some code and open a pull request. Code & commits should abide by the following rules:
- *Always* have test coverage for new features (or regression tests for bug fixes), and *never* break existing tests
- Commits should represent one logical change each; if a feature goes through multiple iterations, squash your commits down to one
- Make sure to follow the [Angular commit message format](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) so your change will appear in the changelog of the next release.
- Changes should always respect the coding style of the project
# Developing
UI-Router uses <code>npm</code> and <code>Rollup</code>.
## Fetch the source code
The code for Angular UI-Router is split into two source repositories:
* [UI-Router Core](https://github.com/ui-router/core) (`@uirouter/core` on npm)
* [UI-Router for Angular 1](https://github.com/angular-ui/ui-router) (`@ui-router/angularjs` on npm)
Clone both repositories into directories next to each other.
```
mkdir uirouter
cd uirouter
git clone https://github.com/angular-ui/ui-router.git angularjs
git clone https://github.com/ui-router/core.git core
```
## Install dependencies
Use `npm` to install the development dependencies for each repository.
```
cd core
npm install
cd ../angularjs
npm install
cd ..
```
## Link the directories
This step is necessary if you need to modify any code in `@uirouter/core`.
Using `npm`, link `@uirouter/core` into `@uirouter/angularjs`
```
cd core
npm link
cd ../angularjs
npm link '@uirouter/core'
```
After executing these steps, `@uirouter/angularjs` will be depend on your local copy of `@uirouter/core` instead of the version listed in `package.json`.
## Develop
These scripts may be run in the `angularjs` directory:
* `npm run build`: Compiles TypeScript source
* `npm run package`: Compiles TypeScript source and creates the Rollup bundles.
* `npm test`: Runs the test suite (against Angular 1.2 through 1.5).
* `npm run watch`: Continuously compiles the source and runs the test suite (when either source or tests change).
Scripts of the same name (in the `core` directory) can be used.
* `npm run build`: Compiles `@uirouter/core` TypeScript source
* `npm test`: Runs the `@uirouter/core` test suite
* `npm run watch`: Continuously compiles the source and runs the `@uirouter/core` test suite (when core source or tests change).
If you've followed the [linking instructions](#link-the-directories), it's useful to run both
`npm run watch` tasks (each task from `@uirouter/core` *and* `@uirouter/angularjs`).
This ensures that changes to either `@uirouter/core` and `@uirouter/angularjs` compile successfully and are run against their test suites.
================================================
FILE: DOCS.md
================================================
# [UI Router for Angular 1](https://ui-router.github.io/ng1/docs/latest)
#### The de-facto solution to flexible routing in angular 1
<div style="display: flex;">
<iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=angular-ui&repo=ui-router&type=fork&count=true&size=medium" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
<iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=angular-ui&repo=ui-router&type=star&count=true&size=medium" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
[](https://travis-ci.org/angular-ui/ui-router)
</div>
Angular UI-Router is a client-side [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application)
routing framework for [AngularJS](http://angularjs.org).
**[View on Github](http://github.com/angular-ui/ui-router) |**
**[Tutorials](https://ui-router.github.io/ng1/tutorials/)** |
**[Guides](https://ui-router.github.io/guide) |**
**[Sample App](http://ui-router.github.io/resources/sampleapp/) |**
**[Wiki](https://github.com/angular-ui/ui-router/wiki) |**
**[FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions)**
#### API Documentation Organization
The documentation is arranged according to API concern, such as `url`, `resolve`, and `core`.
For a list of services and objects that can be injectable, see the [`injectables` section](./injectables.html).
By default, only the public UI-Router API is shown.
To view both public API and the internal APIs, check the "Internal UI-Router API" checkbox.
#### Typescript
UI-Router is written in Typescript.
The API documentation is generated using [TypeDoc](https://github.com/TypeStrong/typedoc).
The documentation reflects the Typescript classes, interfaces, and parameter types information embedded in the source code.
#### Contributing
Angular UI-Router depends on the framework agnostic `@uirouter/core`.
To contribute to the documentation, please submit a PR to either
[@uirouter/angularjs](http://github.com/angular-ui/ui-router)
or
[@uirouter/core](http://github.com/ui-router/core).
To find where a specific piece of documentation is written, follow the links that say:
> _Defined in ui-router/somedir/somefile.ts_
================================================
FILE: ISSUE_TEMPLATE.md
================================================
This issue tracker is for Bug Reports and Feature Requests only.
Please direct requests for help to StackOverflow.
See http://bit.ly/UIR-SOF for details.
This is a (check one box):
- [ ] Bug Report
- [ ] Feature Request
- [ ] General Query
My version of UI-Router is: (type version)
# Bug Report
#### Current Behavior:
(type current behavior here)
#### Expected Behavior:
(type expected behavior here)
#### Link to Plunker or stackblitz that reproduces the issue:
( if you want a response to your issue, provide a way to reproduce it )
( http://bit.ly/UIR-Plunk1 )
( https://stackblitz.com/edit/ui-router-angularjs )
# Feature Request
(type feature request here)
# General Query
Please direct general implementation questions to StackOverflow:
http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router
Please review the Sample Application which highlights common approaches:
https://github.com/ui-router/sample-app-angularjs
- [ ] I have already asked my question on StackOverflow and nobody could answer the question
- [ ] I have already reviewed the sample application for examples of common approaches
- [ ] I believe my question can only be answered by the UI-Router maintainers
(type general query here)
================================================
FILE: LICENSE
================================================
The MIT License
Copyright (c) 2013-2018 The AngularUI Team, Karsten Sperling
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================
# AngularUI Router [](https://github.com/angular-ui/ui-router/actions?query=workflow%3A%22CI%3A+UIRouter+for+AngularJS%22)
**Note: this is the Angular 1.x source for UI-Router version 1.x. If you are looking for the source for UI-Router
version 0.x, it can be found [here](https://github.com/angular-ui/ui-router/tree/legacy)**
---
#### The de-facto solution to flexible routing in angular
---
**[Tutorials](https://ui-router.github.io/tutorials/)** |
**[API Docs](https://ui-router.github.io/docs/latest/)** |
**[Download stable](http://unpkg.com/@uirouter/angularjs@latest/release/angular-ui-router.js)** (or **[Minified](http://unpkg.com/@uirouter/angularjs@latest/release/angular-ui-router.min.js)**) **|**
**[Guide](https://ui-router.github.io/guide/) |**
**[Sample App](http://ui-router.github.io/resources/sampleapp/) |**
**[FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions) |**
**[Report an Issue](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#report-an-issue) |**
**[Contribute](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#contribute) |**
**[Help!](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) |**
---
Angular UI-Router is a client-side [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application)
routing framework for [AngularJS](http://angularjs.org).
Routing frameworks for SPAs update the browser's URL as the user navigates through the app. Conversely, this allows
changes to the browser's URL to drive navigation through the app, thus allowing the user to create a bookmark to a
location deep within the SPA.
UI-Router applications are modeled as a hierarchical tree of states. UI-Router provides a
[*state machine*](https://en.wikipedia.org/wiki/Finite-state_machine) to manage the transitions between those
application states in a transaction-like manner.
## Get Started
- [UI-Router for Angular 1](https://ui-router.github.io/ng1)
- [UI-Router for Angular 2](https://ui-router.github.io/ng2)
- [UI-Router for React](https://ui-router.github.io/react)
## Resources
* [In-Depth Guide](https://github.com/angular-ui/ui-router/wiki)
* [Slides comparing ngRoute to ui-router](http://slid.es/timkindberg/ui-router#/)
* [UI-Router Extras / Addons for legacy (0.x)](http://christopherthielen.github.io/ui-router-extras/#/home) (@christopherthielen)
### Videos
* [Introduction Video](https://egghead.io/lessons/angularjs-introduction-ui-router) (egghead.io)
* [Tim Kindberg on Angular UI-Router](https://www.youtube.com/watch?v=lBqiZSemrqg)
* [Activating States](https://egghead.io/lessons/angularjs-ui-router-activating-states) (egghead.io)
* [Learn Angular.js using UI-Router](http://youtu.be/QETUuZ27N0w) (LearnCode.academy)
## Reporting issues and Contributing
Please read our [Contributor guidelines](CONTRIBUTING.md) before reporting an issue or creating a pull request.
================================================
FILE: artifacts.json
================================================
{
"ARTIFACTS": ["lib", "lib-esm", "release", "package.json"]
}
================================================
FILE: bower.json
================================================
{
"name": "angular-ui-router",
"description": "State-based routing for AngularJS",
"license": "MIT",
"main": "./release/angular-ui-router.js",
"dependencies": {
"angular": ">= 1.2.0"
},
"ignore": [
"**/.*",
"**/tsconfig.json",
"**/tsconfig.typedoc.json",
"**/webpack.config.js",
"**/node_modules",
"package.json",
"scripts",
"test",
"src"
],
"version": "1.0.30"
}
================================================
FILE: downstream_projects.json
================================================
{
"typescript": {
"typescript3.9": "./test/typescript/3.9"
},
"sample-app-angularjs": "https://github.com/ui-router/sample-app-angularjs.git"
}
================================================
FILE: jest.config.js
================================================
const NG = process.env.NG || '1.7';
console.log(`Testing with AngularJS ${NG}`);
module.exports = {
preset: 'ts-jest',
testEnvironment: 'jsdom',
roots: ['src', 'test'],
testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)', '**/?*Spec.[jt]s'],
setupFilesAfterEnv: ['./test/jest.init.ts'],
moduleNameMapper: {
'^angular$': '<rootDir>/test/angular/jest-angular.js',
'^jest-angular-import$': `<rootDir>/test/angular/${NG}/angular.js`,
'^angular-animate$': `<rootDir>/test/angular/${NG}/angular-animate.js`,
'^angular-mocks$': `<rootDir>/test/angular/${NG}/angular-mocks.js`,
},
};
================================================
FILE: karma.conf.js
================================================
// Karma configuration file
var karma = require('karma');
var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
var DEFAULT_NG_VERSION = '1.6';
/**
* This returns a Karma 'files configuration'.
* http://karma-runner.github.io/0.8/config/files.html
*
* Specifies which files can be served by the Karma web server
*
* included: true -- files that are always served to the browser (like <script> tag)
* included: false -- files *available to be served* by karma, for instance via require()
*/
function karmaServedFiles(ngVersion) {
// Returns necessary files for a specific version of angular
function angular(version) {
console.log('Using Angular ' + ngVersion + ' from test/angular/' + version + '/angular.js');
return [
'test/angular/' + version + '/angular.js',
'test/angular/' + version + '/angular-mocks.js',
'test/angular/' + version + '/angular-animate.js',
];
}
var angularFiles = angular(ngVersion).map(function (pattern) {
return { watched: false, included: true, nocache: true, pattern: pattern };
});
return angularFiles.concat('test/index.js');
}
module.exports = function (config) {
var ngVersion = config.ngversion || DEFAULT_NG_VERSION;
config.set({
singleRun: true,
autoWatch: false,
autoWatchInterval: 0,
// level of logging
// possible values: LOG_DISABLE, LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG
logLevel: 'warn',
reporters: ['super-dots', 'mocha'],
colors: true,
mochaReporter: {
output: 'minimal',
},
port: 8080,
// base path, that will be used to resolve files and exclude
basePath: '.',
// Start these browsers, currently available:
// Chrome, ChromeCanary, Firefox, Opera, Safari, PhantomJS
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox'] },
},
frameworks: ['jasmine'],
plugins: [
require('karma-webpack'),
require('karma-sourcemap-loader'),
require('karma-super-dots-reporter'),
require('karma-mocha-reporter'),
require('karma-jasmine'),
require('karma-chrome-launcher'),
],
webpack: {
mode: 'development',
resolve: {
modules: ['node_modules'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
devtool: 'inline-source-map',
module: {
rules: [{ test: /\.tsx?$/, loader: 'ts-loader', options: { transpileOnly: true } }],
},
plugins: [new ForkTsCheckerWebpackPlugin()],
externals: ['angular'],
},
webpackMiddleware: {
stats: 'minimal',
},
/* Files *available to be served* by karma, i.e., anything that will be require()'d */
files: karmaServedFiles(ngVersion),
preprocessors: {
'test/index.js': ['webpack', 'sourcemap'],
'../src/ng1': ['webpack', 'sourcemap'],
},
});
};
================================================
FILE: package.json
================================================
{
"name": "@uirouter/angularjs",
"description": "State-based routing for AngularJS 1.x",
"version": "1.1.2",
"scripts": {
"clean": "shx rm -rf lib lib-esm _doc build release *.log",
"compile": "tsc && tsc -m es6 --outDir lib-esm && npm run fixdts",
"fixdts": "dts-downlevel 'lib/**/*.d.ts' 'lib-esm/**/*.d.ts'",
"fixmaps:lib": "tweak_sourcemap_paths -a --include 'lib/**/*.js.map' 'lib-esm/**/*.js.map'",
"fixmaps:bundle": "tweak_sourcemap_paths -a --include 'release/**/*.js.map'",
"build": "npm run clean && npm run compile && npm run bundle && npm run fixmaps:lib && npm run fixmaps:bundle",
"lint": "eslint src/**/*.ts",
"package": "npm run build",
"bundle": "npm run bundle_router && npm run bundle_monolithic_router && npm run bundle_events && npm run bundle_resolve",
"bundle_monolithic_router": "rollup -c --environment ROUTER,MONOLITHIC && rollup -c --environment ROUTER,MINIFY,MONOLITHIC",
"bundle_router": "rollup -c --environment ROUTER && rollup -c --environment ROUTER,MINIFY",
"bundle_events": "rollup -c --environment EVENTS && rollup -c --environment EVENTS,MINIFY",
"bundle_resolve": "rollup -c --environment RESOLVE && rollup -c --environment RESOLVE,MINIFY",
"test": "tsc && NG=1.7 jest && NG=1.6 jest && NG=1.5 jest && NG=1.4 jest && NG=1.3 jest && NG=1.2 jest",
"test:debug": "node --inspect ./node_modules/.bin/jest --runInBand --watch",
"test:ng12": "NG=1.2 jest",
"test:ng13": "NG=1.3 jest",
"test:ng14": "NG=1.4 jest",
"test:ng15": "NG=1.5 jest",
"test:ng16": "NG=1.6 jest",
"test:ng17": "NG=1.7 jest",
"test:downstream": "test_downstream_projects",
"watch": "jest --watch",
"debug": "npm run test:debug",
"docs": "generate_docs",
"docs:publish": "generate_docs && publish_docs",
"release": "release --deps @uirouter/core && node ./scripts/npm_angular_ui_router_release.js && node ./scripts/bower_release.js",
"prepublishOnly": "npm run build",
"artifacts": "artifact_tagging"
},
"homepage": "https://ui-router.github.io",
"contributors": [
{
"name": "Nate Abele",
"email": "nate@radify.io",
"web": "https://radify.io"
},
{
"name": "Chris Thielen",
"web": "https://github.com/christopherthielen"
},
{
"name": "Tim Kindberg",
"web": "https://github.com/timkindberg"
},
{
"name": "Karsten Sperling",
"web": "https://github.com/ksperling"
}
],
"maintainers": [
{
"name": "UIRouter Team",
"web": "https://github.com/ui-router?tab=members"
}
],
"repository": {
"type": "git",
"url": "https://github.com/angular-ui/ui-router.git"
},
"bugs": {
"url": "https://github.com/angular-ui/ui-router/issues"
},
"engines": {
"node": ">=4.0.0"
},
"license": "MIT",
"main": "release/ui-router-angularjs.js",
"jsnext:main": "lib-esm/index.js",
"module": "lib-esm/index.js",
"typings": "lib/index.d.ts",
"peerDependencies": {
"@uirouter/core": "^6.1.2",
"angular": ">=1.2.0"
},
"devDependencies": {
"@types/angular": "1.6.57",
"@types/angular-animate": "^1.5.10",
"@types/angular-mocks": "^1.7.0",
"@types/jest": "^26.0.5",
"@typescript-eslint/eslint-plugin": "^3.7.0",
"@typescript-eslint/parser": "^3.7.0",
"@uirouter/core": "^6.1.2",
"@uirouter/publish-scripts": "^2.6.4",
"angular": "1.8.0",
"dts-downlevel": "^0.4.0",
"eslint": "^7.5.0",
"eslint-config-prettier": "^6.11.0",
"husky": "^4.2.5",
"jest": "^26.0.1",
"lodash": "^4.17.19",
"prettier": "^2.0.5",
"pretty-quick": "^2.0.1",
"rollup": "^2.22.1",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-sourcemaps": "^0.6.2",
"rollup-plugin-terser": "^6.1.0",
"ts-jest": "^26.0.0",
"typescript": "^3.9.7"
},
"husky": {
"hooks": {
"pre-commit": "pretty-quick --staged"
}
},
"docgen": {
"publishDir": "_ng1_docs",
"navigation": {
"": [
"UIRouter"
],
"Services": [
"StateService",
"StateRegistry",
"TransitionService",
"UrlService",
"UrlConfig",
"UrlRules"
],
"Interfaces": [
"Ng1StateDeclaration"
],
"Components": [
"uiView",
"UISref",
"UISrefActive",
"uiStateDirective"
],
"Other": [
"Transition",
"Trace"
]
},
"include": [
{
"pkg": "@uirouter/core",
"repo": "https://github.com/ui-router/core",
"branch": "master"
}
]
},
"packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
}
================================================
FILE: rollup.config.js
================================================
import nodeResolve from 'rollup-plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';
import sourcemaps from 'rollup-plugin-sourcemaps';
const MINIFY = process.env.MINIFY;
const MONOLITHIC = process.env.MONOLITHIC;
const ROUTER = process.env.ROUTER;
const EVENTS = process.env.EVENTS;
const RESOLVE = process.env.RESOLVE;
const pkg = require('./package.json');
let banner = `/**
* ${pkg.description}`;
if (ROUTER && MONOLITHIC) {
banner += `
* NOTICE: This monolithic bundle also bundles the @uirouter/core code.
* This causes it to be incompatible with plugins that depend on @uirouter/core.
* We recommend switching to the ui-router-core.js and ui-router-angularjs.js bundles instead.
* For more information, see https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles`;
} else if (ROUTER) {
banner += `
* This bundle requires the ui-router-core.js bundle from the @uirouter/core package.`;
}
banner += `
* @version v${pkg.version}
* @link ${pkg.homepage}
* @license MIT License, http://www.opensource.org/licenses/MIT
*/`;
const terserOpts = { output: {} };
// retain multiline comment with @license
terserOpts.output.comments = (node, comment) => comment.type === 'comment2' && /@license/i.test(comment.value);
const onwarn = (warning) => {
// Suppress this error message... https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined
const ignores = ['THIS_IS_UNDEFINED'];
if (!ignores.some((code) => code === warning.code)) {
console.error(warning.message);
}
};
const plugins = [nodeResolve({ jsnext: true }), sourcemaps()];
if (MINIFY) plugins.push(terser(terserOpts));
const extension = MINIFY ? '.min.js' : '.js';
const BASE_CONFIG = {
onwarn: onwarn,
plugins: plugins,
};
const BASE_OUTPUT = {
banner: banner,
exports: 'named',
format: 'umd',
sourcemap: true,
};
const ROUTER_CONFIG = Object.assign(
{
input: 'lib-esm/index.js',
external: ['angular', '@uirouter/core'],
output: Object.assign(
{
file: 'release/ui-router-angularjs' + extension,
name: '@uirouter/angularjs',
globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
},
BASE_OUTPUT
),
},
BASE_CONFIG
);
// Also bundles the code from @uirouter/core into the same bundle
const MONOLITHIC_ROUTER_CONFIG = Object.assign(
{
input: 'lib-esm/index.js',
external: 'angular',
output: Object.assign(
{
file: 'release/angular-ui-router' + extension,
name: '@uirouter/angularjs',
globals: { angular: 'angular' },
},
BASE_OUTPUT
),
},
BASE_CONFIG
);
const EVENTS_CONFIG = Object.assign({}, BASE_CONFIG, {
input: 'lib-esm/legacy/stateEvents.js',
external: ['angular', '@uirouter/core'],
output: Object.assign(
{
file: 'release/stateEvents' + extension,
name: '@uirouter/angularjs-state-events',
globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
},
BASE_OUTPUT
),
});
const RESOLVE_CONFIG = Object.assign({}, BASE_CONFIG, {
input: 'lib-esm/legacy/resolveService.js',
external: ['angular', '@uirouter/core'],
output: Object.assign(
{
file: 'release/resolveService' + extension,
name: '@uirouter/angularjs-resolve-service',
globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
},
BASE_OUTPUT
),
});
const CONFIG = RESOLVE
? RESOLVE_CONFIG
: EVENTS
? EVENTS_CONFIG
: MONOLITHIC
? MONOLITHIC_ROUTER_CONFIG
: ROUTER
? ROUTER_CONFIG
: ROUTER_CONFIG;
export default CONFIG;
================================================
FILE: scripts/bower_release.js
================================================
#!env node
"use strict";
const fs = require('fs');
const path = require('path');
const util = require('@uirouter/publish-scripts/util');
const version = require('../package.json').version;
const _exec = util._exec;
util.packageDir();
const bowerPath = path.resolve(__dirname, '..', 'bower.json');
const bower = JSON.parse(fs.readFileSync(bowerPath));
util.ensureCleanMaster('master');
// update bower.json and push
bower.version = version;
fs.writeFileSync(bowerPath, JSON.stringify(bower, null, 2));
_exec(`git commit -m 'chore(bower): Update bower.json' bower.json`);
_exec(`git push`);
// branch, add/commit release files, and push to bower repository
_exec(`git checkout -b bower-${version}`);
_exec(`git add --force release`);
_exec(`git commit -m "bower release ${version}"`);
_exec(`git tag ${version}+bower`);
_exec(`git remote add bower git@github.com:angular-ui/angular-ui-router-bower.git`);
_exec(`git push bower ${version}+bower:${version}`);
_exec(`git remote rm bower`);
_exec(`git checkout master`);
================================================
FILE: scripts/npm_angular_ui_router_release.js
================================================
#!env node
'use strict';
const fs = require('fs');
const path = require('path');
const util = require('@uirouter/publish-scripts/util');
const version = require('../package.json').version;
const _exec = util._exec;
util.packageDir();
const packagePath = path.resolve(__dirname, '..', 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packagePath));
util.ensureCleanMaster('master');
packageJson.name = 'angular-ui-router';
fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2));
_exec(`npm publish`);
_exec(`git checkout package.json`);
================================================
FILE: src/angular.ts
================================================
/** @publicapi @module ng1 */ /** */
import * as ng_from_import from 'angular';
/** @hidden */ declare let angular;
/** @hidden */ const ng_from_global = angular;
/** @hidden */ export const ng = ng_from_import && ng_from_import.module ? ng_from_import : ng_from_global;
================================================
FILE: src/directives/stateDirectives.ts
================================================
/* eslint-disable @typescript-eslint/no-empty-interface */
/* eslint-disable prefer-const */
/**
* # Angular 1 Directives
*
* These are the directives included in UI-Router for Angular 1.
* These directives are used in templates to create viewports and link/navigate to states.
*
* @preferred @publicapi @module directives
*/ /** */
import { ng as angular } from '../angular';
import { IAugmentedJQuery, ITimeoutService, IScope, IInterpolateService } from 'angular';
import {
Obj,
extend,
forEach,
tail,
isString,
isObject,
isArray,
parse,
noop,
unnestR,
identity,
uniqR,
inArray,
removeFrom,
RawParams,
PathNode,
StateOrName,
StateService,
StateDeclaration,
UIRouter,
} from '@uirouter/core';
import { UIViewData } from './viewDirective';
/** @hidden Used for typedoc */
export interface ng1_directive {}
/** @hidden */
function parseStateRef(ref: string) {
const paramsOnly = ref.match(/^\s*({[^}]*})\s*$/);
if (paramsOnly) ref = '(' + paramsOnly[1] + ')';
const parsed = ref.replace(/\n/g, ' ').match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/);
if (!parsed || parsed.length !== 4) throw new Error("Invalid state ref '" + ref + "'");
return { state: parsed[1] || null, paramExpr: parsed[3] || null };
}
/** @hidden */
function stateContext(el: IAugmentedJQuery) {
const $uiView: UIViewData = (el.parent() as IAugmentedJQuery).inheritedData('$uiView');
const path: PathNode[] = parse('$cfg.path')($uiView);
return path ? tail(path).state.name : undefined;
}
/** @hidden */
function processedDef($state: StateService, $element: IAugmentedJQuery, def: Def): Def {
const uiState = def.uiState || $state.current.name;
const uiStateOpts = extend(defaultOpts($element, $state), def.uiStateOpts || {});
const href = $state.href(uiState, def.uiStateParams, uiStateOpts);
return { uiState, uiStateParams: def.uiStateParams, uiStateOpts, href };
}
/** @hidden */
interface TypeInfo {
attr: string;
isAnchor: boolean;
clickable: boolean;
}
/** @hidden */
function getTypeInfo(el: IAugmentedJQuery): TypeInfo {
// SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.
const isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';
const isForm = el[0].nodeName === 'FORM';
return {
attr: isForm ? 'action' : isSvg ? 'xlink:href' : 'href',
isAnchor: el.prop('tagName').toUpperCase() === 'A',
clickable: !isForm,
};
}
/** @hidden */
function clickHook(
el: IAugmentedJQuery,
$state: StateService,
$timeout: ITimeoutService,
type: TypeInfo,
getDef: () => Def
) {
return function (e: JQueryMouseEventObject) {
const button = e.which || e.button,
target = getDef();
if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || el.attr('target'))) {
// HACK: This is to allow ng-clicks to be processed before the transition is initiated:
const transition = $timeout(function () {
if (!el.attr('disabled')) {
$state.go(target.uiState, target.uiStateParams, target.uiStateOpts);
}
});
e.preventDefault();
// if the state has no URL, ignore one preventDefault from the <a> directive.
let ignorePreventDefaultCount = type.isAnchor && !target.href ? 1 : 0;
e.preventDefault = function () {
if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);
};
}
};
}
/** @hidden */
function defaultOpts(el: IAugmentedJQuery, $state: StateService) {
return {
relative: stateContext(el) || $state.$current,
inherit: true,
source: 'sref',
};
}
/** @hidden */
function bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: EventListener, uiStateOpts: any): void {
let events;
if (uiStateOpts) {
events = uiStateOpts.events;
}
if (!isArray(events)) {
events = ['click'];
}
const on = element.on ? 'on' : 'bind';
for (const event of events) {
element[on](event, hookFn);
}
scope.$on('$destroy', function () {
const off = element.off ? 'off' : 'unbind';
for (const event of events) {
element[off](event, hookFn as any);
}
});
}
/**
* `ui-sref`: A directive for linking to a state
*
* A directive which links to a state (and optionally, parameters).
* When clicked, this directive activates the linked state with the supplied parameter values.
*
* ### Linked State
* The attribute value of the `ui-sref` is the name of the state to link to.
*
* #### Example:
* This will activate the `home` state when the link is clicked.
* ```html
* <a ui-sref="home">Home</a>
* ```
*
* ### Relative Links
* You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).
* You just need to be aware that the path is relative to the state that *created* the link.
* This allows a state to create a relative `ui-sref` which always targets the same destination.
*
* #### Example:
* Both these links are relative to the parent state, even when a child state is currently active.
* ```html
* <a ui-sref=".child1">child 1 state</a>
* <a ui-sref=".child2">child 2 state</a>
* ```
*
* This link activates the parent state.
* ```html
* <a ui-sref="^">Return</a>
* ```
*
* ### hrefs
* If the linked state has a URL, the directive will automatically generate and
* update the `href` attribute (using the [[StateService.href]] method).
*
* #### Example:
* Assuming the `users` state has a url of `/users/`
* ```html
* <a ui-sref="users" href="/users/">Users</a>
* ```
*
* ### Parameter Values
* In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.
* Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.
* The content inside the parentheses is an expression, evaluated to the parameter values.
*
* #### Example:
* This example renders a list of links to users.
* The state's `userId` parameter value comes from each user's `user.id` property.
* ```html
* <li ng-repeat="user in users">
* <a ui-sref="users.detail({ userId: user.id })">{{ user.displayName }}</a>
* </li>
* ```
*
* Note:
* The parameter values expression is `$watch`ed for updates.
*
* ### Transition Options
* You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.
* Options are restricted to `location`, `inherit`, and `reload`.
*
* #### Example:
* ```html
* <a ui-sref="home" ui-sref-opts="{ reload: true }">Home</a>
* ```
*
* ### Other DOM Events
*
* You can also customize which DOM events to respond to (instead of `click`) by
* providing an `events` array in the `ui-sref-opts` attribute.
*
* #### Example:
* ```html
* <input type="text" ui-sref="contacts" ui-sref-opts="{ events: ['change', 'blur'] }">
* ```
*
* ### Highlighting the active link
* This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.
*
* ### Examples
* If you have the following template:
*
* ```html
* <a ui-sref="home">Home</a>
* <a ui-sref="about">About</a>
* <a ui-sref="{page: 2}">Next page</a>
*
* <ul>
* <li ng-repeat="contact in contacts">
* <a ui-sref="contacts.detail({ id: contact.id })">{{ contact.name }}</a>
* </li>
* </ul>
* ```
*
* Then (assuming the current state is `contacts`) the rendered html including hrefs would be:
*
* ```html
* <a href="#/home" ui-sref="home">Home</a>
* <a href="#/about" ui-sref="about">About</a>
* <a href="#/contacts?page=2" ui-sref="{page: 2}">Next page</a>
*
* <ul>
* <li ng-repeat="contact in contacts">
* <a href="#/contacts/1" ui-sref="contacts.detail({ id: contact.id })">Joe</a>
* </li>
* <li ng-repeat="contact in contacts">
* <a href="#/contacts/2" ui-sref="contacts.detail({ id: contact.id })">Alice</a>
* </li>
* <li ng-repeat="contact in contacts">
* <a href="#/contacts/3" ui-sref="contacts.detail({ id: contact.id })">Bob</a>
* </li>
* </ul>
*
* <a href="#/home" ui-sref="home" ui-sref-opts="{reload: true}">Home</a>
* ```
*
* ### Notes
*
* - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.
* #### Example:
* Sets the `lang` parameter to `en` and remains on the same state.
*
* ```html
* <a ui-sref="{ lang: 'en' }">English</a>
* ```
*
* - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.
*
* - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).
* If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.
*/
let uiSrefDirective: ng1_directive;
uiSrefDirective = [
'$uiRouter',
'$timeout',
function $StateRefDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {
const $state = $uiRouter.stateService;
return {
restrict: 'A',
require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {
const type = getTypeInfo(element);
const active = uiSrefActive[1] || uiSrefActive[0];
let unlinkInfoFn: Function = null;
const rawDef = {} as Def;
const getDef = () => processedDef($state, element, rawDef);
const ref = parseStateRef(attrs.uiSref);
rawDef.uiState = ref.state;
rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};
function update() {
const def = getDef();
if (unlinkInfoFn) unlinkInfoFn();
if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);
if (def.href != null) attrs.$set(type.attr, def.href);
}
if (ref.paramExpr) {
scope.$watch(
ref.paramExpr,
function (val) {
rawDef.uiStateParams = extend({}, val);
update();
},
true
);
rawDef.uiStateParams = extend({}, scope.$eval(ref.paramExpr));
}
update();
scope.$on('$destroy', <any>$uiRouter.stateRegistry.onStatesChanged(update));
scope.$on('$destroy', <any>$uiRouter.transitionService.onSuccess({}, update));
if (!type.clickable) return;
const hookFn = clickHook(element, $state, $timeout, type, getDef);
bindEvents(element, scope, hookFn, rawDef.uiStateOpts);
},
};
},
];
/**
* `ui-state`: A fully dynamic directive for linking to a state
*
* A directive which links to a state (and optionally, parameters).
* When clicked, this directive activates the linked state with the supplied parameter values.
*
* **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**
*
* A directive which links to a state (and optionally, parameters).
* When clicked, this directive activates the linked state with the supplied parameter values.
*
* ### Linked State
* The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.
* **This is in contrast with `ui-sref`, which takes a state name as a string literal.**
*
* #### Example:
* Create a list of links.
* ```html
* <li ng-repeat="link in navlinks">
* <a ui-state="link.state">{{ link.displayName }}</a>
* </li>
* ```
*
* ### Relative Links
* If the expression evaluates to a relative path, it is processed like [[uiSref]].
* You just need to be aware that the path is relative to the state that *created* the link.
* This allows a state to create relative `ui-state` which always targets the same destination.
*
* ### hrefs
* If the linked state has a URL, the directive will automatically generate and
* update the `href` attribute (using the [[StateService.href]] method).
*
* ### Parameter Values
* In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.
* Param values should be provided using the `ui-state-params` attribute.
* The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.
*
* #### Example:
* This example renders a list of links with param values.
* The state's `userId` parameter value comes from each user's `user.id` property.
* ```html
* <li ng-repeat="link in navlinks">
* <a ui-state="link.state" ui-state-params="link.params">{{ link.displayName }}</a>
* </li>
* ```
*
* ### Transition Options
* You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.
* Options are restricted to `location`, `inherit`, and `reload`.
* The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.
*
* #### Example:
* ```html
* <a ui-state="returnto.state" ui-state-opts="{ reload: true }">Home</a>
* ```
*
* ### Other DOM Events
*
* You can also customize which DOM events to respond to (instead of `click`) by
* providing an `events` array in the `ui-state-opts` attribute.
*
* #### Example:
* ```html
* <input type="text" ui-state="contacts" ui-state-opts="{ events: ['change', 'blur'] }">
* ```
*
* ### Highlighting the active link
* This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.
*
* ### Notes
*
* - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.
* However, it might be simpler to use [[uiSref]] parameter-only links.
*
* #### Example:
* Sets the `lang` parameter to `en` and remains on the same state.
*
* ```html
* <a ui-state="" ui-state-params="{ lang: 'en' }">English</a>
* ```
*
* - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.
* ```
*/
let uiStateDirective: ng1_directive;
uiStateDirective = [
'$uiRouter',
'$timeout',
function $StateRefDynamicDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {
const $state = $uiRouter.stateService;
return {
restrict: 'A',
require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {
const type = getTypeInfo(element);
const active = uiSrefActive[1] || uiSrefActive[0];
let unlinkInfoFn: Function = null;
let hookFn;
const rawDef = {} as Def;
const getDef = () => processedDef($state, element, rawDef);
const inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];
const watchDeregFns = inputAttrs.reduce((acc, attr) => ((acc[attr] = noop), acc), {});
function update() {
const def = getDef();
if (unlinkInfoFn) unlinkInfoFn();
if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);
if (def.href != null) attrs.$set(type.attr, def.href);
}
inputAttrs.forEach((field) => {
rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;
attrs.$observe(field, (expr) => {
watchDeregFns[field]();
watchDeregFns[field] = scope.$watch(
expr,
(newval) => {
rawDef[field] = newval;
update();
},
true
);
});
});
update();
scope.$on('$destroy', <any>$uiRouter.stateRegistry.onStatesChanged(update));
scope.$on('$destroy', <any>$uiRouter.transitionService.onSuccess({}, update));
if (!type.clickable) return;
hookFn = clickHook(element, $state, $timeout, type, getDef);
bindEvents(element, scope, hookFn, rawDef.uiStateOpts);
},
};
},
];
/**
* `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active
*
* A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the
* related directive's state is active (and remove them when it is inactive).
*
* The primary use-case is to highlight the active link in navigation menus,
* distinguishing it from the inactive menu items.
*
* ### Linking to a `ui-sref` or `ui-state`
* `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.
* If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.
*
* ### Matching
*
* The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.
* This is a "fuzzy match" which uses [[StateService.includes]].
*
* The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).
* This is an "exact match" which uses [[StateService.is]].
*
* ### Parameter values
* If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.
* This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.
*
* #### Example:
* ```html
* <li ng-repeat="user in users" ui-sref-active="active">
* <a ui-sref="user.details({ userId: user.id })">{{ user.lastName }}</a>
* </li>
* ```
*
* ### Examples
*
* Given the following template:
* #### Example:
* ```html
* <ul>
* <li ui-sref-active="active" class="item">
* <a href ui-sref="app.user({user: 'bilbobaggins'})">@bilbobaggins</a>
* </li>
* </ul>
* ```
*
* When the app state is `app.user` (or any child state),
* and contains the state parameter "user" with value "bilbobaggins",
* the resulting HTML will appear as (note the 'active' class):
*
* ```html
* <ul>
* <li ui-sref-active="active" class="item active">
* <a ui-sref="app.user({user: 'bilbobaggins'})" href="/users/bilbobaggins">@bilbobaggins</a>
* </li>
* </ul>
* ```
*
* ### Glob mode
*
* It is possible to pass `ui-sref-active` an expression that evaluates to an object.
* The objects keys represent active class names and values represent the respective state names/globs.
* `ui-sref-active` will match if the current active state **includes** any of
* the specified state names/globs, even the abstract ones.
*
* #### Example:
* Given the following template, with "admin" being an abstract state:
* ```html
* <div ui-sref-active="{'active': 'admin.**'}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a>
* </div>
* ```
*
* Arrays are also supported as values in the `ngClass`-like interface.
* This allows multiple states to add `active` class.
*
* #### Example:
* Given the following template, with "admin.roles" being the current state, the class will be added too:
* ```html
* <div ui-sref-active="{'active': ['owner.**', 'admin.**']}">
* <a ui-sref-active="active" ui-sref="admin.roles">Roles</a>
* </div>
* ```
*
* When the current state is "admin.roles" the "active" class will be applied to both the `<div>` and `<a>` elements.
* It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.
*
* ### Notes:
*
* - The class name is interpolated **once** during the directives link time (any further changes to the
* interpolated value are ignored).
*
* - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`
*/
let uiSrefActiveDirective: ng1_directive;
uiSrefActiveDirective = [
'$state',
'$stateParams',
'$interpolate',
'$uiRouter',
function $StateRefActiveDirective(
$state: StateService,
$stateParams: Obj,
$interpolate: IInterpolateService,
$uiRouter: UIRouter
) {
return {
restrict: 'A',
controller: [
'$scope',
'$element',
'$attrs',
function ($scope: IScope, $element: IAugmentedJQuery, $attrs: any) {
let states: StateData[] = [];
let activeEqClass: string;
let uiSrefActive: any;
// There probably isn't much point in $observing this
// uiSrefActive and uiSrefActiveEq share the same directive object with some
// slight difference in logic routing
activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);
try {
uiSrefActive = $scope.$eval($attrs.uiSrefActive);
} catch (e) {
// Do nothing. uiSrefActive is not a valid expression.
// Fall back to using $interpolate below
}
uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);
setStatesFromDefinitionObject(uiSrefActive);
// Allow uiSref to communicate with uiSrefActive[Equals]
this.$$addStateInfo = function (newState: string, newParams: Obj) {
// we already got an explicit state provided by ui-sref-active, so we
// shadow the one that comes from ui-sref
if (isObject(uiSrefActive) && states.length > 0) {
return;
}
const deregister = addState(newState, newParams, uiSrefActive);
update();
return deregister;
};
function updateAfterTransition(trans) {
trans.promise.then(update, noop);
}
$scope.$on('$destroy', setupEventListeners());
if ($uiRouter.globals.transition) {
updateAfterTransition($uiRouter.globals.transition);
}
function setupEventListeners() {
const deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged);
const deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition);
const deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update);
return function cleanUp() {
deregisterStatesChangedListener();
deregisterOnStartListener();
deregisterStateChangeSuccessListener();
};
}
function handleStatesChanged() {
setStatesFromDefinitionObject(uiSrefActive);
}
function setStatesFromDefinitionObject(statesDefinition: Obj) {
if (isObject(statesDefinition)) {
states = [];
forEach(statesDefinition, function (stateOrName: StateOrName | Array<StateOrName>, activeClass: string) {
// Helper function to abstract adding state.
const addStateForClass = function (stateOrName: string, activeClass: string) {
const ref = parseStateRef(stateOrName);
addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);
};
if (isString(stateOrName)) {
// If state is string, just add it.
addStateForClass(stateOrName as string, activeClass);
} else if (isArray(stateOrName)) {
// If state is an array, iterate over it and add each array item individually.
forEach(stateOrName, function (stateOrName: string) {
addStateForClass(stateOrName, activeClass);
});
}
});
}
}
function addState(stateName: string, stateParams: Obj, activeClass: string) {
const state = $state.get(stateName, stateContext($element));
const stateInfo = {
state: state || { name: stateName },
params: stateParams,
activeClass: activeClass,
};
states.push(stateInfo);
return function removeState() {
removeFrom(states)(stateInfo);
};
}
// Update route state
function update() {
const splitClasses = (str) => str.split(/\s/).filter(identity);
const getClasses = (stateList: StateData[]) =>
stateList
.map((x) => x.activeClass)
.map(splitClasses)
.reduce(unnestR, []);
const allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(uniqR, []);
const fuzzyClasses = getClasses(states.filter((x) => $state.includes(x.state.name, x.params)));
const exactlyMatchesAny = !!states.filter((x) => $state.is(x.state.name, x.params)).length;
const exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];
const addClasses = fuzzyClasses.concat(exactClasses).reduce(uniqR, []);
const removeClasses = allClasses.filter((cls) => !inArray(addClasses, cls));
$scope.$evalAsync(() => {
addClasses.forEach((className) => $element.addClass(className));
removeClasses.forEach((className) => $element.removeClass(className));
});
}
update();
},
],
};
},
];
/** @hidden */
interface Def {
uiState: string;
href: string;
uiStateParams: Obj;
uiStateOpts: any;
}
/** @hidden */
interface StateData {
state: StateDeclaration;
params: RawParams;
activeClass: string;
}
angular
.module('ui.router.state')
.directive('uiSref', uiSrefDirective)
.directive('uiSrefActive', uiSrefActiveDirective)
.directive('uiSrefActiveEq', uiSrefActiveDirective)
.directive('uiState', uiStateDirective);
================================================
FILE: src/directives/viewDirective.ts
================================================
/** @publicapi @module directives */ /** */
import {
$QLike,
ActiveUIView,
extend,
filter,
HookRegOptions,
isDefined,
isFunction,
isString,
kebobString,
noop,
Obj,
Param,
parse,
PathNode,
ResolveContext,
StateDeclaration,
tail,
trace,
Transition,
TransitionService,
TypedMap,
unnestR,
ViewService,
} from '@uirouter/core';
import { IAugmentedJQuery, IInterpolateService, IScope, ITranscludeFunction } from 'angular';
import { ng as angular } from '../angular';
import { Ng1Controller, Ng1StateDeclaration } from '../interface';
import { getLocals } from '../services';
import { Ng1ViewConfig } from '../statebuilders/views';
import { ng1_directive } from './stateDirectives';
/** @hidden */
export type UIViewData = {
$cfg: Ng1ViewConfig;
$uiView: ActiveUIView;
};
/** @hidden */
export type UIViewAnimData = {
$animEnter: Promise<any>;
$animLeave: Promise<any>;
$$animLeave: { resolve: () => any }; // "deferred"
};
/**
* `ui-view`: A viewport directive which is filled in by a view from the active state.
*
* ### Attributes
*
* - `name`: (Optional) A view name.
* The name should be unique amongst the other views in the same state.
* You can have views of the same name that live in different states.
* The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).
*
* - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.
* Uses [[$uiViewScroll]] to do the scrolling.
*
* - `onload`: Expression to evaluate whenever the view updates.
*
* #### Example:
* A view can be unnamed or named.
* ```html
* <!-- Unnamed -->
* <div ui-view></div>
*
* <!-- Named -->
* <div ui-view="viewName"></div>
*
* <!-- Named (different style) -->
* <ui-view name="viewName"></ui-view>
* ```
*
* You can only have one unnamed view within any template (or root html). If you are only using a
* single view and it is unnamed then you can populate it like so:
*
* ```html
* <div ui-view></div>
* $stateProvider.state("home", {
* template: "<h1>HELLO!</h1>"
* })
* ```
*
* The above is a convenient shortcut equivalent to specifying your view explicitly with the
* [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:
*
* ```js
* $stateProvider.state("home", {
* views: {
* "": {
* template: "<h1>HELLO!</h1>"
* }
* }
* })
* ```
*
* But typically you'll only use the views property if you name your view or have more than one view
* in the same template. There's not really a compelling reason to name a view if its the only one,
* but you could if you wanted, like so:
*
* ```html
* <div ui-view="main"></div>
* ```
*
* ```js
* $stateProvider.state("home", {
* views: {
* "main": {
* template: "<h1>HELLO!</h1>"
* }
* }
* })
* ```
*
* Really though, you'll use views to set up multiple views:
*
* ```html
* <div ui-view></div>
* <div ui-view="chart"></div>
* <div ui-view="data"></div>
* ```
*
* ```js
* $stateProvider.state("home", {
* views: {
* "": {
* template: "<h1>HELLO!</h1>"
* },
* "chart": {
* template: "<chart_thing/>"
* },
* "data": {
* template: "<data_thing/>"
* }
* }
* })
* ```
*
* #### Examples for `autoscroll`:
* ```html
* <!-- If autoscroll present with no expression,
* then scroll ui-view into view -->
* <ui-view autoscroll/>
*
* <!-- If autoscroll present with valid expression,
* then scroll ui-view into view if expression evaluates to true -->
* <ui-view autoscroll='true'/>
* <ui-view autoscroll='false'/>
* <ui-view autoscroll='scopeVariable'/>
* ```
*
* Resolve data:
*
* The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this
* can be customized using [[Ng1ViewDeclaration.resolveAs]]). This can be then accessed from the template.
*
* Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the
* controller is instantiated. The `$onInit()` hook can be used to perform initialization code which
* depends on `$resolve` data.
*
* #### Example:
* ```js
* $stateProvider.state('home', {
* template: '<my-component user="$resolve.user"></my-component>',
* resolve: {
* user: function(UserService) { return UserService.fetchUser(); }
* }
* });
* ```
*/
export let uiView: ng1_directive;
// eslint-disable-next-line prefer-const
uiView = [
'$view',
'$animate',
'$uiViewScroll',
'$interpolate',
'$q',
function $ViewDirective(
$view: ViewService,
$animate: any,
$uiViewScroll: any,
$interpolate: IInterpolateService,
$q: $QLike
) {
function getRenderer() {
return {
enter: function (element: JQuery, target: any, cb: Function) {
if (angular.version.minor > 2) {
$animate.enter(element, null, target).then(cb);
} else {
$animate.enter(element, null, target, cb);
}
},
leave: function (element: JQuery, cb: Function) {
if (angular.version.minor > 2) {
$animate.leave(element).then(cb);
} else {
$animate.leave(element, cb);
}
},
};
}
function configsEqual(config1: Ng1ViewConfig, config2: Ng1ViewConfig) {
return config1 === config2;
}
const rootData = {
$cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },
$uiView: {},
};
const directive = {
count: 0,
restrict: 'ECA',
terminal: true,
priority: 400,
transclude: 'element',
compile: function (tElement: JQuery, tAttrs: Obj, $transclude: ITranscludeFunction) {
return function (scope: IScope, $element: IAugmentedJQuery, attrs: Obj) {
const onloadExp =
gitextract_u4zorm0b/ ├── .github/ │ ├── stale.yml │ └── workflows/ │ ├── ci.yml │ └── update_dependencies.yml ├── .npmignore ├── .npmrc ├── .prettierignore ├── .prettierrc.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DOCS.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── artifacts.json ├── bower.json ├── downstream_projects.json ├── jest.config.js ├── karma.conf.js ├── package.json ├── rollup.config.js ├── scripts/ │ ├── bower_release.js │ └── npm_angular_ui_router_release.js ├── src/ │ ├── angular.ts │ ├── directives/ │ │ ├── stateDirectives.ts │ │ └── viewDirective.ts │ ├── index.ts │ ├── injectables.ts │ ├── interface.ts │ ├── legacy/ │ │ ├── core-adapter.js │ │ ├── resolveService.ts │ │ └── stateEvents.ts │ ├── locationServices.ts │ ├── services.ts │ ├── stateFilters.ts │ ├── stateProvider.ts │ ├── statebuilders/ │ │ ├── onEnterExitRetain.ts │ │ └── views.ts │ ├── templateFactory.ts │ ├── urlRouterProvider.ts │ └── viewScroll.ts ├── test/ │ ├── angular/ │ │ ├── 1.2/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── 1.3/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── 1.4/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── 1.5/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── 1.6/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── 1.7/ │ │ │ ├── angular-animate.js │ │ │ ├── angular-mocks.js │ │ │ └── angular.js │ │ ├── jest-angular.js │ │ └── update_all.sh │ ├── jest.init.ts │ ├── ng1StateBuilderSpec.ts │ ├── resolveSpec.ts │ ├── servicesSpec.ts │ ├── stateDirectivesSpec.ts │ ├── stateEventsSpec.ts │ ├── stateFiltersSpec.ts │ ├── stateSpec.ts │ ├── templateFactorySpec.ts │ ├── tsconfig.json │ ├── typescript/ │ │ ├── 3.9/ │ │ │ ├── index.ts │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ ├── mktest.sh │ │ └── template/ │ │ ├── index.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── urlMatcherFactorySpec.ts │ ├── urlRouterSpec.ts │ ├── util/ │ │ └── testUtilsNg1.ts │ ├── viewDirectiveSpec.ts │ ├── viewHookSpec.ts │ ├── viewScrollSpec.ts │ └── viewSpec.ts ├── tsconfig.docgen.json ├── tsconfig.json └── typedoc.json
SYMBOL INDEX (2281 symbols across 40 files)
FILE: karma.conf.js
function karmaServedFiles (line 15) | function karmaServedFiles(ngVersion) {
FILE: rollup.config.js
constant MINIFY (line 5) | const MINIFY = process.env.MINIFY;
constant MONOLITHIC (line 6) | const MONOLITHIC = process.env.MONOLITHIC;
constant ROUTER (line 7) | const ROUTER = process.env.ROUTER;
constant EVENTS (line 8) | const EVENTS = process.env.EVENTS;
constant RESOLVE (line 9) | const RESOLVE = process.env.RESOLVE;
constant BASE_CONFIG (line 48) | const BASE_CONFIG = {
constant BASE_OUTPUT (line 53) | const BASE_OUTPUT = {
constant ROUTER_CONFIG (line 60) | const ROUTER_CONFIG = Object.assign(
constant MONOLITHIC_ROUTER_CONFIG (line 77) | const MONOLITHIC_ROUTER_CONFIG = Object.assign(
constant EVENTS_CONFIG (line 93) | const EVENTS_CONFIG = Object.assign({}, BASE_CONFIG, {
constant RESOLVE_CONFIG (line 106) | const RESOLVE_CONFIG = Object.assign({}, BASE_CONFIG, {
constant CONFIG (line 119) | const CONFIG = RESOLVE
FILE: src/directives/stateDirectives.ts
type ng1_directive (line 39) | interface ng1_directive {}
function parseStateRef (line 42) | function parseStateRef(ref: string) {
function stateContext (line 52) | function stateContext(el: IAugmentedJQuery) {
function processedDef (line 59) | function processedDef($state: StateService, $element: IAugmentedJQuery, ...
type TypeInfo (line 67) | interface TypeInfo {
function getTypeInfo (line 74) | function getTypeInfo(el: IAugmentedJQuery): TypeInfo {
function clickHook (line 87) | function clickHook(
function defaultOpts (line 118) | function defaultOpts(el: IAugmentedJQuery, $state: StateService) {
function bindEvents (line 127) | function bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: Ev...
function update (line 306) | function update() {
function update (line 444) | function update() {
function updateAfterTransition (line 621) | function updateAfterTransition(trans) {
function setupEventListeners (line 629) | function setupEventListeners() {
function handleStatesChanged (line 640) | function handleStatesChanged() {
function setStatesFromDefinitionObject (line 644) | function setStatesFromDefinitionObject(statesDefinition: Obj) {
function addState (line 667) | function addState(stateName: string, stateParams: Obj, activeClass: stri...
function update (line 684) | function update() {
type Def (line 714) | interface Def {
type StateData (line 721) | interface StateData {
FILE: src/directives/viewDirective.ts
type UIViewData (line 35) | type UIViewData = {
type UIViewAnimData (line 41) | type UIViewAnimData = {
function getRenderer (line 187) | function getRenderer() {
function configsEqual (line 206) | function configsEqual(config1: Ng1ViewConfig, config2: Ng1ViewConfig) {
method creationContext (line 238) | get creationContext() {
function configUpdatedCallback (line 250) | function configUpdatedCallback(config?: Ng1ViewConfig) {
function cleanupLastView (line 269) | function cleanupLastView() {
function updateView (line 295) | function updateView(config?: Ng1ViewConfig) {
function $ViewDirectiveFill (line 366) | function $ViewDirectiveFill(
function registerControllerCallbacks (line 456) | function registerControllerCallbacks(
FILE: src/interface.ts
type Ng1StateTransitionHook (line 43) | interface Ng1StateTransitionHook {
type _Ng1StateDeclaration (line 52) | interface _Ng1StateDeclaration extends StateDeclaration {
type Ng1StateDeclaration (line 124) | interface Ng1StateDeclaration extends _Ng1StateDeclaration, Ng1ViewDecla...
type Ng1ViewDeclaration (line 368) | interface Ng1ViewDeclaration extends _ViewDeclaration {
type Ng1Controller (line 631) | interface Ng1Controller {
type TemplateFactoryProvider (line 715) | interface TemplateFactoryProvider {
type StateRegistry (line 741) | interface StateRegistry {
FILE: src/legacy/stateEvents.ts
function applyPairs (line 165) | function applyPairs(memo: Obj, keyValTuple: any[]) {
function stateChangeStartHandler (line 173) | function stateChangeStartHandler($transition$: Transition) {
function stateNotFoundHandler (line 258) | function stateNotFoundHandler($to$: TargetState, $from$: TargetState, in...
function $StateEventsProvider (line 284) | function $StateEventsProvider($stateProvider: StateProvider) {
FILE: src/locationServices.ts
class Ng1LocationServices (line 10) | class Ng1LocationServices implements LocationConfig, LocationServices {
method monkeyPatchPathParameterType (line 42) | static monkeyPatchPathParameterType(router: UIRouter) {
method dispose (line 53) | dispose() {}
method constructor (line 55) | constructor($locationProvider: ILocationProvider) {
method onChange (line 61) | onChange(callback: Function) {
method html5Mode (line 66) | html5Mode() {
method baseHref (line 72) | baseHref() {
method url (line 76) | url(newUrl?: string, replace = false, state?) {
method _runtimeServices (line 83) | _runtimeServices($rootScope, $location: ILocationService, $sniffer, $b...
FILE: src/services.ts
type UIRouter (line 53) | interface UIRouter {
function $uiRouterProvider (line 65) | function $uiRouterProvider($locationProvider: ILocationProvider) {
function runBlock (line 119) | function runBlock($injector: IInjectorService, $q: IQService, $uiRouter:...
function watchDigests (line 150) | function watchDigests($rootScope: IRootScopeService) {
FILE: src/stateFilters.ts
function $IsStateFilter (line 17) | function $IsStateFilter($state: StateService) {
function $IncludedByStateFilter (line 36) | function $IncludedByStateFilter($state: StateService) {
FILE: src/stateProvider.ts
class StateProvider (line 29) | class StateProvider {
method constructor (line 30) | constructor(private stateRegistry: StateRegistry, private stateService...
method decorator (line 123) | decorator(name: string, func: BuilderFunction) {
method state (line 261) | state(name: any, definition?: any) {
method onInvalid (line 277) | onInvalid(callback: OnInvalidCallback): Function {
FILE: src/statebuilders/onEnterExitRetain.ts
function decoratedNg1Hook (line 28) | function decoratedNg1Hook(trans: Transition, state: Ng1StateDeclaration)...
FILE: src/statebuilders/views.ts
function getNg1ViewConfigFactory (line 26) | function getNg1ViewConfigFactory(): ViewConfigFactory {
function ng1ViewsBuilder (line 48) | function ng1ViewsBuilder(state: StateObject) {
class Ng1ViewConfig (line 107) | class Ng1ViewConfig implements ViewConfig {
method constructor (line 115) | constructor(public path: PathNode[], public viewDecl: Ng1ViewDeclarati...
method load (line 117) | load() {
method getController (line 145) | getController(context: ResolveContext): IInjectable | string | Promise...
FILE: src/templateFactory.ts
class TemplateFactory (line 24) | class TemplateFactory implements TemplateFactoryProvider {
method useHttpService (line 43) | useHttpService(value: boolean) {
method fromConfig (line 60) | fromConfig(
method fromString (line 92) | fromString(template: string | Function, params?: RawParams) {
method fromUrl (line 105) | fromUrl(url: string | Function, params: any) {
method fromProvider (line 128) | fromProvider(provider: IInjectable, params: any, context: ResolveConte...
method fromComponentProvider (line 142) | fromComponentProvider(provider: IInjectable, params: any, context: Res...
method makeComponentTemplate (line 163) | makeComponentTemplate(uiView: IAugmentedJQuery, context: ResolveContex...
function getComponentBindings (line 210) | function getComponentBindings(name: string) {
type BindingTuple (line 223) | interface BindingTuple {
FILE: src/urlRouterProvider.ts
type RawNg1RuleFunction (line 14) | interface RawNg1RuleFunction {
class UrlRouterProvider (line 33) | class UrlRouterProvider {
method injectableHandler (line 34) | static injectableHandler(router: UIRouter, handler: IInjectable): UrlR...
method constructor (line 39) | constructor(/** @hidden */ private router: UIRouter) {}
method $get (line 42) | $get(): UrlRouter {
method rule (line 80) | rule(ruleFn: RawNg1RuleFunction): UrlRouterProvider {
method otherwise (line 116) | otherwise(rule: string | RawNg1RuleFunction): UrlRouterProvider {
method when (line 167) | when(what: RegExp | UrlMatcher | string, handler: string | IInjectable...
method deferIntercept (line 206) | deferIntercept(defer?: boolean): void {
FILE: src/viewScroll.ts
type UIViewScrollProvider (line 7) | interface UIViewScrollProvider {
function $ViewScrollProvider (line 18) | function $ViewScrollProvider() {
FILE: test/angular/1.2/angular-animate.js
function extractElementNode (line 319) | function extractElementNode(element) {
function prepareElement (line 328) | function prepareElement(element) {
function stripCommentsFromElement (line 332) | function stripCommentsFromElement(element) {
function isMatchingElement (line 336) | function isMatchingElement(elm1, elm2) {
function blockElementAnimations (line 365) | function blockElementAnimations(element) {
function lookup (line 371) | function lookup(name) {
function animationRunner (line 401) | function animationRunner(element, animationEvent, className) {
function performAnimation (line 827) | function performAnimation(animationEvent, className, element, parentElem...
function cancelChildAnimations (line 1034) | function cancelChildAnimations(element) {
function cleanup (line 1052) | function cleanup(element, className) {
function animationsDisabled (line 1074) | function animationsDisabled(element, parentElement) {
function clearCacheAfterReflow (line 1167) | function clearCacheAfterReflow() {
function afterReflow (line 1177) | function afterReflow(element, callback) {
function animationCloseHandler (line 1196) | function animationCloseHandler(element, totalTime) {
function closeAllAnimations (line 1220) | function closeAllAnimations(elements) {
function getElementAnimationDetails (line 1229) | function getElementAnimationDetails(element, cacheKey) {
function parseMaxTime (line 1287) | function parseMaxTime(str) {
function getCacheKey (line 1298) | function getCacheKey(element) {
function animateSetup (line 1308) | function animateSetup(animationEvent, element, className, calculationDec...
function isStructuralAnimation (line 1374) | function isStructuralAnimation(className) {
function blockTransitions (line 1378) | function blockTransitions(element, className, isAnimating) {
function blockKeyframeAnimations (line 1386) | function blockKeyframeAnimations(element) {
function unblockTransitions (line 1390) | function unblockTransitions(element, className) {
function unblockKeyframeAnimations (line 1399) | function unblockKeyframeAnimations(element) {
function animateRun (line 1407) | function animateRun(animationEvent, element, className, activeAnimationC...
function prepareStaggerDelay (line 1514) | function prepareStaggerDelay(delayStyle, staggerDelay, index) {
function animateBefore (line 1523) | function animateBefore(animationEvent, element, className, calculationDe...
function animateAfter (line 1531) | function animateAfter(animationEvent, element, className, afterAnimation...
function animate (line 1540) | function animate(animationEvent, element, className, animationComplete) {
function animateClose (line 1571) | function animateClose(element, className) {
function suffixClasses (line 1690) | function suffixClasses(classes, suffix) {
FILE: test/angular/1.2/angular-mocks.js
function concat (line 297) | function concat(array1, array2, index) {
function tick (line 472) | function tick() {
function jsonStringToDate (line 564) | function jsonStringToDate(string) {
function int (line 584) | function int(str) {
function padNumber (line 588) | function padNumber(num, digits, trim) {
function serialize (line 831) | function serialize(object) {
function serializeScope (line 864) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1095) | function createHttpBackendMock($rootScope, $delegate, $browser) {
function MockHttpExpectation (line 1544) | function MockHttpExpectation(method, url, data, headers) {
function createMockXhr (line 1584) | function createMockXhr() {
function MockXhr (line 1588) | function MockXhr() {
function formatPendingTasksAsString (line 1677) | function formatPendingTasksAsString(tasks) {
function workFn (line 2041) | function workFn() {
function workFn (line 2165) | function workFn() {
FILE: test/angular/1.2/angular.js
function minErr (line 36) | function minErr(module) {
function isArrayLike (line 268) | function isArrayLike(obj) {
function forEach (line 312) | function forEach(obj, iterator, context) {
function sortedKeys (line 340) | function sortedKeys(obj) {
function forEachSorted (line 350) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 364) | function reverseParams(iteratorFn) {
function nextUid (line 376) | function nextUid() {
function setHashKey (line 404) | function setHashKey(obj, h) {
function extend (line 427) | function extend(dst) {
function int (line 441) | function int(str) {
function inherit (line 446) | function inherit(parent, extra) {
function noop (line 466) | function noop() {}
function identity (line 488) | function identity($) {return $;}
function valueFn (line 492) | function valueFn(value) {return function() {return value;};}
function isUndefined (line 506) | function isUndefined(value){return typeof value === 'undefined';}
function isDefined (line 521) | function isDefined(value){return typeof value !== 'undefined';}
function isObject (line 537) | function isObject(value){return value != null && typeof value === 'objec...
function isString (line 552) | function isString(value){return typeof value === 'string';}
function isNumber (line 567) | function isNumber(value){return typeof value === 'number';}
function isDate (line 582) | function isDate(value) {
function isFunction (line 620) | function isFunction(value){return typeof value === 'function';}
function isRegExp (line 630) | function isRegExp(value) {
function isWindow (line 642) | function isWindow(obj) {
function isScope (line 647) | function isScope(obj) {
function isFile (line 652) | function isFile(obj) {
function isBlob (line 657) | function isBlob(obj) {
function isBoolean (line 662) | function isBoolean(value) {
function isPromiseLike (line 667) | function isPromiseLike(obj) {
function isElement (line 699) | function isElement(node) {
function makeMap (line 709) | function makeMap(str) {
function map (line 730) | function map(obj, iterator, context) {
function size (line 751) | function size(obj, ownPropsOnly) {
function includes (line 766) | function includes(array, obj) {
function indexOf (line 770) | function indexOf(array, obj) {
function arrayRemove (line 779) | function arrayRemove(array, value) {
function isLeafNode (line 786) | function isLeafNode (node) {
function copy (line 856) | function copy(source, destination, stackSource, stackDest) {
function shallowCopy (line 929) | function shallowCopy(src, dst) {
function equals (line 979) | function equals(o1, o2) {
function concat (line 1041) | function concat(array1, array2, index) {
function sliceArgs (line 1045) | function sliceArgs(args, startIndex) {
function bind (line 1069) | function bind(self, fn) {
function toJsonReplacer (line 1090) | function toJsonReplacer(key, value) {
function toJson (line 1121) | function toJson(obj, pretty) {
function fromJson (line 1139) | function fromJson(json) {
function toBoolean (line 1146) | function toBoolean(value) {
function startingTag (line 1161) | function startingTag(element) {
function tryDecodeURIComponent (line 1193) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1206) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1227) | function toKeyValue(obj) {
function encodeUriSegment (line 1255) | function encodeUriSegment(val) {
function encodeUriQuery (line 1274) | function encodeUriQuery(val, pctEncodeSpaces) {
function angularInit (line 1330) | function angularInit(element, bootstrap) {
function bootstrap (line 1428) | function bootstrap(element, modules) {
function snake_case (line 1474) | function snake_case(name, separator) {
function bindJQuery (line 1481) | function bindJQuery() {
function assertArg (line 1509) | function assertArg(arg, name, reason) {
function assertArgFn (line 1516) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1531) | function assertNotHasOwnProperty(name, context) {
function getter (line 1545) | function getter(obj, path, bindFnToScope) {
function getBlockElements (line 1569) | function getBlockElements(nodes) {
function setupModuleLoader (line 1597) | function setupModuleLoader(window) {
function publishExternalAPI (line 2000) | function publishExternalAPI(angular){
function jqNextId (line 2235) | function jqNextId() { return ++jqId; }
function camelCase (line 2247) | function camelCase(name) {
function jqLitePatchJQueryRemove (line 2263) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
function jqLiteIsTextNode (line 2317) | function jqLiteIsTextNode(html) {
function jqLiteBuildFragment (line 2321) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 2356) | function jqLiteParseHTML(html, context) {
function JQLite (line 2368) | function JQLite(element) {
function jqLiteClone (line 2391) | function jqLiteClone(element) {
function jqLiteDealoc (line 2395) | function jqLiteDealoc(element){
function jqLiteOff (line 2402) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 2427) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 2446) | function jqLiteExpandoStore(element, key, value) {
function jqLiteData (line 2461) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 2487) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 2493) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 2505) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 2521) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 2532) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 2536) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 2556) | function jqLiteEmpty(element) {
function trigger (line 2572) | function trigger() {
function getBooleanAttrName (line 2619) | function getBooleanAttrName(element, name) {
function getText (line 2733) | function getText(element, value) {
function createEventHandler (line 2820) | function createEventHandler(element, events) {
function hashKey (line 3141) | function hashKey(obj, nextUidFn) {
function HashMap (line 3162) | function HashMap(array, isolatedUid) {
function annotate (line 3266) | function annotate(fn) {
function createInjector (line 3786) | function createInjector(modulesToLoad) {
function $AnchorScrollProvider (line 4044) | function $AnchorScrollProvider() {
function async (line 4192) | function async(fn) {
function $$AsyncCallbackProvider (line 4355) | function $$AsyncCallbackProvider(){
function Browser (line 4389) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 4763) | function $BrowserProvider(){
function $CacheFactoryProvider (line 4851) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 5164) | function $TemplateCacheProvider() {
function $CompileProvider (line 5688) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 7193) | function directiveNormalize(name) {
function nodesetLinkingFn (line 7242) | function nodesetLinkingFn(
function directiveLinkingFn (line 7249) | function directiveLinkingFn(
function tokenDifference (line 7257) | function tokenDifference(str1, str2) {
function $ControllerProvider (line 7283) | function $ControllerProvider() {
function $DocumentProvider (line 7386) | function $DocumentProvider(){
function $ExceptionHandlerProvider (line 7424) | function $ExceptionHandlerProvider() {
function parseHeaders (line 7438) | function parseHeaders(headers) {
function headersGetter (line 7469) | function headersGetter(headers) {
function transformData (line 7494) | function transformData(data, headers, fns) {
function isSuccess (line 7506) | function isSuccess(status) {
function $HttpProvider (line 7517) | function $HttpProvider() {
function createXhr (line 8534) | function createXhr(method) {
function $HttpBackendProvider (line 8564) | function $HttpBackendProvider() {
function createHttpBackend (line 8570) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 8785) | function $InterpolateProvider() {
function $IntervalProvider (line 8997) | function $IntervalProvider() {
function $LocaleProvider (line 9192) | function $LocaleProvider(){
function encodePath (line 9265) | function encodePath(path) {
function parseAbsoluteUrl (line 9276) | function parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {
function parseAppUrl (line 9285) | function parseAppUrl(relativeUrl, locationObj, appBase) {
function beginsWith (line 9310) | function beginsWith(begin, whole) {
function stripHash (line 9317) | function stripHash(url) {
function trimEmptyHash (line 9322) | function trimEmptyHash(url) {
function stripFile (line 9327) | function stripFile(url) {
function serverBase (line 9332) | function serverBase(url) {
function LocationHtml5Url (line 9345) | function LocationHtml5Url(appBase, basePrefix) {
function LocationHashbangUrl (line 9418) | function LocationHashbangUrl(appBase, hashPrefix) {
function LocationHashbangInHtml5Url (line 9513) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
function locationGetter (line 9775) | function locationGetter(property) {
function locationGetterSetter (line 9782) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 9827) | function $LocationProvider(){
function $LogProvider (line 10054) | function $LogProvider(){
function ensureSafeMemberName (line 10201) | function ensureSafeMemberName(name, fullExpression) {
function getStringValue (line 10212) | function getStringValue(name, fullExpression) {
function ensureSafeObject (line 10231) | function ensureSafeObject(obj, fullExpression) {
function ensureSafeFunction (line 10262) | function ensureSafeFunction(obj, fullExpression) {
function setter (line 11034) | function setter(obj, path, setValue, fullExp, options) {
function isPossiblyDangerousMemberName (line 11071) | function isPossiblyDangerousMemberName(name) {
function cspSafeGetterFn (line 11080) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
function getterFnWithExtraArgs (line 11193) | function getterFnWithExtraArgs(fn, fullExpression) {
function getterFn (line 11199) | function getterFn(path, options, fullExp) {
function $ParseProvider (line 11337) | function $ParseProvider() {
function $QProvider (line 11652) | function $QProvider() {
function qFactory (line 11670) | function qFactory(nextTick, exceptionHandler) {
function $$RAFProvider (line 12008) | function $$RAFProvider(){ //rAF
function $RootScopeProvider (line 12107) | function $RootScopeProvider(){
function $$SanitizeUriProvider (line 13228) | function $$SanitizeUriProvider() {
function escapeForRegexp (line 13314) | function escapeForRegexp(s) {
function adjustMatcher (line 13320) | function adjustMatcher(matcher) {
function adjustMatchers (line 13348) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 13426) | function $SceDelegateProvider() {
function $SceProvider (line 13956) | function $SceProvider() {
function $SnifferProvider (line 14369) | function $SnifferProvider() {
function $TimeoutProvider (line 14446) | function $TimeoutProvider() {
function urlResolve (line 14592) | function urlResolve(url, base) {
function urlIsSameOrigin (line 14626) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 14673) | function $WindowProvider(){
function $FilterProvider (line 14770) | function $FilterProvider($provide) {
function filterFilter (line 14940) | function filterFilter() {
function currencyFilter (line 15095) | function currencyFilter($locale) {
function numberFilter (line 15156) | function numberFilter($locale) {
function formatNumber (line 15165) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 15247) | function padNumber(num, digits, trim) {
function dateGetter (line 15261) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 15272) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 15281) | function timeZoneGetter(date) {
function ampmGetter (line 15291) | function ampmGetter(date, formats) {
function dateFilter (line 15411) | function dateFilter($locale) {
function jsonFilter (line 15510) | function jsonFilter() {
function limitToFilter (line 15609) | function limitToFilter(){
function orderByFilter (line 15744) | function orderByFilter($parse){
function ngDirective (line 15809) | function ngDirective(directive) {
function FormController (line 16313) | function FormController(element, attrs, $scope, $animate) {
function validate (line 17131) | function validate(ctrl, validatorName, validity, value){
function testFlags (line 17136) | function testFlags(validity, flags) {
function addNativeHtml5Validators (line 17150) | function addNativeHtml5Validators(ctrl, validatorName, badFlags, ignoreF...
function textInputType (line 17168) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function numberInputType (line 17322) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 17367) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 17378) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 17389) | function radioInputType(scope, element, attr, ctrl) {
function checkboxInputType (line 17411) | function checkboxInputType(scope, element, attr, ctrl) {
function toggleValidCss (line 17807) | function toggleValidCss(isValid, validationErrorKey) {
function getStringValue (line 18526) | function getStringValue() {
function classDirective (line 18538) | function classDirective(name, selector) {
function getBlockStart (line 20811) | function getBlockStart(block) {
function getBlockEnd (line 20815) | function getBlockEnd(block) {
function setupAsSingle (line 21753) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
function setupAsMultiple (line 21778) | function setupAsMultiple(scope, selectElement, ctrl) {
function setupAsOptions (line 21809) | function setupAsOptions(scope, selectElement, ctrl) {
FILE: test/angular/1.3/angular-animate.js
function extractElementNode (line 464) | function extractElementNode(element) {
function prepareElement (line 473) | function prepareElement(element) {
function stripCommentsFromElement (line 477) | function stripCommentsFromElement(element) {
function isMatchingElement (line 481) | function isMatchingElement(elm1, elm2) {
function classBasedAnimationsBlocked (line 525) | function classBasedAnimationsBlocked(element, setter) {
function runAnimationPostDigest (line 535) | function runAnimationPostDigest(fn) {
function parseAnimateOptions (line 548) | function parseAnimateOptions(options) {
function resolveElementClasses (line 560) | function resolveElementClasses(element, cache, runningAnimations) {
function lookup (line 604) | function lookup(name) {
function animationRunner (line 634) | function animationRunner(element, animationEvent, className, options) {
function performAnimation (line 1287) | function performAnimation(animationEvent, className, element, parentElem...
function cancelChildAnimations (line 1504) | function cancelChildAnimations(element) {
function cleanup (line 1522) | function cleanup(element, className) {
function animationsDisabled (line 1544) | function animationsDisabled(element, parentElement) {
function clearCacheAfterReflow (line 1637) | function clearCacheAfterReflow() {
function afterReflow (line 1647) | function afterReflow(element, callback) {
function animationCloseHandler (line 1666) | function animationCloseHandler(element, totalTime) {
function closeAllAnimations (line 1690) | function closeAllAnimations(elements) {
function getElementAnimationDetails (line 1701) | function getElementAnimationDetails(element, cacheKey) {
function parseMaxTime (line 1745) | function parseMaxTime(str) {
function getCacheKey (line 1756) | function getCacheKey(element) {
function animateSetup (line 1766) | function animateSetup(animationEvent, element, className, styles) {
function animateRun (line 1829) | function animateRun(animationEvent, element, className, activeAnimationC...
function blockTransitions (line 1984) | function blockTransitions(node, bool) {
function blockAnimations (line 1988) | function blockAnimations(node, bool) {
function animateBefore (line 1992) | function animateBefore(animationEvent, element, className, styles) {
function animateAfter (line 2000) | function animateAfter(animationEvent, element, className, afterAnimation...
function animate (line 2009) | function animate(animationEvent, element, className, animationComplete, ...
function animateClose (line 2038) | function animateClose(element, className) {
function suffixClasses (line 2128) | function suffixClasses(classes, suffix) {
FILE: test/angular/1.3/angular-mocks.js
function concat (line 306) | function concat(array1, array2, index) {
function tick (line 481) | function tick() {
function jsonStringToDate (line 577) | function jsonStringToDate(string) {
function int (line 597) | function int(str) {
function padNumber (line 601) | function padNumber(num, digits, trim) {
function timeoutsRemaining (line 847) | function timeoutsRemaining() {
function serialize (line 891) | function serialize(object) {
function serializeScope (line 924) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1176) | function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
function MockHttpExpectation (line 1652) | function MockHttpExpectation(method, url, data, headers) {
function createMockXhr (line 1693) | function createMockXhr() {
function MockXhr (line 1697) | function MockXhr() {
function formatPendingTasksAsString (line 1786) | function formatPendingTasksAsString(tasks) {
function countChildScopes (line 2191) | function countChildScopes() {
function countWatchers (line 2223) | function countWatchers() {
function workFn (line 2325) | function workFn() {
function workFn (line 2449) | function workFn() {
function workFn (line 2494) | function workFn() {
FILE: test/angular/1.3/angular.js
function minErr (line 38) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 259) | function isArrayLike(obj) {
function forEach (line 311) | function forEach(obj, iterator, context) {
function sortedKeys (line 342) | function sortedKeys(obj) {
function forEachSorted (line 346) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 360) | function reverseParams(iteratorFn) {
function nextUid (line 374) | function nextUid() {
function setHashKey (line 384) | function setHashKey(obj, h) {
function extend (line 408) | function extend(dst) {
function int (line 426) | function int(str) {
function inherit (line 431) | function inherit(parent, extra) {
function noop (line 451) | function noop() {}
function identity (line 473) | function identity($) {return $;}
function valueFn (line 477) | function valueFn(value) {return function() {return value;};}
function isUndefined (line 491) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 506) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 522) | function isObject(value) {
function isString (line 540) | function isString(value) {return typeof value === 'string';}
function isNumber (line 561) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 576) | function isDate(value) {
function isFunction (line 607) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 617) | function isRegExp(value) {
function isWindow (line 629) | function isWindow(obj) {
function isScope (line 634) | function isScope(obj) {
function isFile (line 639) | function isFile(obj) {
function isFormData (line 644) | function isFormData(obj) {
function isBlob (line 649) | function isBlob(obj) {
function isBoolean (line 654) | function isBoolean(value) {
function isPromiseLike (line 659) | function isPromiseLike(obj) {
function isElement (line 689) | function isElement(node) {
function makeMap (line 699) | function makeMap(str) {
function nodeName_ (line 707) | function nodeName_(element) {
function includes (line 711) | function includes(array, obj) {
function arrayRemove (line 715) | function arrayRemove(array, value) {
function copy (line 780) | function copy(source, destination, stackSource, stackDest) {
function shallowCopy (line 858) | function shallowCopy(src, dst) {
function equals (line 908) | function equals(o1, o2) {
function concat (line 971) | function concat(array1, array2, index) {
function sliceArgs (line 975) | function sliceArgs(args, startIndex) {
function bind (line 999) | function bind(self, fn) {
function toJsonReplacer (line 1020) | function toJsonReplacer(key, value) {
function toJson (line 1052) | function toJson(obj, pretty) {
function fromJson (line 1073) | function fromJson(json) {
function startingTag (line 1083) | function startingTag(element) {
function tryDecodeURIComponent (line 1113) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1126) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1147) | function toKeyValue(obj) {
function encodeUriSegment (line 1175) | function encodeUriSegment(val) {
function encodeUriQuery (line 1194) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 1206) | function getNgAttribute(element, ngAttr) {
function angularInit (line 1345) | function angularInit(element, bootstrap) {
function bootstrap (line 1424) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 1502) | function reloadWithDebugInfo() {
function getTestability (line 1515) | function getTestability(rootElement) {
function snake_case (line 1525) | function snake_case(name, separator) {
function bindJQuery (line 1534) | function bindJQuery() {
function assertArg (line 1588) | function assertArg(arg, name, reason) {
function assertArgFn (line 1595) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1610) | function assertNotHasOwnProperty(name, context) {
function getter (line 1624) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 1648) | function getBlockNodes(nodes) {
function createMap (line 1676) | function createMap() {
function setupModuleLoader (line 1696) | function setupModuleLoader(window) {
function serializeObject (line 2013) | function serializeObject(obj) {
function toDebugString (line 2028) | function toDebugString(obj) {
function publishExternalAPI (line 2150) | function publishExternalAPI(angular) {
function jqNextId (line 2413) | function jqNextId() { return ++jqId; }
function camelCase (line 2426) | function camelCase(name) {
function jqLiteIsTextNode (line 2454) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 2458) | function jqLiteAcceptsData(node) {
function jqLiteBuildFragment (line 2465) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 2502) | function jqLiteParseHTML(html, context) {
function JQLite (line 2518) | function JQLite(element) {
function jqLiteClone (line 2543) | function jqLiteClone(element) {
function jqLiteDealoc (line 2547) | function jqLiteDealoc(element, onlyDescendants) {
function jqLiteOff (line 2558) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 2590) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 2612) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 2625) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 2651) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 2657) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 2669) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 2686) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 2712) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 2716) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 2736) | function jqLiteEmpty(element) {
function jqLiteRemove (line 2743) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 2750) | function jqLiteDocumentLoaded(action, win) {
function trigger (line 2770) | function trigger() {
function getBooleanAttrName (line 2824) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 2832) | function getAliasedAttrName(element, name) {
function getText (line 2924) | function getText(element, value) {
function createEventHandler (line 3009) | function createEventHandler(element, events) {
function $$jqLiteProvider (line 3304) | function $$jqLiteProvider() {
function hashKey (line 3335) | function hashKey(obj, nextUidFn) {
function HashMap (line 3358) | function HashMap(array, isolatedUid) {
function anonFn (line 3464) | function anonFn(fn) {
function annotate (line 3475) | function annotate(fn, strictDi, name) {
function createInjector (line 4010) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 4254) | function $AnchorScrollProvider() {
function runAnimationPostDigest (line 4597) | function runAnimationPostDigest(fn) {
function resolveElementClasses (line 4612) | function resolveElementClasses(element, classes) {
function cachedClassManipulation (line 4638) | function cachedClassManipulation(cache, classes, op) {
function asyncPromise (line 4645) | function asyncPromise() {
function applyStyles (line 4657) | function applyStyles(element, options) {
function $$AsyncCallbackProvider (line 4883) | function $$AsyncCallbackProvider() {
function Browser (line 4916) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 5357) | function $BrowserProvider() {
function $CacheFactoryProvider (line 5445) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 5758) | function $TemplateCacheProvider() {
function $CompileProvider (line 6482) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 8294) | function directiveNormalize(name) {
function nodesetLinkingFn (line 8343) | function nodesetLinkingFn(
function directiveLinkingFn (line 8350) | function directiveLinkingFn(
function tokenDifference (line 8358) | function tokenDifference(str1, str2) {
function removeComments (line 8374) | function removeComments(jqNodes) {
function $ControllerProvider (line 8403) | function $ControllerProvider() {
function $DocumentProvider (line 8570) | function $DocumentProvider() {
function $ExceptionHandlerProvider (line 8616) | function $ExceptionHandlerProvider() {
function defaultHttpResponseTransform (line 8633) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 8649) | function isJsonLike(str) {
function parseHeaders (line 8660) | function parseHeaders(headers) {
function headersGetter (line 8691) | function headersGetter(headers) {
function transformData (line 8721) | function transformData(data, headers, status, fns) {
function isSuccess (line 8733) | function isSuccess(status) {
function $HttpProvider (line 8744) | function $HttpProvider() {
function createXhr (line 9784) | function createXhr() {
function $HttpBackendProvider (line 9804) | function $HttpBackendProvider() {
function createHttpBackend (line 9810) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 9994) | function $InterpolateProvider() {
function $IntervalProvider (line 10304) | function $IntervalProvider() {
function $LocaleProvider (line 10499) | function $LocaleProvider() {
function encodePath (line 10580) | function encodePath(path) {
function parseAbsoluteUrl (line 10591) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 10600) | function parseAppUrl(relativeUrl, locationObj) {
function beginsWith (line 10625) | function beginsWith(begin, whole) {
function stripHash (line 10632) | function stripHash(url) {
function trimEmptyHash (line 10637) | function trimEmptyHash(url) {
function stripFile (line 10642) | function stripFile(url) {
function serverBase (line 10647) | function serverBase(url) {
function LocationHtml5Url (line 10661) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 10740) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 10852) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 11214) | function locationGetter(property) {
function locationGetterSetter (line 11221) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 11266) | function $LocationProvider() {
function $LogProvider (line 11600) | function $LogProvider() {
function ensureSafeMemberName (line 11756) | function ensureSafeMemberName(name, fullExpression) {
function getStringValue (line 11767) | function getStringValue(name, fullExpression) {
function ensureSafeObject (line 11786) | function ensureSafeObject(obj, fullExpression) {
function ensureSafeFunction (line 11817) | function ensureSafeFunction(obj, fullExpression) {
function isConstant (line 12063) | function isConstant(exp) {
function setter (line 12554) | function setter(obj, locals, path, setValue, fullExp) {
function isPossiblyDangerousMemberName (line 12577) | function isPossiblyDangerousMemberName(name) {
function cspSafeGetterFn (line 12586) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiv...
function getterFnWithEnsureSafeObject (line 12627) | function getterFnWithEnsureSafeObject(fn, fullExpression) {
function getterFn (line 12633) | function getterFn(path, options, fullExp) {
function getValueOf (line 12702) | function getValueOf(value) {
function $ParseProvider (line 12757) | function $ParseProvider() {
function $QProvider (line 13218) | function $QProvider() {
function $$QProvider (line 13227) | function $$QProvider() {
function qFactory (line 13243) | function qFactory(nextTick, exceptionHandler) {
function $$RAFProvider (line 13574) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 13709) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 14976) | function $$SanitizeUriProvider() {
function adjustMatcher (line 15067) | function adjustMatcher(matcher) {
function adjustMatchers (line 15095) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 15173) | function $SceDelegateProvider() {
function $SceProvider (line 15703) | function $SceProvider() {
function $SnifferProvider (line 16115) | function $SnifferProvider() {
function $TemplateRequestProvider (line 16209) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 16260) | function $$TestabilityProvider() {
function $TimeoutProvider (line 16375) | function $TimeoutProvider() {
function urlResolve (line 16514) | function urlResolve(url) {
function urlIsSameOrigin (line 16548) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 16595) | function $WindowProvider() {
function $FilterProvider (line 16699) | function $FilterProvider($provide) {
function filterFilter (line 16883) | function filterFilter() {
function createPredicateFn (line 16914) | function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
function deepCompare (line 16951) | function deepCompare(actual, expected, comparator, matchAgainstAnyProp, ...
function currencyFilter (line 17053) | function currencyFilter($locale) {
function numberFilter (line 17126) | function numberFilter($locale) {
function formatNumber (line 17139) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 17220) | function padNumber(num, digits, trim) {
function dateGetter (line 17234) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 17245) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 17254) | function timeZoneGetter(date) {
function getFirstThursdayOfYear (line 17264) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 17272) | function getThursdayThisWeek(datetime) {
function weekGetter (line 17278) | function weekGetter(size) {
function ampmGetter (line 17290) | function ampmGetter(date, formats) {
function eraGetter (line 17294) | function eraGetter(date, formats) {
function longEraGetter (line 17298) | function longEraGetter(date, formats) {
function dateFilter (line 17430) | function dateFilter($locale) {
function jsonFilter (line 17536) | function jsonFilter() {
function limitToFilter (line 17653) | function limitToFilter() {
function orderByFilter (line 17826) | function orderByFilter($parse) {
function ngDirective (line 17914) | function ngDirective(directive) {
function nullFormRenameControl (line 18399) | function nullFormRenameControl(control, name) {
function FormController (line 18446) | function FormController(element, attrs, $scope, $animate, $interpolate) {
function stringBasedInputType (line 19872) | function stringBasedInputType(ctrl) {
function textInputType (line 19878) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 19883) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 19969) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 20001) | function createDateParser(regexp, mapping) {
function createDateInputType (line 20051) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 20124) | function badInputChecker(scope, element, attr, ctrl) {
function numberInputType (line 20139) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 20193) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 20206) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 20219) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 20241) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 20254) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function classDirective (line 20815) | function classDirective(name, selector) {
function processParseErrors (line 23288) | function processParseErrors() {
function processSyncValidators (line 23308) | function processSyncValidators() {
function processAsyncValidators (line 23324) | function processAsyncValidators() {
function setValidity (line 23350) | function setValidity(name, isValid) {
function validationDone (line 23356) | function validationDone(allValid) {
function writeToModelIfNeeded (line 23435) | function writeToModelIfNeeded() {
function addSetValidityMethod (line 23970) | function addSetValidityMethod(context) {
function isObjectEmpty (line 24065) | function isObjectEmpty(obj) {
function updateElementText (line 24329) | function updateElementText(newText) {
function setupAsSingle (line 25869) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
function setupAsMultiple (line 25894) | function setupAsMultiple(scope, selectElement, ctrl) {
function setupAsOptions (line 25925) | function setupAsOptions(scope, selectElement, ctrl) {
FILE: test/angular/1.4/angular-animate.js
function assertArg (line 82) | function assertArg(arg, name, reason) {
function mergeClasses (line 89) | function mergeClasses(a,b) {
function packageStyles (line 98) | function packageStyles(options) {
function pendClasses (line 107) | function pendClasses(classes, fix, isPrefix) {
function removeFromArray (line 124) | function removeFromArray(arr, val) {
function stripCommentsFromElement (line 131) | function stripCommentsFromElement(element) {
function extractElementNode (line 158) | function extractElementNode(element) {
function $$addClass (line 168) | function $$addClass($$jqLite, element, className) {
function $$removeClass (line 174) | function $$removeClass($$jqLite, element, className) {
function applyAnimationClassesFactory (line 180) | function applyAnimationClassesFactory($$jqLite) {
function prepareAnimationOptions (line 193) | function prepareAnimationOptions(options) {
function applyAnimationStyles (line 207) | function applyAnimationStyles(element, options) {
function applyAnimationFromStyles (line 212) | function applyAnimationFromStyles(element, options) {
function applyAnimationToStyles (line 219) | function applyAnimationToStyles(element, options) {
function mergeAnimationDetails (line 226) | function mergeAnimationDetails(element, oldAnimation, newAnimation) {
function resolveElementClasses (line 267) | function resolveElementClasses(existing, toAdd, toRemove) {
function getDomNode (line 325) | function getDomNode(element) {
function applyGeneratedPreparationClasses (line 329) | function applyGeneratedPreparationClasses(element, event, options) {
function clearGeneratedClasses (line 346) | function clearGeneratedClasses(element, options) {
function blockTransitions (line 357) | function blockTransitions(node, duration) {
function blockKeyframeAnimations (line 366) | function blockKeyframeAnimations(node, applyBlock) {
function applyInlineStyle (line 373) | function applyInlineStyle(node, styleTuple) {
function concatWithSpace (line 379) | function concatWithSpace(a,b) {
function scheduler (line 388) | function scheduler(tasks) {
function nextTick (line 418) | function nextTick() {
function setData (line 525) | function setData(value) {
function getCssKeyframeDurationStyle (line 771) | function getCssKeyframeDurationStyle(duration) {
function getCssDelayStyle (line 775) | function getCssDelayStyle(delay, isKeyframeAnimation) {
function computeCssStyles (line 780) | function computeCssStyles($window, element, properties) {
function parseMaxTime (line 806) | function parseMaxTime(str) {
function truthyTimingValue (line 821) | function truthyTimingValue(val) {
function getCssTransitionDurationStyle (line 825) | function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
function createLocalCacheLookup (line 836) | function createLocalCacheLookup() {
function registerRestorableStyles (line 872) | function registerRestorableStyles(backup, node, properties) {
function gcsHashFn (line 892) | function gcsHashFn(node, extraClasses) {
function computeCachedCssStyles (line 899) | function computeCachedCssStyles(node, className, cacheKey, properties) {
function computeCachedCssStaggerStyles (line 915) | function computeCachedCssStaggerStyles(node, className, cacheKey, proper...
function waitUntilQuiet (line 946) | function waitUntilQuiet(callback) {
function computeTimings (line 965) | function computeTimings(node, className, cacheKey) {
function endFn (line 1235) | function endFn() {
function cancelFn (line 1239) | function cancelFn() {
function close (line 1243) | function close(rejected) { // jshint ignore:line
function applyBlocking (line 1302) | function applyBlocking(duration) {
function closeAndReturnNoopAnimator (line 1312) | function closeAndReturnNoopAnimator() {
function onAnimationProgress (line 1331) | function onAnimationProgress(event) {
function start (line 1358) | function start() {
function isDocumentFragment (line 1544) | function isDocumentFragment(node) {
function filterCssClasses (line 1575) | function filterCssClasses(classes) {
function getUniqueValues (line 1580) | function getUniqueValues(a, b) {
function prepareAnchoredAnimation (line 1588) | function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
function prepareFromToAnchorAnimation (line 1715) | function prepareFromToAnchorAnimation(from, to, classes, anchors) {
function prepareRegularAnimation (line 1768) | function prepareRegularAnimation(animationDetails) {
function applyOptions (line 1863) | function applyOptions() {
function close (line 1868) | function close() {
function onComplete (line 1930) | function onComplete(success) {
function endAnimations (line 1935) | function endAnimations(cancelled) {
function executeAnimationFn (line 1944) | function executeAnimationFn(fn, element, event, options, onDone) {
function groupEventedAnimations (line 1987) | function groupEventedAnimations(element, event, options, animations, fnN...
function packageAnimations (line 2028) | function packageAnimations(element, event, options, animations, fnName) {
function lookupAnimations (line 2070) | function lookupAnimations(classes) {
function endFnFactory (line 2116) | function endFnFactory() {
function done (line 2125) | function done(status) {
function prepareAnimation (line 2135) | function prepareAnimation(animationDetails) {
function makeTruthyCssClassMap (line 2159) | function makeTruthyCssClassMap(classString) {
function hasMatchingClasses (line 2173) | function hasMatchingClasses(newClassString, currentClassString) {
function isAllowed (line 2182) | function isAllowed(ruleType, element, currentAnimation, previousAnimatio...
function hasAnimationClasses (line 2188) | function hasAnimationClasses(animation, and) {
function postDigestTaskFactory (line 2253) | function postDigestTaskFactory() {
function normalizeAnimationDetails (line 2313) | function normalizeAnimationDetails(element, animation) {
function findCallbacks (line 2324) | function findCallbacks(parent, element, event) {
function filterFromRegistry (line 2361) | function filterFromRegistry(list, matchContainer, matchCallback) {
function queueAnimation (line 2418) | function queueAnimation(element, event, initialOptions) {
function closeChildAnimations (line 2695) | function closeChildAnimations(element) {
function clearElementAnimationState (line 2714) | function clearElementAnimationState(element) {
function isMatchingElement (line 2720) | function isMatchingElement(nodeOrElmA, nodeOrElmB) {
function areAnimationsAllowed (line 2731) | function areAnimationsAllowed(element, parentElement, event) {
function markElementAnimationState (line 2816) | function markElementAnimationState(element, state, details) {
function setRunner (line 2839) | function setRunner(element, runner) {
function removeRunner (line 2843) | function removeRunner(element) {
function getRunner (line 2847) | function getRunner(element) {
function sortAnimations (line 2857) | function sortAnimations(animations) {
function getAnchorNodes (line 3057) | function getAnchorNodes(node) {
function groupAnimations (line 3072) | function groupAnimations(animations) {
function cssClassesIntersection (line 3155) | function cssClassesIntersection(a,b) {
function invokeFirstDriver (line 3175) | function invokeFirstDriver(animationDetails) {
function beforeStart (line 3190) | function beforeStart() {
function updateAnimationRunners (line 3201) | function updateAnimationRunners(animation, newRunner) {
function handleDestroyedElement (line 3214) | function handleDestroyedElement() {
function close (line 3221) | function close(rejected) { // jshint ignore:line
FILE: test/angular/1.4/angular-mocks.js
function concat (line 281) | function concat(array1, array2, index) {
function tick (line 461) | function tick() {
function jsonStringToDate (line 557) | function jsonStringToDate(string) {
function toInt (line 577) | function toInt(str) {
function padNumber (line 581) | function padNumber(num, digits, trim) {
function reflowFn (line 775) | function reflowFn() {
method reflows (line 853) | get reflows() {
function serialize (line 948) | function serialize(object) {
function serializeScope (line 981) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1233) | function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
function MockHttpExpectation (line 1712) | function MockHttpExpectation(method, url, data, headers) {
function createMockXhr (line 1753) | function createMockXhr() {
function MockXhr (line 1757) | function MockXhr() {
function formatPendingTasksAsString (line 1846) | function formatPendingTasksAsString(tasks) {
function countChildScopes (line 2235) | function countChildScopes() {
function countWatchers (line 2267) | function countWatchers() {
function workFn (line 2368) | function workFn() {
function workFn (line 2498) | function workFn() {
function workFn (line 2543) | function workFn() {
FILE: test/angular/1.4/angular.js
function minErr (line 38) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 269) | function isArrayLike(obj) {
function forEach (line 326) | function forEach(obj, iterator, context) {
function forEachSorted (line 370) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 384) | function reverseParams(iteratorFn) {
function nextUid (line 398) | function nextUid() {
function setHashKey (line 408) | function setHashKey(obj, h) {
function baseExtend (line 417) | function baseExtend(dst, objs, deep) {
function extend (line 469) | function extend(dst) {
function merge (line 492) | function merge(dst) {
function toInt (line 498) | function toInt(str) {
function inherit (line 503) | function inherit(parent, extra) {
function noop (line 523) | function noop() {}
function identity (line 555) | function identity($) {return $;}
function valueFn (line 559) | function valueFn(value) {return function() {return value;};}
function hasCustomToString (line 561) | function hasCustomToString(obj) {
function isUndefined (line 578) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 593) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 609) | function isObject(value) {
function isBlankObject (line 620) | function isBlankObject(value) {
function isString (line 637) | function isString(value) {return typeof value === 'string';}
function isNumber (line 658) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 673) | function isDate(value) {
function isFunction (line 704) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 714) | function isRegExp(value) {
function isWindow (line 726) | function isWindow(obj) {
function isScope (line 731) | function isScope(obj) {
function isFile (line 736) | function isFile(obj) {
function isFormData (line 741) | function isFormData(obj) {
function isBlob (line 746) | function isBlob(obj) {
function isBoolean (line 751) | function isBoolean(value) {
function isPromiseLike (line 756) | function isPromiseLike(obj) {
function isTypedArray (line 762) | function isTypedArray(value) {
function isElement (line 792) | function isElement(node) {
function makeMap (line 802) | function makeMap(str) {
function nodeName_ (line 811) | function nodeName_(element) {
function includes (line 815) | function includes(array, obj) {
function arrayRemove (line 819) | function arrayRemove(array, value) {
function copy (line 885) | function copy(source, destination) {
function shallowCopy (line 999) | function shallowCopy(src, dst) {
function equals (line 1049) | function equals(o1, o2) {
function noUnsafeEval (line 1115) | function noUnsafeEval() {
function concat (line 1180) | function concat(array1, array2, index) {
function sliceArgs (line 1184) | function sliceArgs(args, startIndex) {
function bind (line 1208) | function bind(self, fn) {
function toJsonReplacer (line 1229) | function toJsonReplacer(key, value) {
function toJson (line 1261) | function toJson(obj, pretty) {
function fromJson (line 1282) | function fromJson(json) {
function timezoneToOffset (line 1290) | function timezoneToOffset(timezone, fallback) {
function addDateMinutes (line 1298) | function addDateMinutes(date, minutes) {
function convertTimezoneToLocal (line 1305) | function convertTimezoneToLocal(date, timezone, reverse) {
function startingTag (line 1316) | function startingTag(element) {
function tryDecodeURIComponent (line 1346) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1359) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1386) | function toKeyValue(obj) {
function encodeUriSegment (line 1414) | function encodeUriSegment(val) {
function encodeUriQuery (line 1433) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 1445) | function getNgAttribute(element, ngAttr) {
function angularInit (line 1583) | function angularInit(element, bootstrap) {
function bootstrap (line 1662) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 1740) | function reloadWithDebugInfo() {
function getTestability (line 1753) | function getTestability(rootElement) {
function snake_case (line 1763) | function snake_case(name, separator) {
function bindJQuery (line 1772) | function bindJQuery() {
function assertArg (line 1830) | function assertArg(arg, name, reason) {
function assertArgFn (line 1837) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1852) | function assertNotHasOwnProperty(name, context) {
function getter (line 1866) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 1890) | function getBlockNodes(nodes) {
function createMap (line 1920) | function createMap() {
function setupModuleLoader (line 1940) | function setupModuleLoader(window) {
function serializeObject (line 2282) | function serializeObject(obj) {
function toDebugString (line 2297) | function toDebugString(obj) {
function publishExternalAPI (line 2428) | function publishExternalAPI(angular) {
function jqNextId (line 2704) | function jqNextId() { return ++jqId; }
function camelCase (line 2717) | function camelCase(name) {
function jqLiteIsTextNode (line 2745) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 2749) | function jqLiteAcceptsData(node) {
function jqLiteHasData (line 2756) | function jqLiteHasData(node) {
function jqLiteBuildFragment (line 2763) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 2800) | function jqLiteParseHTML(html, context) {
function jqLiteWrapNode (line 2815) | function jqLiteWrapNode(node, wrapper) {
function JQLite (line 2834) | function JQLite(element) {
function jqLiteClone (line 2859) | function jqLiteClone(element) {
function jqLiteDealoc (line 2863) | function jqLiteDealoc(element, onlyDescendants) {
function jqLiteOff (line 2874) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 2912) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 2934) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 2947) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 2973) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 2979) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 2991) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 3008) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 3034) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 3038) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 3058) | function jqLiteEmpty(element) {
function jqLiteRemove (line 3065) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 3072) | function jqLiteDocumentLoaded(action, win) {
function trigger (line 3092) | function trigger() {
function getBooleanAttrName (line 3146) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 3154) | function getAliasedAttrName(name) {
function getText (line 3246) | function getText(element, value) {
function createEventHandler (line 3331) | function createEventHandler(element, events) {
function defaultHandlerWrapper (line 3383) | function defaultHandlerWrapper(element, event, handler) {
function specialMouseHandlerWrapper (line 3387) | function specialMouseHandlerWrapper(target, event, handler) {
function $$jqLiteProvider (line 3634) | function $$jqLiteProvider() {
function hashKey (line 3665) | function hashKey(obj, nextUidFn) {
function HashMap (line 3688) | function HashMap(array, isolatedUid) {
function anonFn (line 3800) | function anonFn(fn) {
function annotate (line 3811) | function annotate(fn, strictDi, name) {
function createInjector (line 4360) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 4605) | function $AnchorScrollProvider() {
function mergeClasses (line 4872) | function mergeClasses(a,b) {
function extractElementNode (line 4881) | function extractElementNode(element) {
function splitClasses (line 4890) | function splitClasses(classes) {
function prepareAnimateOptions (line 4915) | function prepareAnimateOptions(options) {
function updateData (line 4960) | function updateData(data, classes, value) {
function handleCSSClassChanges (line 4975) | function handleCSSClassChanges() {
function addRemoveClassesPostDigest (line 5004) | function addRemoveClassesPostDigest(element, add, remove) {
function domInsert (line 5118) | function domInsert(element, parentElement, afterElement) {
function waitForTick (line 5465) | function waitForTick(fn) {
function next (line 5500) | function next() {
function onProgress (line 5524) | function onProgress(response) {
function AnimateRunner (line 5532) | function AnimateRunner(host) {
function run (line 5688) | function run() {
function applyAnimationContents (line 5699) | function applyAnimationContents() {
function Browser (line 5740) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 6070) | function $BrowserProvider() {
function $CacheFactoryProvider (line 6158) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 6473) | function $TemplateCacheProvider() {
function $CompileProvider (line 7244) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 9213) | function directiveNormalize(name) {
function nodesetLinkingFn (line 9262) | function nodesetLinkingFn(
function directiveLinkingFn (line 9269) | function directiveLinkingFn(
function tokenDifference (line 9277) | function tokenDifference(str1, str2) {
function removeComments (line 9293) | function removeComments(jqNodes) {
function identifierForController (line 9314) | function identifierForController(controller, ident) {
function $ControllerProvider (line 9333) | function $ControllerProvider() {
function $DocumentProvider (line 9506) | function $DocumentProvider() {
function $ExceptionHandlerProvider (line 9552) | function $ExceptionHandlerProvider() {
function serializeValue (line 9598) | function serializeValue(v) {
function $HttpParamSerializerProvider (line 9606) | function $HttpParamSerializerProvider() {
function $HttpParamSerializerJQLikeProvider (line 9643) | function $HttpParamSerializerJQLikeProvider() {
function defaultHttpResponseTransform (line 9715) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 9731) | function isJsonLike(str) {
function parseHeaders (line 9742) | function parseHeaders(headers) {
function headersGetter (line 9778) | function headersGetter(headers) {
function transformData (line 9808) | function transformData(data, headers, status, fns) {
function isSuccess (line 9821) | function isSuccess(status) {
function $HttpProvider (line 9832) | function $HttpProvider() {
function $xhrFactoryProvider (line 10934) | function $xhrFactoryProvider() {
function $HttpBackendProvider (line 10959) | function $HttpBackendProvider() {
function createHttpBackend (line 10965) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 11159) | function $InterpolateProvider() {
function $IntervalProvider (line 11467) | function $IntervalProvider() {
function encodePath (line 11679) | function encodePath(path) {
function parseAbsoluteUrl (line 11690) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 11699) | function parseAppUrl(relativeUrl, locationObj) {
function beginsWith (line 11724) | function beginsWith(begin, whole) {
function stripHash (line 11731) | function stripHash(url) {
function trimEmptyHash (line 11736) | function trimEmptyHash(url) {
function stripFile (line 11741) | function stripFile(url) {
function serverBase (line 11746) | function serverBase(url) {
function LocationHtml5Url (line 11760) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 11839) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 11951) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 12315) | function locationGetter(property) {
function locationGetterSetter (line 12322) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 12368) | function $LocationProvider() {
function $LogProvider (line 12702) | function $LogProvider() {
function ensureSafeMemberName (line 12858) | function ensureSafeMemberName(name, fullExpression) {
function getStringValue (line 12869) | function getStringValue(name, fullExpression) {
function ensureSafeObject (line 12888) | function ensureSafeObject(obj, fullExpression) {
function ensureSafeFunction (line 12919) | function ensureSafeFunction(obj, fullExpression) {
function ensureSafeAssignContext (line 12933) | function ensureSafeAssignContext(obj, fullExpression) {
function ifDefined (line 13450) | function ifDefined(v, d) {
function plusFn (line 13454) | function plusFn(l, r) {
function isStateless (line 13460) | function isStateless($filter, filterName) {
function findConstantAndWatchExpressions (line 13465) | function findConstantAndWatchExpressions(ast, $filter) {
function getInputs (line 13569) | function getInputs(body) {
function isAssignable (line 13577) | function isAssignable(ast) {
function assignableAST (line 13581) | function assignableAST(ast) {
function isLiteral (line 13587) | function isLiteral(ast) {
function isConstant (line 13595) | function isConstant(ast) {
function ASTCompiler (line 13599) | function ASTCompiler(astBuilder, $filter) {
function ASTInterpreter (line 14094) | function ASTInterpreter(astBuilder, $filter) {
function isPossiblyDangerousMemberName (line 14490) | function isPossiblyDangerousMemberName(name) {
function getValueOf (line 14496) | function getValueOf(value) {
function $ParseProvider (line 14551) | function $ParseProvider() {
function $QProvider (line 15019) | function $QProvider() {
function $$QProvider (line 15028) | function $$QProvider() {
function qFactory (line 15044) | function qFactory(nextTick, exceptionHandler) {
function $$RAFProvider (line 15398) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 15495) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 16814) | function $$SanitizeUriProvider() {
function adjustMatcher (line 16905) | function adjustMatcher(matcher) {
function adjustMatchers (line 16933) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 17011) | function $SceDelegateProvider() {
function $SceProvider (line 17543) | function $SceProvider() {
function $SnifferProvider (line 17955) | function $SnifferProvider() {
function $TemplateRequestProvider (line 18049) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 18102) | function $$TestabilityProvider() {
function $TimeoutProvider (line 18217) | function $TimeoutProvider() {
function urlResolve (line 18368) | function urlResolve(url) {
function urlIsSameOrigin (line 18402) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 18449) | function $WindowProvider() {
function $$CookieReader (line 18462) | function $$CookieReader($document) {
function $$CookieReaderProvider (line 18504) | function $$CookieReaderProvider() {
function $FilterProvider (line 18608) | function $FilterProvider($provide) {
function filterFilter (line 18798) | function filterFilter() {
function createPredicateFn (line 18835) | function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
function deepCompare (line 18872) | function deepCompare(actual, expected, comparator, matchAgainstAnyProp, ...
function getTypeForFilter (line 18922) | function getTypeForFilter(val) {
function currencyFilter (line 18983) | function currencyFilter($locale) {
function numberFilter (line 19057) | function numberFilter($locale) {
function parse (line 19082) | function parse(numStr) {
function roundNumber (line 19137) | function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
function formatNumber (line 19193) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 19259) | function padNumber(num, digits, trim) {
function dateGetter (line 19274) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 19286) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 19295) | function timeZoneGetter(date, formats, offset) {
function getFirstThursdayOfYear (line 19305) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 19313) | function getThursdayThisWeek(datetime) {
function weekGetter (line 19319) | function weekGetter(size) {
function ampmGetter (line 19331) | function ampmGetter(date, formats) {
function eraGetter (line 19335) | function eraGetter(date, formats) {
function longEraGetter (line 19339) | function longEraGetter(date, formats) {
function dateFilter (line 19473) | function dateFilter($locale) {
function jsonFilter (line 19580) | function jsonFilter() {
function limitToFilter (line 19709) | function limitToFilter() {
function orderByFilter (line 19930) | function orderByFilter($parse) {
function ngDirective (line 20048) | function ngDirective(directive) {
function defaultLinkFn (line 20427) | function defaultLinkFn(scope, element, attr) {
function nullFormRenameControl (line 20529) | function nullFormRenameControl(control, name) {
function FormController (line 20577) | function FormController(element, attrs, $scope, $animate, $interpolate) {
function getSetter (line 21051) | function getSetter(expression) {
function stringBasedInputType (line 22158) | function stringBasedInputType(ctrl) {
function textInputType (line 22164) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 22169) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 22279) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 22311) | function createDateParser(regexp, mapping) {
function createDateInputType (line 22361) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 22433) | function badInputChecker(scope, element, attr, ctrl) {
function numberInputType (line 22448) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 22502) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 22515) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 22528) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 22550) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 22563) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function classDirective (line 23147) | function classDirective(name, selector) {
function processParseErrors (line 25733) | function processParseErrors() {
function processSyncValidators (line 25753) | function processSyncValidators() {
function processAsyncValidators (line 25769) | function processAsyncValidators() {
function setValidity (line 25795) | function setValidity(name, isValid) {
function validationDone (line 25801) | function validationDone(allValid) {
function writeToModelIfNeeded (line 25880) | function writeToModelIfNeeded() {
function addSetValidityMethod (line 26451) | function addSetValidityMethod(context) {
function isObjectEmpty (line 26545) | function isObjectEmpty(obj) {
function parseOptionsExpression (line 26837) | function parseOptionsExpression(optionsExp, selectElement, scope) {
function ngOptionsPostLink (line 27000) | function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
function updateElementText (line 27591) | function updateElementText(newText) {
function chromeHack (line 28850) | function chromeHack(optionElement) {
function selectPreLink (line 29212) | function selectPreLink(scope, element, attr, ctrls) {
function selectPostLink (line 29276) | function selectPostLink(scope, element, attrs, ctrls) {
function getDecimals (line 29705) | function getDecimals(n) {
function getVF (line 29711) | function getVF(n, opt_precision) {
FILE: test/angular/1.5/angular-animate.js
function assertArg (line 64) | function assertArg(arg, name, reason) {
function mergeClasses (line 71) | function mergeClasses(a,b) {
function packageStyles (line 80) | function packageStyles(options) {
function pendClasses (line 89) | function pendClasses(classes, fix, isPrefix) {
function removeFromArray (line 106) | function removeFromArray(arr, val) {
function stripCommentsFromElement (line 113) | function stripCommentsFromElement(element) {
function extractElementNode (line 138) | function extractElementNode(element) {
function $$addClass (line 148) | function $$addClass($$jqLite, element, className) {
function $$removeClass (line 154) | function $$removeClass($$jqLite, element, className) {
function applyAnimationClassesFactory (line 160) | function applyAnimationClassesFactory($$jqLite) {
function prepareAnimationOptions (line 173) | function prepareAnimationOptions(options) {
function applyAnimationStyles (line 187) | function applyAnimationStyles(element, options) {
function applyAnimationFromStyles (line 192) | function applyAnimationFromStyles(element, options) {
function applyAnimationToStyles (line 199) | function applyAnimationToStyles(element, options) {
function mergeAnimationDetails (line 206) | function mergeAnimationDetails(element, oldAnimation, newAnimation) {
function resolveElementClasses (line 247) | function resolveElementClasses(existing, toAdd, toRemove) {
function getDomNode (line 305) | function getDomNode(element) {
function applyGeneratedPreparationClasses (line 309) | function applyGeneratedPreparationClasses(element, event, options) {
function clearGeneratedClasses (line 326) | function clearGeneratedClasses(element, options) {
function blockTransitions (line 337) | function blockTransitions(node, duration) {
function blockKeyframeAnimations (line 346) | function blockKeyframeAnimations(node, applyBlock) {
function applyInlineStyle (line 353) | function applyInlineStyle(node, styleTuple) {
function concatWithSpace (line 359) | function concatWithSpace(a,b) {
function scheduler (line 368) | function scheduler(tasks) {
function nextTick (line 398) | function nextTick() {
function setData (line 505) | function setData(value) {
function getCssKeyframeDurationStyle (line 752) | function getCssKeyframeDurationStyle(duration) {
function getCssDelayStyle (line 756) | function getCssDelayStyle(delay, isKeyframeAnimation) {
function computeCssStyles (line 761) | function computeCssStyles($window, element, properties) {
function parseMaxTime (line 787) | function parseMaxTime(str) {
function truthyTimingValue (line 802) | function truthyTimingValue(val) {
function getCssTransitionDurationStyle (line 806) | function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
function createLocalCacheLookup (line 817) | function createLocalCacheLookup() {
function registerRestorableStyles (line 853) | function registerRestorableStyles(backup, node, properties) {
function gcsHashFn (line 873) | function gcsHashFn(node, extraClasses) {
function computeCachedCssStyles (line 880) | function computeCachedCssStyles(node, className, cacheKey, properties) {
function computeCachedCssStaggerStyles (line 896) | function computeCachedCssStaggerStyles(node, className, cacheKey, proper...
function waitUntilQuiet (line 926) | function waitUntilQuiet(callback) {
function computeTimings (line 945) | function computeTimings(node, className, cacheKey) {
function endFn (line 1215) | function endFn() {
function cancelFn (line 1219) | function cancelFn() {
function close (line 1223) | function close(rejected) {
function applyBlocking (line 1285) | function applyBlocking(duration) {
function closeAndReturnNoopAnimator (line 1295) | function closeAndReturnNoopAnimator() {
function onAnimationProgress (line 1314) | function onAnimationProgress(event) {
function start (line 1341) | function start() {
function isDocumentFragment (line 1529) | function isDocumentFragment(node) {
function filterCssClasses (line 1558) | function filterCssClasses(classes) {
function getUniqueValues (line 1563) | function getUniqueValues(a, b) {
function prepareAnchoredAnimation (line 1571) | function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
function prepareFromToAnchorAnimation (line 1698) | function prepareFromToAnchorAnimation(from, to, classes, anchors) {
function prepareRegularAnimation (line 1751) | function prepareRegularAnimation(animationDetails) {
function applyOptions (line 1846) | function applyOptions() {
function close (line 1851) | function close() {
function onComplete (line 1913) | function onComplete(success) {
function endAnimations (line 1918) | function endAnimations(cancelled) {
function executeAnimationFn (line 1927) | function executeAnimationFn(fn, element, event, options, onDone) {
function groupEventedAnimations (line 1970) | function groupEventedAnimations(element, event, options, animations, fnN...
function packageAnimations (line 2011) | function packageAnimations(element, event, options, animations, fnName) {
function lookupAnimations (line 2061) | function lookupAnimations(classes) {
function endFnFactory (line 2107) | function endFnFactory() {
function done (line 2116) | function done(status) {
function prepareAnimation (line 2126) | function prepareAnimation(animationDetails) {
function makeTruthyCssClassMap (line 2150) | function makeTruthyCssClassMap(classString) {
function hasMatchingClasses (line 2164) | function hasMatchingClasses(newClassString, currentClassString) {
function isAllowed (line 2173) | function isAllowed(ruleType, element, currentAnimation, previousAnimatio...
function hasAnimationClasses (line 2179) | function hasAnimationClasses(animation, and) {
function postDigestTaskFactory (line 2246) | function postDigestTaskFactory() {
function normalizeAnimationDetails (line 2306) | function normalizeAnimationDetails(element, animation) {
function findCallbacks (line 2316) | function findCallbacks(parent, element, event) {
function filterFromRegistry (line 2335) | function filterFromRegistry(list, matchContainer, matchCallback) {
function cleanupEventListeners (line 2344) | function cleanupEventListeners(phase, element) {
function queueAnimation (line 2440) | function queueAnimation(element, event, initialOptions) {
function closeChildAnimations (line 2720) | function closeChildAnimations(element) {
function clearElementAnimationState (line 2739) | function clearElementAnimationState(element) {
function isMatchingElement (line 2745) | function isMatchingElement(nodeOrElmA, nodeOrElmB) {
function areAnimationsAllowed (line 2756) | function areAnimationsAllowed(element, parentElement, event) {
function markElementAnimationState (line 2841) | function markElementAnimationState(element, state, details) {
function setRunner (line 2866) | function setRunner(element, runner) {
function removeRunner (line 2870) | function removeRunner(element) {
function getRunner (line 2874) | function getRunner(element) {
function sortAnimations (line 2884) | function sortAnimations(animations) {
function getAnchorNodes (line 3084) | function getAnchorNodes(node) {
function groupAnimations (line 3099) | function groupAnimations(animations) {
function cssClassesIntersection (line 3182) | function cssClassesIntersection(a,b) {
function invokeFirstDriver (line 3202) | function invokeFirstDriver(animationDetails) {
function beforeStart (line 3215) | function beforeStart() {
function updateAnimationRunners (line 3226) | function updateAnimationRunners(animation, newRunner) {
function handleDestroyedElement (line 3240) | function handleDestroyedElement() {
function close (line 3247) | function close(rejected) {
FILE: test/angular/1.5/angular-mocks.js
function concat (line 292) | function concat(array1, array2, index) {
function tick (line 472) | function tick() {
function jsonStringToDate (line 561) | function jsonStringToDate(string) {
function toInt (line 585) | function toInt(str) {
function padNumberInMock (line 589) | function padNumberInMock(num, digits, trim) {
function reflowFn (line 785) | function reflowFn() {
method reflows (line 863) | get reflows() {
function serialize (line 955) | function serialize(object) {
function serializeScope (line 988) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1322) | function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
function MockHttpExpectation (line 1899) | function MockHttpExpectation(method, url, data, headers, keys) {
function createMockXhr (line 2004) | function createMockXhr() {
function MockXhr (line 2008) | function MockXhr() {
function formatPendingTasksAsString (line 2111) | function formatPendingTasksAsString(tasks) {
function createControllerDecorator (line 2231) | function createControllerDecorator(compileProvider) {
function countChildScopes (line 2711) | function countChildScopes() {
function countWatchers (line 2743) | function countWatchers() {
function workFn (line 2808) | function workFn() {
function WorkFn (line 3102) | function WorkFn() {
function workFn (line 3148) | function workFn() {
function InjectorState (line 3159) | function InjectorState() {
FILE: test/angular/1.5/angular.js
function minErr (line 38) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 253) | function isArrayLike(obj) {
function forEach (line 310) | function forEach(obj, iterator, context) {
function forEachSorted (line 354) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 368) | function reverseParams(iteratorFn) {
function nextUid (line 382) | function nextUid() {
function setHashKey (line 392) | function setHashKey(obj, h) {
function baseExtend (line 401) | function baseExtend(dst, objs, deep) {
function extend (line 453) | function extend(dst) {
function merge (line 476) | function merge(dst) {
function toInt (line 482) | function toInt(str) {
function inherit (line 492) | function inherit(parent, extra) {
function noop (line 512) | function noop() {}
function identity (line 544) | function identity($) {return $;}
function valueFn (line 548) | function valueFn(value) {return function valueRef() {return value;};}
function hasCustomToString (line 550) | function hasCustomToString(obj) {
function isUndefined (line 567) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 582) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 598) | function isObject(value) {
function isBlankObject (line 609) | function isBlankObject(value) {
function isString (line 626) | function isString(value) {return typeof value === 'string';}
function isNumber (line 647) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 662) | function isDate(value) {
function isFunction (line 693) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 703) | function isRegExp(value) {
function isWindow (line 715) | function isWindow(obj) {
function isScope (line 720) | function isScope(obj) {
function isFile (line 725) | function isFile(obj) {
function isFormData (line 730) | function isFormData(obj) {
function isBlob (line 735) | function isBlob(obj) {
function isBoolean (line 740) | function isBoolean(value) {
function isPromiseLike (line 745) | function isPromiseLike(obj) {
function isTypedArray (line 751) | function isTypedArray(value) {
function isArrayBuffer (line 755) | function isArrayBuffer(obj) {
function isElement (line 787) | function isElement(node) {
function makeMap (line 797) | function makeMap(str) {
function nodeName_ (line 806) | function nodeName_(element) {
function includes (line 810) | function includes(array, obj) {
function arrayRemove (line 814) | function arrayRemove(array, value) {
function copy (line 887) | function copy(source, destination) {
function equals (line 1091) | function equals(o1, o2) {
function noUnsafeEval (line 1157) | function noUnsafeEval() {
function concat (line 1222) | function concat(array1, array2, index) {
function sliceArgs (line 1226) | function sliceArgs(args, startIndex) {
function bind (line 1248) | function bind(self, fn) {
function toJsonReplacer (line 1269) | function toJsonReplacer(key, value) {
function toJson (line 1322) | function toJson(obj, pretty) {
function fromJson (line 1343) | function fromJson(json) {
function timezoneToOffset (line 1351) | function timezoneToOffset(timezone, fallback) {
function addDateMinutes (line 1359) | function addDateMinutes(date, minutes) {
function convertTimezoneToLocal (line 1366) | function convertTimezoneToLocal(date, timezone, reverse) {
function startingTag (line 1377) | function startingTag(element) {
function tryDecodeURIComponent (line 1407) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1420) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1447) | function toKeyValue(obj) {
function encodeUriSegment (line 1475) | function encodeUriSegment(val) {
function encodeUriQuery (line 1494) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 1506) | function getNgAttribute(element, ngAttr) {
function allowAutoBootstrap (line 1517) | function allowAutoBootstrap(document) {
function angularInit (line 1685) | function angularInit(element, bootstrap) {
function bootstrap (line 1778) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 1856) | function reloadWithDebugInfo() {
function getTestability (line 1869) | function getTestability(rootElement) {
function snake_case (line 1879) | function snake_case(name, separator) {
function bindJQuery (line 1887) | function bindJQuery() {
function assertArg (line 1941) | function assertArg(arg, name, reason) {
function assertArgFn (line 1948) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1963) | function assertNotHasOwnProperty(name, context) {
function getter (line 1977) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 2001) | function getBlockNodes(nodes) {
function createMap (line 2031) | function createMap() {
function setupModuleLoader (line 2051) | function setupModuleLoader(window) {
function shallowCopy (line 2411) | function shallowCopy(src, dst) {
function serializeObject (line 2433) | function serializeObject(obj) {
function toDebugString (line 2448) | function toDebugString(obj) {
function publishExternalAPI (line 2582) | function publishExternalAPI(angular) {
function jqNextId (line 2861) | function jqNextId() { return ++jqId; }
function camelCase (line 2874) | function camelCase(name) {
function jqLiteIsTextNode (line 2902) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 2906) | function jqLiteAcceptsData(node) {
function jqLiteHasData (line 2913) | function jqLiteHasData(node) {
function jqLiteCleanData (line 2920) | function jqLiteCleanData(nodes) {
function jqLiteBuildFragment (line 2926) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 2963) | function jqLiteParseHTML(html, context) {
function jqLiteWrapNode (line 2978) | function jqLiteWrapNode(node, wrapper) {
function JQLite (line 2996) | function JQLite(element) {
function jqLiteClone (line 3021) | function jqLiteClone(element) {
function jqLiteDealoc (line 3025) | function jqLiteDealoc(element, onlyDescendants) {
function jqLiteOff (line 3036) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 3074) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 3096) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 3109) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 3135) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 3141) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 3153) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 3170) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 3196) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 3200) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 3220) | function jqLiteEmpty(element) {
function jqLiteRemove (line 3227) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 3234) | function jqLiteDocumentLoaded(action, win) {
function trigger (line 3254) | function trigger() {
function getBooleanAttrName (line 3307) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 3315) | function getAliasedAttrName(name) {
function getText (line 3408) | function getText(element, value) {
function createEventHandler (line 3493) | function createEventHandler(element, events) {
function defaultHandlerWrapper (line 3545) | function defaultHandlerWrapper(element, event, handler) {
function specialMouseHandlerWrapper (line 3549) | function specialMouseHandlerWrapper(target, event, handler) {
function $$jqLiteProvider (line 3800) | function $$jqLiteProvider() {
function hashKey (line 3831) | function hashKey(obj, nextUidFn) {
function HashMap (line 3854) | function HashMap(array, isolatedUid) {
function stringifyFn (line 3968) | function stringifyFn(fn) {
function extractArgs (line 3976) | function extractArgs(fn) {
function anonFn (line 3982) | function anonFn(fn) {
function annotate (line 3992) | function annotate(fn, strictDi, name) {
function createInjector (line 4542) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 4813) | function $AnchorScrollProvider() {
function mergeClasses (line 5081) | function mergeClasses(a,b) {
function extractElementNode (line 5090) | function extractElementNode(element) {
function splitClasses (line 5099) | function splitClasses(classes) {
function prepareAnimateOptions (line 5124) | function prepareAnimateOptions(options) {
function updateData (line 5175) | function updateData(data, classes, value) {
function handleCSSClassChanges (line 5190) | function handleCSSClassChanges() {
function addRemoveClassesPostDigest (line 5223) | function addRemoveClassesPostDigest(element, add, remove) {
function domInsert (line 5337) | function domInsert(element, parentElement, afterElement) {
function waitForTick (line 5737) | function waitForTick(fn) {
function next (line 5776) | function next() {
function onProgress (line 5800) | function onProgress(response) {
function AnimateRunner (line 5808) | function AnimateRunner(host) {
function run (line 5970) | function run() {
function applyAnimationContents (line 5981) | function applyAnimationContents() {
function Browser (line 6022) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 6354) | function $BrowserProvider() {
function $CacheFactoryProvider (line 6443) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 6761) | function $TemplateCacheProvider() {
function UNINITIALIZED_VALUE (line 7724) | function UNINITIALIZED_VALUE() {}
function $CompileProvider (line 7735) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function SimpleChange (line 10326) | function SimpleChange(previous, current) {
function directiveNormalize (line 10338) | function directiveNormalize(name) {
function nodesetLinkingFn (line 10387) | function nodesetLinkingFn(
function directiveLinkingFn (line 10394) | function directiveLinkingFn(
function tokenDifference (line 10402) | function tokenDifference(str1, str2) {
function removeComments (line 10418) | function removeComments(jqNodes) {
function identifierForController (line 10440) | function identifierForController(controller, ident) {
function $ControllerProvider (line 10461) | function $ControllerProvider() {
function $DocumentProvider (line 10654) | function $DocumentProvider() {
function $ExceptionHandlerProvider (line 10704) | function $ExceptionHandlerProvider() {
function serializeValue (line 10750) | function serializeValue(v) {
function $HttpParamSerializerProvider (line 10759) | function $HttpParamSerializerProvider() {
function $HttpParamSerializerJQLikeProvider (line 10797) | function $HttpParamSerializerJQLikeProvider() {
function defaultHttpResponseTransform (line 10870) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 10886) | function isJsonLike(str) {
function parseHeaders (line 10897) | function parseHeaders(headers) {
function headersGetter (line 10933) | function headersGetter(headers) {
function transformData (line 10963) | function transformData(data, headers, status, fns) {
function isSuccess (line 10976) | function isSuccess(status) {
function $HttpProvider (line 10989) | function $HttpProvider() {
function $xhrFactoryProvider (line 12145) | function $xhrFactoryProvider() {
function $HttpBackendProvider (line 12171) | function $HttpBackendProvider() {
function createHttpBackend (line 12177) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 12390) | function $InterpolateProvider() {
function $IntervalProvider (line 12740) | function $IntervalProvider() {
function createCallback (line 12954) | function createCallback(callbackId) {
function encodePath (line 13043) | function encodePath(path) {
function parseAbsoluteUrl (line 13054) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 13063) | function parseAppUrl(url, locationObj) {
function startsWith (line 13085) | function startsWith(str, search) {
function stripBaseUrl (line 13096) | function stripBaseUrl(base, url) {
function stripHash (line 13103) | function stripHash(url) {
function trimEmptyHash (line 13108) | function trimEmptyHash(url) {
function stripFile (line 13113) | function stripFile(url) {
function serverBase (line 13118) | function serverBase(url) {
function LocationHtml5Url (line 13132) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 13212) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 13324) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 13694) | function locationGetter(property) {
function locationGetterSetter (line 13701) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 13749) | function $LocationProvider() {
function $LogProvider (line 14093) | function $LogProvider() {
function ensureSafeMemberName (line 14268) | function ensureSafeMemberName(name, fullExpression) {
function getStringValue (line 14279) | function getStringValue(name) {
function ensureSafeObject (line 14297) | function ensureSafeObject(obj, fullExpression) {
function ensureSafeFunction (line 14324) | function ensureSafeFunction(obj, fullExpression) {
function ensureSafeAssignContext (line 14338) | function ensureSafeAssignContext(obj, fullExpression) {
function ifDefined (line 14917) | function ifDefined(v, d) {
function plusFn (line 14921) | function plusFn(l, r) {
function isStateless (line 14927) | function isStateless($filter, filterName) {
function findConstantAndWatchExpressions (line 14932) | function findConstantAndWatchExpressions(ast, $filter) {
function getInputs (line 15042) | function getInputs(body) {
function isAssignable (line 15050) | function isAssignable(ast) {
function assignableAST (line 15054) | function assignableAST(ast) {
function isLiteral (line 15060) | function isLiteral(ast) {
function isConstant (line 15068) | function isConstant(ast) {
function ASTCompiler (line 15072) | function ASTCompiler(astBuilder, $filter) {
function ASTInterpreter (line 15597) | function ASTInterpreter(astBuilder, $filter) {
function isPossiblyDangerousMemberName (line 16011) | function isPossiblyDangerousMemberName(name) {
function getValueOf (line 16015) | function getValueOf(value) {
function $ParseProvider (line 16071) | function $ParseProvider() {
function $QProvider (line 16599) | function $QProvider() {
function $$QProvider (line 16609) | function $$QProvider() {
function qFactory (line 16625) | function qFactory(nextTick, exceptionHandler) {
function $$RAFProvider (line 16990) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 17089) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 18430) | function $$SanitizeUriProvider() {
function adjustMatcher (line 18523) | function adjustMatcher(matcher) {
function adjustMatchers (line 18551) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 18631) | function $SceDelegateProvider() {
function $SceProvider (line 19167) | function $SceProvider() {
function $SnifferProvider (line 19582) | function $SnifferProvider() {
function $TemplateRequestProvider (line 19676) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 19775) | function $$TestabilityProvider() {
function $TimeoutProvider (line 19891) | function $TimeoutProvider() {
function urlResolve (line 20041) | function urlResolve(url) {
function urlIsSameOrigin (line 20075) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 20123) | function $WindowProvider() {
function $$CookieReader (line 20136) | function $$CookieReader($document) {
function $$CookieReaderProvider (line 20187) | function $$CookieReaderProvider() {
function $FilterProvider (line 20298) | function $FilterProvider($provide) {
function filterFilter (line 20494) | function filterFilter() {
function createPredicateFn (line 20531) | function createPredicateFn(expression, comparator, anyPropertyKey, match...
function deepCompare (line 20568) | function deepCompare(actual, expected, comparator, anyPropertyKey, match...
function getTypeForFilter (line 20617) | function getTypeForFilter(val) {
function currencyFilter (line 20678) | function currencyFilter($locale) {
function numberFilter (line 20752) | function numberFilter($locale) {
function parse (line 20777) | function parse(numStr) {
function roundNumber (line 20832) | function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
function formatNumber (line 20907) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 20973) | function padNumber(num, digits, trim, negWrap) {
function dateGetter (line 20992) | function dateGetter(name, size, offset, trim, negWrap) {
function dateStrGetter (line 21004) | function dateStrGetter(name, shortForm, standAlone) {
function timeZoneGetter (line 21014) | function timeZoneGetter(date, formats, offset) {
function getFirstThursdayOfYear (line 21024) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 21032) | function getThursdayThisWeek(datetime) {
function weekGetter (line 21038) | function weekGetter(size) {
function ampmGetter (line 21050) | function ampmGetter(date, formats) {
function eraGetter (line 21054) | function eraGetter(date, formats) {
function longEraGetter (line 21058) | function longEraGetter(date, formats) {
function dateFilter (line 21194) | function dateFilter($locale) {
function jsonFilter (line 21301) | function jsonFilter() {
function limitToFilter (line 21431) | function limitToFilter() {
function sliceFn (line 21458) | function sliceFn(input, begin, end) {
function orderByFilter (line 22015) | function orderByFilter($parse) {
function ngDirective (line 22158) | function ngDirective(directive) {
function defaultLinkFn (line 22549) | function defaultLinkFn(scope, element, attr) {
function nullFormRenameControl (line 22651) | function nullFormRenameControl(control, name) {
function FormController (line 22699) | function FormController(element, attrs, $scope, $animate, $interpolate) {
function getSetter (line 23175) | function getSetter(expression) {
function stringBasedInputType (line 24422) | function stringBasedInputType(ctrl) {
function textInputType (line 24428) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 24433) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 24543) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 24575) | function createDateParser(regexp, mapping) {
function createDateInputType (line 24625) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 24697) | function badInputChecker(scope, element, attr, ctrl) {
function numberFormatterParser (line 24708) | function numberFormatterParser(ctrl) {
function parseNumberAttrVal (line 24727) | function parseNumberAttrVal(val) {
function isNumberInteger (line 24734) | function isNumberInteger(num) {
function countDecimals (line 24742) | function countDecimals(num) {
function isValidForStep (line 24762) | function isValidForStep(viewValue, stepBase, step) {
function numberInputType (line 24781) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function rangeInputType (line 24814) | function rangeInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 24948) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 24961) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 24974) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 24998) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 25011) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function classDirective (line 25619) | function classDirective(name, selector) {
function processParseErrors (line 28241) | function processParseErrors() {
function processSyncValidators (line 28261) | function processSyncValidators() {
function processAsyncValidators (line 28277) | function processAsyncValidators() {
function setValidity (line 28303) | function setValidity(name, isValid) {
function validationDone (line 28309) | function validationDone(allValid) {
function writeToModelIfNeeded (line 28389) | function writeToModelIfNeeded() {
function addSetValidityMethod (line 28969) | function addSetValidityMethod(context) {
function isObjectEmpty (line 29063) | function isObjectEmpty(obj) {
function parseOptionsExpression (line 29358) | function parseOptionsExpression(optionsExp, selectElement, scope) {
function ngOptionsPostLink (line 29520) | function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
function updateElementText (line 30089) | function updateElementText(newText) {
function ngTranscludeCloneAttachFn (line 31542) | function ngTranscludeCloneAttachFn(clone, transcludedScope) {
function useFallbackContent (line 31553) | function useFallbackContent() {
function chromeHack (line 31617) | function chromeHack(optionElement) {
function selectPreLink (line 31980) | function selectPreLink(scope, element, attr, ctrls) {
function selectPostLink (line 32044) | function selectPostLink(scope, element, attrs, ctrls) {
function getDecimals (line 32474) | function getDecimals(n) {
function getVF (line 32480) | function getVF(n, opt_precision) {
FILE: test/angular/1.6/angular-animate.js
function assertArg (line 64) | function assertArg(arg, name, reason) {
function mergeClasses (line 71) | function mergeClasses(a,b) {
function packageStyles (line 80) | function packageStyles(options) {
function pendClasses (line 89) | function pendClasses(classes, fix, isPrefix) {
function removeFromArray (line 106) | function removeFromArray(arr, val) {
function stripCommentsFromElement (line 113) | function stripCommentsFromElement(element) {
function extractElementNode (line 138) | function extractElementNode(element) {
function $$addClass (line 148) | function $$addClass($$jqLite, element, className) {
function $$removeClass (line 154) | function $$removeClass($$jqLite, element, className) {
function applyAnimationClassesFactory (line 160) | function applyAnimationClassesFactory($$jqLite) {
function prepareAnimationOptions (line 173) | function prepareAnimationOptions(options) {
function applyAnimationStyles (line 187) | function applyAnimationStyles(element, options) {
function applyAnimationFromStyles (line 192) | function applyAnimationFromStyles(element, options) {
function applyAnimationToStyles (line 199) | function applyAnimationToStyles(element, options) {
function mergeAnimationDetails (line 206) | function mergeAnimationDetails(element, oldAnimation, newAnimation) {
function resolveElementClasses (line 247) | function resolveElementClasses(existing, toAdd, toRemove) {
function getDomNode (line 305) | function getDomNode(element) {
function applyGeneratedPreparationClasses (line 309) | function applyGeneratedPreparationClasses(element, event, options) {
function clearGeneratedClasses (line 326) | function clearGeneratedClasses(element, options) {
function blockTransitions (line 337) | function blockTransitions(node, duration) {
function blockKeyframeAnimations (line 346) | function blockKeyframeAnimations(node, applyBlock) {
function applyInlineStyle (line 353) | function applyInlineStyle(node, styleTuple) {
function concatWithSpace (line 359) | function concatWithSpace(a,b) {
function scheduler (line 368) | function scheduler(tasks) {
function nextTick (line 398) | function nextTick() {
function setData (line 505) | function setData(value) {
function getCssKeyframeDurationStyle (line 752) | function getCssKeyframeDurationStyle(duration) {
function getCssDelayStyle (line 756) | function getCssDelayStyle(delay, isKeyframeAnimation) {
function computeCssStyles (line 761) | function computeCssStyles($window, element, properties) {
function parseMaxTime (line 787) | function parseMaxTime(str) {
function truthyTimingValue (line 802) | function truthyTimingValue(val) {
function getCssTransitionDurationStyle (line 806) | function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
function createLocalCacheLookup (line 817) | function createLocalCacheLookup() {
function registerRestorableStyles (line 853) | function registerRestorableStyles(backup, node, properties) {
function gcsHashFn (line 873) | function gcsHashFn(node, extraClasses) {
function computeCachedCssStyles (line 880) | function computeCachedCssStyles(node, className, cacheKey, properties) {
function computeCachedCssStaggerStyles (line 896) | function computeCachedCssStaggerStyles(node, className, cacheKey, proper...
function waitUntilQuiet (line 926) | function waitUntilQuiet(callback) {
function computeTimings (line 945) | function computeTimings(node, className, cacheKey) {
function endFn (line 1215) | function endFn() {
function cancelFn (line 1219) | function cancelFn() {
function close (line 1223) | function close(rejected) {
function applyBlocking (line 1285) | function applyBlocking(duration) {
function closeAndReturnNoopAnimator (line 1295) | function closeAndReturnNoopAnimator() {
function onAnimationProgress (line 1314) | function onAnimationProgress(event) {
function start (line 1347) | function start() {
function isDocumentFragment (line 1535) | function isDocumentFragment(node) {
function filterCssClasses (line 1564) | function filterCssClasses(classes) {
function getUniqueValues (line 1569) | function getUniqueValues(a, b) {
function prepareAnchoredAnimation (line 1577) | function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
function prepareFromToAnchorAnimation (line 1704) | function prepareFromToAnchorAnimation(from, to, classes, anchors) {
function prepareRegularAnimation (line 1757) | function prepareRegularAnimation(animationDetails) {
function applyOptions (line 1852) | function applyOptions() {
function close (line 1857) | function close() {
function onComplete (line 1919) | function onComplete(success) {
function endAnimations (line 1924) | function endAnimations(cancelled) {
function executeAnimationFn (line 1933) | function executeAnimationFn(fn, element, event, options, onDone) {
function groupEventedAnimations (line 1976) | function groupEventedAnimations(element, event, options, animations, fnN...
function packageAnimations (line 2017) | function packageAnimations(element, event, options, animations, fnName) {
function lookupAnimations (line 2067) | function lookupAnimations(classes) {
function endFnFactory (line 2113) | function endFnFactory() {
function done (line 2122) | function done(status) {
function prepareAnimation (line 2132) | function prepareAnimation(animationDetails) {
function makeTruthyCssClassMap (line 2156) | function makeTruthyCssClassMap(classString) {
function hasMatchingClasses (line 2170) | function hasMatchingClasses(newClassString, currentClassString) {
function isAllowed (line 2179) | function isAllowed(ruleType, currentAnimation, previousAnimation) {
function hasAnimationClasses (line 2185) | function hasAnimationClasses(animation, and) {
function postDigestTaskFactory (line 2254) | function postDigestTaskFactory() {
function normalizeAnimationDetails (line 2317) | function normalizeAnimationDetails(element, animation) {
function findCallbacks (line 2327) | function findCallbacks(targetParentNode, targetNode, event) {
function filterFromRegistry (line 2343) | function filterFromRegistry(list, matchContainer, matchCallback) {
function cleanupEventListeners (line 2352) | function cleanupEventListeners(phase, node) {
function queueAnimation (line 2448) | function queueAnimation(originalElement, event, initialOptions) {
function closeChildAnimations (line 2730) | function closeChildAnimations(node) {
function clearElementAnimationState (line 2748) | function clearElementAnimationState(node) {
function areAnimationsAllowed (line 2760) | function areAnimationsAllowed(node, parentNode, event) {
function markElementAnimationState (line 2845) | function markElementAnimationState(node, state, details) {
function setRunner (line 2869) | function setRunner(element, runner) {
function removeRunner (line 2873) | function removeRunner(element) {
function getRunner (line 2877) | function getRunner(element) {
function sortAnimations (line 2887) | function sortAnimations(animations) {
function getAnchorNodes (line 3087) | function getAnchorNodes(node) {
function groupAnimations (line 3102) | function groupAnimations(animations) {
function cssClassesIntersection (line 3185) | function cssClassesIntersection(a,b) {
function invokeFirstDriver (line 3205) | function invokeFirstDriver(animationDetails) {
function beforeStart (line 3218) | function beforeStart() {
function updateAnimationRunners (line 3229) | function updateAnimationRunners(animation, newRunner) {
function handleDestroyedElement (line 3243) | function handleDestroyedElement() {
function close (line 3250) | function close(rejected) {
FILE: test/angular/1.6/angular-mocks.js
function concat (line 310) | function concat(array1, array2, index) {
function tick (line 490) | function tick() {
function jsonStringToDate (line 586) | function jsonStringToDate(string) {
function toInt (line 610) | function toInt(str) {
function padNumberInMock (line 614) | function padNumberInMock(num, digits, trim) {
function reflowFn (line 811) | function reflowFn() {
method reflows (line 889) | get reflows() {
function serialize (line 981) | function serialize(object) {
function serializeScope (line 1014) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1349) | function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
function assertArgDefined (line 1961) | function assertArgDefined(args, index, name) {
function MockHttpExpectation (line 1968) | function MockHttpExpectation(method, url, data, headers, keys) {
function createMockXhr (line 2073) | function createMockXhr() {
function MockXhr (line 2077) | function MockXhr() {
function formatPendingTasksAsString (line 2184) | function formatPendingTasksAsString(tasks) {
function createControllerDecorator (line 2304) | function createControllerDecorator(compileProvider) {
function countChildScopes (line 2778) | function countChildScopes() {
function countWatchers (line 2810) | function countWatchers() {
function workFn (line 2875) | function workFn() {
function WorkFn (line 3163) | function WorkFn() {
function workFn (line 3209) | function workFn() {
function InjectorState (line 3220) | function InjectorState() {
function pressed (line 3322) | function pressed(key) {
function supportsTouchEvents (line 3423) | function supportsTouchEvents() {
function createTouchEvent (line 3441) | function createTouchEvent(element, eventType, x, y) {
function supportsEventBubblingInDetachedTree (line 3454) | function supportsEventBubblingInDetachedTree() {
function triggerForPath (line 3474) | function triggerForPath(element, evnt) {
function patchEventTargetForBubbling (line 3489) | function patchEventTargetForBubbling(event, target) {
function isAttachedToDocument (line 3494) | function isAttachedToDocument(element) {
FILE: test/angular/1.6/angular.js
function errorHandlingConfig (line 39) | function errorHandlingConfig(config) {
function isValidObjectMaxDepth (line 54) | function isValidObjectMaxDepth(maxDepth) {
function minErr (line 88) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 348) | function isArrayLike(obj) {
function forEach (line 405) | function forEach(obj, iterator, context) {
function forEachSorted (line 447) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 461) | function reverseParams(iteratorFn) {
function nextUid (line 475) | function nextUid() {
function setHashKey (line 485) | function setHashKey(obj, h) {
function baseExtend (line 494) | function baseExtend(dst, objs, deep) {
function extend (line 546) | function extend(dst) {
function merge (line 583) | function merge(dst) {
function toInt (line 589) | function toInt(str) {
function inherit (line 599) | function inherit(parent, extra) {
function noop (line 619) | function noop() {}
function identity (line 651) | function identity($) {return $;}
function valueFn (line 655) | function valueFn(value) {return function valueRef() {return value;};}
function hasCustomToString (line 657) | function hasCustomToString(obj) {
function isUndefined (line 674) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 689) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 705) | function isObject(value) {
function isBlankObject (line 716) | function isBlankObject(value) {
function isString (line 733) | function isString(value) {return typeof value === 'string';}
function isNumber (line 754) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 769) | function isDate(value) {
function isError (line 796) | function isError(value) {
function isFunction (line 818) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 828) | function isRegExp(value) {
function isWindow (line 840) | function isWindow(obj) {
function isScope (line 845) | function isScope(obj) {
function isFile (line 850) | function isFile(obj) {
function isFormData (line 855) | function isFormData(obj) {
function isBlob (line 860) | function isBlob(obj) {
function isBoolean (line 865) | function isBoolean(value) {
function isPromiseLike (line 870) | function isPromiseLike(obj) {
function isTypedArray (line 876) | function isTypedArray(value) {
function isArrayBuffer (line 880) | function isArrayBuffer(obj) {
function isElement (line 912) | function isElement(node) {
function makeMap (line 922) | function makeMap(str) {
function nodeName_ (line 931) | function nodeName_(element) {
function includes (line 935) | function includes(array, obj) {
function arrayRemove (line 939) | function arrayRemove(array, value) {
function copy (line 1012) | function copy(source, destination, maxDepth) {
function simpleCompare (line 1159) | function simpleCompare(a, b) { return a === b || (a !== a && b !== b); }
function equals (line 1225) | function equals(o1, o2) {
function noUnsafeEval (line 1291) | function noUnsafeEval() {
function concat (line 1356) | function concat(array1, array2, index) {
function sliceArgs (line 1360) | function sliceArgs(args, startIndex) {
function bind (line 1382) | function bind(self, fn) {
function toJsonReplacer (line 1403) | function toJsonReplacer(key, value) {
function toJson (line 1456) | function toJson(obj, pretty) {
function fromJson (line 1477) | function fromJson(json) {
function timezoneToOffset (line 1485) | function timezoneToOffset(timezone, fallback) {
function addDateMinutes (line 1494) | function addDateMinutes(date, minutes) {
function convertTimezoneToLocal (line 1501) | function convertTimezoneToLocal(date, timezone, reverse) {
function startingTag (line 1512) | function startingTag(element) {
function tryDecodeURIComponent (line 1537) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1550) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1577) | function toKeyValue(obj) {
function encodeUriSegment (line 1605) | function encodeUriSegment(val) {
function encodeUriQuery (line 1624) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 1636) | function getNgAttribute(element, ngAttr) {
function allowAutoBootstrap (line 1647) | function allowAutoBootstrap(document) {
function angularInit (line 1841) | function angularInit(element, bootstrap) {
function bootstrap (line 1934) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 2012) | function reloadWithDebugInfo() {
function getTestability (line 2025) | function getTestability(rootElement) {
function snake_case (line 2035) | function snake_case(name, separator) {
function bindJQuery (line 2043) | function bindJQuery() {
function assertArg (line 2097) | function assertArg(arg, name, reason) {
function assertArgFn (line 2104) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 2119) | function assertNotHasOwnProperty(name, context) {
function getter (line 2133) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 2157) | function getBlockNodes(nodes) {
function createMap (line 2187) | function createMap() {
function stringify (line 2191) | function stringify(value) {
function setupModuleLoader (line 2228) | function setupModuleLoader(window) {
function shallowCopy (line 2637) | function shallowCopy(src, dst) {
function serializeObject (line 2659) | function serializeObject(obj, maxDepth) {
function toDebugString (line 2682) | function toDebugString(obj, maxDepth) {
function publishExternalAPI (line 2817) | function publishExternalAPI(angular) {
function jqNextId (line 3096) | function jqNextId() { return ++jqId; }
function cssKebabToCamel (line 3109) | function cssKebabToCamel(name) {
function fnCamelCaseReplace (line 3113) | function fnCamelCaseReplace(all, letter) {
function kebabToCamel (line 3121) | function kebabToCamel(name) {
function jqLiteIsTextNode (line 3146) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 3150) | function jqLiteAcceptsData(node) {
function jqLiteHasData (line 3157) | function jqLiteHasData(node) {
function jqLiteBuildFragment (line 3164) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 3201) | function jqLiteParseHTML(html, context) {
function jqLiteWrapNode (line 3216) | function jqLiteWrapNode(node, wrapper) {
function JQLite (line 3234) | function JQLite(element) {
function jqLiteClone (line 3261) | function jqLiteClone(element) {
function jqLiteDealoc (line 3265) | function jqLiteDealoc(element, onlyDescendants) {
function jqLiteOff (line 3273) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 3311) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 3333) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 3346) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 3375) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 3381) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 3398) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 3418) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 3444) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 3448) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 3468) | function jqLiteEmpty(element) {
function jqLiteRemove (line 3475) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 3482) | function jqLiteDocumentLoaded(action, win) {
function jqLiteReady (line 3495) | function jqLiteReady(fn) {
function getBooleanAttrName (line 3559) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 3567) | function getAliasedAttrName(name) {
function getText (line 3664) | function getText(element, value) {
function createEventHandler (line 3749) | function createEventHandler(element, events) {
function defaultHandlerWrapper (line 3801) | function defaultHandlerWrapper(element, event, handler) {
function specialMouseHandlerWrapper (line 3805) | function specialMouseHandlerWrapper(target, event, handler) {
function $$jqLiteProvider (line 4056) | function $$jqLiteProvider() {
function hashKey (line 4087) | function hashKey(obj, nextUidFn) {
function NgMapShim (line 4112) | function NgMapShim() {
function stringifyFn (line 4244) | function stringifyFn(fn) {
function extractArgs (line 4248) | function extractArgs(fn) {
function anonFn (line 4254) | function anonFn(fn) {
function annotate (line 4264) | function annotate(fn, strictDi, name) {
function createInjector (line 4877) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 5159) | function $AnchorScrollProvider() {
function mergeClasses (line 5427) | function mergeClasses(a,b) {
function extractElementNode (line 5436) | function extractElementNode(element) {
function splitClasses (line 5445) | function splitClasses(classes) {
function prepareAnimateOptions (line 5470) | function prepareAnimateOptions(options) {
function updateData (line 5521) | function updateData(data, classes, value) {
function handleCSSClassChanges (line 5536) | function handleCSSClassChanges() {
function addRemoveClassesPostDigest (line 5569) | function addRemoveClassesPostDigest(element, add, remove) {
function domInsert (line 5735) | function domInsert(element, parentElement, afterElement) {
function waitForTick (line 6135) | function waitForTick(fn) {
function next (line 6174) | function next() {
function onProgress (line 6198) | function onProgress(response) {
function AnimateRunner (line 6206) | function AnimateRunner(host) {
function run (line 6364) | function run() {
function applyAnimationContents (line 6375) | function applyAnimationContents() {
function Browser (line 6416) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 6748) | function $BrowserProvider() {
function $CacheFactoryProvider (line 6837) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 7156) | function $TemplateCacheProvider() {
function UNINITIALIZED_VALUE (line 8179) | function UNINITIALIZED_VALUE() {}
function $CompileProvider (line 8190) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function SimpleChange (line 10868) | function SimpleChange(previous, current) {
function directiveNormalize (line 10882) | function directiveNormalize(name) {
function nodesetLinkingFn (line 10935) | function nodesetLinkingFn(
function directiveLinkingFn (line 10942) | function directiveLinkingFn(
function tokenDifference (line 10950) | function tokenDifference(str1, str2) {
function removeComments (line 10966) | function removeComments(jqNodes) {
function identifierForController (line 10988) | function identifierForController(controller, ident) {
function $ControllerProvider (line 11009) | function $ControllerProvider() {
function $DocumentProvider (line 11201) | function $DocumentProvider() {
function $$IsDocumentHiddenProvider (line 11213) | function $$IsDocumentHiddenProvider() {
function $ExceptionHandlerProvider (line 11278) | function $ExceptionHandlerProvider() {
function serializeValue (line 11319) | function serializeValue(v) {
function $HttpParamSerializerProvider (line 11328) | function $HttpParamSerializerProvider() {
function $HttpParamSerializerJQLikeProvider (line 11366) | function $HttpParamSerializerJQLikeProvider() {
function defaultHttpResponseTransform (line 11439) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 11465) | function isJsonLike(str) {
function parseHeaders (line 11476) | function parseHeaders(headers) {
function headersGetter (line 11512) | function headersGetter(headers) {
function transformData (line 11542) | function transformData(data, headers, status, fns) {
function isSuccess (line 11555) | function isSuccess(status) {
function $HttpProvider (line 11568) | function $HttpProvider() {
function $xhrFactoryProvider (line 12863) | function $xhrFactoryProvider() {
function $HttpBackendProvider (line 12889) | function $HttpBackendProvider() {
function createHttpBackend (line 12895) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 13130) | function $InterpolateProvider() {
function $IntervalProvider (line 13461) | function $IntervalProvider() {
function createCallback (line 13677) | function createCallback(callbackId) {
function encodePath (line 13766) | function encodePath(path) {
function decodePath (line 13778) | function decodePath(path, html5Mode) {
function parseAbsoluteUrl (line 13793) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 13802) | function parseAppUrl(url, locationObj, html5Mode) {
function startsWith (line 13824) | function startsWith(str, search) {
function stripBaseUrl (line 13835) | function stripBaseUrl(base, url) {
function stripHash (line 13842) | function stripHash(url) {
function trimEmptyHash (line 13847) | function trimEmptyHash(url) {
function stripFile (line 13852) | function stripFile(url) {
function serverBase (line 13857) | function serverBase(url) {
function LocationHtml5Url (line 13871) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 13953) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 14067) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 14440) | function locationGetter(property) {
function locationGetterSetter (line 14447) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 14495) | function $LocationProvider() {
function $LogProvider (line 14851) | function $LogProvider() {
function getStringValue (line 14997) | function getStringValue(name) {
function ifDefined (line 15574) | function ifDefined(v, d) {
function plusFn (line 15578) | function plusFn(l, r) {
function isStateless (line 15584) | function isStateless($filter, filterName) {
function isPure (line 15593) | function isPure(node, parentIsPure) {
function findConstantAndWatchExpressions (line 15618) | function findConstantAndWatchExpressions(ast, $filter, parentIsPure) {
function getInputs (line 15731) | function getInputs(body) {
function isAssignable (line 15739) | function isAssignable(ast) {
function assignableAST (line 15743) | function assignableAST(ast) {
function isLiteral (line 15749) | function isLiteral(ast) {
function isConstant (line 15757) | function isConstant(ast) {
function ASTCompiler (line 15761) | function ASTCompiler($filter) {
function ASTInterpreter (line 16227) | function ASTInterpreter($filter) {
function Parser (line 16601) | function Parser(lexer, $filter, options) {
function getValueOf (line 16634) | function getValueOf(value) {
function $ParseProvider (line 16690) | function $ParseProvider() {
function $QProvider (line 17198) | function $QProvider() {
function $$QProvider (line 17230) | function $$QProvider() {
function qFactory (line 17258) | function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
function isStateExceptionHandled (line 17650) | function isStateExceptionHandled(state) {
function markQStateExceptionHandled (line 17653) | function markQStateExceptionHandled(state) {
function markQExceptionHandled (line 17656) | function markQExceptionHandled(q) {
function $$RAFProvider (line 17661) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 17760) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 19234) | function $$SanitizeUriProvider() {
function snakeToCamel (line 19338) | function snakeToCamel(name) {
function adjustMatcher (line 19343) | function adjustMatcher(matcher) {
function adjustMatchers (line 19371) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 19472) | function $SceDelegateProvider() {
function $SceProvider (line 20038) | function $SceProvider() {
function $SnifferProvider (line 20464) | function $SnifferProvider() {
function $TemplateRequestProvider (line 20543) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 20654) | function $$TestabilityProvider() {
function $TimeoutProvider (line 20770) | function $TimeoutProvider() {
function urlResolve (line 20923) | function urlResolve(url) {
function urlIsSameOrigin (line 20961) | function urlIsSameOrigin(requestUrl) {
function urlIsAllowedOriginFactory (line 20974) | function urlIsAllowedOriginFactory(whitelistedOriginUrls) {
function urlsAreSameOrigin (line 21003) | function urlsAreSameOrigin(url1, url2) {
function $WindowProvider (line 21053) | function $WindowProvider() {
function $$CookieReader (line 21066) | function $$CookieReader($document) {
function $$CookieReaderProvider (line 21117) | function $$CookieReaderProvider() {
function $FilterProvider (line 21228) | function $FilterProvider($provide) {
function filterFilter (line 21428) | function filterFilter() {
function createPredicateFn (line 21465) | function createPredicateFn(expression, comparator, anyPropertyKey, match...
function deepCompare (line 21502) | function deepCompare(actual, expected, comparator, anyPropertyKey, match...
function getTypeForFilter (line 21554) | function getTypeForFilter(val) {
function currencyFilter (line 21615) | function currencyFilter($locale) {
function numberFilter (line 21692) | function numberFilter($locale) {
function parse (line 21717) | function parse(numStr) {
function roundNumber (line 21772) | function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
function formatNumber (line 21847) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 21913) | function padNumber(num, digits, trim, negWrap) {
function dateGetter (line 21932) | function dateGetter(name, size, offset, trim, negWrap) {
function dateStrGetter (line 21944) | function dateStrGetter(name, shortForm, standAlone) {
function timeZoneGetter (line 21954) | function timeZoneGetter(date, formats, offset) {
function getFirstThursdayOfYear (line 21964) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 21972) | function getThursdayThisWeek(datetime) {
function weekGetter (line 21978) | function weekGetter(size) {
function ampmGetter (line 21990) | function ampmGetter(date, formats) {
function eraGetter (line 21994) | function eraGetter(date, formats) {
function longEraGetter (line 21998) | function longEraGetter(date, formats) {
function dateFilter (line 22136) | function dateFilter($locale) {
function jsonFilter (line 22243) | function jsonFilter() {
function limitToFilter (line 22392) | function limitToFilter() {
function sliceFn (line 22419) | function sliceFn(input, begin, end) {
function orderByFilter (line 22979) | function orderByFilter($parse) {
function ngDirective (line 23122) | function ngDirective(directive) {
function defaultLinkFn (line 23519) | function defaultLinkFn(scope, element, attr) {
function nullFormRenameControl (line 23623) | function nullFormRenameControl(control, name) {
function FormController (line 23677) | function FormController($element, $attrs, $scope, $animate, $interpolate) {
function getSetter (line 24173) | function getSetter(expression) {
function setupValidity (line 24189) | function setupValidity(instance) {
function addSetValidityMethod (line 24193) | function addSetValidityMethod(context) {
function isObjectEmpty (line 24280) | function isObjectEmpty(obj) {
function stringBasedInputType (line 25538) | function stringBasedInputType(ctrl) {
function textInputType (line 25544) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 25549) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 25669) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 25701) | function createDateParser(regexp, mapping) {
function createDateInputType (line 25751) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 25840) | function badInputChecker(scope, element, attr, ctrl) {
function numberFormatterParser (line 25851) | function numberFormatterParser(ctrl) {
function parseNumberAttrVal (line 25870) | function parseNumberAttrVal(val) {
function isNumberInteger (line 25877) | function isNumberInteger(num) {
function countDecimals (line 25885) | function countDecimals(num) {
function isValidForStep (line 25905) | function isValidForStep(viewValue, stepBase, step) {
function numberInputType (line 25936) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function rangeInputType (line 25983) | function rangeInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 26117) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 26130) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 26143) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 26174) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 26187) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function updateElementValue (line 26488) | function updateElementValue(element, attr, value) {
function classDirective (line 26807) | function classDirective(name, selector) {
function NgModelController (line 29282) | function NgModelController($scope, $exceptionHandler, $attr, $element, $...
function processParseErrors (line 29644) | function processParseErrors() {
function processSyncValidators (line 29664) | function processSyncValidators() {
function processAsyncValidators (line 29680) | function processAsyncValidators() {
function setValidity (line 29706) | function setValidity(name, isValid) {
function validationDone (line 29712) | function validationDone(allValid) {
function writeToModelIfNeeded (line 29794) | function writeToModelIfNeeded() {
function setupModelWatcher (line 30092) | function setupModelWatcher(ctrl) {
function setTouched (line 30382) | function setTouched() {
function ModelOptions (line 30411) | function ModelOptions(options) {
function NgModelOptionsController (line 30763) | function NgModelOptionsController($attrs, $scope) {
function defaults (line 30788) | function defaults(dst, src) {
function parseOptionsExpression (line 31079) | function parseOptionsExpression(optionsExp, selectElement, scope) {
function ngOptionsPostLink (line 31242) | function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
function updateElementText (line 31777) | function updateElementText(newText) {
function ngTranscludeCloneAttachFn (line 33356) | function ngTranscludeCloneAttachFn(clone, transcludedScope) {
function useFallbackContent (line 33367) | function useFallbackContent() {
function notWhitespace (line 33375) | function notWhitespace(nodes) {
function setOptionSelectedStatus (line 33440) | function setOptionSelectedStatus(optionEl, value) {
function scheduleRender (line 33790) | function scheduleRender() {
function scheduleViewValueUpdate (line 33800) | function scheduleViewValueUpdate(renderAfter) {
function selectPreLink (line 34200) | function selectPreLink(scope, element, attr, ctrls) {
function selectPostLink (line 34285) | function selectPostLink(scope, element, attrs, ctrls) {
function getDecimals (line 34733) | function getDecimals(n) {
function getVF (line 34739) | function getVF(n, opt_precision) {
FILE: test/angular/1.7/angular-animate.js
function assertArg (line 64) | function assertArg(arg, name, reason) {
function mergeClasses (line 71) | function mergeClasses(a,b) {
function packageStyles (line 80) | function packageStyles(options) {
function pendClasses (line 89) | function pendClasses(classes, fix, isPrefix) {
function removeFromArray (line 106) | function removeFromArray(arr, val) {
function stripCommentsFromElement (line 113) | function stripCommentsFromElement(element) {
function extractElementNode (line 138) | function extractElementNode(element) {
function $$addClass (line 148) | function $$addClass($$jqLite, element, className) {
function $$removeClass (line 154) | function $$removeClass($$jqLite, element, className) {
function applyAnimationClassesFactory (line 160) | function applyAnimationClassesFactory($$jqLite) {
function prepareAnimationOptions (line 173) | function prepareAnimationOptions(options) {
function applyAnimationStyles (line 187) | function applyAnimationStyles(element, options) {
function applyAnimationFromStyles (line 192) | function applyAnimationFromStyles(element, options) {
function applyAnimationToStyles (line 199) | function applyAnimationToStyles(element, options) {
function mergeAnimationDetails (line 206) | function mergeAnimationDetails(element, oldAnimation, newAnimation) {
function resolveElementClasses (line 247) | function resolveElementClasses(existing, toAdd, toRemove) {
function getDomNode (line 305) | function getDomNode(element) {
function applyGeneratedPreparationClasses (line 309) | function applyGeneratedPreparationClasses($$jqLite, element, event, opti...
function clearGeneratedClasses (line 326) | function clearGeneratedClasses(element, options) {
function blockKeyframeAnimations (line 337) | function blockKeyframeAnimations(node, applyBlock) {
function applyInlineStyle (line 344) | function applyInlineStyle(node, styleTuple) {
function concatWithSpace (line 350) | function concatWithSpace(a,b) {
function scheduler (line 370) | function scheduler(tasks) {
function nextTick (line 400) | function nextTick() {
function setData (line 507) | function setData(value) {
function getCssKeyframeDurationStyle (line 754) | function getCssKeyframeDurationStyle(duration) {
function getCssDelayStyle (line 758) | function getCssDelayStyle(delay, isKeyframeAnimation) {
function computeCssStyles (line 763) | function computeCssStyles($window, element, properties) {
function parseMaxTime (line 789) | function parseMaxTime(str) {
function truthyTimingValue (line 804) | function truthyTimingValue(val) {
function getCssTransitionDurationStyle (line 808) | function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
function registerRestorableStyles (line 828) | function registerRestorableStyles(backup, node, properties) {
function computeCachedCssStyles (line 845) | function computeCachedCssStyles(node, className, cacheKey, allowNoDurati...
function computeCachedCssStaggerStyles (line 866) | function computeCachedCssStaggerStyles(node, className, cacheKey, proper...
function waitUntilQuiet (line 897) | function waitUntilQuiet(callback) {
function computeTimings (line 915) | function computeTimings(node, className, cacheKey, allowNoDuration) {
function endFn (line 1190) | function endFn() {
function cancelFn (line 1194) | function cancelFn() {
function close (line 1198) | function close(rejected) {
function applyBlocking (line 1263) | function applyBlocking(duration) {
function closeAndReturnNoopAnimator (line 1273) | function closeAndReturnNoopAnimator() {
function onAnimationProgress (line 1292) | function onAnimationProgress(event) {
function start (line 1325) | function start() {
function isDocumentFragment (line 1513) | function isDocumentFragment(node) {
function filterCssClasses (line 1542) | function filterCssClasses(classes) {
function getUniqueValues (line 1547) | function getUniqueValues(a, b) {
function prepareAnchoredAnimation (line 1555) | function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
function prepareFromToAnchorAnimation (line 1682) | function prepareFromToAnchorAnimation(from, to, classes, anchors) {
function prepareRegularAnimation (line 1735) | function prepareRegularAnimation(animationDetails) {
function applyOptions (line 1830) | function applyOptions() {
function close (line 1835) | function close() {
function onComplete (line 1897) | function onComplete(success) {
function endAnimations (line 1902) | function endAnimations(cancelled) {
function executeAnimationFn (line 1911) | function executeAnimationFn(fn, element, event, options, onDone) {
function groupEventedAnimations (line 1954) | function groupEventedAnimations(element, event, options, animations, fnN...
function packageAnimations (line 1995) | function packageAnimations(element, event, options, animations, fnName) {
function lookupAnimations (line 2045) | function lookupAnimations(classes) {
function endFnFactory (line 2091) | function endFnFactory() {
function done (line 2100) | function done(status) {
function prepareAnimation (line 2110) | function prepareAnimation(animationDetails) {
function getEventData (line 2134) | function getEventData(options) {
function makeTruthyCssClassMap (line 2143) | function makeTruthyCssClassMap(classString) {
function hasMatchingClasses (line 2157) | function hasMatchingClasses(newClassString, currentClassString) {
function isAllowed (line 2166) | function isAllowed(ruleType, currentAnimation, previousAnimation) {
function hasAnimationClasses (line 2172) | function hasAnimationClasses(animation, and) {
function removeFromDisabledElementsLookup (line 2241) | function removeFromDisabledElementsLookup(evt) {
function postDigestTaskFactory (line 2245) | function postDigestTaskFactory() {
function normalizeAnimationDetails (line 2308) | function normalizeAnimationDetails(element, animation) {
function findCallbacks (line 2318) | function findCallbacks(targetParentNode, targetNode, event) {
function filterFromRegistry (line 2334) | function filterFromRegistry(list, matchContainer, matchCallback) {
function cleanupEventListeners (line 2343) | function cleanupEventListeners(phase, node) {
function queueAnimation (line 2444) | function queueAnimation(originalElement, event, initialOptions) {
function closeChildAnimations (line 2726) | function closeChildAnimations(node) {
function clearElementAnimationState (line 2744) | function clearElementAnimationState(node) {
function areAnimationsAllowed (line 2756) | function areAnimationsAllowed(node, parentNode, event) {
function markElementAnimationState (line 2841) | function markElementAnimationState(node, state, details) {
function setRunner (line 2922) | function setRunner(element, runner) {
function removeRunner (line 2926) | function removeRunner(element) {
function getRunner (line 2930) | function getRunner(element) {
function sortAnimations (line 2940) | function sortAnimations(animations) {
function getAnchorNodes (line 3179) | function getAnchorNodes(node) {
function groupAnimations (line 3194) | function groupAnimations(animations) {
function cssClassesIntersection (line 3277) | function cssClassesIntersection(a,b) {
function invokeFirstDriver (line 3297) | function invokeFirstDriver(animationDetails) {
function beforeStart (line 3310) | function beforeStart() {
function updateAnimationRunners (line 3321) | function updateAnimationRunners(animation, newRunner) {
function handleDestroyedElement (line 3335) | function handleDestroyedElement() {
function close (line 3342) | function close(rejected) {
FILE: test/angular/1.7/angular-mocks.js
function routeToRegExp (line 24) | function routeToRegExp(path, opts) {
function concat (line 482) | function concat(array1, array2, index) {
function jsonStringToDate (line 734) | function jsonStringToDate(string) {
function toInt (line 758) | function toInt(str) {
function padNumberInMock (line 762) | function padNumberInMock(num, digits, trim) {
function reflowFn (line 959) | function reflowFn() {
method reflows (line 1037) | get reflows() {
function serialize (line 1129) | function serialize(object) {
function serializeScope (line 1162) | function serializeScope(scope, offset) {
function createHttpBackendMock (line 1497) | function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {
function assertArgDefined (line 2149) | function assertArgDefined(args, index, name) {
function stripQueryAndHash (line 2155) | function stripQueryAndHash(url) {
function MockHttpExpectation (line 2159) | function MockHttpExpectation(expectedMethod, expectedUrl, expectedData, ...
function createMockXhr (line 2275) | function createMockXhr() {
function MockXhr (line 2279) | function MockXhr() {
function createControllerDecorator (line 2546) | function createControllerDecorator() {
function countChildScopes (line 3046) | function countChildScopes() {
function countWatchers (line 3078) | function countWatchers() {
function workFn (line 3143) | function workFn() {
function WorkFn (line 3431) | function WorkFn() {
function workFn (line 3477) | function workFn() {
function InjectorState (line 3488) | function InjectorState() {
function pressed (line 3593) | function pressed(key) {
function supportsTouchEvents (line 3675) | function supportsTouchEvents() {
function createTouchEvent (line 3693) | function createTouchEvent(element, eventType, x, y) {
function supportsEventBubblingInDetachedTree (line 3706) | function supportsEventBubblingInDetachedTree() {
function triggerForPath (line 3726) | function triggerForPath(element, evnt) {
function patchEventTargetForBubbling (line 3741) | function patchEventTargetForBubbling(event, target) {
function isAttachedToDocument (line 3746) | function isAttachedToDocument(element) {
FILE: test/angular/1.7/angular.js
function errorHandlingConfig (line 46) | function errorHandlingConfig(config) {
function isValidObjectMaxDepth (line 64) | function isValidObjectMaxDepth(maxDepth) {
function minErr (line 99) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 318) | function isArrayLike(obj) {
function forEach (line 374) | function forEach(obj, iterator, context) {
function forEachSorted (line 416) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 430) | function reverseParams(iteratorFn) {
function nextUid (line 444) | function nextUid() {
function setHashKey (line 454) | function setHashKey(obj, h) {
function baseExtend (line 463) | function baseExtend(dst, objs, deep) {
function extend (line 517) | function extend(dst) {
function merge (line 556) | function merge(dst) {
function toInt (line 562) | function toInt(str) {
function inherit (line 572) | function inherit(parent, extra) {
function noop (line 592) | function noop() {}
function identity (line 624) | function identity($) {return $;}
function valueFn (line 628) | function valueFn(value) {return function valueRef() {return value;};}
function hasCustomToString (line 630) | function hasCustomToString(obj) {
function isUndefined (line 647) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 662) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 678) | function isObject(value) {
function isBlankObject (line 689) | function isBlankObject(value) {
function isString (line 706) | function isString(value) {return typeof value === 'string';}
function isNumber (line 727) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 742) | function isDate(value) {
function isArray (line 759) | function isArray(arr) {
function isError (line 771) | function isError(value) {
function isFunction (line 793) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 803) | function isRegExp(value) {
function isWindow (line 815) | function isWindow(obj) {
function isScope (line 820) | function isScope(obj) {
function isFile (line 825) | function isFile(obj) {
function isFormData (line 830) | function isFormData(obj) {
function isBlob (line 835) | function isBlob(obj) {
function isBoolean (line 840) | function isBoolean(value) {
function isPromiseLike (line 845) | function isPromiseLike(obj) {
function isTypedArray (line 851) | function isTypedArray(value) {
function isArrayBuffer (line 855) | function isArrayBuffer(obj) {
function isElement (line 887) | function isElement(node) {
function makeMap (line 897) | function makeMap(str) {
function nodeName_ (line 906) | function nodeName_(element) {
function includes (line 910) | function includes(array, obj) {
function arrayRemove (line 914) | function arrayRemove(array, value) {
function copy (line 1009) | function copy(source, destination, maxDepth) {
function simpleCompare (line 1156) | function simpleCompare(a, b) { return a === b || (a !== a && b !== b); }
function equals (line 1222) | function equals(o1, o2) {
function noUnsafeEval (line 1288) | function noUnsafeEval() {
function concat (line 1353) | function concat(array1, array2, index) {
function sliceArgs (line 1357) | function sliceArgs(args, startIndex) {
function bind (line 1379) | function bind(self, fn) {
function toJsonReplacer (line 1400) | function toJsonReplacer(key, value) {
function toJson (line 1453) | function toJson(obj, pretty) {
function fromJson (line 1474) | function fromJson(json) {
function timezoneToOffset (line 1482) | function timezoneToOffset(timezone, fallback) {
function addDateMinutes (line 1491) | function addDateMinutes(date, minutes) {
function convertTimezoneToLocal (line 1498) | function convertTimezoneToLocal(date, timezone, reverse) {
function startingTag (line 1509) | function startingTag(element) {
function tryDecodeURIComponent (line 1534) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1547) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1574) | function toKeyValue(obj) {
function encodeUriSegment (line 1602) | function encodeUriSegment(val) {
function encodeUriQuery (line 1621) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 1633) | function getNgAttribute(element, ngAttr) {
function allowAutoBootstrap (line 1644) | function allowAutoBootstrap(document) {
function angularInit (line 1838) | function angularInit(element, bootstrap) {
function bootstrap (line 1931) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 2009) | function reloadWithDebugInfo() {
function getTestability (line 2022) | function getTestability(rootElement) {
function snake_case (line 2032) | function snake_case(name, separator) {
function bindJQuery (line 2040) | function bindJQuery() {
function assertArg (line 2094) | function assertArg(arg, name, reason) {
function assertArgFn (line 2101) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 2116) | function assertNotHasOwnProperty(name, context) {
function getter (line 2130) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 2154) | function getBlockNodes(nodes) {
function createMap (line 2184) | function createMap() {
function stringify (line 2188) | function stringify(value) {
function setupModuleLoader (line 2225) | function setupModuleLoader(window) {
function shallowCopy (line 2635) | function shallowCopy(src, dst) {
function serializeObject (line 2657) | function serializeObject(obj, maxDepth) {
function toDebugString (line 2680) | function toDebugString(obj, maxDepth) {
function publishExternalAPI (line 2818) | function publishExternalAPI(angular) {
function jqNextId (line 3101) | function jqNextId() { return ++jqId; }
function cssKebabToCamel (line 3114) | function cssKebabToCamel(name) {
function fnCamelCaseReplace (line 3118) | function fnCamelCaseReplace(all, letter) {
function kebabToCamel (line 3126) | function kebabToCamel(name) {
function jqLiteIsTextNode (line 3151) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 3155) | function jqLiteAcceptsData(node) {
function jqLiteHasData (line 3162) | function jqLiteHasData(node) {
function jqLiteBuildFragment (line 3169) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 3206) | function jqLiteParseHTML(html, context) {
function jqLiteWrapNode (line 3221) | function jqLiteWrapNode(node, wrapper) {
function JQLite (line 3239) | function JQLite(element) {
function jqLiteClone (line 3266) | function jqLiteClone(element) {
function jqLiteDealoc (line 3270) | function jqLiteDealoc(element, onlyDescendants) {
function isEmptyObject (line 3278) | function isEmptyObject(obj) {
function removeIfEmptyData (line 3287) | function removeIfEmptyData(element) {
function jqLiteOff (line 3300) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 3340) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 3356) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 3369) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 3398) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 3404) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 3421) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 3441) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 3467) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 3471) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 3491) | function jqLiteEmpty(element) {
function jqLiteRemove (line 3498) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 3505) | function jqLiteDocumentLoaded(action, win) {
function jqLiteReady (line 3518) | function jqLiteReady(fn) {
function getBooleanAttrName (line 3582) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 3590) | function getAliasedAttrName(name) {
function getText (line 3688) | function getText(element, value) {
function createEventHandler (line 3773) | function createEventHandler(element, events) {
function defaultHandlerWrapper (line 3825) | function defaultHandlerWrapper(element, event, handler) {
function specialMouseHandlerWrapper (line 3829) | function specialMouseHandlerWrapper(target, event, handler) {
function $$jqLiteProvider (line 4080) | function $$jqLiteProvider() {
function hashKey (line 4111) | function hashKey(obj, nextUidFn) {
function NgMapShim (line 4136) | function NgMapShim() {
function stringifyFn (line 4272) | function stringifyFn(fn) {
function extractArgs (line 4276) | function extractArgs(fn) {
function anonFn (line 4282) | function anonFn(fn) {
function annotate (line 4292) | function annotate(fn, strictDi, name) {
function createInjector (line 4905) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 5185) | function $AnchorScrollProvider() {
function mergeClasses (line 5453) | function mergeClasses(a,b) {
function extractElementNode (line 5462) | function extractElementNode(element) {
function splitClasses (line 5471) | function splitClasses(classes) {
function prepareAnimateOptions (line 5496) | function prepareAnimateOptions(options) {
function updateData (line 5547) | function updateData(data, classes, value) {
function handleCSSClassChanges (line 5562) | function handleCSSClassChanges() {
function addRemoveClassesPostDigest (line 5595) | function addRemoveClassesPostDigest(element, add, remove) {
function domInsert (line 5761) | function domInsert(element, parentElement, afterElement) {
function waitForTick (line 6248) | function waitForTick(fn) {
function next (line 6287) | function next() {
function onProgress (line 6311) | function onProgress(response) {
function AnimateRunner (line 6319) | function AnimateRunner(host) {
function run (line 6477) | function run() {
function applyAnimationContents (line 6488) | function applyAnimationContents() {
function getHash (line 6508) | function getHash(url) {
function trimEmptyHash (line 6513) | function trimEmptyHash(url) {
function Browser (line 6538) | function Browser(window, document, $log, $sniffer, $$taskTrackerFactory) {
function $BrowserProvider (line 6846) | function $BrowserProvider() {
function $CacheFactoryProvider (line 6935) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 7254) | function $TemplateCacheProvider() {
function UNINITIALIZED_VALUE (line 8626) | function UNINITIALIZED_VALUE() {}
function $CompileProvider (line 8637) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function SimpleChange (line 11455) | function SimpleChange(previous, current) {
function directiveNormalize (line 11469) | function directiveNormalize(name) {
function nodesetLinkingFn (line 11522) | function nodesetLinkingFn(
function directiveLinkingFn (line 11529) | function directiveLinkingFn(
function tokenDifference (line 11537) | function tokenDifference(str1, str2) {
function removeComments (line 11553) | function removeComments(jqNodes) {
function identifierForController (line 11575) | function identifierForController(controller, ident) {
function $ControllerProvider (line 11596) | function $ControllerProvider() {
function $DocumentProvider (line 11769) | function $DocumentProvider() {
function $$IsDocumentHiddenProvider (line 11781) | function $$IsDocumentHiddenProvider() {
function $ExceptionHandlerProvider (line 11846) | function $ExceptionHandlerProvider() {
function serializeValue (line 11887) | function serializeValue(v) {
function $HttpParamSerializerProvider (line 11896) | function $HttpParamSerializerProvider() {
function $HttpParamSerializerJQLikeProvider (line 11934) | function $HttpParamSerializerJQLikeProvider() {
function defaultHttpResponseTransform (line 12010) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 12036) | function isJsonLike(str) {
function parseHeaders (line 12047) | function parseHeaders(headers) {
function headersGetter (line 12083) | function headersGetter(headers) {
function transformData (line 12113) | function transformData(data, headers, status, fns) {
function isSuccess (line 12126) | function isSuccess(status) {
function $HttpProvider (line 12139) | function $HttpProvider() {
function $xhrFactoryProvider (line 13434) | function $xhrFactoryProvider() {
function $HttpBackendProvider (line 13460) | function $HttpBackendProvider() {
function createHttpBackend (line 13466) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 13701) | function $InterpolateProvider() {
function $IntervalProvider (line 14057) | function $IntervalProvider() {
function $$IntervalFactoryProvider (line 14235) | function $$IntervalFactoryProvider() {
function createCallback (line 14295) | function createCallback(callbackId) {
function encodePath (line 14386) | function encodePath(path) {
function decodePath (line 14398) | function decodePath(path, html5Mode) {
function normalizePath (line 14413) | function normalizePath(pathValue, searchValue, hashValue) {
function parseAbsoluteUrl (line 14421) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 14430) | function parseAppUrl(url, locationObj, html5Mode) {
function startsWith (line 14452) | function startsWith(str, search) {
function stripBaseUrl (line 14463) | function stripBaseUrl(base, url) {
function stripHash (line 14469) | function stripHash(url) {
function stripFile (line 14474) | function stripFile(url) {
function serverBase (line 14479) | function serverBase(url) {
function LocationHtml5Url (line 14493) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 14565) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 14669) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 15045) | function locationGetter(property) {
function locationGetterSetter (line 15052) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 15100) | function $LocationProvider() {
function $LogProvider (line 15460) | function $LogProvider() {
function getStringValue (line 15606) | function getStringValue(name) {
function ifDefined (line 16183) | function ifDefined(v, d) {
function plusFn (line 16187) | function plusFn(l, r) {
function isStateless (line 16193) | function isStateless($filter, filterName) {
function isPure (line 16202) | function isPure(node, parentIsPure) {
function findConstantAndWatchExpressions (line 16227) | function findConstantAndWatchExpressions(ast, $filter, parentIsPure) {
function getInputs (line 16340) | function getInputs(body) {
function isAssignable (line 16348) | function isAssignable(ast) {
function assignableAST (line 16352) | function assignableAST(ast) {
function isLiteral (line 16358) | function isLiteral(ast) {
function isConstant (line 16366) | function isConstant(ast) {
function ASTCompiler (line 16370) | function ASTCompiler($filter) {
function ASTInterpreter (line 16836) | function ASTInterpreter($filter) {
function Parser (line 17210) | function Parser(lexer, $filter, options) {
function getValueOf (line 17243) | function getValueOf(value) {
function $ParseProvider (line 17299) | function $ParseProvider() {
function $QProvider (line 17816) | function $QProvider() {
function $$QProvider (line 17848) | function $$QProvider() {
function qFactory (line 17876) | function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
function isStateExceptionHandled (line 18268) | function isStateExceptionHandled(state) {
function markQStateExceptionHandled (line 18271) | function markQStateExceptionHandled(state) {
function markQExceptionHandled (line 18274) | function markQExceptionHandled(q) {
function $$RAFProvider (line 18285) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 18384) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 19834) | function $$SanitizeUriProvider() {
function snakeToCamel (line 19953) | function snakeToCamel(name) {
function adjustMatcher (line 19958) | function adjustMatcher(matcher) {
function adjustMatchers (line 19986) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 20087) | function $SceDelegateProvider() {
function $SceProvider (line 20683) | function $SceProvider() {
function $SnifferProvider (line 21109) | function $SnifferProvider() {
function $$TaskTrackerFactoryProvider (line 21190) | function $$TaskTrackerFactoryProvider() {
function TaskTracker (line 21194) | function TaskTracker(log) {
function $TemplateRequestProvider (line 21309) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 21419) | function $$TestabilityProvider() {
function $TimeoutProvider (line 21545) | function $TimeoutProvider() {
function urlResolve (line 21715) | function urlResolve(url) {
function urlIsSameOrigin (line 21758) | function urlIsSameOrigin(requestUrl) {
function urlIsSameOriginAsBaseUrl (line 21772) | function urlIsSameOriginAsBaseUrl(requestUrl) {
function urlIsAllowedOriginFactory (line 21785) | function urlIsAllowedOriginFactory(whitelistedOriginUrls) {
function urlsAreSameOrigin (line 21814) | function urlsAreSameOrigin(url1, url2) {
function getBaseUrl (line 21826) | function getBaseUrl() {
function $WindowProvider (line 21885) | function $WindowProvider() {
function $$CookieReader (line 21898) | function $$CookieReader($document) {
function $$CookieReaderProvider (line 21949) | function $$CookieReaderProvider() {
function $FilterProvider (line 22060) | function $FilterProvider($provide) {
function filterFilter (line 22260) | function filterFilter() {
function createPredicateFn (line 22297) | function createPredicateFn(expression, comparator, anyPropertyKey, match...
function deepCompare (line 22334) | function deepCompare(actual, expected, comparator, anyPropertyKey, match...
function getTypeForFilter (line 22386) | function getTypeForFilter(val) {
function currencyFilter (line 22447) | function currencyFilter($locale) {
function numberFilter (line 22524) | function numberFilter($locale) {
function parse (line 22549) | function parse(numStr) {
function roundNumber (line 22604) | function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
function formatNumber (line 22679) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 22745) | function padNumber(num, digits, trim, negWrap) {
function dateGetter (line 22764) | function dateGetter(name, size, offset, trim, negWrap) {
function dateStrGetter (line 22776) | function dateStrGetter(name, shortForm, standAlone) {
function timeZoneGetter (line 22786) | function timeZoneGetter(date, formats, offset) {
function getFirstThursdayOfYear (line 22796) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 22804) | function getThursdayThisWeek(datetime) {
function weekGetter (line 22810) | function weekGetter(size) {
function ampmGetter (line 22822) | function ampmGetter(date, formats) {
function eraGetter (line 22826) | function eraGetter(date, formats) {
function longEraGetter (line 22830) | function longEraGetter(date, formats) {
function dateFilter (line 22968) | function dateFilter($locale) {
function jsonFilter (line 23075) | function jsonFilter() {
function limitToFilter (line 23224) | function limitToFilter() {
function sliceFn (line 23251) | function sliceFn(input, begin, end) {
function orderByFilter (line 23817) | function orderByFilter($parse) {
function ngDirective (line 23963) | function ngDirective(directive) {
function defaultLinkFn (line 24359) | function defaultLinkFn(scope, element, attr) {
function nullFormRenameControl (line 24469) | function nullFormRenameControl(control, name) {
function FormController (line 24523) | function FormController($element, $attrs, $scope, $animate, $interpolate) {
function getSetter (line 25061) | function getSetter(expression) {
function setupValidity (line 25077) | function setupValidity(instance) {
function addSetValidityMethod (line 25081) | function addSetValidityMethod(context) {
function isObjectEmpty (line 25168) | function isObjectEmpty(obj) {
function stringBasedInputType (line 26456) | function stringBasedInputType(ctrl) {
function textInputType (line 26462) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 26467) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 26587) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 26619) | function createDateParser(regexp, mapping) {
function createDateInputType (line 26677) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 26798) | function badInputChecker(scope, element, attr, ctrl, parserName) {
function numberFormatterParser (line 26814) | function numberFormatterParser(ctrl) {
function parseNumberAttrVal (line 26834) | function parseNumberAttrVal(val) {
function isNumberInteger (line 26841) | function isNumberInteger(num) {
function countDecimals (line 26849) | function countDecimals(num) {
function isValidForStep (line 26869) | function isValidForStep(viewValue, stepBase, step) {
function numberInputType (line 26900) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser,...
function rangeInputType (line 26965) | function rangeInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 27111) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 27123) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 27135) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 27166) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 27179) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function updateElementValue (line 27522) | function updateElementValue(element, attr, value) {
function classDirective (line 27841) | function classDirective(name, selector) {
function createEventDirective (line 28942) | function createEventDirective($parse, $rootScope, $exceptionHandler, dir...
function NgModelController (line 30285) | function NgModelController($scope, $exceptionHandler, $attr, $element, $...
function processParseErrors (line 30648) | function processParseErrors() {
function processSyncValidators (line 30670) | function processSyncValidators() {
function processAsyncValidators (line 30686) | function processAsyncValidators() {
function setValidity (line 30712) | function setValidity(name, isValid) {
function validationDone (line 30718) | function validationDone(allValid) {
function writeToModelIfNeeded (line 30804) | function writeToModelIfNeeded() {
function setupModelWatcher (line 31106) | function setupModelWatcher(ctrl) {
function setTouched (line 31396) | function setTouched() {
function ModelOptions (line 31425) | function ModelOptions(options) {
function NgModelOptionsController (line 31961) | function NgModelOptionsController($attrs, $scope) {
function defaults (line 31986) | function defaults(dst, src) {
function parseOptionsExpression (line 32277) | function parseOptionsExpression(optionsExp, selectElement, scope) {
function ngOptionsPostLink (line 32440) | function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
function updateElementText (line 32975) | function updateElementText(newText) {
function ngTranscludeCloneAttachFn (line 34853) | function ngTranscludeCloneAttachFn(clone, transcludedScope) {
function useFallbackContent (line 34864) | function useFallbackContent() {
function notWhitespace (line 34872) | function notWhitespace(nodes) {
function setOptionSelectedStatus (line 34937) | function setOptionSelectedStatus(optionEl, value) {
function scheduleRender (line 35287) | function scheduleRender() {
function scheduleViewValueUpdate (line 35297) | function scheduleViewValueUpdate(renderAfter) {
function selectPreLink (line 35685) | function selectPreLink(scope, element, attr, ctrls) {
function selectPostLink (line 35770) | function selectPostLink(scope, element, attrs, ctrls) {
function parsePatternAttr (line 36247) | function parsePatternAttr(regex, patternExp, elm) {
function parseLength (line 36263) | function parseLength(val) {
function getDecimals (line 36284) | function getDecimals(n) {
function getVF (line 36290) | function getVF(n, opt_precision) {
FILE: test/resolveSpec.ts
function invokeLater (line 22) | function invokeLater(fn: Function, ctx: ResolveContext) {
function getStates (line 26) | function getStates() {
function loadStates (line 193) | function loadStates(parent, state, name) {
function makePath (line 212) | function makePath(names: string[]): PathNode[] {
function isResolved (line 216) | function isResolved(promise: IPromise<any>) {
FILE: test/stateDirectivesSpec.ts
function triggerClick (line 58) | function triggerClick(el, options?) {
function triggerHTMLEvent (line 91) | function triggerHTMLEvent(name) {
function triggerMouseEvent (line 97) | function triggerMouseEvent(name) {
function buildDOM (line 128) | function buildDOM($rootScope, $compile, $timeout) {
function tick (line 430) | function tick() {
FILE: test/stateEventsSpec.ts
function eventLogger (line 21) | function eventLogger(event, to, toParams, from, fromParams) {
function callbackLogger (line 35) | function callbackLogger(what) {
function $get (line 84) | function $get(what) {
function initStateTo (line 88) | function initStateTo(state, optionalParams?, optionalOptions?) {
FILE: test/stateSpec.ts
function callbackLogger (line 25) | function callbackLogger(state, what) {
function $get (line 224) | function $get(what) {
function initStateTo (line 228) | function initStateTo(state, params?) {
function stateParamsTerm (line 506) | function stateParamsTerm() {
function _check_ (line 1621) | function _check_(state, url, params, defaults, nonurlparams) {
function decorator1 (line 2006) | function decorator1(state, parent) {
function decorator2 (line 2010) | function decorator2(state, parent) {
function decorator1 (line 2030) | function decorator1(state, parent) {
function decorator2 (line 2034) | function decorator2(state, parent) {
function decorator1 (line 2058) | function decorator1(state, parent) {
function decorator2 (line 2062) | function decorator2(state, parent) {
FILE: test/urlMatcherFactorySpec.ts
function barFn (line 936) | function barFn() {
function getMatcher (line 989) | function getMatcher(squash) {
FILE: test/util/testUtilsNg1.ts
function expose (line 17) | function expose(promise) {
function testablePromise (line 73) | function testablePromise(promise) {
function resolvedPromise (line 79) | function resolvedPromise(promise) {
function resolvedValue (line 85) | function resolvedValue(promise) {
function resolvedError (line 91) | function resolvedError(promise) {
function caught (line 98) | function caught(fn) {
function obj (line 108) | function obj(object) {
function html5Compat (line 117) | function html5Compat(html5mode) {
function decorateExceptionHandler (line 126) | function decorateExceptionHandler($exceptionHandlerProvider) {
FILE: test/viewDirectiveSpec.ts
function animateFlush (line 8) | function animateFlush($animate) {
function controller (line 362) | function controller($scope) {
Condensed preview — 87 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,051K chars).
[
{
"path": ".github/stale.yml",
"chars": 769,
"preview": "# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 180\n# Number of days of inactivity before a"
},
{
"path": ".github/workflows/ci.yml",
"chars": 776,
"preview": "name: 'CI'\n\non:\n push:\n branches:\n - master\n pull_request:\n\njobs:\n ci:\n needs: [test]\n runs-on: ubuntu-"
},
{
"path": ".github/workflows/update_dependencies.yml",
"chars": 2583,
"preview": "# This workflow requires a personal access token for uirouterbot\nname: Weekly Dependency Bumps\non:\n repository_dispatch"
},
{
"path": ".npmignore",
"chars": 165,
"preview": "# Any hidden files\n**/.*\n\nnode_modules\nscripts\nsrc\ntest\n_docs\n\nbower.json\nkarma.conf.js\ntsconfig.json\ntsconfig.**.json\nw"
},
{
"path": ".npmrc",
"chars": 31,
"preview": "scripts-prepend-node-path=auto\n"
},
{
"path": ".prettierignore",
"chars": 119,
"preview": "package.json\nbower.json\nCHANGELOG.md\ntest/**/angular.js\ntest/**/angular-mocks.js\ntest/**/angular-animate.js\nrelease/**\n"
},
{
"path": ".prettierrc.json",
"chars": 73,
"preview": "{\n \"singleQuote\": true,\n \"trailingComma\": \"es5\",\n \"printWidth\": 120\n}\n"
},
{
"path": "CHANGELOG.md",
"chars": 133015,
"preview": "## 1.1.2 (2025-12-31)\n[Compare `@uirouter/angularjs` versions 1.1.1 and 1.1.2](https://github.com/angular-ui/ui-router/c"
},
{
"path": "CONTRIBUTING.md",
"chars": 5518,
"preview": "\n# Report an Issue\n\nHelp us make UI-Router better! If you think you might have found a bug, or some other weirdness, sta"
},
{
"path": "DOCS.md",
"chars": 2355,
"preview": "# [UI Router for Angular 1](https://ui-router.github.io/ng1/docs/latest)\n\n#### The de-facto solution to flexible routing"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 1254,
"preview": "This issue tracker is for Bug Reports and Feature Requests only.\n\nPlease direct requests for help to StackOverflow.\nSee "
},
{
"path": "LICENSE",
"chars": 1102,
"preview": "The MIT License\n\nCopyright (c) 2013-2018 The AngularUI Team, Karsten Sperling\n\nPermission is hereby granted, free of cha"
},
{
"path": "README.md",
"chars": 3055,
"preview": "# AngularUI Router [;\n\nmodule.exports = {\n preset: 'ts-jest"
},
{
"path": "karma.conf.js",
"chars": 2934,
"preview": "// Karma configuration file\nvar karma = require('karma');\nvar ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webp"
},
{
"path": "package.json",
"chars": 4712,
"preview": "{\n \"name\": \"@uirouter/angularjs\",\n \"description\": \"State-based routing for AngularJS 1.x\",\n \"version\": \"1.1.2\",\n \"sc"
},
{
"path": "rollup.config.js",
"chars": 3609,
"preview": "import nodeResolve from 'rollup-plugin-node-resolve';\nimport { terser } from 'rollup-plugin-terser';\nimport sourcemaps f"
},
{
"path": "scripts/bower_release.js",
"chars": 1019,
"preview": "#!env node\n\"use strict\";\nconst fs = require('fs');\nconst path = require('path');\nconst util = require('@uirouter/publish"
},
{
"path": "scripts/npm_angular_ui_router_release.js",
"chars": 566,
"preview": "#!env node\n'use strict';\nconst fs = require('fs');\nconst path = require('path');\nconst util = require('@uirouter/publish"
},
{
"path": "src/angular.ts",
"chars": 271,
"preview": "/** @publicapi @module ng1 */ /** */\nimport * as ng_from_import from 'angular';\n/** @hidden */ declare let angular;\n/** "
},
{
"path": "src/directives/stateDirectives.ts",
"chars": 25776,
"preview": "/* eslint-disable @typescript-eslint/no-empty-interface */\n/* eslint-disable prefer-const */\n/**\n * # Angular 1 Directiv"
},
{
"path": "src/directives/viewDirective.ts",
"chars": 18576,
"preview": "/** @publicapi @module directives */ /** */\nimport {\n $QLike,\n ActiveUIView,\n extend,\n filter,\n HookRegOptions,\n i"
},
{
"path": "src/index.ts",
"chars": 517,
"preview": "/**\n * Main entry point for angular 1.x build\n * @publicapi @module ng1\n */ /** */\nexport * from './interface';\nexport *"
},
{
"path": "src/injectables.ts",
"chars": 13514,
"preview": "/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * # Angular 1 injectable services\n *\n * This is a list of th"
},
{
"path": "src/interface.ts",
"chars": 24050,
"preview": "/** @publicapi @module ng1 */ /** */\nimport { StateDeclaration, _ViewDeclaration, IInjectable, Transition, HookResult, S"
},
{
"path": "src/legacy/core-adapter.js",
"chars": 71,
"preview": "var core = require('@uirouter/angularjs').core;\nmodule.exports = core;\n"
},
{
"path": "src/legacy/resolveService.ts",
"chars": 2987,
"preview": "/** @publicapi @module ng1 */ /** */\nimport { StateObject, PathNode, ResolveContext, Obj, mapObj, resolvablesBuilder } f"
},
{
"path": "src/legacy/stateEvents.ts",
"chars": 12099,
"preview": "/**\n * # Legacy state events\n *\n * Polyfill implementation of the UI-Router 0.2.x state events.\n *\n * The 0.2.x state ev"
},
{
"path": "src/locationServices.ts",
"chars": 3331,
"preview": "/** @publicapi @module ng1 */ /** */\nimport { LocationConfig, LocationServices, UIRouter, ParamType, isDefined } from '@"
},
{
"path": "src/services.ts",
"chars": 7144,
"preview": "/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * "
},
{
"path": "src/stateFilters.ts",
"chars": 1520,
"preview": "/** @publicapi @module ng1 */ /** */\n\nimport { ng as angular } from './angular';\nimport { Obj, StateService, StateOrName"
},
{
"path": "src/stateProvider.ts",
"chars": 11645,
"preview": "/** @publicapi @module ng1 */ /** */\nimport {\n val,\n isObject,\n createProxyFunctions,\n BuilderFunction,\n StateRegis"
},
{
"path": "src/statebuilders/onEnterExitRetain.ts",
"chars": 1339,
"preview": "/** @publicapi @module ng1 */ /** */\nimport {\n StateObject,\n TransitionStateHookFn,\n HookResult,\n Transition,\n serv"
},
{
"path": "src/statebuilders/views.ts",
"chars": 5482,
"preview": "/** @publicapi @module ng1 */ /** */\nimport {\n StateObject,\n pick,\n forEach,\n tail,\n extend,\n isArray,\n isInjecta"
},
{
"path": "src/templateFactory.ts",
"chars": 9607,
"preview": "/** @publicapi @module view */ /** */\nimport { ng as angular } from './angular';\nimport { IAugmentedJQuery } from 'angul"
},
{
"path": "src/urlRouterProvider.ts",
"chars": 7107,
"preview": "/** @publicapi @module url */ /** */\nimport {\n UIRouter,\n LocationServices,\n $InjectorLike,\n BaseUrlRule,\n UrlRuleH"
},
{
"path": "src/viewScroll.ts",
"chars": 1224,
"preview": "/** @publicapi @module ng1 */ /** */\nimport { ng as angular } from './angular';\nimport { IServiceProviderFactory } from "
},
{
"path": "test/angular/1.2/angular-animate.js",
"chars": 77951,
"preview": "/**\n * @license AngularJS v1.2.32\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.2/angular-mocks.js",
"chars": 68811,
"preview": "/**\n * @license AngularJS v1.2.32\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.2/angular.js",
"chars": 791299,
"preview": "/**\n * @license AngularJS v1.2.32\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.3/angular-animate.js",
"chars": 104502,
"preview": "/**\n * @license AngularJS v1.3.20\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.3/angular-mocks.js",
"chars": 83948,
"preview": "/**\n * @license AngularJS v1.3.20\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.3/angular.js",
"chars": 966575,
"preview": "/**\n * @license AngularJS v1.3.20\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.4/angular-animate.js",
"chars": 146734,
"preview": "/**\n * @license AngularJS v1.4.14\n * (c) 2010-2015 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.4/angular-mocks.js",
"chars": 85706,
"preview": "/**\n * @license AngularJS v1.4.14\n * (c) 2010-2015 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.4/angular.js",
"chars": 1100597,
"preview": "/**\n * @license AngularJS v1.4.14\n * (c) 2010-2015 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.5/angular-animate.js",
"chars": 150829,
"preview": "/**\n * @license AngularJS v1.5.11\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.5/angular-mocks.js",
"chars": 110702,
"preview": "/**\n * @license AngularJS v1.5.11\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.5/angular.js",
"chars": 1220917,
"preview": "/**\n * @license AngularJS v1.5.11\n * (c) 2010-2017 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.6/angular-animate.js",
"chars": 151296,
"preview": "/**\n * @license AngularJS v1.6.10\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.6/angular-mocks.js",
"chars": 123001,
"preview": "/**\n * @license AngularJS v1.6.10\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.6/angular.js",
"chars": 1312648,
"preview": "/**\n * @license AngularJS v1.6.10\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(windo"
},
{
"path": "test/angular/1.7/angular-animate.js",
"chars": 156629,
"preview": "/**\n * @license AngularJS v1.7.9\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window"
},
{
"path": "test/angular/1.7/angular-mocks.js",
"chars": 135243,
"preview": "/**\n * @license AngularJS v1.7.9\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window"
},
{
"path": "test/angular/1.7/angular.js",
"chars": 1371888,
"preview": "/**\n * @license AngularJS v1.7.9\n * (c) 2010-2018 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window"
},
{
"path": "test/angular/jest-angular.js",
"chars": 475,
"preview": "// This setup is used to inject specific versions of angularjs to test against\n\n// Jest is configured to alias `import *"
},
{
"path": "test/angular/update_all.sh",
"chars": 182,
"preview": "#!/bin/bash\n\nfor NGVER in 1.* ; do\n pushd $NGVER\n for PKG in angular angular-animate angular-mocks ; do\n curl -O -L"
},
{
"path": "test/jest.init.ts",
"chars": 224,
"preview": "const noop = () => {};\nObject.defineProperty(window, 'scrollTo', { value: noop, writable: true });\n\nimport 'angular';\nim"
},
{
"path": "test/ng1StateBuilderSpec.ts",
"chars": 2436,
"preview": "import { StateBuilder, StateMatcher, ng1ViewsBuilder, extend } from '../src/index';\nimport { Resolvable } from '@uiroute"
},
{
"path": "test/resolveSpec.ts",
"chars": 22720,
"preview": "import { IPromise } from 'angular';\nimport * as angular from 'angular';\nimport './util/testUtilsNg1';\n\ndeclare var injec"
},
{
"path": "test/servicesSpec.ts",
"chars": 2739,
"preview": "import * as angular from 'angular';\nimport { UIRouter, trace } from '@uirouter/core';\n\ndeclare var inject;\n\nconst module"
},
{
"path": "test/stateDirectivesSpec.ts",
"chars": 45102,
"preview": "import * as angular from 'angular';\nimport { obj } from './util/testUtilsNg1';\n\ndeclare var inject;\n\nconst module = angu"
},
{
"path": "test/stateEventsSpec.ts",
"chars": 11927,
"preview": "import * as angular from 'angular';\nimport { StateDeclaration } from '@uirouter/core';\nimport { resolvedError, obj, deco"
},
{
"path": "test/stateFiltersSpec.ts",
"chars": 3192,
"preview": "import * as angular from 'angular';\ndeclare var inject;\n\nconst module = angular['mock'].module;\n\ndescribe('isState filte"
},
{
"path": "test/stateSpec.ts",
"chars": 87245,
"preview": "import * as angular from 'angular';\nimport { extend, forEach, StateDeclaration, UrlMatcher } from '@uirouter/core';\nimpo"
},
{
"path": "test/templateFactorySpec.ts",
"chars": 4745,
"preview": "import * as angular from 'angular';\nimport { UIRouter } from '@uirouter/core';\n\ndeclare let inject;\n\nconst module = angu"
},
{
"path": "test/tsconfig.json",
"chars": 351,
"preview": "{\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": "
},
{
"path": "test/typescript/3.9/index.ts",
"chars": 71,
"preview": "import { UIRouter } from '@uirouter/angularjs';\nconsole.log(UIRouter);\n"
},
{
"path": "test/typescript/3.9/package.json",
"chars": 207,
"preview": "{\n \"description\": \"Test against Typescript 3.9\",\n \"scripts\": {\n \"test\": \"tsc\"\n },\n \"dependencies\": {\n \"@types/"
},
{
"path": "test/typescript/3.9/tsconfig.json",
"chars": 250,
"preview": "{\n \"compilerOptions\": {\n \"moduleResolution\": \"node\",\n \"module\": \"commonjs\",\n \"lib\": [\"es6\", \"dom\"],\n \"noImp"
},
{
"path": "test/typescript/mktest.sh",
"chars": 435,
"preview": "#!/usr/bin/env bash\n\nif [[ -z \"$1\" ]] ; then\n echo \"Specify the typescript version, i.e.:4.0\";\n echo \"$0 4.0\";\n exit "
},
{
"path": "test/typescript/template/index.ts",
"chars": 71,
"preview": "import { UIRouter } from '@uirouter/angularjs';\nconsole.log(UIRouter);\n"
},
{
"path": "test/typescript/template/package.json",
"chars": 215,
"preview": "{\n \"description\": \"Test against Typescript VERSION\",\n \"scripts\": {\n \"test\": \"tsc\"\n },\n \"dependencies\": {\n \"@ty"
},
{
"path": "test/typescript/template/tsconfig.json",
"chars": 250,
"preview": "{\n \"compilerOptions\": {\n \"moduleResolution\": \"node\",\n \"module\": \"commonjs\",\n \"lib\": [\"es6\", \"dom\"],\n \"noImp"
},
{
"path": "test/urlMatcherFactorySpec.ts",
"chars": 42542,
"preview": "import * as angular from 'angular';\nimport { find, map, prop, UrlMatcher } from '../src/index';\nimport { UIRouter, UrlMa"
},
{
"path": "test/urlRouterSpec.ts",
"chars": 11932,
"preview": "import * as angular from 'angular';\nimport { ILocationService, ILocationProvider } from 'angular';\nimport { html5Compat "
},
{
"path": "test/util/testUtilsNg1.ts",
"chars": 4219,
"preview": "import * as angular from 'angular';\n\n// Promise testing support\nangular.module('ngMock').config(function ($provide, $loc"
},
{
"path": "test/viewDirectiveSpec.ts",
"chars": 56793,
"preview": "import * as angular from 'angular';\nimport { ICompileService, IRootScopeService } from 'angular';\nimport { extend } from"
},
{
"path": "test/viewHookSpec.ts",
"chars": 6605,
"preview": "import * as angular from 'angular';\nimport { StateService } from '@uirouter/core';\n\ndeclare var inject;\n\ndescribe('view "
},
{
"path": "test/viewScrollSpec.ts",
"chars": 1397,
"preview": "import * as angular from 'angular';\ndeclare var inject;\n\nconst module = angular['mock'].module;\n\ndescribe('uiView', func"
},
{
"path": "test/viewSpec.ts",
"chars": 2855,
"preview": "import * as angular from 'angular';\nimport { tail, curry, PathNode, PathUtils, ViewService, StateMatcher, StateBuilder, "
},
{
"path": "tsconfig.docgen.json",
"chars": 449,
"preview": "{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@"
},
{
"path": "tsconfig.json",
"chars": 461,
"preview": "{\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": "
},
{
"path": "typedoc.json",
"chars": 159,
"preview": "{\n \"name\": \"@uirouter/angularjs\",\n \"readme\": \"README.md\",\n \"out\": \"_doc\",\n \"stripInternal\": true,\n \"excludeNotExpor"
}
]
About this extraction
This page contains the full source code of the angular-ui/ui-router GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 87 files (8.4 MB), approximately 2.2M tokens, and a symbol index with 2281 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.