├── .gitattributes ├── .gitignore ├── README.md ├── aspnet-skeleton-navigation.sln ├── aspnet-skeleton-navigation.v12.suo ├── aspnet-skeleton-navigation ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .jshintrc ├── .npmignore ├── CONTRIBUTING.md ├── LICENSE ├── Properties │ └── AssemblyInfo.cs ├── README.md ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── aspnet-skeleton-navigation.csproj ├── aspnet-skeleton-navigation.csproj.user ├── aurelia.protractor.js ├── bin │ ├── aspnet-skeleton-navigation.dll │ ├── aspnet-skeleton-navigation.dll.config │ └── aspnet-skeleton-navigation.pdb ├── build │ ├── args.js │ ├── babel-options.js │ ├── paths.js │ └── tasks │ │ ├── build.js │ │ ├── clean.js │ │ ├── dev.js │ │ ├── doc.js │ │ ├── e2e.js │ │ ├── lint.js │ │ ├── prepare-release.js │ │ ├── serve.js │ │ ├── test.js │ │ └── watch.js ├── config.js ├── dist │ ├── app.html │ ├── app.js │ ├── child-router.html │ ├── child-router.js │ ├── nav-bar.html │ ├── nav-bar.js │ ├── welcome.html │ └── welcome.js ├── doc │ ├── CHANGELOG.md │ └── api.json ├── favicon.ico ├── gulpfile.js ├── index.html ├── jsconfig.json ├── karma.conf.js ├── obj │ └── Debug │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ ├── aspnet-skeleton-navigation.csproj.FileListAbsolute.txt │ │ ├── aspnet-skeleton-navigation.csprojResolveAssemblyReference.cache │ │ ├── aspnet-skeleton-navigation.dll │ │ └── aspnet-skeleton-navigation.pdb ├── package.json ├── protractor.conf.js ├── src │ ├── app.html │ ├── app.js │ ├── blur-image.js │ ├── child-router.html │ ├── child-router.js │ ├── main.js │ ├── nav-bar.html │ ├── nav-bar.js │ ├── users.html │ ├── users.js │ ├── welcome.html │ └── welcome.js ├── styles │ └── styles.css └── test │ ├── e2e │ ├── dist │ │ ├── demo.spec.js │ │ ├── skeleton.po.js │ │ └── welcome.po.js │ └── src │ │ ├── demo.spec.js │ │ ├── skeleton.po.js │ │ └── welcome.po.js │ └── unit │ ├── app.spec.js │ ├── child-router.spec.js │ └── flickr.spec.js └── build ├── MSBuild.Gulp.props ├── MSBuild.Gulp.targets ├── MSBuild.Jspm.props ├── MSBuild.Jspm.targets ├── MSBuild.Node.props ├── MSBuild.Node.targets ├── MSBuild.Npm.props └── MSBuild.Npm.targets /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # aspnet-skeleton-navigation 2 | 3 | This skeleton is an example of how to utilize [Aurelia](http://www.aurelia.io/) with Visual Studio 2013 and Typescript. 4 | It sets up a standard navigation-style app using the Typescript compiler. Gulp is used to copy all html, ts, js, and map files to the dist\ directory. Karma/Jasmine testing is also configured. 5 | Integration of npm and jspm with the Visual Studio is provided but is disabled by default due to resource usage. 6 | 7 | > To keep up to date on [Aurelia](http://www.aurelia.io/), please visit and subscribe to [the official blog](http://blog.durandal.io/). If you have questions, we invite you to join us on [our Gitter Channel](https://gitter.im/Aurelia/Discuss). 8 | 9 | ## Installing Dependencies 10 | 1. Install the [Task Runner Explorer](https://visualstudiogallery.msdn.microsoft.com/8e1b4368-4afb-467a-bc13-9650572db708) Visual Studio Extension. 11 | 12 | 2. Install the [Typescript 1.3](https://visualstudiogallery.msdn.microsoft.com/955e0262-0858-40c9-ab5a-1acc680e9bfd) Visual Studio Extension. 13 | 14 | 3. Make sure that Git is installed and the path to the Git executable is in the $PATH system variable. Either [Git for Windows](http://git-scm.com/download/win) or [GitHub for Windows](https://windows.github.com/) should work for this. 15 | 16 | 4. Ensure that [NodeJS](http://nodejs.org/) is installed. This provides the platform on which the build tooling runs. 17 | 18 | 5. Ensure that [Gulp](http://gulpjs.com/) is installed. If you need to install it, use the following command: 19 | 20 | ```shell 21 | npm install -g gulp 22 | ``` 23 | 4. Ensure that [jspm](http://jspm.io/) is installed. If you need to install it, use the following command: 24 | 25 | ```shell 26 | npm install -g jspm 27 | ``` 28 | 29 | ## Running The App 30 | 31 | To run the app, follow these steps. 32 | 33 | 1. Open the project in Visual Studio. 34 | 35 | 2. Set Visual Studio to launch using Google Chrome. See below for instructions on running the app using Internet Explorer. 36 | 37 | 3. Press F5 to run the project. 38 | 39 | > Note: The build process will run `npm install` and `jspm install`. For this reason, the first build will take quite a while. 40 | 41 | > Note: Visual Studio sometimes launches the browser before Gulp has finished deploying changes. If you get a black screen, try hitting refresh. 42 | 43 | > Note: At present there is a bug in the HTMLImports polyfill which only occurs on IE. We have submitted a pull request to the team with the fix. In the mean time, if you want to test on IE, you can work around the issue by explicitly adding a script tag before you load system.js. The script tag should look something like this (be sure to confirm the version number): 44 | 45 | ```html 46 | 47 | ``` 48 | 49 | ## Running The Tests 50 | 51 | To run the unit tests, first ensure that you have followed the steps above in order to install all dependencies and successfully build the library. Once you have done that, proceed with these additional steps: 52 | 53 | 1. Ensure that the [Karma](http://karma-runner.github.io/) CLI is installed. If you need to install it, use the following command: 54 | 55 | ```shell 56 | npm install -g karma-cli 57 | ``` 58 | 2. You can now run the tests with this command: 59 | 60 | ```shell 61 | karma start 62 | ``` 63 | 64 | ## Contributing 65 | 66 | We'd love for you to contribute to our source code and to make this project even better than it is today! If this interests you, please begin by reading [our contributing guidelines](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md). The contributing document will provide you with all the information you need to get started. Once you have read that, you will need to also [sign our CLA](http://goo.gl/forms/dI8QDDSyKR) before we can accepts a Pull Request from you. More information on the process is including in the [contributor's guide](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md). -------------------------------------------------------------------------------- /aspnet-skeleton-navigation.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aspnet-skeleton-navigation", "aspnet-skeleton-navigation\aspnet-skeleton-navigation.csproj", "{70E8038A-405B-4C23-91CD-5FFF25381564}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{3B5B8030-599D-490C-A5B0-001E2E7421F7}" 9 | ProjectSection(SolutionItems) = preProject 10 | build\MSBuild.Gulp.props = build\MSBuild.Gulp.props 11 | build\MSBuild.Gulp.targets = build\MSBuild.Gulp.targets 12 | build\MSBuild.Jspm.props = build\MSBuild.Jspm.props 13 | build\MSBuild.Jspm.targets = build\MSBuild.Jspm.targets 14 | build\MSBuild.Node.props = build\MSBuild.Node.props 15 | build\MSBuild.Node.targets = build\MSBuild.Node.targets 16 | build\MSBuild.Npm.props = build\MSBuild.Npm.props 17 | build\MSBuild.Npm.targets = build\MSBuild.Npm.targets 18 | EndProjectSection 19 | EndProject 20 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7716C03C-C092-4A52-8DC0-CAE92D5EFB7A}" 21 | ProjectSection(SolutionItems) = preProject 22 | README.md = README.md 23 | EndProjectSection 24 | EndProject 25 | Global 26 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 27 | Debug|Any CPU = Debug|Any CPU 28 | Release|Any CPU = Release|Any CPU 29 | EndGlobalSection 30 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 31 | {70E8038A-405B-4C23-91CD-5FFF25381564}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 32 | {70E8038A-405B-4C23-91CD-5FFF25381564}.Debug|Any CPU.Build.0 = Debug|Any CPU 33 | {70E8038A-405B-4C23-91CD-5FFF25381564}.Release|Any CPU.ActiveCfg = Release|Any CPU 34 | {70E8038A-405B-4C23-91CD-5FFF25381564}.Release|Any CPU.Build.0 = Release|Any CPU 35 | EndGlobalSection 36 | GlobalSection(SolutionProperties) = preSolution 37 | HideSolutionNode = FALSE 38 | EndGlobalSection 39 | EndGlobal 40 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation.v12.suo -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | 11 | # 2 space indentation 12 | [**.*] 13 | indent_style = space 14 | indent_size = 2 -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | jspm_packages 3 | bower_components 4 | .idea 5 | .DS_STORE 6 | /dist 7 | build/reports 8 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esnext": true 3 | } 4 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/.npmignore: -------------------------------------------------------------------------------- 1 | jspm_packages 2 | bower_components 3 | .idea -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | We'd love for you to contribute and to make this project even better than it is today! If this interests you, please begin by reading [our contributing guidelines](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md). The contributing document will provide you with all the information you need to get started. Once you have read that, you will need to also [sign our CLA](http://goo.gl/forms/dI8QDDSyKR) before we can accept a Pull Request from you. More information on the process is included in the [contributor's guide](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md). 4 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Durandal Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("aspnet_skeleton_navigation")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("aspnet_skeleton_navigation")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1f72ddeb-2479-4fbd-8b3a-bee5257464ac")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/README.md: -------------------------------------------------------------------------------- 1 | # aurelia-skeleton-navigation 2 | 3 | [![ZenHub](https://raw.githubusercontent.com/ZenHubIO/support/master/zenhub-badge.png)](https://zenhub.io) 4 | [![Join the chat at https://gitter.im/aurelia/discuss](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/aurelia/discuss?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 5 | 6 | This skeleton is part of the [Aurelia](http://www.aurelia.io/) platform. It sets up a standard navigation-style app using gulp to build your ES6 code with the Babel compiler. Karma/Protractor/Jasmine testing is also configured. 7 | 8 | > To keep up to date on [Aurelia](http://www.aurelia.io/), please visit and subscribe to [the official blog](http://blog.durandal.io/). If you have questions, we invite you to [join us on Gitter](https://gitter.im/aurelia/discuss). If you would like to have deeper insight into our development process, please install the [ZenHub](https://zenhub.io) Chrome Extension and visit any of our repository's boards. You can get an overview of all Aurelia work by visiting [the framework board](https://github.com/aurelia/framework#boards). 9 | 10 | ## Running The App 11 | 12 | To run the app, follow these steps. 13 | 14 | 1. Ensure that [NodeJS](http://nodejs.org/) is installed. This provides the platform on which the build tooling runs. 15 | 2. From the project folder, execute the following command: 16 | 17 | ```shell 18 | npm install 19 | ``` 20 | 3. Ensure that [Gulp](http://gulpjs.com/) is installed. If you need to install it, use the following command: 21 | 22 | ```shell 23 | npm install -g gulp 24 | ``` 25 | 4. Ensure that [jspm](http://jspm.io/) is installed. If you need to install it, use the following command: 26 | 27 | ```shell 28 | npm install -g jspm 29 | ``` 30 | > **Note:** jspm queries GitHub to install semver packages, but GitHub has a rate limit on anonymous API requests. It is advised that you configure jspm with your GitHub credentials in order to avoid problems. You can do this by executing `jspm registry config github` and following the prompts. 31 | 5. Install the client-side dependencies with jspm: 32 | 33 | ```shell 34 | jspm install -y 35 | ``` 36 | >**Note:** Windows users, if you experience an error of "unknown command unzip" you can solve this problem by doing `npm install -g unzip` and then re-running `jspm install`. 37 | 6. To run the app, execute the following command: 38 | 39 | ```shell 40 | gulp watch 41 | ``` 42 | 7. Browse to [http://localhost:9000](http://localhost:9000) to see the app. You can make changes in the code found under `src` and the browser should auto-refresh itself as you save files. 43 | 44 | > Note: At present there is a bug in the HTMLImports polyfill which only occurs on IE. We have submitted a pull request to the team with the fix. In the mean time, if you want to test on IE, you can work around the issue by explicitly adding a script tag before you load system.js. The script tag should look something like this (be sure to confirm the version number): 45 | 46 | ```html 47 | 48 | ``` 49 | 50 | ## Running The Unit Tests 51 | 52 | To run the unit tests, first ensure that you have followed the steps above in order to install all dependencies and successfully build the library. Once you have done that, proceed with these additional steps: 53 | 54 | 1. Ensure that the [Karma](http://karma-runner.github.io/) CLI is installed. If you need to install it, use the following command: 55 | 56 | ```shell 57 | npm install -g karma-cli 58 | ``` 59 | 2. Install Aurelia libs for test visibility: 60 | 61 | ```shell 62 | jspm install aurelia-framework 63 | jspm install aurelia-http-client 64 | jspm install aurelia-router 65 | ``` 66 | 3. You can now run the tests with this command: 67 | 68 | ```shell 69 | karma start 70 | ``` 71 | 72 | ## Running The E2E Tests 73 | Integration tests are performed with [Protractor](http://angular.github.io/protractor/#/). 74 | 75 | 1. Place your E2E-Tests into the folder ```test/e2e/src``` 76 | 2. Install the necessary webdriver 77 | 78 | ```shell 79 | gulp webdriver_update 80 | ``` 81 | 82 | 3. Configure the path to the webdriver by opening the file ```protractor.conf.js``` and adjusting the ```seleniumServerJar``` property. Typically its only needed to adjust the version number. 83 | 84 | 4. Make sure your app runs and is accessible 85 | 86 | ```shell 87 | gulp watch 88 | ``` 89 | 90 | 5. In another console run the E2E-Tests 91 | 92 | ```shell 93 | gulp e2e 94 | ``` 95 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/Web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/Web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/aspnet-skeleton-navigation.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Debug 10 | AnyCPU 11 | 12 | 13 | 2.0 14 | {70E8038A-405B-4C23-91CD-5FFF25381564} 15 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} 16 | Library 17 | Properties 18 | aspnet_skeleton_navigation 19 | aspnet-skeleton-navigation 20 | v4.5.1 21 | true 22 | 23 | 24 | 25 | 26 | 28c90d11 27 | 1.1 28 | 29 | 30 | true 31 | full 32 | false 33 | bin\ 34 | DEBUG;TRACE 35 | prompt 36 | 4 37 | 38 | 39 | pdbonly 40 | true 41 | bin\ 42 | TRACE 43 | prompt 44 | 4 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | Web.config 78 | 79 | 80 | Web.config 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 10.0 134 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 135 | 136 | 137 | 138 | amd 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | True 148 | True 149 | 1470 150 | / 151 | http://localhost:1470/ 152 | False 153 | False 154 | 155 | 156 | False 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/aspnet-skeleton-navigation.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 1.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | URL 13 | True 14 | False 15 | False 16 | False 17 | 18 | 19 | http://localhost:1470/ 20 | 21 | 22 | 23 | 24 | True 25 | True 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/aurelia.protractor.js: -------------------------------------------------------------------------------- 1 | /* Aurelia Protractor Plugin */ 2 | function addValueBindLocator() { 3 | by.addLocator('valueBind', function (bindingModel, opt_parentElement) { 4 | var using = opt_parentElement || document; 5 | var matches = using.querySelectorAll('*[value\\.bind="' + bindingModel +'"]'); 6 | var result; 7 | 8 | if (matches.length === 0) { 9 | result = null; 10 | } else if (matches.length === 1) { 11 | result = matches[0]; 12 | } else { 13 | result = matches; 14 | } 15 | 16 | return result; 17 | }); 18 | } 19 | 20 | function loadAndWaitForAureliaPage(pageUrl) { 21 | browser.get(pageUrl); 22 | return browser.executeAsyncScript( 23 | 'var cb = arguments[arguments.length - 1];' + 24 | 'document.addEventListener("aurelia-composed", function (e) {' + 25 | ' cb("Aurelia App composed")' + 26 | '}, false);' 27 | ).then(function(result){ 28 | console.log(result); 29 | return result; 30 | }); 31 | } 32 | 33 | function waitForHttpDone() { 34 | return browser.executeAsyncScript( 35 | 'var cb = arguments[arguments.length - 1];' + 36 | 'document.addEventListener("aurelia-http-client-requests-drained", function (e) {' + 37 | ' cb(true)' + 38 | '}, false);' 39 | ).then(function(result){ 40 | return result; 41 | }); 42 | } 43 | 44 | /* Plugin hooks */ 45 | exports.setup = function(config) { 46 | // Ignore the default Angular synchronization helpers 47 | browser.ignoreSynchronization = true; 48 | 49 | // add the aurelia specific valueBind locator 50 | addValueBindLocator(); 51 | 52 | // attach a new way to browser.get a page and wait for Aurelia to complete loading 53 | browser.loadAndWaitForAureliaPage = loadAndWaitForAureliaPage; 54 | 55 | // wait for all http requests to finish 56 | browser.waitForHttpDone = waitForHttpDone; 57 | }; 58 | 59 | exports.teardown = function(config) {}; 60 | exports.postResults = function(config) {}; 61 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/bin/aspnet-skeleton-navigation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/bin/aspnet-skeleton-navigation.dll -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/bin/aspnet-skeleton-navigation.dll.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/bin/aspnet-skeleton-navigation.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/bin/aspnet-skeleton-navigation.pdb -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/args.js: -------------------------------------------------------------------------------- 1 | var yargs = require('yargs'); 2 | 3 | var argv = yargs.argv, 4 | validBumpTypes = "major|minor|patch|prerelease".split("|"), 5 | bump = (argv.bump || 'patch').toLowerCase(); 6 | 7 | if(validBumpTypes.indexOf(bump) === -1) { 8 | throw new Error('Unrecognized bump "' + bump + '".'); 9 | } 10 | 11 | module.exports = { 12 | bump: bump 13 | }; 14 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/babel-options.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | modules: 'system', 3 | moduleIds: false, 4 | comments: false, 5 | compact: false, 6 | stage:2, 7 | optional: [ 8 | "es7.decorators", 9 | "es7.classProperties" 10 | ] 11 | }; 12 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/paths.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | 3 | var appRoot = 'src/'; 4 | var outputRoot = 'dist/'; 5 | 6 | module.exports = { 7 | root: appRoot, 8 | source: appRoot + '**/*.js', 9 | html: appRoot + '**/*.html', 10 | style: 'styles/**/*.css', 11 | output: outputRoot, 12 | doc:'./doc', 13 | e2eSpecsSrc: 'test/e2e/src/*.js', 14 | e2eSpecsDist: 'test/e2e/dist/' 15 | }; 16 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/build.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var runSequence = require('run-sequence'); 3 | var changed = require('gulp-changed'); 4 | var plumber = require('gulp-plumber'); 5 | var to5 = require('gulp-babel'); 6 | var sourcemaps = require('gulp-sourcemaps'); 7 | var paths = require('../paths'); 8 | var compilerOptions = require('../babel-options'); 9 | var assign = Object.assign || require('object.assign'); 10 | 11 | // transpiles changed es6 files to SystemJS format 12 | // the plumber() call prevents 'pipe breaking' caused 13 | // by errors from other gulp plugins 14 | // https://www.npmjs.com/package/gulp-plumber 15 | gulp.task('build-system', function () { 16 | return gulp.src(paths.source) 17 | .pipe(plumber()) 18 | .pipe(changed(paths.output, {extension: '.js'})) 19 | .pipe(sourcemaps.init({loadMaps: true})) 20 | .pipe(to5(assign({}, compilerOptions, {modules:'system'}))) 21 | .pipe(sourcemaps.write({includeContent: true})) 22 | .pipe(gulp.dest(paths.output)); 23 | }); 24 | 25 | // copies changed html files to the output directory 26 | gulp.task('build-html', function () { 27 | return gulp.src(paths.html) 28 | .pipe(changed(paths.output, {extension: '.html'})) 29 | .pipe(gulp.dest(paths.output)); 30 | }); 31 | 32 | // this task calls the clean task (located 33 | // in ./clean.js), then runs the build-system 34 | // and build-html tasks in parallel 35 | // https://www.npmjs.com/package/gulp-run-sequence 36 | gulp.task('build', function(callback) { 37 | return runSequence( 38 | 'clean', 39 | ['build-system', 'build-html'], 40 | callback 41 | ); 42 | }); 43 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/clean.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var paths = require('../paths'); 3 | var del = require('del'); 4 | var vinylPaths = require('vinyl-paths'); 5 | 6 | // deletes all files in the output path 7 | gulp.task('clean', function() { 8 | return gulp.src([paths.output]) 9 | .pipe(vinylPaths(del)); 10 | }); 11 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/dev.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var tools = require('aurelia-tools'); 3 | 4 | // source code for the tasks called in this file 5 | // is located at: https://github.com/aurelia/tools/blob/master/src/dev.js 6 | 7 | // updates dependencies in this folder 8 | // from folders in the parent directory 9 | gulp.task('update-own-deps', function(){ 10 | tools.updateOwnDependenciesFromLocalRepositories(); 11 | }); 12 | 13 | // quickly pulls in all of the aurelia 14 | // github repos, placing them up one directory 15 | // from where the command is executed, 16 | // then runs `npm install` 17 | // and `gulp build` for each repo 18 | gulp.task('build-dev-env', function () { 19 | tools.buildDevEnv(); 20 | }); 21 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/doc.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var tools = require('aurelia-tools'); 3 | var paths = require('../paths'); 4 | var yuidoc = require('gulp-yuidoc'); 5 | 6 | // uses yui to generate documentation to doc/api.json 7 | gulp.task('doc-generate', function(){ 8 | return gulp.src(paths.source) 9 | .pipe(yuidoc.parser(null, 'api.json')) 10 | .pipe(gulp.dest(paths.doc)); 11 | }); 12 | 13 | // takes output of doc-generate task 14 | // and cleans it up for use with aurelia 15 | // documentation app 16 | gulp.task('doc', ['doc-generate'], function(){ 17 | tools.transformAPIModel(paths.doc); 18 | }); 19 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/e2e.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var paths = require('../paths'); 3 | var to5 = require('gulp-babel'); 4 | var plumber = require('gulp-plumber'); 5 | var gulp = require('gulp'); 6 | var webdriver_update = require('gulp-protractor').webdriver_update; 7 | var protractor = require("gulp-protractor").protractor; 8 | 9 | // for full documentation of gulp-protractor, 10 | // please check https://github.com/mllrsohn/gulp-protractor 11 | gulp.task('webdriver_update', webdriver_update); 12 | 13 | // transpiles files in 14 | // /test/e2e/src/ from es6 to es5 15 | // then copies them to test/e2e/dist/ 16 | gulp.task('build-e2e', function () { 17 | return gulp.src(paths.e2eSpecsSrc) 18 | .pipe(plumber()) 19 | .pipe(to5()) 20 | .pipe(gulp.dest(paths.e2eSpecsDist)); 21 | }); 22 | 23 | // runs build-e2e task 24 | // then runs end to end tasks 25 | // using Protractor: http://angular.github.io/protractor/ 26 | gulp.task('e2e', ['webdriver_update', 'build-e2e'], function(cb) { 27 | return gulp.src(paths.e2eSpecsDist + "/*.js") 28 | .pipe(protractor({ 29 | configFile: "protractor.conf.js", 30 | args: ['--baseUrl', 'http://127.0.0.1:9000'] 31 | })) 32 | .on('error', function(e) { throw e; }); 33 | }); 34 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/lint.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var paths = require('../paths'); 3 | var jshint = require('gulp-jshint'); 4 | var stylish = require('jshint-stylish'); 5 | 6 | // runs jshint on all .js files 7 | gulp.task('lint', function() { 8 | return gulp.src(paths.source) 9 | .pipe(jshint()) 10 | .pipe(jshint.reporter(stylish)); 11 | }); 12 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/prepare-release.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var runSequence = require('run-sequence'); 3 | var paths = require('../paths'); 4 | var changelog = require('conventional-changelog'); 5 | var fs = require('fs'); 6 | var bump = require('gulp-bump'); 7 | var args = require('../args'); 8 | 9 | // utilizes the bump plugin to bump the 10 | // semver for the repo 11 | gulp.task('bump-version', function(){ 12 | return gulp.src(['./package.json']) 13 | .pipe(bump({type:args.bump })) //major|minor|patch|prerelease 14 | .pipe(gulp.dest('./')); 15 | }); 16 | 17 | // generates the CHANGELOG.md file based on commit 18 | // from git commit messages 19 | gulp.task('changelog', function(callback) { 20 | var pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8')); 21 | 22 | return changelog({ 23 | repository: pkg.repository.url, 24 | version: pkg.version, 25 | file: paths.doc + '/CHANGELOG.md' 26 | }, function(err, log) { 27 | fs.writeFileSync(paths.doc + '/CHANGELOG.md', log); 28 | }); 29 | }); 30 | 31 | // calls the listed sequence of tasks in order 32 | gulp.task('prepare-release', function(callback){ 33 | return runSequence( 34 | 'build', 35 | 'lint', 36 | 'bump-version', 37 | 'doc', 38 | 'changelog', 39 | callback 40 | ); 41 | }); 42 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/serve.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var browserSync = require('browser-sync'); 3 | 4 | // this task utilizes the browsersync plugin 5 | // to create a dev server instance 6 | // at http://localhost:9000 7 | gulp.task('serve', ['build'], function(done) { 8 | browserSync({ 9 | open: false, 10 | port: 9000, 11 | server: { 12 | baseDir: ['.'], 13 | middleware: function (req, res, next) { 14 | res.setHeader('Access-Control-Allow-Origin', '*'); 15 | next(); 16 | } 17 | } 18 | }, done); 19 | }); 20 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/test.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var karma = require('karma').server; 3 | 4 | /** 5 | * Run test once and exit 6 | */ 7 | gulp.task('test', function (done) { 8 | karma.start({ 9 | configFile: __dirname + '/../../karma.conf.js', 10 | singleRun: true 11 | }, function(e) { 12 | done(); 13 | }); 14 | }); 15 | 16 | /** 17 | * Watch for file changes and re-run tests on each change 18 | */ 19 | gulp.task('tdd', function (done) { 20 | karma.start({ 21 | configFile: __dirname + '/../../karma.conf.js' 22 | }, function(e) { 23 | done(); 24 | }); 25 | }); 26 | 27 | /** 28 | * Run test once with code coverage and exit 29 | */ 30 | gulp.task('cover', function (done) { 31 | karma.start({ 32 | configFile: __dirname + '/../../karma.conf.js', 33 | singleRun: true, 34 | reporters: ['coverage'], 35 | preprocessors: { 36 | 'test/**/*.js': ['babel'], 37 | 'src/**/*.js': ['babel', 'coverage'] 38 | }, 39 | coverageReporter: { 40 | type: 'html', 41 | dir: 'build/reports/coverage' 42 | } 43 | }, function (e) { 44 | done(); 45 | }); 46 | }); 47 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/build/tasks/watch.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var paths = require('../paths'); 3 | var browserSync = require('browser-sync'); 4 | 5 | // outputs changes to files to the console 6 | function reportChange(event){ 7 | console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); 8 | } 9 | 10 | // this task wil watch for changes 11 | // to js, html, and css files and call the 12 | // reportChange method. Also, by depending on the 13 | // serve task, it will instantiate a browserSync session 14 | gulp.task('watch', ['serve'], function() { 15 | gulp.watch(paths.source, ['build-system', browserSync.reload]).on('change', reportChange); 16 | gulp.watch(paths.html, ['build-html', browserSync.reload]).on('change', reportChange); 17 | gulp.watch(paths.style, browserSync.reload).on('change', reportChange); 18 | }); 19 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/config.js: -------------------------------------------------------------------------------- 1 | System.config({ 2 | defaultJSExtensions: true, 3 | transpiler: "babel", 4 | babelOptions: { 5 | "optional": [ 6 | "es7.decorators", 7 | "es7.classProperties", 8 | "runtime" 9 | ] 10 | }, 11 | paths: { 12 | "*": "dist/*", 13 | "github:*": "jspm_packages/github/*", 14 | "npm:*": "jspm_packages/npm/*" 15 | }, 16 | 17 | map: { 18 | "aurelia-animator-css": "github:aurelia/animator-css@0.14.1", 19 | "aurelia-binding": "github:aurelia/binding@0.8.5", 20 | "aurelia-bootstrapper": "github:aurelia/bootstrapper@0.15.0", 21 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 22 | "aurelia-event-aggregator": "github:aurelia/event-aggregator@0.6.2", 23 | "aurelia-fetch-client": "github:aurelia/fetch-client@0.1.1", 24 | "aurelia-framework": "github:aurelia/framework@0.14.0", 25 | "aurelia-history": "github:aurelia/history@0.6.1", 26 | "aurelia-history-browser": "github:aurelia/history-browser@0.6.2", 27 | "aurelia-loader": "github:aurelia/loader@0.8.3", 28 | "aurelia-loader-default": "github:aurelia/loader-default@0.9.3", 29 | "aurelia-logging": "github:aurelia/logging@0.6.2", 30 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 31 | "aurelia-path": "github:aurelia/path@0.8.1", 32 | "aurelia-route-recognizer": "github:aurelia/route-recognizer@0.6.1", 33 | "aurelia-router": "github:aurelia/router@0.10.4", 34 | "aurelia-task-queue": "github:aurelia/task-queue@0.6.1", 35 | "aurelia-templating": "github:aurelia/templating@0.13.16", 36 | "aurelia-templating-binding": "github:aurelia/templating-binding@0.13.2", 37 | "aurelia-templating-resources": "github:aurelia/templating-resources@0.13.4", 38 | "aurelia-templating-router": "github:aurelia/templating-router@0.14.1", 39 | "aurelia/fetch-client": "github:aurelia/fetch-client@0.1.1", 40 | "babel": "npm:babel-core@5.8.21", 41 | "babel-runtime": "npm:babel-runtime@5.8.20", 42 | "bootstrap": "github:twbs/bootstrap@3.3.5", 43 | "core-js": "npm:core-js@0.9.18", 44 | "css": "github:systemjs/plugin-css@0.1.13", 45 | "fetch": "github:github/fetch@0.9.0", 46 | "font-awesome": "npm:font-awesome@4.4.0", 47 | "github:aurelia/animator-css@0.14.1": { 48 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 49 | "aurelia-templating": "github:aurelia/templating@0.13.16" 50 | }, 51 | "github:aurelia/binding@0.8.5": { 52 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 53 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 54 | "aurelia-task-queue": "github:aurelia/task-queue@0.6.1", 55 | "core-js": "npm:core-js@0.9.18" 56 | }, 57 | "github:aurelia/bootstrapper@0.15.0": { 58 | "aurelia-event-aggregator": "github:aurelia/event-aggregator@0.6.2", 59 | "aurelia-framework": "github:aurelia/framework@0.14.0", 60 | "aurelia-history": "github:aurelia/history@0.6.1", 61 | "aurelia-history-browser": "github:aurelia/history-browser@0.6.2", 62 | "aurelia-loader-default": "github:aurelia/loader-default@0.9.3", 63 | "aurelia-logging-console": "github:aurelia/logging-console@0.6.1", 64 | "aurelia-router": "github:aurelia/router@0.10.4", 65 | "aurelia-templating": "github:aurelia/templating@0.13.16", 66 | "aurelia-templating-binding": "github:aurelia/templating-binding@0.13.2", 67 | "aurelia-templating-resources": "github:aurelia/templating-resources@0.13.4", 68 | "aurelia-templating-router": "github:aurelia/templating-router@0.14.1", 69 | "core-js": "npm:core-js@0.9.18" 70 | }, 71 | "github:aurelia/dependency-injection@0.9.1": { 72 | "aurelia-logging": "github:aurelia/logging@0.6.2", 73 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 74 | "core-js": "npm:core-js@0.9.18" 75 | }, 76 | "github:aurelia/event-aggregator@0.6.2": { 77 | "aurelia-logging": "github:aurelia/logging@0.6.2" 78 | }, 79 | "github:aurelia/fetch-client@0.1.1": { 80 | "core-js": "npm:core-js@0.9.18" 81 | }, 82 | "github:aurelia/framework@0.14.0": { 83 | "aurelia-binding": "github:aurelia/binding@0.8.5", 84 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 85 | "aurelia-loader": "github:aurelia/loader@0.8.3", 86 | "aurelia-logging": "github:aurelia/logging@0.6.2", 87 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 88 | "aurelia-path": "github:aurelia/path@0.8.1", 89 | "aurelia-task-queue": "github:aurelia/task-queue@0.6.1", 90 | "aurelia-templating": "github:aurelia/templating@0.13.16", 91 | "core-js": "npm:core-js@0.9.18" 92 | }, 93 | "github:aurelia/history-browser@0.6.2": { 94 | "aurelia-history": "github:aurelia/history@0.6.1", 95 | "core-js": "npm:core-js@0.9.18" 96 | }, 97 | "github:aurelia/loader-default@0.9.3": { 98 | "aurelia-loader": "github:aurelia/loader@0.8.3", 99 | "aurelia-metadata": "github:aurelia/metadata@0.7.2" 100 | }, 101 | "github:aurelia/loader@0.8.3": { 102 | "aurelia-html-template-element": "github:aurelia/html-template-element@0.2.0", 103 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 104 | "aurelia-path": "github:aurelia/path@0.8.1", 105 | "core-js": "npm:core-js@0.9.18", 106 | "webcomponentsjs": "github:webcomponents/webcomponentsjs@0.6.3" 107 | }, 108 | "github:aurelia/metadata@0.7.2": { 109 | "core-js": "npm:core-js@0.9.18" 110 | }, 111 | "github:aurelia/route-recognizer@0.6.1": { 112 | "core-js": "npm:core-js@0.9.18" 113 | }, 114 | "github:aurelia/router@0.10.4": { 115 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 116 | "aurelia-event-aggregator": "github:aurelia/event-aggregator@0.6.2", 117 | "aurelia-history": "github:aurelia/history@0.6.1", 118 | "aurelia-logging": "github:aurelia/logging@0.6.2", 119 | "aurelia-path": "github:aurelia/path@0.8.1", 120 | "aurelia-route-recognizer": "github:aurelia/route-recognizer@0.6.1", 121 | "core-js": "npm:core-js@0.9.18" 122 | }, 123 | "github:aurelia/templating-binding@0.13.2": { 124 | "aurelia-binding": "github:aurelia/binding@0.8.5", 125 | "aurelia-logging": "github:aurelia/logging@0.6.2", 126 | "aurelia-templating": "github:aurelia/templating@0.13.16" 127 | }, 128 | "github:aurelia/templating-resources@0.13.4": { 129 | "aurelia-binding": "github:aurelia/binding@0.8.5", 130 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 131 | "aurelia-logging": "github:aurelia/logging@0.6.2", 132 | "aurelia-task-queue": "github:aurelia/task-queue@0.6.1", 133 | "aurelia-templating": "github:aurelia/templating@0.13.16", 134 | "core-js": "npm:core-js@0.9.18" 135 | }, 136 | "github:aurelia/templating-router@0.14.1": { 137 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 138 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 139 | "aurelia-path": "github:aurelia/path@0.8.1", 140 | "aurelia-router": "github:aurelia/router@0.10.4", 141 | "aurelia-templating": "github:aurelia/templating@0.13.16" 142 | }, 143 | "github:aurelia/templating@0.13.16": { 144 | "aurelia-binding": "github:aurelia/binding@0.8.5", 145 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@0.9.1", 146 | "aurelia-html-template-element": "github:aurelia/html-template-element@0.2.0", 147 | "aurelia-loader": "github:aurelia/loader@0.8.3", 148 | "aurelia-logging": "github:aurelia/logging@0.6.2", 149 | "aurelia-metadata": "github:aurelia/metadata@0.7.2", 150 | "aurelia-path": "github:aurelia/path@0.8.1", 151 | "aurelia-task-queue": "github:aurelia/task-queue@0.6.1", 152 | "core-js": "npm:core-js@0.9.18" 153 | }, 154 | "github:jspm/nodelibs-process@0.1.1": { 155 | "process": "npm:process@0.10.1" 156 | }, 157 | "github:twbs/bootstrap@3.3.5": { 158 | "jquery": "github:components/jquery@2.1.4" 159 | }, 160 | "npm:babel-runtime@5.8.20": { 161 | "process": "github:jspm/nodelibs-process@0.1.1" 162 | }, 163 | "npm:core-js@0.9.18": { 164 | "fs": "github:jspm/nodelibs-fs@0.1.2", 165 | "process": "github:jspm/nodelibs-process@0.1.1", 166 | "systemjs-json": "github:systemjs/plugin-json@0.1.0" 167 | }, 168 | "npm:font-awesome@4.4.0": { 169 | "css": "github:systemjs/plugin-css@0.1.13" 170 | } 171 | } 172 | }); 173 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/app.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/app.js: -------------------------------------------------------------------------------- 1 | System.register(['bootstrap', 'bootstrap/css/bootstrap.css!'], function (_export) { 2 | 'use strict'; 3 | 4 | var App; 5 | 6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 9 | 10 | return { 11 | setters: [function (_bootstrap) {}, function (_bootstrapCssBootstrapCss) {}], 12 | execute: function () { 13 | App = (function () { 14 | function App() { 15 | _classCallCheck(this, App); 16 | } 17 | 18 | _createClass(App, [{ 19 | key: 'configureRouter', 20 | value: function configureRouter(config, router) { 21 | config.title = 'Aurelia'; 22 | config.map([{ route: ['', 'welcome'], name: 'welcome', moduleId: 'welcome', nav: true, title: 'Welcome' }, { route: 'users', name: 'users', moduleId: 'users', nav: true, title: 'Github Users' }, { route: 'child-router', name: 'child-router', moduleId: 'child-router', nav: true, title: 'Child Router' }]); 23 | 24 | this.router = router; 25 | } 26 | }]); 27 | 28 | return App; 29 | })(); 30 | 31 | _export('App', App); 32 | } 33 | }; 34 | }); 35 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUFHYSxHQUFHOzs7Ozs7Ozs7QUFBSCxTQUFHO2lCQUFILEdBQUc7Z0NBQUgsR0FBRzs7O3FCQUFILEdBQUc7O2lCQUNDLHlCQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUM7QUFDN0Isa0JBQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLGtCQUFNLENBQUMsR0FBRyxDQUFDLENBQ1QsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUMsU0FBUyxDQUFDLEVBQUcsSUFBSSxFQUFFLFNBQVMsRUFBTyxRQUFRLEVBQUUsU0FBUyxFQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLFNBQVMsRUFBRSxFQUN0RyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQVUsSUFBSSxFQUFFLE9BQU8sRUFBUyxRQUFRLEVBQUUsT0FBTyxFQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLGNBQWMsRUFBRSxFQUMzRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUcsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLGNBQWMsRUFBRSxDQUM1RyxDQUFDLENBQUM7O0FBRUgsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1dBQ3RCOzs7ZUFWVSxHQUFHIiwiZmlsZSI6ImFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnYm9vdHN0cmFwJztcbmltcG9ydCAnYm9vdHN0cmFwL2Nzcy9ib290c3RyYXAuY3NzISc7XG5cbmV4cG9ydCBjbGFzcyBBcHAge1xuICBjb25maWd1cmVSb3V0ZXIoY29uZmlnLCByb3V0ZXIpe1xuICAgIGNvbmZpZy50aXRsZSA9ICdBdXJlbGlhJztcbiAgICBjb25maWcubWFwKFtcbiAgICAgIHsgcm91dGU6IFsnJywnd2VsY29tZSddLCAgbmFtZTogJ3dlbGNvbWUnLCAgICAgIG1vZHVsZUlkOiAnd2VsY29tZScsICAgICAgbmF2OiB0cnVlLCB0aXRsZTonV2VsY29tZScgfSxcbiAgICAgIHsgcm91dGU6ICd1c2VycycsICAgICAgICAgbmFtZTogJ3VzZXJzJywgICAgICAgIG1vZHVsZUlkOiAndXNlcnMnLCAgICAgICAgbmF2OiB0cnVlLCB0aXRsZTonR2l0aHViIFVzZXJzJyB9LFxuICAgICAgeyByb3V0ZTogJ2NoaWxkLXJvdXRlcicsICBuYW1lOiAnY2hpbGQtcm91dGVyJywgbW9kdWxlSWQ6ICdjaGlsZC1yb3V0ZXInLCBuYXY6IHRydWUsIHRpdGxlOidDaGlsZCBSb3V0ZXInIH1cbiAgICBdKTtcblxuICAgIHRoaXMucm91dGVyID0gcm91dGVyO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/child-router.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/child-router.js: -------------------------------------------------------------------------------- 1 | System.register([], function (_export) { 2 | 'use strict'; 3 | 4 | var ChildRouter; 5 | 6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 9 | 10 | return { 11 | setters: [], 12 | execute: function () { 13 | ChildRouter = (function () { 14 | function ChildRouter() { 15 | _classCallCheck(this, ChildRouter); 16 | 17 | this.heading = 'Child Router'; 18 | } 19 | 20 | _createClass(ChildRouter, [{ 21 | key: 'configureRouter', 22 | value: function configureRouter(config, router) { 23 | config.map([{ route: ['', 'welcome'], name: 'welcome', moduleId: 'welcome', nav: true, title: 'Welcome' }, { route: 'users', name: 'users', moduleId: 'users', nav: true, title: 'Github Users' }, { route: 'child-router', name: 'child-router', moduleId: 'child-router', nav: true, title: 'Child Router' }]); 24 | 25 | this.router = router; 26 | } 27 | }]); 28 | 29 | return ChildRouter; 30 | })(); 31 | 32 | _export('ChildRouter', ChildRouter); 33 | } 34 | }; 35 | }); 36 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNoaWxkLXJvdXRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUFBYSxXQUFXOzs7Ozs7Ozs7QUFBWCxpQkFBVztpQkFBWCxXQUFXO2dDQUFYLFdBQVc7O2VBQ3RCLE9BQU8sR0FBRyxjQUFjOzs7cUJBRGIsV0FBVzs7aUJBR1AseUJBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQztBQUM3QixrQkFBTSxDQUFDLEdBQUcsQ0FBQyxDQUNULEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFDLFNBQVMsQ0FBQyxFQUFHLElBQUksRUFBRSxTQUFTLEVBQVEsUUFBUSxFQUFFLFNBQVMsRUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxTQUFTLEVBQUUsRUFDeEcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFVLElBQUksRUFBRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE9BQU8sRUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxjQUFjLEVBQUUsRUFDN0csRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFHLElBQUksRUFBRSxjQUFjLEVBQUcsUUFBUSxFQUFFLGNBQWMsRUFBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxjQUFjLEVBQUUsQ0FDOUcsQ0FBQyxDQUFDOztBQUVILGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztXQUN0Qjs7O2VBWFUsV0FBVyIsImZpbGUiOiJjaGlsZC1yb3V0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ2hpbGRSb3V0ZXJ7XG4gIGhlYWRpbmcgPSAnQ2hpbGQgUm91dGVyJztcblxuICBjb25maWd1cmVSb3V0ZXIoY29uZmlnLCByb3V0ZXIpe1xuICAgIGNvbmZpZy5tYXAoW1xuICAgICAgeyByb3V0ZTogWycnLCd3ZWxjb21lJ10sICBuYW1lOiAnd2VsY29tZScsICAgICAgIG1vZHVsZUlkOiAnd2VsY29tZScsICAgICAgIG5hdjogdHJ1ZSwgdGl0bGU6J1dlbGNvbWUnIH0sXG4gICAgICB7IHJvdXRlOiAndXNlcnMnLCAgICAgICAgIG5hbWU6ICd1c2VycycsICAgICAgICAgbW9kdWxlSWQ6ICd1c2VycycsICAgICAgICAgbmF2OiB0cnVlLCB0aXRsZTonR2l0aHViIFVzZXJzJyB9LFxuICAgICAgeyByb3V0ZTogJ2NoaWxkLXJvdXRlcicsICBuYW1lOiAnY2hpbGQtcm91dGVyJywgIG1vZHVsZUlkOiAnY2hpbGQtcm91dGVyJywgIG5hdjogdHJ1ZSwgdGl0bGU6J0NoaWxkIFJvdXRlcicgfVxuICAgIF0pO1xuXG4gICAgdGhpcy5yb3V0ZXIgPSByb3V0ZXI7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/nav-bar.html: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/nav-bar.js: -------------------------------------------------------------------------------- 1 | System.register(['aurelia-framework'], function (_export) { 2 | 'use strict'; 3 | 4 | var bindable, NavBar; 5 | 6 | var _createDecoratedClass = (function () { function defineProperties(target, descriptors, initializers) { for (var i = 0; i < descriptors.length; i++) { var descriptor = descriptors[i]; var decorators = descriptor.decorators; var key = descriptor.key; delete descriptor.key; delete descriptor.decorators; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor || descriptor.initializer) descriptor.writable = true; if (decorators) { for (var f = 0; f < decorators.length; f++) { var decorator = decorators[f]; if (typeof decorator === 'function') { descriptor = decorator(target, key, descriptor) || descriptor; } else { throw new TypeError('The decorator for method ' + descriptor.key + ' is of the invalid type ' + typeof decorator); } } if (descriptor.initializer !== undefined) { initializers[key] = descriptor; continue; } } Object.defineProperty(target, key, descriptor); } } return function (Constructor, protoProps, staticProps, protoInitializers, staticInitializers) { if (protoProps) defineProperties(Constructor.prototype, protoProps, protoInitializers); if (staticProps) defineProperties(Constructor, staticProps, staticInitializers); return Constructor; }; })(); 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 9 | 10 | function _defineDecoratedPropertyDescriptor(target, key, descriptors) { var _descriptor = descriptors[key]; if (!_descriptor) return; var descriptor = {}; for (var _key in _descriptor) descriptor[_key] = _descriptor[_key]; descriptor.value = descriptor.initializer ? descriptor.initializer.call(target) : undefined; Object.defineProperty(target, key, descriptor); } 11 | 12 | return { 13 | setters: [function (_aureliaFramework) { 14 | bindable = _aureliaFramework.bindable; 15 | }], 16 | execute: function () { 17 | NavBar = (function () { 18 | var _instanceInitializers = {}; 19 | 20 | function NavBar() { 21 | _classCallCheck(this, NavBar); 22 | 23 | _defineDecoratedPropertyDescriptor(this, 'router', _instanceInitializers); 24 | } 25 | 26 | _createDecoratedClass(NavBar, [{ 27 | key: 'router', 28 | decorators: [bindable], 29 | initializer: function initializer() { 30 | return null; 31 | }, 32 | enumerable: true 33 | }], null, _instanceInitializers); 34 | 35 | return NavBar; 36 | })(); 37 | 38 | _export('NavBar', NavBar); 39 | } 40 | }; 41 | }); 42 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5hdi1iYXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2dCQUVhLE1BQU07Ozs7Ozs7Ozs7bUNBRlgsUUFBUTs7O0FBRUgsWUFBTTs7O2lCQUFOLE1BQU07Z0NBQU4sTUFBTTs7Ozs7OEJBQU4sTUFBTTs7dUJBQ2hCLFFBQVE7O21CQUFVLElBQUk7Ozs7O2VBRFosTUFBTSIsImZpbGUiOiJuYXYtYmFyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiaW5kYWJsZX0gZnJvbSAnYXVyZWxpYS1mcmFtZXdvcmsnO1xuXG5leHBvcnQgY2xhc3MgTmF2QmFyIHtcbiAgQGJpbmRhYmxlIHJvdXRlciA9IG51bGw7XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/welcome.html: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/dist/welcome.js: -------------------------------------------------------------------------------- 1 | System.register(['aurelia-framework'], function (_export) { 2 | 'use strict'; 3 | 4 | var computedFrom, Welcome, UpperValueConverter; 5 | 6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 9 | 10 | return { 11 | setters: [function (_aureliaFramework) { 12 | computedFrom = _aureliaFramework.computedFrom; 13 | }], 14 | execute: function () { 15 | Welcome = (function () { 16 | function Welcome() { 17 | _classCallCheck(this, Welcome); 18 | 19 | this.heading = 'Welcome to the Aurelia Navigation App!'; 20 | this.firstName = 'John'; 21 | this.lastName = 'Doe'; 22 | this.previousValue = this.fullName; 23 | } 24 | 25 | _createClass(Welcome, [{ 26 | key: 'submit', 27 | value: function submit() { 28 | this.previousValue = this.fullName; 29 | alert('Welcome, ' + this.fullName + '!'); 30 | } 31 | }, { 32 | key: 'canDeactivate', 33 | value: function canDeactivate() { 34 | if (this.fullName !== this.previousValue) { 35 | return confirm('Are you sure you want to leave?'); 36 | } 37 | } 38 | }, { 39 | key: 'fullName', 40 | get: function get() { 41 | return this.firstName + ' ' + this.lastName; 42 | } 43 | }]); 44 | 45 | return Welcome; 46 | })(); 47 | 48 | _export('Welcome', Welcome); 49 | 50 | UpperValueConverter = (function () { 51 | function UpperValueConverter() { 52 | _classCallCheck(this, UpperValueConverter); 53 | } 54 | 55 | _createClass(UpperValueConverter, [{ 56 | key: 'toView', 57 | value: function toView(value) { 58 | return value && value.toUpperCase(); 59 | } 60 | }]); 61 | 62 | return UpperValueConverter; 63 | })(); 64 | 65 | _export('UpperValueConverter', UpperValueConverter); 66 | } 67 | }; 68 | }); 69 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlbGNvbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O29CQUVhLE9BQU8sRUEwQlAsbUJBQW1COzs7Ozs7Ozt1Q0E1QnhCLFlBQVk7OztBQUVQLGFBQU87aUJBQVAsT0FBTztnQ0FBUCxPQUFPOztlQUNsQixPQUFPLEdBQUcsd0NBQXdDO2VBQ2xELFNBQVMsR0FBRyxNQUFNO2VBQ2xCLFFBQVEsR0FBRyxLQUFLO2VBQ2hCLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUTs7O3FCQUpsQixPQUFPOztpQkFjWixrQkFBRTtBQUNOLGdCQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDbkMsaUJBQUssZUFBYSxJQUFJLENBQUMsUUFBUSxPQUFJLENBQUM7V0FDckM7OztpQkFFWSx5QkFBRztBQUNkLGdCQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtBQUN4QyxxQkFBTyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQzthQUNuRDtXQUNGOzs7ZUFiVyxlQUFFO0FBQ1osbUJBQVUsSUFBSSxDQUFDLFNBQVMsU0FBSSxJQUFJLENBQUMsUUFBUSxDQUFHO1dBQzdDOzs7ZUFaVSxPQUFPOzs7OztBQTBCUCx5QkFBbUI7aUJBQW5CLG1CQUFtQjtnQ0FBbkIsbUJBQW1COzs7cUJBQW5CLG1CQUFtQjs7aUJBQ3hCLGdCQUFDLEtBQUssRUFBQztBQUNYLG1CQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7V0FDckM7OztlQUhVLG1CQUFtQiIsImZpbGUiOiJ3ZWxjb21lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZEZyb219IGZyb20gJ2F1cmVsaWEtZnJhbWV3b3JrJztcblxuZXhwb3J0IGNsYXNzIFdlbGNvbWV7XG4gIGhlYWRpbmcgPSAnV2VsY29tZSB0byB0aGUgQXVyZWxpYSBOYXZpZ2F0aW9uIEFwcCEnO1xuICBmaXJzdE5hbWUgPSAnSm9obic7XG4gIGxhc3ROYW1lID0gJ0RvZSc7XG4gIHByZXZpb3VzVmFsdWUgPSB0aGlzLmZ1bGxOYW1lO1xuXG4gIC8vR2V0dGVycyBjYW4ndCBiZSBvYnNlcnZlZCB3aXRoIE9iamVjdC5vYnNlcnZlLCBzbyB0aGV5IG11c3QgYmUgZGlydHkgY2hlY2tlZC5cbiAgLy9Ib3dldmVyLCBpZiB5b3UgdGVsbCBBdXJlbGlhIHRoZSBkZXBlbmRlbmNpZXMsIGl0IG5vIGxvbmdlciBuZWVkcyB0byBkaXJ0eSBjaGVjayB0aGUgcHJvcGVydHkuXG4gIC8vVG8gb3B0aW1pemUgYnkgZGVjbGFyaW5nIHRoZSBwcm9wZXJ0aWVzIHRoYXQgdGhpcyBnZXR0ZXIgaXMgY29tcHV0ZWQgZnJvbSwgdW5jb21tZW50IHRoZSBsaW5lIGJlbG93LlxuICAvL0Bjb21wdXRlZEZyb20oJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScpXG4gIGdldCBmdWxsTmFtZSgpe1xuICAgIHJldHVybiBgJHt0aGlzLmZpcnN0TmFtZX0gJHt0aGlzLmxhc3ROYW1lfWA7XG4gIH1cblxuICBzdWJtaXQoKXtcbiAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB0aGlzLmZ1bGxOYW1lO1xuICAgIGFsZXJ0KGBXZWxjb21lLCAke3RoaXMuZnVsbE5hbWV9IWApO1xuICB9XG5cbiAgY2FuRGVhY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5mdWxsTmFtZSAhPT0gdGhpcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlPycpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBwZXJWYWx1ZUNvbnZlcnRlciB7XG4gIHRvVmlldyh2YWx1ZSl7XG4gICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/doc/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.16.2 (2015-08-05) 2 | 3 | 4 | #### Bug Fixes 5 | 6 | * **package:** remove old framework version ([a2bec337](http://github.com/aurelia/skeleton-navigation/commit/a2bec3373bee7a65f642ba358e178e5cc7270805)) 7 | 8 | 9 | ### 0.16.1 (2015-08-05) 10 | 11 | 12 | #### Bug Fixes 13 | 14 | * **config:** correct start path by removing the js extension ([d2149e4e](http://github.com/aurelia/skeleton-navigation/commit/d2149e4e0acf8f3ce3013b6c4ca5f97a88138948)) 15 | 16 | 17 | ## 0.16.0 (2015-08-05) 18 | 19 | 20 | #### Bug Fixes 21 | 22 | * **all:** update source to work with jspm beta ([53f5cf1a](http://github.com/aurelia/skeleton-navigation/commit/53f5cf1ad0d07d8a1f1087e17a93ecb8718fca62)) 23 | * **css:** fix print styles ([dfcf28a8](http://github.com/aurelia/skeleton-navigation/commit/dfcf28a84e07a7ee62635513d836cfa8b3523a87)) 24 | * **index:** update font awesome reference ([686b337c](http://github.com/aurelia/skeleton-navigation/commit/686b337c188855bc4fc255872f09528beed20a10)) 25 | * **styles:** correct some class names ([eeed0111](http://github.com/aurelia/skeleton-navigation/commit/eeed01119b85ea000528eaff89c93d55ca5102e4)) 26 | * **users:** move the fetch polyfil load to users so the main.js isn't required ([53a3e2be](http://github.com/aurelia/skeleton-navigation/commit/53a3e2be259a68dad77d1e7976abd5efaaf82869)) 27 | 28 | 29 | #### Features 30 | 31 | * **all:** switch over to github users in place of flickr ([6fd31066](http://github.com/aurelia/skeleton-navigation/commit/6fd310664a4056f6984915b35ba245c0cf3c0b82)) 32 | 33 | 34 | ### 0.15.1 (2015-07-02) 35 | 36 | 37 | ## 0.15.0 (2015-07-02) 38 | 39 | 40 | #### Bug Fixes 41 | 42 | * **build:** include source in source maps. resolve #111 ([e6accba4](http://github.com/aurelia/skeleton-navigation/commit/e6accba4a533100f56a7040ff4010390bd9f0bad)) 43 | * **package:** reduce debug requests using core-js override ([cede89f6](http://github.com/aurelia/skeleton-navigation/commit/cede89f6768017b238aac0e73e9bf41d9a502220)) 44 | * **tests:** Fix unit tests ([8abc7741](http://github.com/aurelia/skeleton-navigation/commit/8abc7741c7b64ad0b54d7ef1f14d93bb5c0599cf)) 45 | 46 | 47 | #### Features 48 | 49 | * **routes:** name all routes ([a3cb19ce](http://github.com/aurelia/skeleton-navigation/commit/a3cb19ce63f9a53c58c36244f9cca20ead54fb32)) 50 | 51 | 52 | ## 0.14.0 (2015-06-09) 53 | 54 | 55 | #### Bug Fixes 56 | 57 | * **all:** update route config to match changes in router ([5f272a41](http://github.com/aurelia/skeleton-navigation/commit/5f272a41e8df271f4b2437472bbc0673cd2ef62d)) 58 | * **config:** 59 | * add mappings that reflect the EA deps for pre-release testing ([d7cebc67](http://github.com/aurelia/skeleton-navigation/commit/d7cebc67c0b8af43570993d4ab127d97641962c1)) 60 | * revert path config after tool change ([a1c4524b](http://github.com/aurelia/skeleton-navigation/commit/a1c4524b9f84178b70787da4d8642ed8573a0491)) 61 | * **karma:** 62 | * Fixed tests to adhere to new flickr route ([caf4838c](http://github.com/aurelia/skeleton-navigation/commit/caf4838cb44885826e6eaf7455332581f8ad8cb1)) 63 | * properly set jspm paths for karma ([75584889](http://github.com/aurelia/skeleton-navigation/commit/7558488953b860336a6b4ab3a1c8a2fb7501c122)) 64 | * **package:** update deps to latest versions ([4fa8356c](http://github.com/aurelia/skeleton-navigation/commit/4fa8356c689d3be8086ab6063dda7af3cfbdca3f)) 65 | * **styles:** change the image animation ([009f4e28](http://github.com/aurelia/skeleton-navigation/commit/009f4e2875cb1c8aea50269577ab28906b6d58bf)) 66 | * **tests:** Fix unit tests for new release ([89b75782](http://github.com/aurelia/skeleton-navigation/commit/89b75782eb1a28771475c49b29be157e4eda8e63)) 67 | * **welcome:** rename the welcome method to submit ([5e4894f3](http://github.com/aurelia/skeleton-navigation/commit/5e4894f354306f1da0e525a214a6edb3563aecba)) 68 | 69 | 70 | #### Features 71 | 72 | * **anim:** adds staggering animations ([5324e133](http://github.com/aurelia/skeleton-navigation/commit/5324e133e8ccfc64655d8362b8830ce32a56470d)) 73 | * **flickr:** move canDeactivate prompt into Welcome ([834b83a8](http://github.com/aurelia/skeleton-navigation/commit/834b83a85f2e36d978482b0ce8c61f45f68841bc)) 74 | 75 | 76 | ## 0.13.0 (2015-05-01) 77 | 78 | 79 | #### Bug Fixes 80 | 81 | * **all:** update to latest router usage ([1bb373f7](http://github.com/aurelia/skeleton-navigation/commit/1bb373f73e224f084ac8b3bc330aeffb5d9bf5f0)) 82 | * **anim:** Remove welcome class animation ([a68fc9d4](http://github.com/aurelia/skeleton-navigation/commit/a68fc9d41f866aacccb1cc1b567b18af58141d1b)) 83 | * **build:** use relative path for source maps. resolve #66 ([aaf3cc9a](http://github.com/aurelia/skeleton-navigation/commit/aaf3cc9a67f86275a94666ab328f2ca74a7f7c52)) 84 | * **flickr:** remove inline styles ([612e0ea6](http://github.com/aurelia/skeleton-navigation/commit/612e0ea67e4bf13685644ff5055f5e36ffc7ad07)) 85 | * **index:** add the viewport meta tag to ensure proper rendering and touch zooming ([0ecf0b9e](http://github.com/aurelia/skeleton-navigation/commit/0ecf0b9ea97245492bd9224dfb8cc9b940f254d1)) 86 | * **navbar:** automatically collapse the navigation menu on click ([28f3c6fa](http://github.com/aurelia/skeleton-navigation/commit/28f3c6faf1fa3d1533f6470b273bacea7ed76eb7)) 87 | * **package:** update dependencies ([dfe57813](http://github.com/aurelia/skeleton-navigation/commit/dfe57813459d012c05affa6c09acb568854c07e3)) 88 | 89 | 90 | #### Features 91 | 92 | * **anim:** Add animation example ([675d15a1](http://github.com/aurelia/skeleton-navigation/commit/675d15a153c399f524070e7cb468caae3230febe)) 93 | 94 | 95 | ## 0.12.0 (2015-04-09) 96 | 97 | 98 | #### Bug Fixes 99 | 100 | * **readme:** More info about E2E workflow ([f9b360ee](http://github.com/aurelia/skeleton-navigation/commit/f9b360ee3211b896b5b9970520bcd37dc79c2918)) 101 | * **test:** workaround for issue with jspm karma plugin ([7bf90b7e](http://github.com/aurelia/skeleton-navigation/commit/7bf90b7ef78b4375760e94c394a8f2ec0870e43e)) 102 | * **tests:** Update routes in unit tests ([fb2c02b6](http://github.com/aurelia/skeleton-navigation/commit/fb2c02b6e3dd5ba219b307bedd5be9b999c21116)) 103 | 104 | 105 | #### Features 106 | 107 | * **all:** new decorators and behavior model implemented ([e5445795](http://github.com/aurelia/skeleton-navigation/commit/e54457951a17b3f29d47555a299f9aaa06e59349)) 108 | 109 | 110 | ## 0.11.0 (2015-03-25) 111 | 112 | 113 | #### Bug Fixes 114 | 115 | * **all:** update to latest framework versions ([86378200](http://github.com/aurelia/skeleton-navigation/commit/8637820009f7bf4f4b2a08b2abaf2fae9bb2811d)) 116 | 117 | 118 | ### 0.10.2 (2015-02-28) 119 | 120 | 121 | #### Bug Fixes 122 | 123 | * **package:** update dependencies ([3a8cfc33](http://github.com/aurelia/skeleton-navigation/commit/3a8cfc33cb41e29d4199a94b43198cf62a3a1ceb)) 124 | 125 | 126 | ### 0.10.1 (2015-02-28) 127 | 128 | 129 | #### Bug Fixes 130 | 131 | * **child-router:** correct class name ([93f9bfc9](http://github.com/aurelia/skeleton-navigation/commit/93f9bfc9076a7e950d667d50c9ac75e9efb3e1f5)) 132 | * **e2e:** 133 | * remove iit in dist ([dd644b1f](http://github.com/aurelia/skeleton-navigation/commit/dd644b1f926fca5c0a59cf1a662fb246456aa9ae)) 134 | * remove iit ([340fc90d](http://github.com/aurelia/skeleton-navigation/commit/340fc90d3a558e6a5f1aed83f7d2c1080447bc33)) 135 | * **package:** update dependencies ([42b6ebbd](http://github.com/aurelia/skeleton-navigation/commit/42b6ebbd571f61d82ef7334b518dba4259559f2a)) 136 | 137 | 138 | #### Features 139 | 140 | * **e2e:** add protractor plugin, add waitMethods ([d24c5a0d](http://github.com/aurelia/skeleton-navigation/commit/d24c5a0d606c6da1c30cf54a56ca5d3e086749cb)) 141 | 142 | 143 | ## 0.10.0 (2015-02-12) 144 | 145 | 146 | #### Bug Fixes 147 | 148 | * **index:** properly load bootstrap ([c1735fdb](http://github.com/aurelia/skeleton-navigation/commit/c1735fdbd064e69567b90358dfcc5eff0fdeab37)) 149 | 150 | 151 | ### 0.9.5 (2015-02-06) 152 | 153 | 154 | #### Bug Fixes 155 | 156 | * **build:** 157 | * include root attribute on path for source maps ([e3fc2d5a](http://github.com/aurelia/skeleton-navigation/commit/e3fc2d5a26f354c2afbd2c1e1e45b96fe5d92657), closes [#26](http://github.com/aurelia/skeleton-navigation/issues/26)) 158 | * add source maps; remove sourceFileName from compiler options ([1733c4ad](http://github.com/aurelia/skeleton-navigation/commit/1733c4ad032747ecb868b420a5d6f23e9dab12ae)) 159 | * **package:** update dependencies ([025154f3](http://github.com/aurelia/skeleton-navigation/commit/025154f3c9fc9d99b6ca00bfd94d9ffc8249df5c)) 160 | * **test:** removing single it execution ([31866dc3](http://github.com/aurelia/skeleton-navigation/commit/31866dc3038fe2c1b51531620a13b88c8e3ff766)) 161 | 162 | 163 | #### Features 164 | 165 | * **e2e:** add protractor locator and e2e PO test ([2509836e](http://github.com/aurelia/skeleton-navigation/commit/2509836e8406745e55c8d3d897f8a2b7f1bb1c56)) 166 | 167 | 168 | ### 0.9.4 (2015-02-03) 169 | 170 | 171 | #### Bug Fixes 172 | 173 | * **index:** per systemjs recommendation, remove error binding ([e30cefac](http://github.com/aurelia/skeleton-navigation/commit/e30cefac419f88911a4c18085ffd59d05047e254)) 174 | * **package:** add missing depdency ([c3718827](http://github.com/aurelia/skeleton-navigation/commit/c37188278816f1c540e8b038a8dfed60dfeb0d9c)) 175 | 176 | 177 | #### Features 178 | 179 | * **gulpfile:** adds protractor configuration and gulpfile tasks for E2E-Testing ([821f4868](http://github.com/aurelia/skeleton-navigation/commit/821f4868a5d4b4ba62cc12cece943cd55ed3142f)) 180 | * **tools:** Added build-dev-env task to skeleton-navigation ([4c145095](http://github.com/aurelia/skeleton-navigation/commit/4c1450956cf1e8804ddd660beeba77546e14287f)) 181 | 182 | 183 | ### 0.9.3 (2015-01-25) 184 | 185 | 186 | #### Bug Fixes 187 | 188 | * **package:** update dependencies ([0f221d2d](http://github.com/aurelia/skeleton-navigation/commit/0f221d2d8cb79ba40b745c92d0fa64d27bfd0dbf)) 189 | 190 | 191 | ### 0.9.2 (2015-01-25) 192 | 193 | 194 | #### Bug Fixes 195 | 196 | * **gulpfile:** bug in browser sync for style content ([342a2612](http://github.com/aurelia/skeleton-navigation/commit/342a26121cf5988d73847ed02d022d13e325d5f2)) 197 | 198 | 199 | ### 0.9.1 (2015-01-24) 200 | 201 | 202 | #### Bug Fixes 203 | 204 | * **package:** 205 | * update dependencies ([d05fb6c9](http://github.com/aurelia/skeleton-navigation/commit/d05fb6c9a4148e85165e8b8594b3de9e344e85d6)) 206 | * update dependencies ([da130f4f](http://github.com/aurelia/skeleton-navigation/commit/da130f4f2919c8330f455e1b9f175d693aacf43c)) 207 | * update dependencies ([ab85bc86](http://github.com/aurelia/skeleton-navigation/commit/ab85bc865cb1607f13cb7d5b3a55f37903e61785)) 208 | 209 | 210 | #### Features 211 | 212 | * **package:** update dependencies ([86b1dd90](http://github.com/aurelia/skeleton-navigation/commit/86b1dd908206abfdca2a8f89cc246f54e761bdbd)) 213 | * **welcome:** add sample local value converter ([9a2c2aa6](http://github.com/aurelia/skeleton-navigation/commit/9a2c2aa6f7fa9f5a5666aa0c19163bf49cbcc5fc)) 214 | 215 | 216 | ## 0.9.0 (2015-01-22) 217 | 218 | 219 | #### Bug Fixes 220 | 221 | * **all:** 222 | * update dependencies and links to latest ([8863e7b7](http://github.com/aurelia/skeleton-navigation/commit/8863e7b7d07e87430b0f495cd25923e401698bc9)) 223 | * update to latest version of metadata and view import ([2467e6c8](http://github.com/aurelia/skeleton-navigation/commit/2467e6c8361fc848b45ab6d92b180edf4d4bcdb5)) 224 | * **build:** improve watch functionality ([8496a78d](http://github.com/aurelia/skeleton-navigation/commit/8496a78def478bd2c53217c9e70db1d272a935ea)) 225 | * **package:** update dependencies ([2957e94d](http://github.com/aurelia/skeleton-navigation/commit/2957e94d84988207c2553395e8e0a1c943a65a16)) 226 | 227 | 228 | #### Features 229 | 230 | * **all:** update to new fluent metadata ([18382913](http://github.com/aurelia/skeleton-navigation/commit/183829132bce3f754377bf2d720a288b71ef4b64)) 231 | * **index:** add splash screen ([88e3e6f9](http://github.com/aurelia/skeleton-navigation/commit/88e3e6f956575c18fb37e72cd51e7bfac33f6941)) 232 | 233 | 234 | ## 0.8.0 (2015-01-12) 235 | 236 | 237 | #### Bug Fixes 238 | 239 | * **package:** update Aurelia dependencies ([44083541](http://github.com/aurelia/skeleton-navigation/commit/440835418d78b5d99278ec4f2fbc04beb79ff98f)) 240 | 241 | 242 | #### Features 243 | 244 | * **build:** update watch task to include style files ([ddf6c789](http://github.com/aurelia/skeleton-navigation/commit/ddf6c789c84ac267bdf4865f19a3339d7ee66253)) 245 | 246 | 247 | ### 0.7.2 (2015-01-07) 248 | 249 | 250 | #### Bug Fixes 251 | 252 | * **welcome:** typo in the last name label ([05e72aaa](http://github.com/aurelia/skeleton-navigation/commit/05e72aaaee2a8c58943f7b9e85eb59307a85f35d)) 253 | 254 | 255 | ### 0.7.1 (2015-01-07) 256 | 257 | * updates to the readme to help clarify issues around authentication and usage on windows 258 | 259 | ## 0.7.0 (2015-01-07) 260 | 261 | 262 | #### Bug Fixes 263 | 264 | * **package:** update dependencies to latest ([c11ffa0d](http://github.com/aurelia/skeleton-navigation/commit/c11ffa0d980c6058dbff6d0a16fadd27040f7214)) 265 | 266 | 267 | ## 0.6.0 (2015-01-06) 268 | 269 | 270 | #### Features 271 | 272 | * **build:** update compiler and switch to register module format ([921d6ab8](http://github.com/aurelia/skeleton-navigation/commit/921d6ab8a523fce6a410f7333650eef9dc5e8abc)) 273 | 274 | 275 | ## 0.5.0 (2014-12-22) 276 | 277 | 278 | #### Bug Fixes 279 | 280 | * **config:** update the jspm config ([9ceaa0c2](http://github.com/aurelia/skeleton-navigation/commit/9ceaa0c2af5374461d183993036984cf048261d8)) 281 | * **package:** update dependencies to latest versions ([b5cff606](http://github.com/aurelia/skeleton-navigation/commit/b5cff606059dff0ad47e78cc6ba4325d646015a5)) 282 | 283 | 284 | #### Features 285 | 286 | * **build:** add browser sync ([fe2d2fa7](http://github.com/aurelia/skeleton-navigation/commit/fe2d2fa7c10a4748cab6c86e326465e6a8327ef4)) 287 | 288 | 289 | ### 0.4.2 (2014-12-18) 290 | 291 | 292 | #### Bug Fixes 293 | 294 | * **package:** update bootstrapper to latest version ([e1d00037](http://github.com/aurelia/skeleton-navigation/commit/e1d000377c782b1bfc9c8fce0d247afb0b8702d1)) 295 | 296 | 297 | ### 0.4.1 (2014-12-18) 298 | 299 | 300 | #### Bug Fixes 301 | 302 | * **package:** update dependencies to latest versions ([275a693d](http://github.com/aurelia/skeleton-navigation/commit/275a693dcbbeec189847f97881b40d25e3b693d4)) 303 | 304 | 305 | ## 0.4.0 (2014-12-17) 306 | 307 | 308 | #### Bug Fixes 309 | 310 | * **package:** update dependencies to latest versions ([77986163](http://github.com/aurelia/skeleton-navigation/commit/779861632b7e48152ce7bed9d0316e90fda2482d)) 311 | * **package:** update dependencies to latest versions ([4f1661dc](http://github.com/aurelia/skeleton-navigation/commit/4f1661dceafe93c8c117133bd07b9edb243b913e)) 312 | 313 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/doc/api.json: -------------------------------------------------------------------------------- 1 | {"classes":[],"methods":[],"properties":[],"events":[]} -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/favicon.ico -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/gulpfile.js: -------------------------------------------------------------------------------- 1 | /// 2 | // all gulp tasks are located in the ./build/tasks directory 3 | // gulp configuration is in files in ./build directory 4 | require('require-dir')('build/tasks'); 5 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Aurelia 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Aurelia Navigation Skeleton
12 | 13 |
14 | 15 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions":{ 3 | "target": "ES6", 4 | "module": "system" 5 | } 6 | } -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Fri Dec 05 2014 16:49:29 GMT-0500 (EST) 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | 7 | // base path that will be used to resolve all patterns (eg. files, exclude) 8 | basePath: '', 9 | 10 | 11 | // frameworks to use 12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 13 | frameworks: ['jspm', 'jasmine'], 14 | 15 | jspm: { 16 | // Edit this to your needs 17 | loadFiles: ['src/**/*.js', 'test/unit/**/*.js'], 18 | paths: { 19 | '*': '*.js' 20 | } 21 | }, 22 | 23 | 24 | // list of files / patterns to load in the browser 25 | files: [], 26 | 27 | 28 | // list of files to exclude 29 | exclude: [ 30 | ], 31 | 32 | 33 | // preprocess matching files before serving them to the browser 34 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 35 | preprocessors: { 36 | 'test/**/*.js': ['babel'], 37 | 'src/**/*.js': ['babel'] 38 | }, 39 | 'babelPreprocessor': { 40 | options: { 41 | sourceMap: 'inline', 42 | modules: 'system', 43 | moduleIds: false, 44 | optional: [ 45 | "es7.decorators", 46 | "es7.classProperties" 47 | ] 48 | } 49 | }, 50 | 51 | // test results reporter to use 52 | // possible values: 'dots', 'progress' 53 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter 54 | reporters: ['progress'], 55 | 56 | 57 | // web server port 58 | port: 9876, 59 | 60 | 61 | // enable / disable colors in the output (reporters and logs) 62 | colors: true, 63 | 64 | 65 | // level of logging 66 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 67 | logLevel: config.LOG_INFO, 68 | 69 | 70 | // enable / disable watching file and executing tests whenever any file changes 71 | autoWatch: true, 72 | 73 | 74 | // start these browsers 75 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 76 | browsers: ['Chrome'], 77 | 78 | 79 | // Continuous Integration mode 80 | // if true, Karma captures browsers, runs the tests and exits 81 | singleRun: false 82 | }); 83 | }; 84 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\bin\aspnet-skeleton-navigation.dll.config 2 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\bin\aspnet-skeleton-navigation.dll 3 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\bin\aspnet-skeleton-navigation.pdb 4 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\obj\Debug\aspnet-skeleton-navigation.csprojResolveAssemblyReference.cache 5 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\obj\Debug\aspnet-skeleton-navigation.dll 6 | C:\Users\Ashley\github\ashleygrant\aspnet-skeleton-navigation\aspnet-skeleton-navigation\obj\Debug\aspnet-skeleton-navigation.pdb 7 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.dll -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AshleyGrant/aspnet-skeleton-navigation/9f1c8a6bbc939ed7e42be3f38883ba1a017ee45c/aspnet-skeleton-navigation/obj/Debug/aspnet-skeleton-navigation.pdb -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aurelia-skeleton-navigation", 3 | "version": "0.16.2", 4 | "description": "A starter kit for building a standard navigation-style app with Aurelia.", 5 | "keywords": [ 6 | "aurelia", 7 | "navigation", 8 | "skeleton" 9 | ], 10 | "homepage": "http://aurelia.io", 11 | "bugs": { 12 | "url": "https://github.com/aurelia/skeleton-navigation/issues" 13 | }, 14 | "license": "MIT", 15 | "author": "Rob Eisenberg (http://robeisenberg.com/)", 16 | "main": "dist/commonjs/index.js", 17 | "repository": { 18 | "type": "git", 19 | "url": "http://github.com/aurelia/skeleton-navigation" 20 | }, 21 | "devDependencies": { 22 | "aurelia-tools": "^0.1.3", 23 | "browser-sync": "^1.8.1", 24 | "conventional-changelog": "0.0.11", 25 | "del": "^1.1.0", 26 | "gulp": "^3.8.10", 27 | "gulp-babel": "^5.1.0", 28 | "gulp-bump": "^0.3.1", 29 | "gulp-changed": "^1.1.0", 30 | "gulp-jshint": "^1.9.0", 31 | "gulp-plumber": "^0.6.6", 32 | "gulp-protractor": "^0.0.12", 33 | "gulp-sourcemaps": "^1.3.0", 34 | "gulp-yuidoc": "^0.1.2", 35 | "jasmine-core": "^2.1.3", 36 | "jshint-stylish": "^1.0.0", 37 | "karma": "^0.12.28", 38 | "karma-babel-preprocessor": "^5.2.1", 39 | "karma-chrome-launcher": "^0.1.7", 40 | "karma-coverage": "^0.3.1", 41 | "karma-jasmine": "^0.3.5", 42 | "karma-jspm": "^1.1.5", 43 | "object.assign": "^1.0.3", 44 | "require-dir": "^0.1.0", 45 | "run-sequence": "^1.0.2", 46 | "vinyl-paths": "^1.0.0", 47 | "yargs": "^2.1.1" 48 | }, 49 | "jspm": { 50 | "dependencies": { 51 | "aurelia-animator-css": "github:aurelia/animator-css@^0.14.1", 52 | "aurelia-binding": "github:aurelia/binding@^0.8.3", 53 | "aurelia-bootstrapper": "github:aurelia/bootstrapper@^0.15.0", 54 | "aurelia-dependency-injection": "github:aurelia/dependency-injection@^0.9.1", 55 | "aurelia-event-aggregator": "github:aurelia/event-aggregator@^0.6.2", 56 | "aurelia-fetch-client": "github:aurelia/fetch-client@^0.1.1", 57 | "aurelia-framework": "github:aurelia/framework@^0.14.0", 58 | "aurelia-history": "github:aurelia/history@^0.6.1", 59 | "aurelia-history-browser": "github:aurelia/history-browser@^0.6.2", 60 | "aurelia-loader": "github:aurelia/loader@^0.8.3", 61 | "aurelia-loader-default": "github:aurelia/loader-default@^0.9.1", 62 | "aurelia-logging": "github:aurelia/logging@^0.6.2", 63 | "aurelia-metadata": "github:aurelia/metadata@^0.7.1", 64 | "aurelia-path": "github:aurelia/path@^0.8.1", 65 | "aurelia-route-recognizer": "github:aurelia/route-recognizer@^0.6.1", 66 | "aurelia-router": "github:aurelia/router@^0.10.3", 67 | "aurelia-task-queue": "github:aurelia/task-queue@^0.6.1", 68 | "aurelia-templating": "github:aurelia/templating@^0.13.12", 69 | "aurelia-templating-binding": "github:aurelia/templating-binding@^0.13.2", 70 | "aurelia-templating-resources": "github:aurelia/templating-resources@^0.13.2", 71 | "aurelia-templating-router": "github:aurelia/templating-router@^0.14.1", 72 | "bootstrap": "github:twbs/bootstrap@^3.3.4", 73 | "core-js": "npm:core-js@^0.9.4", 74 | "css": "github:systemjs/plugin-css@^0.1.11", 75 | "fetch": "github:github/fetch@^0.9.0", 76 | "font-awesome": "npm:font-awesome@^4.3.0" 77 | }, 78 | "devDependencies": { 79 | "babel": "npm:babel-core@^5.1.13", 80 | "babel-runtime": "npm:babel-runtime@^5.1.13", 81 | "core-js": "npm:core-js@^0.9.4" 82 | }, 83 | "overrides": { 84 | "npm:core-js@0.9.18": { 85 | "main": "client/shim.min" 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // An example configuration file. 2 | exports.config = { 3 | directConnect: true, 4 | 5 | // Capabilities to be passed to the webdriver instance. 6 | capabilities: { 7 | 'browserName': 'chrome' 8 | }, 9 | 10 | //seleniumAddress: 'http://0.0.0.0:4444', 11 | // add proper version number 12 | seleniumServerJar: './node_modules/gulp-protractor/node_modules/protractor/selenium/selenium-server-standalone-2.44.0.jar', 13 | specs: ['specs/e2e/dist/*.js'], 14 | 15 | plugins: [{ 16 | path: 'aurelia.protractor.js' 17 | }], 18 | 19 | 20 | // Options to be passed to Jasmine-node. 21 | jasmineNodeOpts: { 22 | showColors: true, 23 | defaultTimeoutInterval: 30000 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/app.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/app.js: -------------------------------------------------------------------------------- 1 | import 'bootstrap'; 2 | import 'bootstrap/css/bootstrap.css!'; 3 | 4 | export class App { 5 | configureRouter(config, router){ 6 | config.title = 'Aurelia'; 7 | config.map([ 8 | { route: ['','welcome'], name: 'welcome', moduleId: 'welcome', nav: true, title:'Welcome' }, 9 | { route: 'users', name: 'users', moduleId: 'users', nav: true, title:'Github Users' }, 10 | { route: 'child-router', name: 'child-router', moduleId: 'child-router', nav: true, title:'Child Router' } 11 | ]); 12 | 13 | this.router = router; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/blur-image.js: -------------------------------------------------------------------------------- 1 | import {inject} from 'aurelia-framework'; 2 | 3 | @inject(Element) 4 | export class BlurImageCustomAttribute { 5 | constructor(element){ 6 | this.element = element; 7 | } 8 | 9 | valueChanged(newImage){ 10 | if(newImage.complete){ 11 | drawBlur(this.element, newImage); 12 | } else{ 13 | newImage.onload = () => drawBlur(this.element, newImage); 14 | } 15 | } 16 | } 17 | 18 | /* 19 | This Snippet is using a modified Stack Blur js lib for blurring the header images. 20 | */ 21 | 22 | /* 23 | 24 | StackBlur - a fast almost Gaussian Blur For Canvas 25 | 26 | Version: 0.5 27 | Author: Mario Klingemann 28 | Contact: mario@quasimondo.com 29 | Website: http://www.quasimondo.com/StackBlurForCanvas 30 | Twitter: @quasimondo 31 | 32 | In case you find this class useful - especially in commercial projects - 33 | I am not totally unhappy for a small donation to my PayPal account 34 | mario@quasimondo.de 35 | 36 | Or support me on flattr: 37 | https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript 38 | 39 | Copyright (c) 2010 Mario Klingemann 40 | 41 | Permission is hereby granted, free of charge, to any person 42 | obtaining a copy of this software and associated documentation 43 | files (the "Software"), to deal in the Software without 44 | restriction, including without limitation the rights to use, 45 | copy, modify, merge, publish, distribute, sublicense, and/or sell 46 | copies of the Software, and to permit persons to whom the 47 | Software is furnished to do so, subject to the following 48 | conditions: 49 | 50 | The above copyright notice and this permission notice shall be 51 | included in all copies or substantial portions of the Software. 52 | 53 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 54 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 55 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 56 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 57 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 58 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 59 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 60 | OTHER DEALINGS IN THE SOFTWARE. 61 | */ 62 | 63 | var mul_table = [ 64 | 512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512, 65 | 454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512, 66 | 482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456, 67 | 437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512, 68 | 497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328, 69 | 320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456, 70 | 446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335, 71 | 329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512, 72 | 505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405, 73 | 399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328, 74 | 324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271, 75 | 268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456, 76 | 451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388, 77 | 385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335, 78 | 332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292, 79 | 289,287,285,282,280,278,275,273,271,269,267,265,263,261,259]; 80 | 81 | 82 | var shg_table = [ 83 | 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 84 | 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 85 | 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 86 | 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 87 | 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 88 | 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 89 | 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 90 | 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 91 | 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 92 | 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 | 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 94 | 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 95 | 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 96 | 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 97 | 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 98 | 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ]; 99 | 100 | var BLUR_RADIUS = 40; 101 | 102 | function stackBlurCanvasRGBA( canvas, top_x, top_y, width, height, radius ) 103 | { 104 | if ( isNaN(radius) || radius < 1 ) return; 105 | radius |= 0; 106 | 107 | var context = canvas.getContext("2d"); 108 | var imageData; 109 | 110 | try { 111 | imageData = context.getImageData( top_x, top_y, width, height ); 112 | } catch(e) { 113 | throw new Error("unable to access image data: " + e); 114 | } 115 | 116 | var pixels = imageData.data; 117 | 118 | var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, 119 | r_out_sum, g_out_sum, b_out_sum, a_out_sum, 120 | r_in_sum, g_in_sum, b_in_sum, a_in_sum, 121 | pr, pg, pb, pa, rbs; 122 | 123 | var div = radius + radius + 1; 124 | var w4 = width << 2; 125 | var widthMinus1 = width - 1; 126 | var heightMinus1 = height - 1; 127 | var radiusPlus1 = radius + 1; 128 | var sumFactor = radiusPlus1 * ( radiusPlus1 + 1 ) / 2; 129 | 130 | var stackStart = new BlurStack(); 131 | var stack = stackStart; 132 | for ( i = 1; i < div; i++ ) 133 | { 134 | stack = stack.next = new BlurStack(); 135 | if ( i == radiusPlus1 ) var stackEnd = stack; 136 | } 137 | stack.next = stackStart; 138 | var stackIn = null; 139 | var stackOut = null; 140 | 141 | yw = yi = 0; 142 | 143 | var mul_sum = mul_table[radius]; 144 | var shg_sum = shg_table[radius]; 145 | 146 | for ( y = 0; y < height; y++ ) 147 | { 148 | r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0; 149 | 150 | r_out_sum = radiusPlus1 * ( pr = pixels[yi] ); 151 | g_out_sum = radiusPlus1 * ( pg = pixels[yi+1] ); 152 | b_out_sum = radiusPlus1 * ( pb = pixels[yi+2] ); 153 | a_out_sum = radiusPlus1 * ( pa = pixels[yi+3] ); 154 | 155 | r_sum += sumFactor * pr; 156 | g_sum += sumFactor * pg; 157 | b_sum += sumFactor * pb; 158 | a_sum += sumFactor * pa; 159 | 160 | stack = stackStart; 161 | 162 | for( i = 0; i < radiusPlus1; i++ ) 163 | { 164 | stack.r = pr; 165 | stack.g = pg; 166 | stack.b = pb; 167 | stack.a = pa; 168 | stack = stack.next; 169 | } 170 | 171 | for( i = 1; i < radiusPlus1; i++ ) 172 | { 173 | p = yi + (( widthMinus1 < i ? widthMinus1 : i ) << 2 ); 174 | r_sum += ( stack.r = ( pr = pixels[p])) * ( rbs = radiusPlus1 - i ); 175 | g_sum += ( stack.g = ( pg = pixels[p+1])) * rbs; 176 | b_sum += ( stack.b = ( pb = pixels[p+2])) * rbs; 177 | a_sum += ( stack.a = ( pa = pixels[p+3])) * rbs; 178 | 179 | r_in_sum += pr; 180 | g_in_sum += pg; 181 | b_in_sum += pb; 182 | a_in_sum += pa; 183 | 184 | stack = stack.next; 185 | } 186 | 187 | 188 | stackIn = stackStart; 189 | stackOut = stackEnd; 190 | for ( x = 0; x < width; x++ ) 191 | { 192 | pixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum; 193 | if ( pa != 0 ) 194 | { 195 | pa = 255 / pa; 196 | pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa; 197 | pixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa; 198 | pixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa; 199 | } else { 200 | pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0; 201 | } 202 | 203 | r_sum -= r_out_sum; 204 | g_sum -= g_out_sum; 205 | b_sum -= b_out_sum; 206 | a_sum -= a_out_sum; 207 | 208 | r_out_sum -= stackIn.r; 209 | g_out_sum -= stackIn.g; 210 | b_out_sum -= stackIn.b; 211 | a_out_sum -= stackIn.a; 212 | 213 | p = ( yw + ( ( p = x + radius + 1 ) < widthMinus1 ? p : widthMinus1 ) ) << 2; 214 | 215 | r_in_sum += ( stackIn.r = pixels[p]); 216 | g_in_sum += ( stackIn.g = pixels[p+1]); 217 | b_in_sum += ( stackIn.b = pixels[p+2]); 218 | a_in_sum += ( stackIn.a = pixels[p+3]); 219 | 220 | r_sum += r_in_sum; 221 | g_sum += g_in_sum; 222 | b_sum += b_in_sum; 223 | a_sum += a_in_sum; 224 | 225 | stackIn = stackIn.next; 226 | 227 | r_out_sum += ( pr = stackOut.r ); 228 | g_out_sum += ( pg = stackOut.g ); 229 | b_out_sum += ( pb = stackOut.b ); 230 | a_out_sum += ( pa = stackOut.a ); 231 | 232 | r_in_sum -= pr; 233 | g_in_sum -= pg; 234 | b_in_sum -= pb; 235 | a_in_sum -= pa; 236 | 237 | stackOut = stackOut.next; 238 | 239 | yi += 4; 240 | } 241 | yw += width; 242 | } 243 | 244 | 245 | for ( x = 0; x < width; x++ ) 246 | { 247 | g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0; 248 | 249 | yi = x << 2; 250 | r_out_sum = radiusPlus1 * ( pr = pixels[yi]); 251 | g_out_sum = radiusPlus1 * ( pg = pixels[yi+1]); 252 | b_out_sum = radiusPlus1 * ( pb = pixels[yi+2]); 253 | a_out_sum = radiusPlus1 * ( pa = pixels[yi+3]); 254 | 255 | r_sum += sumFactor * pr; 256 | g_sum += sumFactor * pg; 257 | b_sum += sumFactor * pb; 258 | a_sum += sumFactor * pa; 259 | 260 | stack = stackStart; 261 | 262 | for( i = 0; i < radiusPlus1; i++ ) 263 | { 264 | stack.r = pr; 265 | stack.g = pg; 266 | stack.b = pb; 267 | stack.a = pa; 268 | stack = stack.next; 269 | } 270 | 271 | yp = width; 272 | 273 | for( i = 1; i <= radius; i++ ) 274 | { 275 | yi = ( yp + x ) << 2; 276 | 277 | r_sum += ( stack.r = ( pr = pixels[yi])) * ( rbs = radiusPlus1 - i ); 278 | g_sum += ( stack.g = ( pg = pixels[yi+1])) * rbs; 279 | b_sum += ( stack.b = ( pb = pixels[yi+2])) * rbs; 280 | a_sum += ( stack.a = ( pa = pixels[yi+3])) * rbs; 281 | 282 | r_in_sum += pr; 283 | g_in_sum += pg; 284 | b_in_sum += pb; 285 | a_in_sum += pa; 286 | 287 | stack = stack.next; 288 | 289 | if( i < heightMinus1 ) 290 | { 291 | yp += width; 292 | } 293 | } 294 | 295 | yi = x; 296 | stackIn = stackStart; 297 | stackOut = stackEnd; 298 | for ( y = 0; y < height; y++ ) 299 | { 300 | p = yi << 2; 301 | pixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum; 302 | if ( pa > 0 ) 303 | { 304 | pa = 255 / pa; 305 | pixels[p] = ((r_sum * mul_sum) >> shg_sum ) * pa; 306 | pixels[p+1] = ((g_sum * mul_sum) >> shg_sum ) * pa; 307 | pixels[p+2] = ((b_sum * mul_sum) >> shg_sum ) * pa; 308 | } else { 309 | pixels[p] = pixels[p+1] = pixels[p+2] = 0; 310 | } 311 | 312 | r_sum -= r_out_sum; 313 | g_sum -= g_out_sum; 314 | b_sum -= b_out_sum; 315 | a_sum -= a_out_sum; 316 | 317 | r_out_sum -= stackIn.r; 318 | g_out_sum -= stackIn.g; 319 | b_out_sum -= stackIn.b; 320 | a_out_sum -= stackIn.a; 321 | 322 | p = ( x + (( ( p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1 ) * width )) << 2; 323 | 324 | r_sum += ( r_in_sum += ( stackIn.r = pixels[p])); 325 | g_sum += ( g_in_sum += ( stackIn.g = pixels[p+1])); 326 | b_sum += ( b_in_sum += ( stackIn.b = pixels[p+2])); 327 | a_sum += ( a_in_sum += ( stackIn.a = pixels[p+3])); 328 | 329 | stackIn = stackIn.next; 330 | 331 | r_out_sum += ( pr = stackOut.r ); 332 | g_out_sum += ( pg = stackOut.g ); 333 | b_out_sum += ( pb = stackOut.b ); 334 | a_out_sum += ( pa = stackOut.a ); 335 | 336 | r_in_sum -= pr; 337 | g_in_sum -= pg; 338 | b_in_sum -= pb; 339 | a_in_sum -= pa; 340 | 341 | stackOut = stackOut.next; 342 | 343 | yi += width; 344 | } 345 | } 346 | 347 | context.putImageData( imageData, top_x, top_y ); 348 | 349 | } 350 | 351 | function BlurStack() 352 | { 353 | this.r = 0; 354 | this.g = 0; 355 | this.b = 0; 356 | this.a = 0; 357 | this.next = null; 358 | } 359 | 360 | function drawBlur(canvas, image) { 361 | var w = canvas.width; 362 | var h = canvas.height; 363 | var canvasContext = canvas.getContext('2d'); 364 | canvasContext.drawImage(image, 0, 0, w, h); 365 | stackBlurCanvasRGBA(canvas, 0, 0, w, h, BLUR_RADIUS); 366 | }; 367 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/child-router.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/child-router.js: -------------------------------------------------------------------------------- 1 | export class ChildRouter{ 2 | heading = 'Child Router'; 3 | 4 | configureRouter(config, router){ 5 | config.map([ 6 | { route: ['','welcome'], name: 'welcome', moduleId: 'welcome', nav: true, title:'Welcome' }, 7 | { route: 'users', name: 'users', moduleId: 'users', nav: true, title:'Github Users' }, 8 | { route: 'child-router', name: 'child-router', moduleId: 'child-router', nav: true, title:'Child Router' } 9 | ]); 10 | 11 | this.router = router; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/main.js: -------------------------------------------------------------------------------- 1 | export function configure(aurelia) { 2 | aurelia.use 3 | .standardConfiguration() 4 | .developmentLogging() 5 | .plugin('aurelia-animator-css'); 6 | 7 | aurelia.start().then(a => a.setRoot()); 8 | } 9 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/nav-bar.html: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/nav-bar.js: -------------------------------------------------------------------------------- 1 | import {bindable} from 'aurelia-framework'; 2 | 3 | export class NavBar { 4 | @bindable router = null; 5 | } 6 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/users.html: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/users.js: -------------------------------------------------------------------------------- 1 | import {inject} from 'aurelia-framework'; 2 | import {HttpClient} from 'aurelia-fetch-client'; 3 | import 'fetch'; 4 | 5 | @inject(HttpClient) 6 | export class Users{ 7 | heading = 'Github Users'; 8 | users = []; 9 | 10 | constructor(http){ 11 | http.configure(config => { 12 | config 13 | .useStandardConfiguration() 14 | .withBaseUrl('https://api.github.com/'); 15 | }); 16 | 17 | this.http = http; 18 | } 19 | 20 | activate(){ 21 | return this.http.fetch('users') 22 | .then(response => response.json()) 23 | .then(users => this.users = users); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/welcome.html: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/src/welcome.js: -------------------------------------------------------------------------------- 1 | import {computedFrom} from 'aurelia-framework'; 2 | 3 | export class Welcome{ 4 | heading = 'Welcome to the Aurelia Navigation App!'; 5 | firstName = 'John'; 6 | lastName = 'Doe'; 7 | previousValue = this.fullName; 8 | 9 | //Getters can't be observed with Object.observe, so they must be dirty checked. 10 | //However, if you tell Aurelia the dependencies, it no longer needs to dirty check the property. 11 | //To optimize by declaring the properties that this getter is computed from, uncomment the line below. 12 | //@computedFrom('firstName', 'lastName') 13 | get fullName(){ 14 | return `${this.firstName} ${this.lastName}`; 15 | } 16 | 17 | submit(){ 18 | this.previousValue = this.fullName; 19 | alert(`Welcome, ${this.fullName}!`); 20 | } 21 | 22 | canDeactivate() { 23 | if (this.fullName !== this.previousValue) { 24 | return confirm('Are you sure you want to leave?'); 25 | } 26 | } 27 | } 28 | 29 | export class UpperValueConverter { 30 | toView(value){ 31 | return value && value.toUpperCase(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/styles/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | 5 | .splash { 6 | text-align: center; 7 | margin: 10% 0 0 0; 8 | box-sizing: border-box; 9 | } 10 | 11 | .splash .message { 12 | font-size: 72px; 13 | line-height: 72px; 14 | text-shadow: rgba(0, 0, 0, 0.5) 0 0 15px; 15 | text-transform: uppercase; 16 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 17 | } 18 | 19 | .splash .fa-spinner { 20 | text-align: center; 21 | display: inline-block; 22 | font-size: 72px; 23 | margin-top: 50px; 24 | } 25 | 26 | .page-host { 27 | position: absolute; 28 | left: 0; 29 | right: 0; 30 | top: 50px; 31 | bottom: 0; 32 | overflow-x: hidden; 33 | overflow-y: auto; 34 | } 35 | 36 | @media print 37 | { 38 | .page-host { 39 | position: absolute; 40 | left: 10px; 41 | right: 0; 42 | top: 50px; 43 | bottom: 0; 44 | overflow-y: inherit; 45 | overflow-x: inherit; 46 | } 47 | } 48 | 49 | section { 50 | margin: 0 20px; 51 | } 52 | 53 | .navbar-nav li.loader { 54 | margin: 12px 24px 0 6px; 55 | } 56 | 57 | .pictureDetail { 58 | max-width: 425px; 59 | } 60 | 61 | /* animate page transitions */ 62 | section.au-enter-active { 63 | -webkit-animation: fadeInRight 1s; 64 | animation: fadeInRight 1s; 65 | } 66 | 67 | div.au-stagger { 68 | /* 50ms will be applied between each successive enter operation */ 69 | -webkit-animation-delay:50ms; 70 | animation-delay:50ms; 71 | } 72 | 73 | .card-container.au-enter { 74 | opacity: 0!important; 75 | } 76 | 77 | .card-container.au-enter-active { 78 | -webkit-animation: fadeIn 2s; 79 | animation: fadeIn 2s; 80 | } 81 | 82 | .card { 83 | overflow: hidden; 84 | position: relative; 85 | border: 1px solid #CCC; 86 | border-radius: 8px; 87 | text-align: center; 88 | padding: 0; 89 | background-color: #337ab7; 90 | color: rgb(136, 172, 217); 91 | margin-bottom: 32px; 92 | box-shadow: 0 0 5px rgba(0,0,0,.5); 93 | } 94 | 95 | .card .content { 96 | margin-top: 10px; 97 | } 98 | 99 | .card .content .name { 100 | color: white; 101 | text-shadow: 0 0 6px rgba(0,0,0,.5); 102 | font-size: 18px; 103 | } 104 | 105 | .card .header-bg { 106 | /* This stretches the canvas across the entire hero unit */ 107 | position: absolute; 108 | top: 0; 109 | left: 0; 110 | width: 100%; 111 | height: 70px; 112 | border-bottom: 1px #FFF solid; 113 | border-radius: 6px 6px 0 0; 114 | } 115 | 116 | .card .avatar { 117 | position: relative; 118 | margin-top: 15px; 119 | z-index: 100; 120 | } 121 | 122 | .card .avatar img { 123 | width: 100px; 124 | height: 100px; 125 | -webkit-border-radius: 50%; 126 | -moz-border-radius: 50%; 127 | border-radius: 50%; 128 | border: 2px #FFF solid; 129 | } 130 | 131 | 132 | /* animation definitions */ 133 | @-webkit-keyframes fadeInRight { 134 | 0% { 135 | opacity: 0; 136 | -webkit-transform: translate3d(100%, 0, 0); 137 | transform: translate3d(100%, 0, 0) 138 | } 139 | 100% { 140 | opacity: 1; 141 | -webkit-transform: none; 142 | transform: none 143 | } 144 | } 145 | 146 | @keyframes fadeInRight { 147 | 0% { 148 | opacity: 0; 149 | -webkit-transform: translate3d(100%, 0, 0); 150 | -ms-transform: translate3d(100%, 0, 0); 151 | transform: translate3d(100%, 0, 0) 152 | } 153 | 100% { 154 | opacity: 1; 155 | -webkit-transform: none; 156 | -ms-transform: none; 157 | transform: none 158 | } 159 | } 160 | 161 | 162 | @-webkit-keyframes fadeIn { 163 | 0% { 164 | opacity: 0; 165 | } 166 | 100% { 167 | opacity: 1; 168 | } 169 | } 170 | 171 | @keyframes fadeIn { 172 | 0% { 173 | opacity: 0; 174 | } 175 | 100% { 176 | opacity: 1; 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/dist/demo.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _welcomePoJs = require('./welcome.po.js'); 4 | 5 | var _skeletonPoJs = require('./skeleton.po.js'); 6 | 7 | describe('aurelia skeleton app', function () { 8 | var po_welcome, po_skeleton; 9 | 10 | beforeEach(function () { 11 | po_skeleton = new _skeletonPoJs.PageObject_Skeleton(); 12 | po_welcome = new _welcomePoJs.PageObject_Welcome(); 13 | 14 | browser.loadAndWaitForAureliaPage('http://localhost:9000'); 15 | }); 16 | 17 | it('should load the page and display the initial page title', function () { 18 | expect(po_skeleton.getCurrentPageTitle()).toBe('Welcome | Aurelia'); 19 | }); 20 | 21 | it('should display greeting', function () { 22 | expect(po_welcome.getGreeting()).toBe('Welcome to the Aurelia Navigation App!'); 23 | }); 24 | 25 | it('should automatically write down the fullname', function () { 26 | po_welcome.setFirstname('Rob'); 27 | po_welcome.setLastname('Eisenberg'); 28 | 29 | // For now there is a timing issue with the binding. 30 | // Until resolved we will use a short sleep to overcome the issue. 31 | browser.sleep(200); 32 | expect(po_welcome.getFullname()).toBe('ROB EISENBERG'); 33 | }); 34 | 35 | it('should show alert message when clicking submit button', function () { 36 | expect(po_welcome.openAlertDialog()).toBe(true); 37 | }); 38 | 39 | it('should navigate to flickr page', function () { 40 | po_skeleton.navigateTo('#/flickr'); 41 | expect(po_skeleton.getCurrentPageTitle()).toBe('Flickr | Aurelia'); 42 | }); 43 | }); -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/dist/skeleton.po.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, '__esModule', { 4 | value: true 5 | }); 6 | 7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 8 | 9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 10 | 11 | var PageObject_Skeleton = (function () { 12 | function PageObject_Skeleton() { 13 | _classCallCheck(this, PageObject_Skeleton); 14 | } 15 | 16 | _createClass(PageObject_Skeleton, [{ 17 | key: 'getCurrentPageTitle', 18 | value: function getCurrentPageTitle() { 19 | return browser.getTitle(); 20 | } 21 | }, { 22 | key: 'navigateTo', 23 | value: function navigateTo(href) { 24 | element(by.css('a[href="' + href + '"]')).click(); 25 | return browser.waitForHttpDone(); 26 | } 27 | }]); 28 | 29 | return PageObject_Skeleton; 30 | })(); 31 | 32 | exports.PageObject_Skeleton = PageObject_Skeleton; -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/dist/welcome.po.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, '__esModule', { 4 | value: true 5 | }); 6 | 7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); 8 | 9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 10 | 11 | var PageObject_Welcome = (function () { 12 | function PageObject_Welcome() { 13 | _classCallCheck(this, PageObject_Welcome); 14 | } 15 | 16 | _createClass(PageObject_Welcome, [{ 17 | key: 'getGreeting', 18 | value: function getGreeting() { 19 | return element(by.tagName('h2')).getText(); 20 | } 21 | }, { 22 | key: 'setFirstname', 23 | value: function setFirstname(value) { 24 | return element(by.valueBind('firstName')).clear().sendKeys(value); 25 | } 26 | }, { 27 | key: 'setLastname', 28 | value: function setLastname(value) { 29 | return element(by.valueBind('lastName')).clear().sendKeys(value); 30 | } 31 | }, { 32 | key: 'getFullname', 33 | value: function getFullname() { 34 | return element(by.css('.help-block')).getText(); 35 | } 36 | }, { 37 | key: 'pressSubmitButton', 38 | value: function pressSubmitButton() { 39 | return element(by.css('button[type="submit"]')).click(); 40 | } 41 | }, { 42 | key: 'openAlertDialog', 43 | value: function openAlertDialog() { 44 | var _this = this; 45 | 46 | return browser.wait(function () { 47 | _this.pressSubmitButton(); 48 | 49 | return browser.switchTo().alert().then( 50 | // use alert.accept instead of alert.dismiss which results in a browser crash 51 | function (alert) { 52 | alert.accept();return true; 53 | }, function () { 54 | return false; 55 | }); 56 | }); 57 | } 58 | }]); 59 | 60 | return PageObject_Welcome; 61 | })(); 62 | 63 | exports.PageObject_Welcome = PageObject_Welcome; -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/src/demo.spec.js: -------------------------------------------------------------------------------- 1 | import {PageObject_Welcome} from './welcome.po.js'; 2 | import {PageObject_Skeleton} from './skeleton.po.js'; 3 | 4 | describe('aurelia skeleton app', function() { 5 | var po_welcome, 6 | po_skeleton; 7 | 8 | beforeEach( () => { 9 | po_skeleton = new PageObject_Skeleton(); 10 | po_welcome = new PageObject_Welcome(); 11 | 12 | browser.loadAndWaitForAureliaPage("http://localhost:9000"); 13 | }); 14 | 15 | it('should load the page and display the initial page title', () => { 16 | expect(po_skeleton.getCurrentPageTitle()).toBe('Welcome | Aurelia'); 17 | }); 18 | 19 | it('should display greeting', () => { 20 | expect(po_welcome.getGreeting()).toBe('Welcome to the Aurelia Navigation App!'); 21 | }); 22 | 23 | it('should automatically write down the fullname', () => { 24 | po_welcome.setFirstname('Rob'); 25 | po_welcome.setLastname('Eisenberg'); 26 | 27 | // For now there is a timing issue with the binding. 28 | // Until resolved we will use a short sleep to overcome the issue. 29 | browser.sleep(200); 30 | expect(po_welcome.getFullname()).toBe('ROB EISENBERG'); 31 | }); 32 | 33 | it('should show alert message when clicking submit button', () => { 34 | expect(po_welcome.openAlertDialog()).toBe(true); 35 | }); 36 | 37 | it('should navigate to flickr page', () => { 38 | po_skeleton.navigateTo('#/flickr'); 39 | expect(po_skeleton.getCurrentPageTitle()).toBe('Flickr | Aurelia'); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/src/skeleton.po.js: -------------------------------------------------------------------------------- 1 | export class PageObject_Skeleton { 2 | 3 | constructor() { 4 | 5 | } 6 | 7 | getCurrentPageTitle() { 8 | return browser.getTitle(); 9 | } 10 | 11 | navigateTo(href) { 12 | element(by.css('a[href="' + href + '"]')).click(); 13 | return browser.waitForHttpDone(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/e2e/src/welcome.po.js: -------------------------------------------------------------------------------- 1 | export class PageObject_Welcome { 2 | 3 | constructor() { 4 | 5 | } 6 | 7 | getGreeting() { 8 | return element(by.tagName('h2')).getText(); 9 | } 10 | 11 | setFirstname(value) { 12 | return element(by.valueBind('firstName')).clear().sendKeys(value); 13 | } 14 | 15 | setLastname(value) { 16 | return element(by.valueBind('lastName')).clear().sendKeys(value); 17 | } 18 | 19 | getFullname() { 20 | return element(by.css('.help-block')).getText(); 21 | } 22 | 23 | pressSubmitButton() { 24 | return element(by.css('button[type="submit"]')).click(); 25 | } 26 | 27 | openAlertDialog() { 28 | return browser.wait(() => { 29 | this.pressSubmitButton(); 30 | 31 | return browser.switchTo().alert().then( 32 | // use alert.accept instead of alert.dismiss which results in a browser crash 33 | function(alert) { alert.accept(); return true; }, 34 | function() { return false; } 35 | ); 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/unit/app.spec.js: -------------------------------------------------------------------------------- 1 | import {App} from '../../src/app'; 2 | 3 | class RouterStub { 4 | configure(handler) { 5 | handler(this); 6 | } 7 | map(routes) { 8 | this.routes = routes; 9 | } 10 | } 11 | 12 | describe('the App module', () => { 13 | var sut 14 | , mockedRouter; 15 | 16 | beforeEach(() => { 17 | mockedRouter = new RouterStub(); 18 | sut = new App(mockedRouter); 19 | sut.configureRouter(mockedRouter, mockedRouter); 20 | }); 21 | 22 | it('contains a router property', () => { 23 | expect(sut.router).toBeDefined(); 24 | }); 25 | 26 | it('configures the router title', () => { 27 | expect(sut.router.title).toEqual('Aurelia'); 28 | }); 29 | 30 | it('should have a welcome route', () => { 31 | expect(sut.router.routes).toContain({ route: ['','welcome'], name: 'welcome', moduleId: './welcome', nav: true, title:'Welcome' }); 32 | }); 33 | 34 | it('should have a flickr route', () => { 35 | expect(sut.router.routes).toContain({ route: 'flickr', name: 'flickr', moduleId: './flickr', nav: true, title:'Flickr' }); 36 | }); 37 | 38 | it('should have a child router route', () => { 39 | expect(sut.router.routes).toContain({ route: 'child-router', name: 'child-router', moduleId: './child-router', nav: true, title:'Child Router' }); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/unit/child-router.spec.js: -------------------------------------------------------------------------------- 1 | import {ChildRouter} from '../../src/child-router'; 2 | 3 | class RouterStub { 4 | configure(handler) { 5 | handler(this); 6 | } 7 | map(routes) { 8 | this.routes = routes; 9 | } 10 | } 11 | 12 | describe('the Child Router module', () => { 13 | var sut 14 | , mockedRouter; 15 | 16 | beforeEach(() => { 17 | mockedRouter = new RouterStub(); 18 | sut = new ChildRouter(mockedRouter); 19 | sut.configureRouter(mockedRouter, mockedRouter); 20 | }); 21 | 22 | it('contains a router property', () => { 23 | expect(sut.router).toBeDefined(); 24 | }); 25 | 26 | it('configures the heading', () => { 27 | expect(sut.heading).toEqual('Child Router'); 28 | }); 29 | 30 | it('should have a welcome route', () => { 31 | expect(sut.router.routes).toContain({ route: ['','welcome'], name: 'welcome', moduleId: './welcome', nav: true, title:'Welcome' }); 32 | }); 33 | 34 | it('should have a flickr route', () => { 35 | expect(sut.router.routes).toContain({ route: 'flickr', name: 'flickr', moduleId: './flickr', nav: true, title:'Flickr' }); 36 | }); 37 | 38 | it('should have a child router route', () => { 39 | expect(sut.router.routes).toContain({ route: 'child-router', name: 'child-router', moduleId: './child-router', nav: true, title:'Child Router' }); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /aspnet-skeleton-navigation/test/unit/flickr.spec.js: -------------------------------------------------------------------------------- 1 | import {Flickr} from '../../src/flickr'; 2 | 3 | class HttpStub { 4 | jsonp(url) { 5 | var response = this.itemStub; 6 | this.url = url; 7 | return new Promise((resolve) => { 8 | resolve({ content: { items: response } }); 9 | }) 10 | } 11 | } 12 | 13 | describe('the Flickr module', () => { 14 | 15 | it('sets jsonp response to images', (done) => { 16 | var http = new HttpStub(), 17 | sut = new Flickr(http), 18 | itemStubs = [1], 19 | itemFake = [2]; 20 | 21 | http.itemStub = itemStubs; 22 | sut.activate().then(() => { 23 | expect(sut.images).toBe(itemStubs); 24 | expect(sut.images).not.toBe(itemFake); 25 | done(); 26 | }); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /build/MSBuild.Gulp.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(MSBuildProjectDirectory)\gulpfile.js 5 | $(MSBuildProjectDirectory) 6 | vs-build-$(Configuration) 7 | 8 | 9 | $(MSBuildProjectDirectory)\gulpfile.coffee 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /build/MSBuild.Gulp.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Gulp module not found. Please install Gulp in the node module path '$(NodeModulePath)'. 6 | Error running gulp task '$(GulpTask)'. See Warnings for details. 7 | $(NodeModulePath)\gulp.cmd 8 | $([System.IO.Path]::GetTempFileName()) 9 | 0 10 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | $(EnsureNodeInPathCmd) "$(GulpExecutable)" $(GulpTask) > "$(GulpOut)" 25 | 26 | 27 | 28 | 29 | 30 | 34 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /build/MSBuild.Jspm.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(MSBuildProjectDirectory)\config.js 5 | install 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /build/MSBuild.Jspm.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Jspm module not found. Please install Jspm in the node module path '$(NodeModulePath)'. 6 | $(NodeModulePath)\jspm.cmd 7 | 0 8 | 9 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | $(EnsureNodeInPathCmd) "$(JspmExecutable)" $(JspmCommand) 23 | 24 | 25 | 26 | 27 | 28 | 32 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /build/MSBuild.Node.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(NODEJS) 5 | $(HOMEDRIVE)$(HOMEPATH)\AppData\Roaming\npm 6 | 7 | 8 | $(GlobalNodePath) 9 | $(GlobalNodeModulePath) 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /build/MSBuild.Node.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Global NodeJS installation not found. Please set the 'NODEJS' environment variable for a global installation or set the 'LocalNodePath' property in your project file for a local installation. 6 | Invalid global node path. 7 | Invalid local node path. 8 | 9 | 10 | 11 | 12 | 13 | 14 | $(LocalNodePath) 15 | SETLOCAL & SET PATH=$(NodePath);%PATH% & 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | $([System.IO.Path]::GetDirectoryName('$(NodeExecutable)')) 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Global node modules not found. Please set the 'LocalNodeModulePath' property in your project file. 38 | Invalid global node module path. 39 | Invalid local node module path. 40 | ""$(NodePath)\npm.cmd" config get prefix" 41 | 42 | 43 | 44 | 45 | 46 | $(LocalNodeModulePath) 47 | 48 | 49 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /build/MSBuild.Npm.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(MSBuildProjectDirectory)\package.json 5 | install 6 | 7 | 8 | install --msvs-version=2013 9 | 10 | 11 | -------------------------------------------------------------------------------- /build/MSBuild.Npm.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | "$(NodePath)\npm" $(NpmCommand) 6 | 7 | 8 | 10 | 11 | 12 | 13 | --------------------------------------------------------------------------------