Skip to content

Commit 2a094f0

Browse files
author
Anthony Du Pont
committed
✨ Add events
1 parent 4e337de commit 2a094f0

File tree

35 files changed

+228
-204
lines changed

35 files changed

+228
-204
lines changed

dist/highway.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ var HighwayRenderer = function () {
342342
this.view = view;
343343
this.page = _helpers2.default.getDOM(page);
344344
this.title = _helpers2.default.getTitle(page);
345-
this.transition = new transition(view); // eslint-disable-line
345+
this.transition = transition ? new transition(view) : null; // eslint-disable-line
346346

347347
if (this.title && document.title !== this.title) {
348348
document.title = this.title;
@@ -898,11 +898,7 @@ var HighwayCore = function (_Emitter) {
898898
// An event is emitted and can be used outside of the router to run
899899
// additionnal code when the navigation starts. It expose the `from` and `to`
900900
// [router-view] elements to the user and the router state.
901-
var to = this.to.view;
902-
var from = this.from.view;
903-
var title = this.to.title; // eslint-disable-line
904-
905-
this.emit('NAVIGATE_START', from, to, title, this.state);
901+
this.emit('NAVIGATE_START', this.from, this.to, this.state);
906902

907903
// We select the right method based on the mode provided in the options.
908904
// If no mode is provided then the `out-in` method is chosen.
@@ -913,6 +909,9 @@ var HighwayCore = function (_Emitter) {
913909
this[method]().then(function () {
914910
_this5.navigating = false;
915911

912+
// Same as the `NAVIGATE_START` event
913+
_this5.emit('NAVIGATE_END', _this5.from, _this5.to, _this5.state);
914+
916915
// We prepare the next navigation by replacing the `from` renderer by
917916
// the `to` renderer now that the pages have been swapped successfully.
918917
_this5.from = _this5.to;
@@ -924,9 +923,6 @@ var HighwayCore = function (_Emitter) {
924923
// Now scroll to anchor!
925924
_this5.scrollTo(_helpers2.default.getAnchor(_this5.state.url));
926925
}
927-
928-
// Same as the `NAVIGATE_START` event
929-
_this5.emit('NAVIGATE_END', from, to, title, _this5.state);
930926
});
931927
}
932928
}
@@ -942,11 +938,17 @@ var HighwayCore = function (_Emitter) {
942938
value: function outIn() {
943939
var _this6 = this;
944940

941+
// Same as the `NAVIGATE_START` event
942+
this.emit('NAVIGATE_OUT', this.from, this.to, this.state);
943+
945944
// Call `out` transition
946945
return this.from.hide().then(function () {
947946
// Reset scroll position
948947
window.scrollTo(0, 0);
949948
}).then(function () {
949+
// Same as the `NAVIGATE_START` event
950+
_this6.emit('NAVIGATE_IN', _this6.from, _this6.to, _this6.state);
951+
950952
// Call `in` transition
951953
_this6.to.show();
952954
});
@@ -963,11 +965,17 @@ var HighwayCore = function (_Emitter) {
963965
value: function inOut() {
964966
var _this7 = this;
965967

968+
// Same as the `NAVIGATE_START` event
969+
this.emit('NAVIGATE_IN', this.from, this.to, this.state);
970+
966971
// Call the `in` transition
967972
return this.to.show().then(function () {
968973
// Reset scroll position
969974
window.scrollTo(0, 0);
970975
}).then(function () {
976+
// Same as the `NAVIGATE_START` event
977+
_this7.emit('NAVIGATE_OUT', _this7.from, _this7.to, _this7.state);
978+
971979
// Call the `out` transition
972980
_this7.from.hide();
973981
});
@@ -982,6 +990,10 @@ var HighwayCore = function (_Emitter) {
982990
}, {
983991
key: 'both',
984992
value: function both() {
993+
// Same as the `NAVIGATE_START` event
994+
this.emit('NAVIGATE_IN', this.from, this.to, this.state);
995+
this.emit('NAVIGATE_OUT', this.from, this.to, this.state);
996+
985997
return Promise.all([this.to.show(), this.from.hide()]).then(function () {
986998
// Reset scroll position
987999
window.scrollTo(0, 0);

dist/highway.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/highway.min.js.gz

18 Bytes
Binary file not shown.

examples/basic-google-analytics/dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/basic-google-analytics/package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@dogstudio/highway",
33
"license": "MIT",
4-
"version": "1.1.1",
4+
"version": "1.2.0",
55
"main": "dist/index.js",
66
"scripts": {
77
"build": "webpack",
@@ -14,8 +14,5 @@
1414
"babel-preset-env": "^1.6.1",
1515
"webpack": "^4.1.1",
1616
"webpack-cli": "^2.0.12"
17-
},
18-
"dependencies": {
19-
"@dogstudio/highway": "^1.1.1"
2017
}
2118
}

examples/basic-google-analytics/src/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// Import Highway
2-
import Highway from '@dogstudio/highway';
2+
import Highway from 'dist/highway';
33

44
// Import Renderers
5-
import Home from './renderers/home';
6-
import Page from './renderers/page';
5+
import Home from 'renderers/home';
6+
import Page from 'renderers/page';
77

88
(() => {
99
// Instanciate `Highway.Core` and send your custom renderers through the options.
@@ -23,12 +23,12 @@ import Page from './renderers/page';
2323
// In this example we listen to the `NAVIGATE_START` event from Highway that
2424
// occurs when a navigation starts and send a new `pageview` to Google Analytics
2525
// based on the `state` of Highway.
26-
H.on('NAVIGATE_START', (from, to, title, state) => {
26+
H.on('NAVIGATE_START', (from, to, state) => {
2727
if (typeof gtag !== 'undefined') {
2828
// eslint-disable-next-line
2929
gtag('config', 'GA_TRACKING_ID', {
3030
'page_path': state.pathname,
31-
'page_title': title,
31+
'page_title': to.title,
3232
'page_location': state.url
3333
});
3434
}

examples/basic-google-analytics/src/renderers/home.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Import Highway
2-
import Highway from '@dogstudio/highway';
2+
import Highway from 'dist/highway';
33

44
// To create your custom renderer you have to extend the `Highway.Renderer` to
55
// access all the required methods and to be able to call the "state" methods

examples/basic-google-analytics/src/renderers/page.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Import Highway
2-
import Highway from '@dogstudio/highway';
2+
import Highway from 'dist/highway';
33

44
// To create your custom renderer you have to extend the `Highway.Renderer` to
55
// access all the required methods and to be able to call the "state" methods

examples/basic-google-analytics/webpack.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module.exports = {
2727
]
2828
},
2929
resolve: {
30-
modules: ['node_modules']
30+
modules: ['.', 'node_modules'],
31+
extensions: ['.js']
3132
}
3233
};

examples/basic-google-analytics/yarn.lock

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
# yarn lockfile v1
33

44

5-
"@dogstudio/highway@^1.1.1":
6-
version "1.1.1"
7-
resolved "https://registry.yarnpkg.com/@dogstudio/highway/-/highway-1.1.1.tgz#cf813223a4365e8ca1e58320949c107b7c7d7155"
8-
95
"@sindresorhus/is@^0.7.0":
106
version "0.7.0"
117
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
@@ -36,8 +32,8 @@ ajv@^4.9.1:
3632
json-stable-stringify "^1.0.1"
3733

3834
ajv@^6.1.0:
39-
version "6.2.1"
40-
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671"
35+
version "6.3.0"
36+
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.3.0.tgz#1650a41114ef00574cac10b8032d8f4c14812da7"
4137
dependencies:
4238
fast-deep-equal "^1.0.0"
4339
fast-json-stable-stringify "^2.0.0"
@@ -991,6 +987,10 @@ browserslist@^2.1.2:
991987
caniuse-lite "^1.0.30000792"
992988
electron-to-chromium "^1.3.30"
993989

990+
buffer-from@^1.0.0:
991+
version "1.0.0"
992+
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
993+
994994
buffer-xor@^1.0.3:
995995
version "1.0.3"
996996
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@@ -1060,8 +1060,8 @@ camelcase@^4.1.0:
10601060
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
10611061

10621062
caniuse-lite@^1.0.30000792:
1063-
version "1.0.30000815"
1064-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz#3a4258e6850362185adb11b0d754a48402d35bf6"
1063+
version "1.0.30000819"
1064+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000819.tgz#aabee5fd15a080febab6ae5d30c9ea15f4c6d4e2"
10651065

10661066
caseless@~0.12.0:
10671067
version "0.12.0"
@@ -1199,12 +1199,12 @@ clone-stats@^1.0.0:
11991199
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
12001200

12011201
clone@^1.0.0:
1202-
version "1.0.3"
1203-
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
1202+
version "1.0.4"
1203+
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
12041204

12051205
clone@^2.1.1:
1206-
version "2.1.1"
1207-
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
1206+
version "2.1.2"
1207+
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
12081208

12091209
cloneable-readable@^1.0.0:
12101210
version "1.1.2"
@@ -1270,9 +1270,10 @@ [email protected]:
12701270
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
12711271

12721272
concat-stream@^1.5.0:
1273-
version "1.6.1"
1274-
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.1.tgz#261b8f518301f1d834e36342b9fea095d2620a26"
1273+
version "1.6.2"
1274+
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
12751275
dependencies:
1276+
buffer-from "^1.0.0"
12761277
inherits "^2.0.3"
12771278
readable-stream "^2.2.2"
12781279
typedarray "^0.0.6"
@@ -1533,8 +1534,8 @@ ejs@^2.3.1:
15331534
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
15341535

15351536
electron-to-chromium@^1.3.30:
1536-
version "1.3.39"
1537-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.39.tgz#d7a4696409ca0995e2750156da612c221afad84d"
1537+
version "1.3.40"
1538+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.40.tgz#1fbd6d97befd72b8a6f921dc38d22413d2f6fddf"
15381539

15391540
elegant-spinner@^1.0.1:
15401541
version "1.0.1"
@@ -1796,8 +1797,8 @@ flow-parser@^0.*:
17961797
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.68.0.tgz#9cc96620a102e316a314b6bcd56205ceace862d8"
17971798

17981799
flush-write-stream@^1.0.0:
1799-
version "1.0.2"
1800-
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417"
1800+
version "1.0.3"
1801+
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
18011802
dependencies:
18021803
inherits "^2.0.1"
18031804
readable-stream "^2.0.4"
@@ -2184,8 +2185,8 @@ iconv-lite@^0.4.17:
21842185
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
21852186

21862187
ieee754@^1.1.4:
2187-
version "1.1.9"
2188-
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.9.tgz#13acbc76462de80959be14b2d4ac93b96761b195"
2188+
version "1.1.10"
2189+
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.10.tgz#719a6f7b026831e64bdb838b0de1bb0029bbf716"
21892190

21902191
iferr@^0.1.5:
21912192
version "0.1.5"
@@ -2850,8 +2851,8 @@ micromatch@^2.3.7:
28502851
regex-cache "^0.4.2"
28512852

28522853
micromatch@^3.1.4, micromatch@^3.1.8:
2853-
version "3.1.9"
2854-
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89"
2854+
version "3.1.10"
2855+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
28552856
dependencies:
28562857
arr-diff "^4.0.0"
28572858
array-unique "^0.3.2"
@@ -2865,7 +2866,7 @@ micromatch@^3.1.4, micromatch@^3.1.8:
28652866
object.pick "^1.3.0"
28662867
regex-not "^1.0.0"
28672868
snapdragon "^0.8.1"
2868-
to-regex "^3.0.1"
2869+
to-regex "^3.0.2"
28692870

28702871
miller-rabin@^4.0.0:
28712872
version "4.0.1"
@@ -3554,8 +3555,8 @@ recast@^0.12.5:
35543555
source-map "~0.6.1"
35553556

35563557
recast@^0.14.1:
3557-
version "0.14.5"
3558-
resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.5.tgz#53f1f6edf7810bdfb39a25d0ff97d315bad7c314"
3558+
version "0.14.6"
3559+
resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.6.tgz#11f171a3fdd09155c9156b8becc5ed2f0a68bd18"
35593560
dependencies:
35603561
ast-types "0.11.3"
35613562
esprima "~4.0.0"
@@ -3698,8 +3699,8 @@ resolve-url@^0.2.1:
36983699
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
36993700

37003701
resolve@^1.1.6:
3701-
version "1.5.0"
3702-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
3702+
version "1.6.0"
3703+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
37033704
dependencies:
37043705
path-parse "^1.0.5"
37053706

@@ -3832,8 +3833,8 @@ setimmediate@^1.0.4:
38323833
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
38333834

38343835
sha.js@^2.4.0, sha.js@^2.4.8:
3835-
version "2.4.10"
3836-
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b"
3836+
version "2.4.11"
3837+
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
38373838
dependencies:
38383839
inherits "^2.0.1"
38393840
safe-buffer "^5.0.1"
@@ -4218,7 +4219,7 @@ to-regex-range@^2.1.0:
42184219
is-number "^3.0.0"
42194220
repeat-string "^1.6.1"
42204221

4221-
to-regex@^3.0.1:
4222+
to-regex@^3.0.1, to-regex@^3.0.2:
42224223
version "3.0.2"
42234224
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
42244225
dependencies:
@@ -4436,8 +4437,8 @@ webpack-addons@^1.1.5:
44364437
jscodeshift "^0.4.0"
44374438

44384439
webpack-cli@^2.0.12:
4439-
version "2.0.12"
4440-
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.12.tgz#64db876d044f03d8d6544281854b71a3a3c77dd3"
4440+
version "2.0.13"
4441+
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.13.tgz#6e2bd9ef91345344737217e22e29001ad8537518"
44414442
dependencies:
44424443
chalk "^2.3.2"
44434444
cross-spawn "^6.0.5"
@@ -4473,8 +4474,8 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0:
44734474
source-map "~0.6.1"
44744475

44754476
webpack@^4.1.1:
4476-
version "4.1.1"
4477-
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.1.1.tgz#44e4d6a869dd36fdfc0b227f9bd865a4bccfd81c"
4477+
version "4.2.0"
4478+
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.2.0.tgz#a4f80807651a0e611bb09609600dc266262efcc1"
44784479
dependencies:
44794480
acorn "^5.0.0"
44804481
acorn-dynamic-import "^3.0.0"

0 commit comments

Comments
 (0)