fragmented 3.1.3 → 3.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/example.js +100 -31
- package/lib/constants.js +17 -4
- package/lib/fragmented.js +70 -19
- package/lib/index.js +4 -1
- package/package.json +1 -1
- package/src/constants.js +2 -0
- package/src/fragmented.js +91 -23
- package/src/index.js +1 -1
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Relates to URL hash fragments.
|
|
4
4
|
|
|
5
|
-
Fragmented allows your application to affect and be affected by the hash fragment of the URL in the browser's address bar. Changes to the fragment are invisible to the server whilst being included in the browser's history. For this reason fragments are useful to single page applications that need the back and forward buttons to work for them
|
|
5
|
+
Fragmented allows your application to affect and be affected by the hash fragment of the URL in the browser's address bar. Changes to the fragment are invisible to the server whilst being included in the browser's history. For this reason fragments are useful to single page applications that need the back and forward buttons to work for them without triggering Ajax requests and the like.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Fragmented provides a global [`fragment`](https://github.com/djalbat/Fragmented/blob/master/es6/fragmented.js) variable which corresponds to the aforementioned hash fragment in the browser's address bar and the value of which the application can get or set. It also provides `onFragmentChange` and `offFragmentChange` functions so that handlers can be registered and unregistered.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -42,7 +42,7 @@ One last thing to bear in mind is that this package is included by way of a rela
|
|
|
42
42
|
|
|
43
43
|
## Usage
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
In order to make use of the global `fragmented` variable you only need to import the package:
|
|
46
46
|
|
|
47
47
|
```
|
|
48
48
|
import "fragmented";
|
|
@@ -60,12 +60,14 @@ To set the fragment:
|
|
|
60
60
|
fragment = "test";
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
When you set the fragment like this any handlers will be called.
|
|
64
|
+
|
|
65
|
+
To register and unregister handlers:
|
|
64
66
|
|
|
65
67
|
```
|
|
66
68
|
const { onFragmentChange, offFragmentChange } = fragment;
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
const fragmentChangeHandler = () {
|
|
69
71
|
console.log(fragment)
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -74,25 +76,25 @@ onFragmentChange(fragmentChangeHandler);
|
|
|
74
76
|
// offFragmentChange(fragmentChangeHandler);
|
|
75
77
|
```
|
|
76
78
|
|
|
77
|
-
Note that
|
|
79
|
+
Note that handlers are invoked whenever the `fragment` variable is set. If you do not want this behaviour, in other words you want to be able to change the fragment in the address bar without your handlers being invoked, you can to this with an additional `setFragment()` function as follows:
|
|
78
80
|
|
|
79
81
|
```
|
|
80
82
|
const { setFragment } = fragment;
|
|
81
83
|
|
|
82
|
-
setFragment("test"); //
|
|
84
|
+
setFragment("test"); // handlers won't be invoked
|
|
83
85
|
```
|
|
84
86
|
|
|
85
|
-
Also note that the `fragment` variable is an instance of the `String` object, rather than a string primitive, in order that properties on it can be defined. So use `==` rather than `===` if equating it to a string primitive.
|
|
87
|
+
Also note that the `fragment` variable is an instance of the `String` object, rather than a string primitive, in order that properties on it can be defined. So use `==` rather than `===` if equating it to a string primitive. And note that if you use a `switch` statement, which uses strict equality, you will need to explicitly coerce the `fragment` variable to a string primitive before passing it in.
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
By the way, you can import these functions more conventionally if you think that destructuring the global `fragment` variable is a bit too cute:
|
|
88
90
|
|
|
89
91
|
```
|
|
90
|
-
import { getFragment, setFragment, onFragmentChange, offFragmentChange } from "fragmented";
|
|
92
|
+
import { getFragment, setFragment, resetFragment, onFragmentChange, offFragmentChange } from "fragmented";
|
|
91
93
|
|
|
92
94
|
...
|
|
93
95
|
```
|
|
94
96
|
|
|
95
|
-
Finally
|
|
97
|
+
Finally, the `resetFrageent()` function does as its name suggests, essentially removing the fragment altogether.
|
|
96
98
|
|
|
97
99
|
## Building
|
|
98
100
|
|
package/example.js
CHANGED
|
@@ -7,34 +7,48 @@
|
|
|
7
7
|
return module.exports;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
// lib/
|
|
11
|
-
var
|
|
10
|
+
// lib/eventTypes.js
|
|
11
|
+
var require_eventTypes = __commonJS((exports) => {
|
|
12
12
|
"use strict";
|
|
13
13
|
Object.defineProperty(exports, "__esModule", {
|
|
14
14
|
value: true
|
|
15
15
|
});
|
|
16
|
-
Object.defineProperty(exports, "
|
|
16
|
+
Object.defineProperty(exports, "HASHCHANGE_EVENT_TYPE", {
|
|
17
17
|
enumerable: true,
|
|
18
18
|
get: function() {
|
|
19
|
-
return
|
|
19
|
+
return HASHCHANGE_EVENT_TYPE;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
var
|
|
22
|
+
var HASHCHANGE_EVENT_TYPE = "hashchange";
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
// lib/
|
|
26
|
-
var
|
|
25
|
+
// lib/constants.js
|
|
26
|
+
var require_constants = __commonJS((exports) => {
|
|
27
27
|
"use strict";
|
|
28
28
|
Object.defineProperty(exports, "__esModule", {
|
|
29
29
|
value: true
|
|
30
30
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
function _export(target, all) {
|
|
32
|
+
for (var name in all)
|
|
33
|
+
Object.defineProperty(target, name, {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: all[name]
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
_export(exports, {
|
|
39
|
+
EMPTY_STRING: function() {
|
|
40
|
+
return EMPTY_STRING;
|
|
41
|
+
},
|
|
42
|
+
FRAGMENT: function() {
|
|
43
|
+
return FRAGMENT;
|
|
44
|
+
},
|
|
45
|
+
HASH: function() {
|
|
46
|
+
return HASH;
|
|
35
47
|
}
|
|
36
48
|
});
|
|
37
|
-
var
|
|
49
|
+
var HASH = "#";
|
|
50
|
+
var FRAGMENT = "fragment";
|
|
51
|
+
var EMPTY_STRING = "";
|
|
38
52
|
});
|
|
39
53
|
|
|
40
54
|
// lib/fragmented.js
|
|
@@ -60,17 +74,21 @@
|
|
|
60
74
|
onFragmentChange: function() {
|
|
61
75
|
return onFragmentChange;
|
|
62
76
|
},
|
|
77
|
+
resetFragment: function() {
|
|
78
|
+
return resetFragment;
|
|
79
|
+
},
|
|
63
80
|
setFragment: function() {
|
|
64
81
|
return setFragment;
|
|
65
82
|
}
|
|
66
83
|
});
|
|
67
|
-
var _constants = require_constants();
|
|
68
84
|
var _eventTypes = require_eventTypes();
|
|
85
|
+
var _constants = require_constants();
|
|
69
86
|
function getFragment() {
|
|
70
87
|
var hash = getHash(), fragment2 = new String(hash);
|
|
71
88
|
Object.assign(fragment2, {
|
|
72
89
|
getFragment,
|
|
73
90
|
setFragment,
|
|
91
|
+
resetFragment,
|
|
74
92
|
onFragmentChange,
|
|
75
93
|
offFragmentChange
|
|
76
94
|
});
|
|
@@ -78,10 +96,10 @@
|
|
|
78
96
|
}
|
|
79
97
|
function setFragment(fragment2) {
|
|
80
98
|
var silently = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
|
81
|
-
var hash = fragment2;
|
|
82
99
|
if (silently) {
|
|
83
100
|
window.removeEventListener(eventType, hashChangeListener);
|
|
84
101
|
}
|
|
102
|
+
var hash = fragment2;
|
|
85
103
|
window.location.hash = hash;
|
|
86
104
|
if (silently) {
|
|
87
105
|
setTimeout(function() {
|
|
@@ -89,17 +107,33 @@
|
|
|
89
107
|
}, 0);
|
|
90
108
|
}
|
|
91
109
|
}
|
|
110
|
+
function resetFragment() {
|
|
111
|
+
var silently = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
112
|
+
if (silently) {
|
|
113
|
+
window.removeEventListener(eventType, hashChangeListener);
|
|
114
|
+
}
|
|
115
|
+
var href = location.href;
|
|
116
|
+
var index = href.indexOf(_constants.HASH);
|
|
117
|
+
if (index !== -1) {
|
|
118
|
+
var start = 0, end = index;
|
|
119
|
+
href = href.substring(start, end);
|
|
120
|
+
history.pushState({}, _constants.EMPTY_STRING, href);
|
|
121
|
+
}
|
|
122
|
+
if (silently) {
|
|
123
|
+
setTimeout(function() {
|
|
124
|
+
window.addEventListener(eventType, hashChangeListener);
|
|
125
|
+
}, 0);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
92
128
|
function onFragmentChange(fragmentChangeHandler) {
|
|
93
|
-
|
|
129
|
+
var element = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this;
|
|
130
|
+
addFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
94
131
|
}
|
|
95
132
|
function offFragmentChange(fragmentChangeHandler) {
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
var start = index, deleteCount = 1;
|
|
99
|
-
fragmentChangeHandlers.splice(start, deleteCount);
|
|
100
|
-
}
|
|
133
|
+
var element = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this;
|
|
134
|
+
removeFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
101
135
|
}
|
|
102
|
-
Object.defineProperty(
|
|
136
|
+
Object.defineProperty(globalThis, _constants.FRAGMENT, {
|
|
103
137
|
get: function get() {
|
|
104
138
|
var fragment2 = getFragment();
|
|
105
139
|
return fragment2;
|
|
@@ -110,21 +144,53 @@
|
|
|
110
144
|
}
|
|
111
145
|
});
|
|
112
146
|
var eventType = _eventTypes.HASHCHANGE_EVENT_TYPE;
|
|
113
|
-
var
|
|
147
|
+
var fragmentChangeEventListeners = [];
|
|
114
148
|
window.addEventListener(eventType, hashChangeListener);
|
|
115
|
-
function hashChangeListener(event) {
|
|
116
|
-
var hash = getHash(), fragment2 = hash;
|
|
117
|
-
fragmentChangeHandlers.forEach(function(fragmentChangeHandler) {
|
|
118
|
-
fragmentChangeHandler(event, fragment2);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
149
|
function getHash() {
|
|
122
|
-
var
|
|
123
|
-
var hash =
|
|
150
|
+
var location1 = window.location;
|
|
151
|
+
var hash = location1.hash;
|
|
124
152
|
var start = 1;
|
|
125
153
|
hash = hash.substring(start);
|
|
126
154
|
return hash;
|
|
127
155
|
}
|
|
156
|
+
function hashChangeListener(event) {
|
|
157
|
+
var hash = getHash(), element = window, fragment2 = hash;
|
|
158
|
+
callFragmentChangeHandlers(event, element, fragment2);
|
|
159
|
+
}
|
|
160
|
+
function callFragmentChangeHandlers(event, element, fragment2) {
|
|
161
|
+
fragmentChangeEventListeners.forEach(function(fragmentChangeEventListener) {
|
|
162
|
+
var fragmentChangeHandler = fragmentChangeEventListener.fragmentChangeHandler, fragmentChangeHandlerElement = fragmentChangeEventListener.element;
|
|
163
|
+
fragmentChangeHandler.call(fragmentChangeHandlerElement, event, element, fragment2);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function addFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
167
|
+
var fragmentChangeEventListener = createFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
168
|
+
fragmentChangeEventListeners.push(fragmentChangeEventListener);
|
|
169
|
+
return fragmentChangeEventListener;
|
|
170
|
+
}
|
|
171
|
+
function removeFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
172
|
+
var fragmentChangeEventListener = findFragmentChangeEventListener(fragmentChangeHandler, element), index = fragmentChangeEventListeners.indexOf(fragmentChangeEventListener), start = index, deleteCount = 1;
|
|
173
|
+
fragmentChangeEventListeners.splice(start, deleteCount);
|
|
174
|
+
return fragmentChangeEventListener;
|
|
175
|
+
}
|
|
176
|
+
function createFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
177
|
+
var fragmentChangeEventListener;
|
|
178
|
+
fragmentChangeEventListener = function() {
|
|
179
|
+
};
|
|
180
|
+
Object.assign(fragmentChangeEventListener, {
|
|
181
|
+
element,
|
|
182
|
+
fragmentChangeHandler
|
|
183
|
+
});
|
|
184
|
+
return fragmentChangeEventListener;
|
|
185
|
+
}
|
|
186
|
+
function findFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
187
|
+
var fragmentChangeEventListener = fragmentChangeEventListeners.find(function(fragmentChangeEventListener2) {
|
|
188
|
+
if (fragmentChangeEventListener2.element === element && fragmentChangeEventListener2.fragmentChangeHandler === fragmentChangeHandler) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
return fragmentChangeEventListener;
|
|
193
|
+
}
|
|
128
194
|
});
|
|
129
195
|
|
|
130
196
|
// lib/index.js
|
|
@@ -150,6 +216,9 @@
|
|
|
150
216
|
onFragmentChange: function() {
|
|
151
217
|
return _fragmented.onFragmentChange;
|
|
152
218
|
},
|
|
219
|
+
resetFragment: function() {
|
|
220
|
+
return _fragmented.resetFragment;
|
|
221
|
+
},
|
|
153
222
|
setFragment: function() {
|
|
154
223
|
return _fragmented.setFragment;
|
|
155
224
|
}
|
|
@@ -175,4 +244,4 @@
|
|
|
175
244
|
});
|
|
176
245
|
require_example();
|
|
177
246
|
})();
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2V2ZW50VHlwZXMuanMiLCAic3JjL2NvbnN0YW50cy5qcyIsICJzcmMvZnJhZ21lbnRlZC5qcyIsICJzcmMvaW5kZXguanMiLCAic3JjL2V4YW1wbGUuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgSEFTSENIQU5HRV9FVkVOVF9UWVBFID0gXCJoYXNoY2hhbmdlXCI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBIQVNIID0gXCIjXCI7XG5leHBvcnQgY29uc3QgRlJBR01FTlQgPSBcImZyYWdtZW50XCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjsiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEhBU0hDSEFOR0VfRVZFTlRfVFlQRSB9IGZyb20gXCIuL2V2ZW50VHlwZXNcIjtcbmltcG9ydCB7IEhBU0gsIEZSQUdNRU5ULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50KCkge1xuICBjb25zdCBoYXNoID0gZ2V0SGFzaCgpLFxuICAgICAgICBmcmFnbWVudCA9IG5ldyBTdHJpbmcoaGFzaCk7ICAvLy9cblxuICBPYmplY3QuYXNzaWduKGZyYWdtZW50LCB7XG4gICAgZ2V0RnJhZ21lbnQsXG4gICAgc2V0RnJhZ21lbnQsXG4gICAgcmVzZXRGcmFnbWVudCxcbiAgICBvbkZyYWdtZW50Q2hhbmdlLFxuICAgIG9mZkZyYWdtZW50Q2hhbmdlXG4gIH0pO1xuXG4gIHJldHVybiBmcmFnbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEZyYWdtZW50KGZyYWdtZW50LCBzaWxlbnRseSA9IHRydWUpIHtcbiAgaWYgKHNpbGVudGx5KSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuICB9XG5cbiAgY29uc3QgaGFzaCA9IGZyYWdtZW50OyAgLy8vXG5cbiAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoO1xuXG4gIGlmIChzaWxlbnRseSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuICAgIH0sIDApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldEZyYWdtZW50KHNpbGVudGx5ID0gdHJ1ZSkge1xuICBpZiAoc2lsZW50bHkpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhc2hDaGFuZ2VMaXN0ZW5lcik7XG4gIH1cblxuICBsZXQgeyBocmVmIH0gPSBsb2NhdGlvbjtcblxuICBjb25zdCBpbmRleCA9IGhyZWYuaW5kZXhPZihIQVNIKTtcblxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgY29uc3Qgc3RhcnQgPSAwLFxuICAgICAgICAgIGVuZCA9IGluZGV4OyAgLy8vXG5cbiAgICBocmVmID0gaHJlZi5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7IC8vL1xuXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUoe30sIEVNUFRZX1NUUklORywgaHJlZik7XG4gIH1cblxuICBpZiAoc2lsZW50bHkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFzaENoYW5nZUxpc3RlbmVyKTtcbiAgICB9LCAwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb25GcmFnbWVudENoYW5nZShmcmFnbWVudENoYW5nZUhhbmRsZXIsIGVsZW1lbnQgPSB0aGlzKSB7XG4gIGFkZEZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcihmcmFnbWVudENoYW5nZUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2ZmRnJhZ21lbnRDaGFuZ2UoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50ID0gdGhpcykge1xuICByZW1vdmVGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIEZSQUdNRU5ULCB7XG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSBnZXRGcmFnbWVudCgpO1xuXG4gICAgcmV0dXJuIGZyYWdtZW50O1xuICB9LFxuXG4gIHNldDogZnVuY3Rpb24oZnJhZ21lbnQpIHtcbiAgICBjb25zdCBzaWxlbnRseSA9IGZhbHNlO1xuXG4gICAgc2V0RnJhZ21lbnQoZnJhZ21lbnQsIHNpbGVudGx5KTtcbiAgfVxufSk7XG5cbmNvbnN0IGV2ZW50VHlwZSA9IEhBU0hDSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcnMgPSBbXTtcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuXG5mdW5jdGlvbiBnZXRIYXNoKCkge1xuICBjb25zdCB7IGxvY2F0aW9uIH0gPSB3aW5kb3c7XG5cbiAgbGV0IHsgaGFzaCB9ID0gbG9jYXRpb247XG5cbiAgY29uc3Qgc3RhcnQgPSAxO1xuXG4gIGhhc2ggPSBoYXNoLnN1YnN0cmluZyhzdGFydCk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cbmZ1bmN0aW9uIGhhc2hDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xuICBjb25zdCBoYXNoID0gZ2V0SGFzaCgpLFxuICAgICAgICBlbGVtZW50ID0gd2luZG93LCAvLy9cbiAgICAgICAgZnJhZ21lbnQgPSBoYXNoOyAgLy8vXG5cbiAgY2FsbEZyYWdtZW50Q2hhbmdlSGFuZGxlcnMoZXZlbnQsIGVsZW1lbnQsIGZyYWdtZW50KTtcbn1cblxuZnVuY3Rpb24gY2FsbEZyYWdtZW50Q2hhbmdlSGFuZGxlcnMoZXZlbnQsIGVsZW1lbnQsIGZyYWdtZW50KSB7XG4gIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKSA9PiB7XG4gICAgY29uc3QgeyBmcmFnbWVudENoYW5nZUhhbmRsZXIsIGVsZW1lbnQ6IGZyYWdtZW50Q2hhbmdlSGFuZGxlckVsZW1lbnQgfSA9IGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcjsgLy8vXG5cbiAgICBmcmFnbWVudENoYW5nZUhhbmRsZXIuY2FsbChmcmFnbWVudENoYW5nZUhhbmRsZXJFbGVtZW50LCBldmVudCwgZWxlbWVudCwgZnJhZ21lbnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIgPSBjcmVhdGVGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KTtcblxuICBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXJzLnB1c2goZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKTtcblxuICByZXR1cm4gZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyO1xufVxuXG5mdW5jdGlvbiByZW1vdmVGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciA9IGZpbmRGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSxcbiAgICAgICAgaW5kZXggPSBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXJzLmluZGV4T2YoZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKSxcbiAgICAgICAgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVycy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcblxuICByZXR1cm4gZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGxldCBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXI7XG5cbiAgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyID0gKCkgPT4ge307IC8vL1xuXG4gIE9iamVjdC5hc3NpZ24oZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyLCB7XG4gICAgZWxlbWVudCxcbiAgICBmcmFnbWVudENoYW5nZUhhbmRsZXJcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcjtcbn1cblxuZnVuY3Rpb24gZmluZEZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcihmcmFnbWVudENoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyID0gZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVycy5maW5kKChmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIpID0+IHtcbiAgICBpZiAoKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lci5lbGVtZW50ID09PSBlbGVtZW50KSAmJiAoZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyLmZyYWdtZW50Q2hhbmdlSGFuZGxlciA9PT0gZnJhZ21lbnRDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCIuL2ZyYWdtZW50ZWRcIjtcblxuZXhwb3J0IHsgZ2V0RnJhZ21lbnQsIHNldEZyYWdtZW50LCByZXNldEZyYWdtZW50LCBvbkZyYWdtZW50Q2hhbmdlLCBvZmZGcmFnbWVudENoYW5nZSB9IGZyb20gXCIuL2ZyYWdtZW50ZWRcIjtcblxuIiwgIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCIuL2luZGV4XCI7IC8vL1xuXG5jb25zdCB7IG9uRnJhZ21lbnRDaGFuZ2UsIG9mZkZyYWdtZW50Q2hhbmdlIH0gPSBmcmFnbWVudDtcblxub25GcmFnbWVudENoYW5nZShmcmFnbWVudENoYW5nZUhhbmRsZXIpO1xuXG5jb25zb2xlLmxvZyhmcmFnbWVudClcblxuZnJhZ21lbnQgPSBcInRlc3RcIjtcblxuLy8gb2ZmRnJhZ21lbnRDaGFuZ2UoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyKTtcblxuZnVuY3Rpb24gZnJhZ21lbnRDaGFuZ2VIYW5kbGVyKCkge1xuICBjb25zb2xlLmxvZyhmcmFnbWVudClcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7QUFBQTs7Ozs7bUNBRWEseUJBQUE7OztlQUFBOzs7QUFBTixRQUFNLHdCQUF3Qjs7OztBQ0ZyQzs7Ozs7Ozs7Ozs7OztNQUlhLGNBQVksV0FBQTtlQUFaOztNQURBLFVBQVEsV0FBQTtlQUFSOztNQURBLE1BQUksV0FBQTtlQUFKOzs7QUFBTixRQUFNLE9BQU87QUFDYixRQUFNLFdBQVc7QUFDakIsUUFBTSxlQUFlOzs7O0FDSjVCOzs7Ozs7Ozs7Ozs7O01BS2dCLGFBQVcsV0FBQTtlQUFYOztNQTREQSxtQkFBaUIsV0FBQTtlQUFqQjs7TUFKQSxrQkFBZ0IsV0FBQTtlQUFoQjs7TUF6QkEsZUFBYSxXQUFBO2VBQWI7O01BaEJBLGFBQVcsV0FBQTtlQUFYOzs7OztBQWZULDJCQUFTO0FBQ2QsVUFBTSxPQUFPLFdBQ1AsWUFBVyxJQUFJLE9BQU87QUFFNUIsYUFBTyxPQUFPLFdBQVU7UUFDdEI7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7QUFHRixhQUFPOztBQUdGLHlCQUFxQixXQUFRO1VBQUUsV0FBQSxVQUFBLFNBQUEsS0FBQSxVQUFBLE9BQUEsU0FBQSxVQUFBLEtBQVc7QUFDL0MsVUFBSSxVQUFVO0FBQ1osZUFBTyxvQkFBb0IsV0FBVzs7QUFHeEMsVUFBTSxPQUFPO0FBRWIsYUFBTyxTQUFTLE9BQU87QUFFdkIsVUFBSSxVQUFVO0FBQ1osbUJBQVcsV0FBQTtBQUNULGlCQUFPLGlCQUFpQixXQUFXO1dBQ2xDOzs7QUFJQSw2QkFBUztVQUFjLFdBQUEsVUFBQSxTQUFBLEtBQUEsVUFBQSxPQUFBLFNBQUEsVUFBQSxLQUFXO0FBQ3ZDLFVBQUksVUFBVTtBQUNaLGVBQU8sb0JBQW9CLFdBQVc7O0FBR3hDLFVBQU0sT0FBUyxTQUFUO0FBRU4sVUFBTSxRQUFRLEtBQUssUUFBUSxXQUFBO0FBRTNCLFVBQUksVUFBVSxJQUFJO0FBQ2hCLFlBQU0sUUFBUSxHQUNSLE1BQU07QUFFWixlQUFPLEtBQUssVUFBVSxPQUFPO0FBRTdCLGdCQUFRLFVBQVUsSUFBSSxXQUFBLGNBQWM7O0FBR3RDLFVBQUksVUFBVTtBQUNaLG1CQUFXLFdBQUE7QUFDVCxpQkFBTyxpQkFBaUIsV0FBVztXQUNsQzs7O0FBSUEsOEJBQTBCLHVCQUFxQjtVQUFFLFVBQUEsVUFBQSxTQUFBLEtBQUEsVUFBQSxPQUFBLFNBQUEsVUFBQSxLQUFVO0FBQ2hFLHFDQUErQix1QkFBdUI7O0FBR2pELCtCQUEyQix1QkFBcUI7VUFBRSxVQUFBLFVBQUEsU0FBQSxLQUFBLFVBQUEsT0FBQSxTQUFBLFVBQUEsS0FBVTtBQUNqRSx3Q0FBa0MsdUJBQXVCOztBQUczRCxXQUFPLGVBQWUsWUFBWSxXQUFBLFVBQVU7TUFDMUMsS0FBSyxlQUFMO0FBQ0UsWUFBTSxZQUFXO0FBRWpCLGVBQU87O01BR1QsS0FBSyxhQUFTLFdBQVE7QUFDcEIsWUFBTSxXQUFXO0FBRWpCLG9CQUFZLFdBQVU7OztBQUkxQixRQUFNLFlBQVksWUFBQTtBQUFsQixRQUNNLCtCQUErQjtBQUVyQyxXQUFPLGlCQUFpQixXQUFXO0FBRW5DLHVCQUFTO0FBQ1AsVUFBUSxZQUFhLE9BQWI7QUFFUixVQUFNLE9BQVMsVUFBVDtBQUVOLFVBQU0sUUFBUTtBQUVkLGFBQU8sS0FBSyxVQUFVO0FBRXRCLGFBQU87O0FBR1QsZ0NBQTRCLE9BQUs7QUFDL0IsVUFBTSxPQUFPLFdBQ1AsVUFBVSxRQUNWLFlBQVc7QUFFakIsaUNBQTJCLE9BQU8sU0FBUzs7QUFHN0Msd0NBQW9DLE9BQU8sU0FBUyxXQUFRO0FBQzFELG1DQUE2QixRQUFRLFNBQUMsNkJBQUE7QUFDcEMsWUFBUSx3QkFBaUUsNEJBQWpFLHVCQUFnQywrQkFBaUMsNEJBQTFDO0FBRS9CLDhCQUFzQixLQUFLLDhCQUE4QixPQUFPLFNBQVM7OztBQUk3RSw0Q0FBd0MsdUJBQXVCLFNBQU87QUFDcEUsVUFBTSw4QkFBOEIsa0NBQWtDLHVCQUF1QjtBQUU3RixtQ0FBNkIsS0FBSztBQUVsQyxhQUFPOztBQUdULCtDQUEyQyx1QkFBdUIsU0FBTztBQUN2RSxVQUFNLDhCQUE4QixnQ0FBZ0MsdUJBQXVCLFVBQ3JGLFFBQVEsNkJBQTZCLFFBQVEsOEJBQzdDLFFBQVEsT0FDUixjQUFjO0FBRXBCLG1DQUE2QixPQUFPLE9BQU87QUFFM0MsYUFBTzs7QUFHVCwrQ0FBMkMsdUJBQXVCLFNBQU87QUFDdkUsVUFBSTtBQUVKLG9DQUE4QixXQUFBOztBQUU5QixhQUFPLE9BQU8sNkJBQTZCO1FBQ3pDO1FBQ0E7O0FBR0YsYUFBTzs7QUFHVCw2Q0FBeUMsdUJBQXVCLFNBQU87QUFDckUsVUFBTSw4QkFBOEIsNkJBQTZCLEtBQUssU0FBQyw4QkFBQTtBQUNyRSxZQUFLLDZCQUE0QixZQUFZLFdBQWEsNkJBQTRCLDBCQUEwQix1QkFBd0I7QUFDdEksaUJBQU87OztBQUlYLGFBQU87Ozs7O0FDM0pUOzs7Ozs7Ozs7Ozs7O01BSVMsYUFBVyxXQUFBO2VBQVgsWUFBQTs7TUFBMkQsbUJBQWlCLFdBQUE7ZUFBakIsWUFBQTs7TUFBbEIsa0JBQWdCLFdBQUE7ZUFBaEIsWUFBQTs7TUFBZixlQUFhLFdBQUE7ZUFBYixZQUFBOztNQUFiLGFBQVcsV0FBQTtlQUFYLFlBQUE7Ozs7Ozs7QUNKdEI7Ozs7OztBQUlBLFFBQVEsbUJBQXdDLFNBQXhDO0FBQVIsUUFBMEIsb0JBQXNCLFNBQXRCO0FBRTFCLHFCQUFpQjtBQUVqQixZQUFRLElBQUk7QUFFWixlQUFXO0FBSVgscUNBQVM7QUFDUCxjQUFRLElBQUk7OzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/lib/constants.js
CHANGED
|
@@ -2,12 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
EMPTY_STRING: function() {
|
|
13
|
+
return EMPTY_STRING;
|
|
14
|
+
},
|
|
15
|
+
FRAGMENT: function() {
|
|
8
16
|
return FRAGMENT;
|
|
17
|
+
},
|
|
18
|
+
HASH: function() {
|
|
19
|
+
return HASH;
|
|
9
20
|
}
|
|
10
21
|
});
|
|
22
|
+
var HASH = "#";
|
|
11
23
|
var FRAGMENT = "fragment";
|
|
24
|
+
var EMPTY_STRING = "";
|
|
12
25
|
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBIQVNIID0gXCIjXCI7XG5leHBvcnQgY29uc3QgRlJBR01FTlQgPSBcImZyYWdtZW50XCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjsiXSwibmFtZXMiOlsiRU1QVFlfU1RSSU5HIiwiRlJBR01FTlQiLCJIQVNIIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFJYUEsWUFBWTtlQUFaQTs7SUFEQUMsUUFBUTtlQUFSQTs7SUFEQUMsSUFBSTtlQUFKQTs7O0FBQU4sSUFBTUEsT0FBTztBQUNiLElBQU1ELFdBQVc7QUFDakIsSUFBTUQsZUFBZSJ9
|
package/lib/fragmented.js
CHANGED
|
@@ -18,17 +18,21 @@ _export(exports, {
|
|
|
18
18
|
onFragmentChange: function() {
|
|
19
19
|
return onFragmentChange;
|
|
20
20
|
},
|
|
21
|
+
resetFragment: function() {
|
|
22
|
+
return resetFragment;
|
|
23
|
+
},
|
|
21
24
|
setFragment: function() {
|
|
22
25
|
return setFragment;
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
|
-
var _constants = require("./constants");
|
|
26
28
|
var _eventTypes = require("./eventTypes");
|
|
29
|
+
var _constants = require("./constants");
|
|
27
30
|
function getFragment() {
|
|
28
31
|
var hash = getHash(), fragment = new String(hash); ///
|
|
29
32
|
Object.assign(fragment, {
|
|
30
33
|
getFragment: getFragment,
|
|
31
34
|
setFragment: setFragment,
|
|
35
|
+
resetFragment: resetFragment,
|
|
32
36
|
onFragmentChange: onFragmentChange,
|
|
33
37
|
offFragmentChange: offFragmentChange
|
|
34
38
|
});
|
|
@@ -36,10 +40,10 @@ function getFragment() {
|
|
|
36
40
|
}
|
|
37
41
|
function setFragment(fragment) {
|
|
38
42
|
var silently = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
|
39
|
-
var hash = fragment; ///
|
|
40
43
|
if (silently) {
|
|
41
44
|
window.removeEventListener(eventType, hashChangeListener);
|
|
42
45
|
}
|
|
46
|
+
var hash = fragment; ///
|
|
43
47
|
window.location.hash = hash;
|
|
44
48
|
if (silently) {
|
|
45
49
|
setTimeout(function() {
|
|
@@ -47,17 +51,33 @@ function setFragment(fragment) {
|
|
|
47
51
|
}, 0);
|
|
48
52
|
}
|
|
49
53
|
}
|
|
54
|
+
function resetFragment() {
|
|
55
|
+
var silently = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
56
|
+
if (silently) {
|
|
57
|
+
window.removeEventListener(eventType, hashChangeListener);
|
|
58
|
+
}
|
|
59
|
+
var href = location.href;
|
|
60
|
+
var index = href.indexOf(_constants.HASH);
|
|
61
|
+
if (index !== -1) {
|
|
62
|
+
var start = 0, end = index; ///
|
|
63
|
+
href = href.substring(start, end); ///
|
|
64
|
+
history.pushState({}, _constants.EMPTY_STRING, href);
|
|
65
|
+
}
|
|
66
|
+
if (silently) {
|
|
67
|
+
setTimeout(function() {
|
|
68
|
+
window.addEventListener(eventType, hashChangeListener);
|
|
69
|
+
}, 0);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
50
72
|
function onFragmentChange(fragmentChangeHandler) {
|
|
51
|
-
|
|
73
|
+
var element = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this;
|
|
74
|
+
addFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
52
75
|
}
|
|
53
76
|
function offFragmentChange(fragmentChangeHandler) {
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
-
var start = index, deleteCount = 1;
|
|
57
|
-
fragmentChangeHandlers.splice(start, deleteCount);
|
|
58
|
-
}
|
|
77
|
+
var element = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this;
|
|
78
|
+
removeFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
59
79
|
}
|
|
60
|
-
Object.defineProperty(
|
|
80
|
+
Object.defineProperty(globalThis, _constants.FRAGMENT, {
|
|
61
81
|
get: function get() {
|
|
62
82
|
var fragment = getFragment();
|
|
63
83
|
return fragment;
|
|
@@ -67,20 +87,51 @@ Object.defineProperty(window, _constants.FRAGMENT, {
|
|
|
67
87
|
setFragment(fragment, silently);
|
|
68
88
|
}
|
|
69
89
|
});
|
|
70
|
-
var eventType = _eventTypes.HASHCHANGE_EVENT_TYPE,
|
|
90
|
+
var eventType = _eventTypes.HASHCHANGE_EVENT_TYPE, fragmentChangeEventListeners = [];
|
|
71
91
|
window.addEventListener(eventType, hashChangeListener);
|
|
72
|
-
function hashChangeListener(event) {
|
|
73
|
-
var hash = getHash(), fragment = hash; ///
|
|
74
|
-
fragmentChangeHandlers.forEach(function(fragmentChangeHandler) {
|
|
75
|
-
fragmentChangeHandler(event, fragment);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
92
|
function getHash() {
|
|
79
|
-
var
|
|
80
|
-
var hash =
|
|
93
|
+
var location1 = window.location;
|
|
94
|
+
var hash = location1.hash;
|
|
81
95
|
var start = 1;
|
|
82
96
|
hash = hash.substring(start);
|
|
83
97
|
return hash;
|
|
84
98
|
}
|
|
99
|
+
function hashChangeListener(event) {
|
|
100
|
+
var hash = getHash(), element = window, fragment = hash; ///
|
|
101
|
+
callFragmentChangeHandlers(event, element, fragment);
|
|
102
|
+
}
|
|
103
|
+
function callFragmentChangeHandlers(event, element, fragment) {
|
|
104
|
+
fragmentChangeEventListeners.forEach(function(fragmentChangeEventListener) {
|
|
105
|
+
var fragmentChangeHandler = fragmentChangeEventListener.fragmentChangeHandler, fragmentChangeHandlerElement = fragmentChangeEventListener.element; ///
|
|
106
|
+
fragmentChangeHandler.call(fragmentChangeHandlerElement, event, element, fragment);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function addFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
110
|
+
var fragmentChangeEventListener = createFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
111
|
+
fragmentChangeEventListeners.push(fragmentChangeEventListener);
|
|
112
|
+
return fragmentChangeEventListener;
|
|
113
|
+
}
|
|
114
|
+
function removeFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
115
|
+
var fragmentChangeEventListener = findFragmentChangeEventListener(fragmentChangeHandler, element), index = fragmentChangeEventListeners.indexOf(fragmentChangeEventListener), start = index, deleteCount = 1;
|
|
116
|
+
fragmentChangeEventListeners.splice(start, deleteCount);
|
|
117
|
+
return fragmentChangeEventListener;
|
|
118
|
+
}
|
|
119
|
+
function createFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
120
|
+
var fragmentChangeEventListener;
|
|
121
|
+
fragmentChangeEventListener = function() {}; ///
|
|
122
|
+
Object.assign(fragmentChangeEventListener, {
|
|
123
|
+
element: element,
|
|
124
|
+
fragmentChangeHandler: fragmentChangeHandler
|
|
125
|
+
});
|
|
126
|
+
return fragmentChangeEventListener;
|
|
127
|
+
}
|
|
128
|
+
function findFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
129
|
+
var fragmentChangeEventListener = fragmentChangeEventListeners.find(function(fragmentChangeEventListener) {
|
|
130
|
+
if (fragmentChangeEventListener.element === element && fragmentChangeEventListener.fragmentChangeHandler === fragmentChangeHandler) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return fragmentChangeEventListener;
|
|
135
|
+
}
|
|
85
136
|
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFnbWVudGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGUkFHTUVOVCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSEFTSENIQU5HRV9FVkVOVF9UWVBFIH0gZnJvbSBcIi4vZXZlbnRUeXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnJhZ21lbnQoKSB7XG4gIGNvbnN0IGhhc2ggPSBnZXRIYXNoKCksXG4gICAgICAgIGZyYWdtZW50ID0gbmV3IFN0cmluZyhoYXNoKTsgIC8vL1xuXG4gIE9iamVjdC5hc3NpZ24oZnJhZ21lbnQsIHtcbiAgICBnZXRGcmFnbWVudCxcbiAgICBzZXRGcmFnbWVudCxcbiAgICBvbkZyYWdtZW50Q2hhbmdlLFxuICAgIG9mZkZyYWdtZW50Q2hhbmdlXG4gIH0pO1xuXG4gIHJldHVybiBmcmFnbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEZyYWdtZW50KGZyYWdtZW50LCBzaWxlbnRseSA9IHRydWUpIHtcbiAgY29uc3QgaGFzaCA9IGZyYWdtZW50OyAgLy8vXG5cbiAgaWYgKHNpbGVudGx5KSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuICB9XG5cbiAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoO1xuXG4gIGlmIChzaWxlbnRseSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuICAgIH0sIDApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbkZyYWdtZW50Q2hhbmdlKGZyYWdtZW50Q2hhbmdlSGFuZGxlcikge1xuICBmcmFnbWVudENoYW5nZUhhbmRsZXJzLnB1c2goZnJhZ21lbnRDaGFuZ2VIYW5kbGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9mZkZyYWdtZW50Q2hhbmdlKGZyYWdtZW50Q2hhbmdlSGFuZGxlcikge1xuICBjb25zdCBpbmRleCA9IGZyYWdtZW50Q2hhbmdlSGFuZGxlcnMuaW5kZXhPZihmcmFnbWVudENoYW5nZUhhbmRsZXIpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGZyYWdtZW50Q2hhbmdlSGFuZGxlcnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgRlJBR01FTlQsIHtcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IGdldEZyYWdtZW50KCk7XG5cbiAgICByZXR1cm4gZnJhZ21lbnQ7XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbihmcmFnbWVudCkge1xuICAgIGNvbnN0IHNpbGVudGx5ID0gZmFsc2U7XG5cbiAgICBzZXRGcmFnbWVudChmcmFnbWVudCwgc2lsZW50bHkpO1xuICB9XG59KTtcblxuY29uc3QgZXZlbnRUeXBlID0gSEFTSENIQU5HRV9FVkVOVF9UWVBFLFxuICAgICAgZnJhZ21lbnRDaGFuZ2VIYW5kbGVycyA9IFtdO1xuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhc2hDaGFuZ2VMaXN0ZW5lcik7XG5cbmZ1bmN0aW9uIGhhc2hDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xuICBjb25zdCBoYXNoID0gZ2V0SGFzaCgpLFxuICAgICAgICBmcmFnbWVudCA9IGhhc2g7ICAvLy9cblxuICBmcmFnbWVudENoYW5nZUhhbmRsZXJzLmZvckVhY2goKGZyYWdtZW50Q2hhbmdlSGFuZGxlcikgPT4ge1xuICAgIGZyYWdtZW50Q2hhbmdlSGFuZGxlcihldmVudCwgZnJhZ21lbnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0SGFzaCgpIHtcbiAgY29uc3QgeyBsb2NhdGlvbiB9ID0gd2luZG93O1xuXG4gIGxldCB7IGhhc2ggfSA9IGxvY2F0aW9uO1xuXG4gIGNvbnN0IHN0YXJ0ID0gMTtcblxuICBoYXNoID0gaGFzaC5zdWJzdHJpbmcoc3RhcnQpO1xuXG4gIHJldHVybiBoYXNoO1xufSJdLCJuYW1lcyI6WyJnZXRGcmFnbWVudCIsIm9mZkZyYWdtZW50Q2hhbmdlIiwib25GcmFnbWVudENoYW5nZSIsInNldEZyYWdtZW50IiwiaGFzaCIsImdldEhhc2giLCJmcmFnbWVudCIsIlN0cmluZyIsIk9iamVjdCIsImFzc2lnbiIsInNpbGVudGx5Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImV2ZW50VHlwZSIsImhhc2hDaGFuZ2VMaXN0ZW5lciIsImxvY2F0aW9uIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJmcmFnbWVudENoYW5nZUhhbmRsZXIiLCJmcmFnbWVudENoYW5nZUhhbmRsZXJzIiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJkZWZpbmVQcm9wZXJ0eSIsIkZSQUdNRU5UIiwiZ2V0Iiwic2V0IiwiSEFTSENIQU5HRV9FVkVOVF9UWVBFIiwiZXZlbnQiLCJmb3JFYWNoIiwic3Vic3RyaW5nIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFLZ0JBLFdBQVc7ZUFBWEE7O0lBa0NBQyxpQkFBaUI7ZUFBakJBOztJQUpBQyxnQkFBZ0I7ZUFBaEJBOztJQWhCQUMsV0FBVztlQUFYQTs7O3lCQWpCUzswQkFDYTtBQUUvQixTQUFTSDtJQUNkLElBQU1JLE9BQU9DLFdBQ1BDLFdBQVcsSUFBSUMsT0FBT0gsT0FBUSxHQUFHO0lBRXZDSSxPQUFPQyxNQUFNLENBQUNILFVBQVU7UUFDdEJOLGFBQUFBO1FBQ0FHLGFBQUFBO1FBQ0FELGtCQUFBQTtRQUNBRCxtQkFBQUE7SUFDRjtJQUVBLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTSCxZQUFZRyxRQUFRO1FBQUVJLFdBQUFBLGlFQUFXO0lBQy9DLElBQU1OLE9BQU9FLFVBQVcsR0FBRztJQUUzQixJQUFJSSxVQUFVO1FBQ1pDLE9BQU9DLG1CQUFtQixDQUFDQyxXQUFXQztJQUN4QztJQUVBSCxPQUFPSSxRQUFRLENBQUNYLElBQUksR0FBR0E7SUFFdkIsSUFBSU0sVUFBVTtRQUNaTSxXQUFXO1lBQ1RMLE9BQU9NLGdCQUFnQixDQUFDSixXQUFXQztRQUNyQyxHQUFHO0lBQ0w7QUFDRjtBQUVPLFNBQVNaLGlCQUFpQmdCLHFCQUFxQjtJQUNwREMsdUJBQXVCQyxJQUFJLENBQUNGO0FBQzlCO0FBRU8sU0FBU2pCLGtCQUFrQmlCLHFCQUFxQjtJQUNyRCxJQUFNRyxRQUFRRix1QkFBdUJHLE9BQU8sQ0FBQ0o7SUFFN0MsSUFBSUcsUUFBUSxDQUFDLEdBQUc7UUFDZCxJQUFNRSxRQUFRRixPQUNSRyxjQUFjO1FBRXBCTCx1QkFBdUJNLE1BQU0sQ0FBQ0YsT0FBT0M7SUFDdkM7QUFDRjtBQUVBaEIsT0FBT2tCLGNBQWMsQ0FBQ2YsUUFBUWdCLG1CQUFRLEVBQUU7SUFDdENDLEtBQUssU0FBTEE7UUFDRSxJQUFNdEIsV0FBV047UUFFakIsT0FBT007SUFDVDtJQUVBdUIsS0FBSyxTQUFMQSxJQUFjdkIsUUFBUTtRQUNwQixJQUFNSSxXQUFXO1FBRWpCUCxZQUFZRyxVQUFVSTtJQUN4QjtBQUNGO0FBRUEsSUFBTUcsWUFBWWlCLGlDQUFxQixFQUNqQ1gseUJBQXlCLEVBQUU7QUFFakNSLE9BQU9NLGdCQUFnQixDQUFDSixXQUFXQztBQUVuQyxTQUFTQSxtQkFBbUJpQixLQUFLO0lBQy9CLElBQU0zQixPQUFPQyxXQUNQQyxXQUFXRixNQUFPLEdBQUc7SUFFM0JlLHVCQUF1QmEsT0FBTyxDQUFDLFNBQUNkO1FBQzlCQSxzQkFBc0JhLE9BQU96QjtJQUMvQjtBQUNGO0FBRUEsU0FBU0Q7SUFDUCxJQUFNLEFBQUVVLFdBQWFKLE9BQWJJO0lBRVIsSUFBSSxBQUFFWCxPQUFTVyxTQUFUWDtJQUVOLElBQU1tQixRQUFRO0lBRWRuQixPQUFPQSxLQUFLNkIsU0FBUyxDQUFDVjtJQUV0QixPQUFPbkI7QUFDVCJ9
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mcmFnbWVudGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBIQVNIQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XG5pbXBvcnQgeyBIQVNILCBGUkFHTUVOVCwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmFnbWVudCgpIHtcbiAgY29uc3QgaGFzaCA9IGdldEhhc2goKSxcbiAgICAgICAgZnJhZ21lbnQgPSBuZXcgU3RyaW5nKGhhc2gpOyAgLy8vXG5cbiAgT2JqZWN0LmFzc2lnbihmcmFnbWVudCwge1xuICAgIGdldEZyYWdtZW50LFxuICAgIHNldEZyYWdtZW50LFxuICAgIHJlc2V0RnJhZ21lbnQsXG4gICAgb25GcmFnbWVudENoYW5nZSxcbiAgICBvZmZGcmFnbWVudENoYW5nZVxuICB9KTtcblxuICByZXR1cm4gZnJhZ21lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRGcmFnbWVudChmcmFnbWVudCwgc2lsZW50bHkgPSB0cnVlKSB7XG4gIGlmIChzaWxlbnRseSkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFzaENoYW5nZUxpc3RlbmVyKTtcbiAgfVxuXG4gIGNvbnN0IGhhc2ggPSBmcmFnbWVudDsgIC8vL1xuXG4gIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gaGFzaDtcblxuICBpZiAoc2lsZW50bHkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFzaENoYW5nZUxpc3RlbmVyKTtcbiAgICB9LCAwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRGcmFnbWVudChzaWxlbnRseSA9IHRydWUpIHtcbiAgaWYgKHNpbGVudGx5KSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYXNoQ2hhbmdlTGlzdGVuZXIpO1xuICB9XG5cbiAgbGV0IHsgaHJlZiB9ID0gbG9jYXRpb247XG5cbiAgY29uc3QgaW5kZXggPSBocmVmLmluZGV4T2YoSEFTSCk7XG5cbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgICBlbmQgPSBpbmRleDsgIC8vL1xuXG4gICAgaHJlZiA9IGhyZWYuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpOyAvLy9cblxuICAgIGhpc3RvcnkucHVzaFN0YXRlKHt9LCBFTVBUWV9TVFJJTkcsIGhyZWYpO1xuICB9XG5cbiAgaWYgKHNpbGVudGx5KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhc2hDaGFuZ2VMaXN0ZW5lcik7XG4gICAgfSwgMCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uRnJhZ21lbnRDaGFuZ2UoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50ID0gdGhpcykge1xuICBhZGRGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9mZkZyYWdtZW50Q2hhbmdlKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCA9IHRoaXMpIHtcbiAgcmVtb3ZlRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBGUkFHTUVOVCwge1xuICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gZ2V0RnJhZ21lbnQoKTtcblxuICAgIHJldHVybiBmcmFnbWVudDtcbiAgfSxcblxuICBzZXQ6IGZ1bmN0aW9uKGZyYWdtZW50KSB7XG4gICAgY29uc3Qgc2lsZW50bHkgPSBmYWxzZTtcblxuICAgIHNldEZyYWdtZW50KGZyYWdtZW50LCBzaWxlbnRseSk7XG4gIH1cbn0pO1xuXG5jb25zdCBldmVudFR5cGUgPSBIQVNIQ0hBTkdFX0VWRU5UX1RZUEUsXG4gICAgICBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXJzID0gW107XG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFzaENoYW5nZUxpc3RlbmVyKTtcblxuZnVuY3Rpb24gZ2V0SGFzaCgpIHtcbiAgY29uc3QgeyBsb2NhdGlvbiB9ID0gd2luZG93O1xuXG4gIGxldCB7IGhhc2ggfSA9IGxvY2F0aW9uO1xuXG4gIGNvbnN0IHN0YXJ0ID0gMTtcblxuICBoYXNoID0gaGFzaC5zdWJzdHJpbmcoc3RhcnQpO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5mdW5jdGlvbiBoYXNoQ2hhbmdlTGlzdGVuZXIoZXZlbnQpIHtcbiAgY29uc3QgaGFzaCA9IGdldEhhc2goKSxcbiAgICAgICAgZWxlbWVudCA9IHdpbmRvdywgLy8vXG4gICAgICAgIGZyYWdtZW50ID0gaGFzaDsgIC8vL1xuXG4gIGNhbGxGcmFnbWVudENoYW5nZUhhbmRsZXJzKGV2ZW50LCBlbGVtZW50LCBmcmFnbWVudCk7XG59XG5cbmZ1bmN0aW9uIGNhbGxGcmFnbWVudENoYW5nZUhhbmRsZXJzKGV2ZW50LCBlbGVtZW50LCBmcmFnbWVudCkge1xuICBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcikgPT4ge1xuICAgIGNvbnN0IHsgZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50OiBmcmFnbWVudENoYW5nZUhhbmRsZXJFbGVtZW50IH0gPSBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXI7IC8vL1xuXG4gICAgZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLmNhbGwoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyRWxlbWVudCwgZXZlbnQsIGVsZW1lbnQsIGZyYWdtZW50KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcihmcmFnbWVudENoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyID0gY3JlYXRlRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCk7XG5cbiAgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVycy5wdXNoKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcik7XG5cbiAgcmV0dXJuIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcjtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIgPSBmaW5kRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCksXG4gICAgICAgIGluZGV4ID0gZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVycy5pbmRleE9mKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciksXG4gICAgICAgIHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG5cbiAgcmV0dXJuIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKGZyYWdtZW50Q2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBsZXQgZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyO1xuXG4gIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciA9ICgpID0+IHt9OyAvLy9cblxuICBPYmplY3QuYXNzaWduKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciwge1xuICAgIGVsZW1lbnQsXG4gICAgZnJhZ21lbnRDaGFuZ2VIYW5kbGVyXG4gIH0pO1xuXG4gIHJldHVybiBmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXI7XG59XG5cbmZ1bmN0aW9uIGZpbmRGcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIoZnJhZ21lbnRDaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciA9IGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcnMuZmluZCgoZnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyKSA9PiB7XG4gICAgaWYgKChmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIuZWxlbWVudCA9PT0gZWxlbWVudCkgJiYgKGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lci5mcmFnbWVudENoYW5nZUhhbmRsZXIgPT09IGZyYWdtZW50Q2hhbmdlSGFuZGxlcikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lcjtcbn1cbiJdLCJuYW1lcyI6WyJnZXRGcmFnbWVudCIsIm9mZkZyYWdtZW50Q2hhbmdlIiwib25GcmFnbWVudENoYW5nZSIsInJlc2V0RnJhZ21lbnQiLCJzZXRGcmFnbWVudCIsImhhc2giLCJnZXRIYXNoIiwiZnJhZ21lbnQiLCJTdHJpbmciLCJPYmplY3QiLCJhc3NpZ24iLCJzaWxlbnRseSIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJldmVudFR5cGUiLCJoYXNoQ2hhbmdlTGlzdGVuZXIiLCJsb2NhdGlvbiIsInNldFRpbWVvdXQiLCJhZGRFdmVudExpc3RlbmVyIiwiaHJlZiIsImluZGV4IiwiaW5kZXhPZiIsIkhBU0giLCJzdGFydCIsImVuZCIsInN1YnN0cmluZyIsImhpc3RvcnkiLCJwdXNoU3RhdGUiLCJFTVBUWV9TVFJJTkciLCJmcmFnbWVudENoYW5nZUhhbmRsZXIiLCJlbGVtZW50IiwiYWRkRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyIiwicmVtb3ZlRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyIiwiZGVmaW5lUHJvcGVydHkiLCJnbG9iYWxUaGlzIiwiRlJBR01FTlQiLCJnZXQiLCJzZXQiLCJIQVNIQ0hBTkdFX0VWRU5UX1RZUEUiLCJmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXJzIiwiZXZlbnQiLCJjYWxsRnJhZ21lbnRDaGFuZ2VIYW5kbGVycyIsImZvckVhY2giLCJmcmFnbWVudENoYW5nZUV2ZW50TGlzdGVuZXIiLCJmcmFnbWVudENoYW5nZUhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImNyZWF0ZUZyYWdtZW50Q2hhbmdlRXZlbnRMaXN0ZW5lciIsInB1c2giLCJmaW5kRnJhZ21lbnRDaGFuZ2VFdmVudExpc3RlbmVyIiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJmaW5kIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFLZ0JBLFdBQVc7ZUFBWEE7O0lBNERBQyxpQkFBaUI7ZUFBakJBOztJQUpBQyxnQkFBZ0I7ZUFBaEJBOztJQXpCQUMsYUFBYTtlQUFiQTs7SUFoQkFDLFdBQVc7ZUFBWEE7OzswQkFsQnNCO3lCQUNPO0FBRXRDLFNBQVNKO0lBQ2QsSUFBTUssT0FBT0MsV0FDUEMsV0FBVyxJQUFJQyxPQUFPSCxPQUFRLEdBQUc7SUFFdkNJLE9BQU9DLE1BQU0sQ0FBQ0gsVUFBVTtRQUN0QlAsYUFBQUE7UUFDQUksYUFBQUE7UUFDQUQsZUFBQUE7UUFDQUQsa0JB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
|
package/lib/index.js
CHANGED
|
@@ -18,10 +18,13 @@ _export(exports, {
|
|
|
18
18
|
onFragmentChange: function() {
|
|
19
19
|
return _fragmented.onFragmentChange;
|
|
20
20
|
},
|
|
21
|
+
resetFragment: function() {
|
|
22
|
+
return _fragmented.resetFragment;
|
|
23
|
+
},
|
|
21
24
|
setFragment: function() {
|
|
22
25
|
return _fragmented.setFragment;
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
var _fragmented = require("./fragmented");
|
|
26
29
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFwiLi9mcmFnbWVudGVkXCI7XG5cbmV4cG9ydCB7IGdldEZyYWdtZW50LCBzZXRGcmFnbWVudCwgcmVzZXRGcmFnbWVudCwgb25GcmFnbWVudENoYW5nZSwgb2ZmRnJhZ21lbnRDaGFuZ2UgfSBmcm9tIFwiLi9mcmFnbWVudGVkXCI7XG5cbiJdLCJuYW1lcyI6WyJnZXRGcmFnbWVudCIsIm9mZkZyYWdtZW50Q2hhbmdlIiwib25GcmFnbWVudENoYW5nZSIsInJlc2V0RnJhZ21lbnQiLCJzZXRGcmFnbWVudCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlTQSxXQUFXO2VBQVhBLHVCQUFXOztJQUFnREMsaUJBQWlCO2VBQWpCQSw2QkFBaUI7O0lBQW5DQyxnQkFBZ0I7ZUFBaEJBLDRCQUFnQjs7SUFBL0JDLGFBQWE7ZUFBYkEseUJBQWE7O0lBQTFCQyxXQUFXO2VBQVhBLHVCQUFXOzs7MEJBRjFCIn0=
|
package/package.json
CHANGED
package/src/constants.js
CHANGED
package/src/fragmented.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { FRAGMENT } from "./constants";
|
|
4
3
|
import { HASHCHANGE_EVENT_TYPE } from "./eventTypes";
|
|
4
|
+
import { HASH, FRAGMENT, EMPTY_STRING } from "./constants";
|
|
5
5
|
|
|
6
6
|
export function getFragment() {
|
|
7
7
|
const hash = getHash(),
|
|
@@ -10,6 +10,7 @@ export function getFragment() {
|
|
|
10
10
|
Object.assign(fragment, {
|
|
11
11
|
getFragment,
|
|
12
12
|
setFragment,
|
|
13
|
+
resetFragment,
|
|
13
14
|
onFragmentChange,
|
|
14
15
|
offFragmentChange
|
|
15
16
|
});
|
|
@@ -18,12 +19,12 @@ export function getFragment() {
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export function setFragment(fragment, silently = true) {
|
|
21
|
-
const hash = fragment; ///
|
|
22
|
-
|
|
23
22
|
if (silently) {
|
|
24
23
|
window.removeEventListener(eventType, hashChangeListener);
|
|
25
24
|
}
|
|
26
25
|
|
|
26
|
+
const hash = fragment; ///
|
|
27
|
+
|
|
27
28
|
window.location.hash = hash;
|
|
28
29
|
|
|
29
30
|
if (silently) {
|
|
@@ -33,22 +34,40 @@ export function setFragment(fragment, silently = true) {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
export function
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
export function resetFragment(silently = true) {
|
|
38
|
+
if (silently) {
|
|
39
|
+
window.removeEventListener(eventType, hashChangeListener);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
let { href } = location;
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
const index = fragmentChangeHandlers.indexOf(fragmentChangeHandler);
|
|
44
|
+
const index = href.indexOf(HASH);
|
|
42
45
|
|
|
43
|
-
if (index
|
|
44
|
-
const start =
|
|
45
|
-
|
|
46
|
+
if (index !== -1) {
|
|
47
|
+
const start = 0,
|
|
48
|
+
end = index; ///
|
|
46
49
|
|
|
47
|
-
|
|
50
|
+
href = href.substring(start, end); ///
|
|
51
|
+
|
|
52
|
+
history.pushState({}, EMPTY_STRING, href);
|
|
48
53
|
}
|
|
54
|
+
|
|
55
|
+
if (silently) {
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
window.addEventListener(eventType, hashChangeListener);
|
|
58
|
+
}, 0);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function onFragmentChange(fragmentChangeHandler, element = this) {
|
|
63
|
+
addFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
49
64
|
}
|
|
50
65
|
|
|
51
|
-
|
|
66
|
+
export function offFragmentChange(fragmentChangeHandler, element = this) {
|
|
67
|
+
removeFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Object.defineProperty(globalThis, FRAGMENT, {
|
|
52
71
|
get: function() {
|
|
53
72
|
const fragment = getFragment();
|
|
54
73
|
|
|
@@ -63,27 +82,76 @@ Object.defineProperty(window, FRAGMENT, {
|
|
|
63
82
|
});
|
|
64
83
|
|
|
65
84
|
const eventType = HASHCHANGE_EVENT_TYPE,
|
|
66
|
-
|
|
85
|
+
fragmentChangeEventListeners = [];
|
|
67
86
|
|
|
68
87
|
window.addEventListener(eventType, hashChangeListener);
|
|
69
88
|
|
|
89
|
+
function getHash() {
|
|
90
|
+
const { location } = window;
|
|
91
|
+
|
|
92
|
+
let { hash } = location;
|
|
93
|
+
|
|
94
|
+
const start = 1;
|
|
95
|
+
|
|
96
|
+
hash = hash.substring(start);
|
|
97
|
+
|
|
98
|
+
return hash;
|
|
99
|
+
}
|
|
100
|
+
|
|
70
101
|
function hashChangeListener(event) {
|
|
71
102
|
const hash = getHash(),
|
|
103
|
+
element = window, ///
|
|
72
104
|
fragment = hash; ///
|
|
73
105
|
|
|
74
|
-
|
|
75
|
-
|
|
106
|
+
callFragmentChangeHandlers(event, element, fragment);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function callFragmentChangeHandlers(event, element, fragment) {
|
|
110
|
+
fragmentChangeEventListeners.forEach((fragmentChangeEventListener) => {
|
|
111
|
+
const { fragmentChangeHandler, element: fragmentChangeHandlerElement } = fragmentChangeEventListener; ///
|
|
112
|
+
|
|
113
|
+
fragmentChangeHandler.call(fragmentChangeHandlerElement, event, element, fragment);
|
|
76
114
|
});
|
|
77
115
|
}
|
|
78
116
|
|
|
79
|
-
function
|
|
80
|
-
const
|
|
117
|
+
function addFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
118
|
+
const fragmentChangeEventListener = createFragmentChangeEventListener(fragmentChangeHandler, element);
|
|
81
119
|
|
|
82
|
-
|
|
120
|
+
fragmentChangeEventListeners.push(fragmentChangeEventListener);
|
|
83
121
|
|
|
84
|
-
|
|
122
|
+
return fragmentChangeEventListener;
|
|
123
|
+
}
|
|
85
124
|
|
|
86
|
-
|
|
125
|
+
function removeFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
126
|
+
const fragmentChangeEventListener = findFragmentChangeEventListener(fragmentChangeHandler, element),
|
|
127
|
+
index = fragmentChangeEventListeners.indexOf(fragmentChangeEventListener),
|
|
128
|
+
start = index, ///
|
|
129
|
+
deleteCount = 1;
|
|
87
130
|
|
|
88
|
-
|
|
89
|
-
|
|
131
|
+
fragmentChangeEventListeners.splice(start, deleteCount);
|
|
132
|
+
|
|
133
|
+
return fragmentChangeEventListener;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function createFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
137
|
+
let fragmentChangeEventListener;
|
|
138
|
+
|
|
139
|
+
fragmentChangeEventListener = () => {}; ///
|
|
140
|
+
|
|
141
|
+
Object.assign(fragmentChangeEventListener, {
|
|
142
|
+
element,
|
|
143
|
+
fragmentChangeHandler
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
return fragmentChangeEventListener;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function findFragmentChangeEventListener(fragmentChangeHandler, element) {
|
|
150
|
+
const fragmentChangeEventListener = fragmentChangeEventListeners.find((fragmentChangeEventListener) => {
|
|
151
|
+
if ((fragmentChangeEventListener.element === element) && (fragmentChangeEventListener.fragmentChangeHandler === fragmentChangeHandler)) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
return fragmentChangeEventListener;
|
|
157
|
+
}
|
package/src/index.js
CHANGED