eddev 0.1.37 → 0.1.40-beta-2

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.
@@ -40,6 +40,7 @@ function EditableText(_a) {
40
40
  }
41
41
  else {
42
42
  var value = (0, blockAttributes_1.useInlineEditableValue)(id)[0];
43
+ var router_1 = (0, __1.useRouter)();
43
44
  var otherProps = __assign({}, props);
44
45
  delete otherProps.inlineToolbar;
45
46
  delete otherProps.disableLineBreaks;
@@ -54,7 +55,6 @@ function EditableText(_a) {
54
55
  return null;
55
56
  }
56
57
  }
57
- var router_1 = (0, __1.useRouter)();
58
58
  return (0, react_1.createElement)(as || "div", __assign({ dangerouslySetInnerHTML: { __html: value }, onClick: function (e) {
59
59
  if (e.target && e.target instanceof HTMLAnchorElement) {
60
60
  if ((0, remoteProps_1.isSameOrigin)(e.target.href) && router_1) {
@@ -29,12 +29,15 @@ var updateHeadTags_1 = require("../routing/updateHeadTags");
29
29
  var hasPopulatedCache = false;
30
30
  function BrowserRouter(props) {
31
31
  var setAppData = (0, hooks_1.useAppDataStore)(function (s) { return s.setAppData; });
32
- var _a = (0, react_1.useState)(function () { return document.location.href; }), url = _a[0], setUrl = _a[1];
33
- var _b = (0, react_1.useState)(function () {
32
+ var _a = (0, react_1.useState)(function () {
34
33
  setAppData(_PAGE_DATA.appData.data);
35
- return _PAGE_DATA;
36
- }), data = _b[0], setData = _b[1];
37
- var _c = (0, react_1.useState)(null), pending = _c[0], setPendingUrl = _c[1];
34
+ return {
35
+ url: document.location.href,
36
+ data: _PAGE_DATA,
37
+ };
38
+ }), state = _a[0], setState = _a[1];
39
+ var url = state.url, data = state.data;
40
+ var _b = (0, react_1.useState)(null), pending = _b[0], setPendingUrl = _b[1];
38
41
  var setIsLoading = (0, usePageLoad_1.usePageLoad)(function (s) { return s.setIsLoading; });
39
42
  (0, react_1.useEffect)(function () {
40
43
  if (data.errorStack) {
@@ -45,9 +48,12 @@ function BrowserRouter(props) {
45
48
  hasPopulatedCache = true;
46
49
  (0, remoteProps_1.setInitialProps)(url, data);
47
50
  }
51
+ (0, react_1.useEffect)(function () {
52
+ history.scrollRestoration = "manual";
53
+ }, []);
48
54
  (0, react_1.useEffect)(function () {
49
55
  var handle = function (e) {
50
- setPendingUrl({ popped: true, url: document.location.href });
56
+ setPendingUrl({ popped: true, url: document.location.href, scrollPosition: e.state.scrollPosition });
51
57
  };
52
58
  window.addEventListener("popstate", handle);
53
59
  return function () {
@@ -64,9 +70,12 @@ function BrowserRouter(props) {
64
70
  (0, remoteProps_1.fetchProps)(pending.url).then(function (data) {
65
71
  var view = views_1.default[data.view];
66
72
  var finish = function () {
67
- var _a;
68
- setUrl(pending.url);
69
- setData(data);
73
+ var _a, _b;
74
+ setState({
75
+ url: pending.url,
76
+ data: data,
77
+ });
78
+ // setData(data)
70
79
  if (data.appData) {
71
80
  setAppData(data.appData.data);
72
81
  }
@@ -76,6 +85,7 @@ function BrowserRouter(props) {
76
85
  (0, updateHeadTags_1.updateHeadTags)(data.meta.head);
77
86
  setIsLoading(false);
78
87
  if (!pending.popped) {
88
+ history.replaceState({ scrollPosition: (_b = document.scrollingElement) === null || _b === void 0 ? void 0 : _b.scrollTop }, "", document.location.href);
79
89
  history.pushState({}, "", pending.url);
80
90
  }
81
91
  };
@@ -92,12 +102,25 @@ function BrowserRouter(props) {
92
102
  cancelled = true;
93
103
  };
94
104
  }, [pending]);
105
+ var _c = (0, react_1.useState)({ value: null }), scrollPosition = _c[0], setScrollPosition = _c[1];
106
+ (0, react_1.useEffect)(function () {
107
+ if (document.scrollingElement && typeof scrollPosition.value === "number") {
108
+ document.scrollingElement.scrollTop = scrollPosition.value;
109
+ }
110
+ }, [scrollPosition]);
95
111
  return ((0, jsx_runtime_1.jsx)(routing_1.RouterRoot, __assign({ url: url, data: data, onNavigateRequest: function (url) {
96
112
  setPendingUrl({ popped: false, url: url });
97
113
  }, onPreload: function (url) {
98
114
  if ((0, remoteProps_1.isSameOrigin)(url)) {
99
115
  (0, remoteProps_1.fetchProps)(url);
100
116
  }
101
- }, onNavigated: function () { } }, { children: props.children }), void 0));
117
+ }, onNavigated: function () {
118
+ if (pending && typeof pending.scrollPosition === "number") {
119
+ setScrollPosition({ value: pending.scrollPosition });
120
+ }
121
+ else {
122
+ setScrollPosition({ value: 0 });
123
+ }
124
+ } }, { children: props.children }), void 0));
102
125
  }
103
126
  exports.BrowserRouter = BrowserRouter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eddev",
3
- "version": "0.1.37",
3
+ "version": "0.1.40-beta-2",
4
4
  "main": "./index.js",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.hasCachedProps = exports.fetchProps = exports.isSameOrigin = exports.setInitialProps = exports.parseURL = void 0;
43
43
  var url_parse_1 = __importDefault(require("url-parse"));
44
44
  var qs_1 = __importDefault(require("qs"));
45
+ var pending = {};
45
46
  var cache = {};
46
47
  function parseURL(url) {
47
48
  return (0, url_parse_1.default)(url, qs_1.default.parse);
@@ -63,26 +64,26 @@ function isSameOrigin(url) {
63
64
  exports.isSameOrigin = isSameOrigin;
64
65
  function fetchProps(url) {
65
66
  return __awaiter(this, void 0, void 0, function () {
66
- var parsed, cacheKey, requestUrl, response, data;
67
+ var parsed, cacheKey, requestUrl, promise;
67
68
  return __generator(this, function (_a) {
68
- switch (_a.label) {
69
- case 0:
70
- parsed = parseURL(url);
71
- cacheKey = getRouteCacheKey(url);
72
- // Cached value?
73
- if (cache[cacheKey])
74
- return [2 /*return*/, Promise.resolve(cache[cacheKey])];
75
- parsed.query["_props"] = "1";
76
- requestUrl = parsed.toString();
77
- return [4 /*yield*/, fetch(requestUrl)];
78
- case 1:
79
- response = _a.sent();
80
- return [4 /*yield*/, response.json()];
81
- case 2:
82
- data = _a.sent();
83
- cache[cacheKey] = data;
84
- return [2 /*return*/, data];
85
- }
69
+ parsed = parseURL(url);
70
+ cacheKey = getRouteCacheKey(url);
71
+ // Cached value?
72
+ if (cacheKey in cache)
73
+ return [2 /*return*/, Promise.resolve(cache[cacheKey])];
74
+ if (cacheKey in pending)
75
+ return [2 /*return*/, pending[cacheKey]];
76
+ parsed.query["_props"] = "1";
77
+ requestUrl = parsed.toString();
78
+ promise = fetch(requestUrl)
79
+ .then(function (response) { return response.json(); })
80
+ .then(function (data) {
81
+ delete pending[cacheKey];
82
+ cache[cacheKey] = data;
83
+ return data;
84
+ });
85
+ pending[cacheKey] = promise;
86
+ return [2 /*return*/, promise];
86
87
  });
87
88
  });
88
89
  }
@@ -55,7 +55,7 @@ declare type RouterRootProps = {
55
55
  children: ReactNode;
56
56
  onNavigateRequest?: (url: string) => void;
57
57
  onPreload?: (url: string) => void;
58
- onNavigated?: (url: string) => void;
58
+ onNavigated?: (item: RouteItem) => void;
59
59
  };
60
60
  export declare function RouterRoot(props: RouterRootProps): JSX.Element;
61
61
  declare type SwitchProps = {
@@ -213,15 +213,7 @@ function useForkedRouter(conf, opts) {
213
213
  var ctx = (0, react_1.useMemo)(function () {
214
214
  return parent.fork(conf, opts);
215
215
  }, [parent]);
216
- // useEffect(() => {
217
- // if (onChange) {
218
- // return ctx.subscribe(onChange);
219
- // }
220
- // }, [ctx, onChange]);
221
216
  Object.assign(ctx.config, conf);
222
- // ctx.config.match = conf.match;
223
- // ctx.config.beforeLeave = conf.beforeLeave;
224
- // ctx.config.beforeLeave = conf.beforeLeave;
225
217
  (0, react_1.useEffect)(function () {
226
218
  return function () { return ctx.dispose(); };
227
219
  }, [ctx]);
@@ -301,6 +293,9 @@ function RouterRoot(props) {
301
293
  ctx.propagateCandidate(item, ctx.item).then(function () {
302
294
  if (!cancelled) {
303
295
  ctx.propagateChange(item, true);
296
+ if (props.onNavigated) {
297
+ props.onNavigated(item);
298
+ }
304
299
  }
305
300
  });
306
301
  return function () {
@@ -308,6 +303,15 @@ function RouterRoot(props) {
308
303
  };
309
304
  }
310
305
  }, [props.url, props.data]);
306
+ // useEffect(() => {
307
+ // return ctx.subscribe((route, status) => {
308
+ // if (status === "active") {
309
+ // if (props.onNavigated) {
310
+ // props.onNavigated(route.pathname)
311
+ // }
312
+ // }
313
+ // })
314
+ // }, [props.onNavigated])
311
315
  return (0, jsx_runtime_1.jsx)(RouterContext.Provider, __assign({ value: ctx }, { children: props.children }), void 0);
312
316
  }
313
317
  exports.RouterRoot = RouterRoot;