@trullock/page-manager 0.14.2 → 0.14.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +39 -46
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trullock/page-manager",
3
- "version": "0.14.2",
3
+ "version": "0.14.3",
4
4
  "description": "Single page app manager",
5
5
  "exports": {
6
6
  ".": "./src/index.js"
package/src/index.js CHANGED
@@ -14,19 +14,18 @@ var goal = null;
14
14
  var backData = {};
15
15
  var options = {
16
16
  fetchPath: route => '/pages/' + route.routeName + '.html',
17
- fetchPageTemplate: route => {
18
- return fetch(options.fetchPath(route))
19
- .then(r => r.text())
20
- .then(html => {
21
- var $div = document.createElement('div');
22
- $div.innerHTML = html;
23
- // Pages are assumed to have a single wrapping element
24
- return $div.firstElementChild;
25
- })
26
- .then($template => {
27
- pageTemplateCache[route.pattern] = $template;
28
- return $template;
29
- });
17
+ fetchPageTemplate: async route => {
18
+ const response = await fetch(options.fetchPath(route));
19
+ const html = await response.text();
20
+
21
+ var $div = document.createElement('div');
22
+ $div.innerHTML = html;
23
+ const $template = $div.firstElementChild;
24
+
25
+ // TODO: why is this in here and not in the caller?
26
+ pageTemplateCache[route.pattern] = $template;
27
+
28
+ return $template;
30
29
  },
31
30
  pageInterrupt: route => null,
32
31
  attachMarkup: $html => document.body.appendChild($html),
@@ -143,7 +142,7 @@ async function loadPage(route, data) {
143
142
  return page;
144
143
  }
145
144
 
146
- function showPage(url, data, event) {
145
+ async function showPage(url, data, event) {
147
146
  var route = router.parse(url);
148
147
  if (route == null) {
149
148
  console.error(`Can't find page: '${url}'`);
@@ -164,7 +163,7 @@ function showPage(url, data, event) {
164
163
  };
165
164
  data.event = event;
166
165
 
167
- let interrupt = options.pageInterrupt(route);
166
+ let interrupt = await Promise.resolve(options.pageInterrupt(route));
168
167
  if(interrupt)
169
168
  {
170
169
  goal = { url, data };
@@ -184,43 +183,40 @@ function showPage(url, data, event) {
184
183
  // handle initial page
185
184
  if (event.action == 'load')
186
185
  {
187
- return getPage
188
- .then(page => doShow(page, data))
189
- .then(page => {
190
- // clean initial load
191
- if(stackPointer == -1)
192
- {
193
- stack.push({ uid: 0, data, page });
194
- stackPointer = 0;
195
- }
196
- // page refresh
197
- else
198
- {
199
- stack[stackPointer].page = page;
200
- stack[stackPointer].data = data;
201
- }
202
- return page;
203
- });
186
+ const page = await getPage;
187
+ await doShow(page, data);
188
+ // clean initial load
189
+ if (stackPointer == -1) {
190
+ stack.push({ uid: 0, data, page });
191
+ stackPointer = 0;
192
+ }
193
+
194
+ // page refresh
195
+ else {
196
+ stack[stackPointer].page = page;
197
+ stack[stackPointer].data = data;
198
+ }
199
+ return page;
204
200
  }
205
201
 
206
202
  let currentState = stack[stackPointer];
207
203
 
208
204
  if (currentState.data.route.path == route.path) {
209
205
  handleHistoryAction(event, url, data, currentState.page);
210
- return getPage.then(page => doUpdate(page, data));
206
+ const page = await getPage;
207
+ await doUpdate(page, data);
208
+ return page;
211
209
  }
212
210
 
213
211
  currentState.data.scrollY = window.scrollY;
214
212
 
215
- return Promise.all([
216
- currentState.page.hide(event),
217
- getPage
218
- ])
219
- .then(results => results[1])
220
- .then(page => {
221
- handleHistoryAction(event, url, data, page);
222
- return doShow(page, data);
223
- });
213
+ const results = await Promise.all([
214
+ currentState.page.hide(event),
215
+ getPage
216
+ ]);
217
+ const page = results[1];
218
+ handleHistoryAction(event, url, data, page);
219
+ await doShow(page, data);
224
220
  // .catch(e => {
225
221
  // // TODO: what case is this?
226
222
  // manuallyAdjustingHistory = () => manuallyAdjustingHistory = false;
@@ -229,6 +225,7 @@ function showPage(url, data, event) {
229
225
  // else if (event.action == 'fwd')
230
226
  // history.go(-1);
231
227
  // });
228
+ return page
232
229
  }
233
230
 
234
231
  async function doShow(page, data) {
@@ -238,17 +235,13 @@ async function doShow(page, data) {
238
235
  await Promise.resolve(page.show(data));
239
236
  document.title = page.title;
240
237
  await hideLoading();
241
- return page;
242
238
  }
243
239
 
244
-
245
240
  async function doUpdate(page, data) {
246
241
 
247
242
  await Promise.resolve(page.update(data));
248
243
  document.title = page.title
249
- // todo: hide() should be passed an event object
250
244
  await hideLoading();
251
- return page;
252
245
  }
253
246
 
254
247
  function handleHistoryAction(event, url, data, page) {