Index: server/static/bower_components/html5-history-anchor/README.md |
diff --git a/server/static/bower_components/html5-history-anchor/README.md b/server/static/bower_components/html5-history-anchor/README.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ab3bc51107177a608f0bd186c940fb7b12eebf56 |
--- /dev/null |
+++ b/server/static/bower_components/html5-history-anchor/README.md |
@@ -0,0 +1,90 @@ |
+## <a is="html5-history-anchor"> |
+> Extend the `<a>` tag with the [HTML5 history API](http://www.w3.org/html/wg/drafts/html/master/browsers.html#the-history-interface) |
+> |
+> Fully featured version of the [pushstate-anchor](https://github.com/erikringsmuth/pushstate-anchor) |
+ |
+A link from 1992. |
+```html |
+<a href="/home">Home</a> |
+``` |
+ |
+Now using the HTML5 `window.history` API. |
+```html |
+<a is="html5-history-anchor" href="/home" pushstate popstate |
+ title="Home Page" state='{"message":"New State!"}'>Home</a> |
+``` |
+ |
+Clicking this link calls the HTML5 history API. |
+```js |
+window.history.pushState({message:'New State!'}, 'Home Page', '/home'); |
+window.dispatchEvent(new PopStateEvent('popstate', { |
+ bubbles: false, |
+ cancelable: false, |
+ state: {message:'New State!'} |
+})); |
+``` |
+ |
+## Install |
+[Download](https://github.com/erikringsmuth/html5-history-anchor/archive/master.zip) or run `bower install html5-history-anchor --save` |
+ |
+## Import |
+```html |
+<link rel="import" href="/bower_components/html5-history-anchor/html5-history-anchor.html"> |
+or |
+<script src="/bower_components/html5-history-anchor/html5-history-anchor.js"></script> |
+``` |
+ |
+## API |
+The API is a direct extension of the `<a>` tag and `window.history`. Examples: |
+ |
+Push a new state with `history.pushState(null, null, '/new-state')` and dispatch a `popstate` event. |
+```html |
+<a is="html5-history-anchor" href="/new-state" pushstate popstate>New State</a> |
+``` |
+ |
+Replace the current state with `history.replaceState({message:'Replaced State!'}, null, '/replaced-state')` and don't `popstate`. |
+```html |
+<a is="html5-history-anchor" href="/replaced-state" |
+ replacestate state='{"message":"Replaced State!"}'>Replaced State</a> |
+``` |
+ |
+Back button with `history.back()`. |
+```html |
+<a is="html5-history-anchor" back>Back</a> |
+``` |
+ |
+Forward button with `history.forward()`. |
+```html |
+<a is="html5-history-anchor" forward>Forward</a> |
+``` |
+ |
+Back 2 pages with `history.go(-2)`. |
+```html |
+<a is="html5-history-anchor" go="-2">Back 2 Pages</a> |
+``` |
+ |
+Refresh the page with `history.go(0)`. |
+```html |
+<a is="html5-history-anchor" go>Refresh</a> |
+``` |
+ |
+## Notes |
+The [HTML5 history spec](http://www.w3.org/html/wg/drafts/html/master/browsers.html#the-history-interface) is a bit quirky. `history.pushState()` doesn't dispatch a `popstate` event or load a new page by itself. It was only meant to push state into history. This is an "undo" feature for single page applications. This is why you have to manually dispatch a `popstate` event. Including both `pushstate` and `popstate` attributes on the link will push the new state into history then dispatch a `popstate` event which you can use to load a new page with a router. |
+ |
+- `history.pushState()` and `history.replaceState()` don't dispatch `popstate` events. |
+- `history.back()`, `history.forward()`, and the browser's back and foward buttons do dispatch `popstate` events. |
+- `history.go()` and `history.go(0)` do a full page reload and don't dispatch `popstate` events. |
+- `history.go(-1)` (back 1 page) and `history.go(1)` (forward 1 page) do dispatch `popstate` events. |
+ |
+## Build, Test, and Debug [](https://travis-ci.org/erikringsmuth/html5-history-anchor) |
+Source files are under the `src` folder. The build process writes to the root directory. The easiest way to debug is to include the source script rather than the minified HTML import. |
+```html |
+<script src="/bower_components/html5-history-anchor/src/html5-history-anchor.js"></script> |
+``` |
+ |
+To build: |
+- Run `bower install` and `npm install` to install dev dependencies |
+- Lint, build, and minify code changes with `gulp` (watch with `gulp watch`) |
+- Start a static content server to run tests (node `http-server` or `python -m SimpleHTTPServer`) |
+- Run unit tests in the browser (PhantomJS doesn't support Web Components) [http://localhost:8080/tests/SpecRunner.html](http://localhost:8080/tests/SpecRunner.html) |
+- Manually run functional tests in the browser [http://localhost:8080/tests/functional-test-site/](http://localhost:8080/tests/functional-test-site/) |