phx-react 1.3.1086 → 1.3.1089
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/dist/cjs/components/FormWrap/FormWrap.d.ts +5 -1
- package/dist/cjs/components/FormWrap/FormWrap.js +5 -4
- package/dist/cjs/components/FormWrap/FormWrap.js.map +1 -1
- package/dist/cjs/components/MainWrapV3/MainWrapV3.js +2 -0
- package/dist/cjs/components/MainWrapV3/MainWrapV3.js.map +1 -1
- package/dist/cjs/hooks/use-router-back.d.ts +1 -0
- package/dist/cjs/hooks/use-router-back.js +25 -0
- package/dist/cjs/hooks/use-router-back.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/stores/page-tracker/page-tracker-store.d.ts +14 -0
- package/dist/cjs/stores/page-tracker/page-tracker-store.js +70 -0
- package/dist/cjs/stores/page-tracker/page-tracker-store.js.map +1 -0
- package/dist/cjs/stores/page-tracker/page-tracker.d.ts +23 -0
- package/dist/cjs/stores/page-tracker/page-tracker.js +130 -0
- package/dist/cjs/stores/page-tracker/page-tracker.js.map +1 -0
- package/dist/esm/components/FormWrap/FormWrap.d.ts +5 -1
- package/dist/esm/components/FormWrap/FormWrap.js +5 -4
- package/dist/esm/components/FormWrap/FormWrap.js.map +1 -1
- package/dist/esm/components/MainWrapV3/MainWrapV3.js +2 -0
- package/dist/esm/components/MainWrapV3/MainWrapV3.js.map +1 -1
- package/dist/esm/hooks/use-router-back.d.ts +1 -0
- package/dist/esm/hooks/use-router-back.js +21 -0
- package/dist/esm/hooks/use-router-back.js.map +1 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stores/page-tracker/page-tracker-store.d.ts +14 -0
- package/dist/esm/stores/page-tracker/page-tracker-store.js +65 -0
- package/dist/esm/stores/page-tracker/page-tracker-store.js.map +1 -0
- package/dist/esm/stores/page-tracker/page-tracker.d.ts +23 -0
- package/dist/esm/stores/page-tracker/page-tracker.js +125 -0
- package/dist/esm/stores/page-tracker/page-tracker.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type PageEvent = 'forward' | 'back' | 'push' | undefined;
|
|
2
|
+
export type PageTrackerState = {
|
|
3
|
+
/** current page index */
|
|
4
|
+
pageIndex: number;
|
|
5
|
+
/** correct `document.referrer` */
|
|
6
|
+
referrer: string;
|
|
7
|
+
/** whether the current page is the first page */
|
|
8
|
+
isFirstPage: boolean;
|
|
9
|
+
/** whether the current page is the last page */
|
|
10
|
+
isLastPage: boolean;
|
|
11
|
+
/** whether the user navigated to the page via browser back/forward buttons or by clicking a link */
|
|
12
|
+
pageEvent: PageEvent;
|
|
13
|
+
/** history browsing record */
|
|
14
|
+
pageHistory: Array<string>;
|
|
15
|
+
/** total page history length */
|
|
16
|
+
pageHistoryLength: number;
|
|
17
|
+
};
|
|
18
|
+
export type HistoryCustomState = {
|
|
19
|
+
__REACT_PAGE_TRACKER_INTERNAL__: Pick<PageTrackerState, 'pageIndex' | 'referrer' | 'pageHistory' | 'pageHistoryLength'>;
|
|
20
|
+
};
|
|
21
|
+
export declare const usePageTrackerHandler: () => void;
|
|
22
|
+
export declare const PageTracker: () => null;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { __assign, __spreadArray } from "tslib";
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
|
+
import { pageTrackerStore } from './page-tracker-store';
|
|
5
|
+
var DEBUG = false;
|
|
6
|
+
var useStrictModeDetector = function () {
|
|
7
|
+
var counterRef = useRef(0);
|
|
8
|
+
var isStrictMode = useRef(false);
|
|
9
|
+
var detectorHandler = function () {
|
|
10
|
+
counterRef.current++;
|
|
11
|
+
if (isStrictMode.current) {
|
|
12
|
+
return counterRef.current % 2 === 0;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
initStrictModeDetector: function () {
|
|
18
|
+
counterRef.current++;
|
|
19
|
+
if (counterRef.current === 2) {
|
|
20
|
+
isStrictMode.current = true;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
strictModeDetector: function () {
|
|
24
|
+
return detectorHandler();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
var debugLog = function (message) {
|
|
29
|
+
if (DEBUG) {
|
|
30
|
+
console.debug("[DEBUG PAGE CHANGE] ".concat(message));
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var initHistoryState = function () {
|
|
34
|
+
var defaultData = {
|
|
35
|
+
__REACT_PAGE_TRACKER_INTERNAL__: {
|
|
36
|
+
pageIndex: 0,
|
|
37
|
+
referrer: document.referrer,
|
|
38
|
+
pageHistory: [location.href.replace(location.origin, '')],
|
|
39
|
+
pageHistoryLength: 1
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
if (typeof history.state === 'object' && history.state !== null) {
|
|
43
|
+
history.replaceState(__assign(__assign({}, history.state), defaultData), location.href);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
history.replaceState(defaultData, '');
|
|
47
|
+
}
|
|
48
|
+
pageTrackerStore.setState(defaultData.__REACT_PAGE_TRACKER_INTERNAL__);
|
|
49
|
+
};
|
|
50
|
+
export var usePageTrackerHandler = function () {
|
|
51
|
+
var initStrictModeDetector = useStrictModeDetector().initStrictModeDetector;
|
|
52
|
+
var pageIndex = useRef(0);
|
|
53
|
+
// for isLastPage usage
|
|
54
|
+
var visitedTotalLength = useRef(1);
|
|
55
|
+
useEffect(function () {
|
|
56
|
+
initHistoryState();
|
|
57
|
+
initStrictModeDetector();
|
|
58
|
+
/** Handle user operate original back/forward button or history.go()/back()/forward() or framework routing. **/
|
|
59
|
+
var handlePopState = function (event) {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
var state = event.state;
|
|
62
|
+
var internal = state === null || state === void 0 ? void 0 : state.__REACT_PAGE_TRACKER_INTERNAL__;
|
|
63
|
+
if (!internal) {
|
|
64
|
+
// If the state isn't ours, ignore to avoid corrupting indices
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
var statePageIndex = (_a = internal.pageIndex) !== null && _a !== void 0 ? _a : 0;
|
|
68
|
+
var pageEvent = pageIndex.current > statePageIndex ? 'back' : 'forward';
|
|
69
|
+
if (pageEvent === 'forward') {
|
|
70
|
+
pageIndex.current = statePageIndex; // moving forward to the state's index
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
pageIndex.current = statePageIndex;
|
|
74
|
+
}
|
|
75
|
+
var pageHistory = __spreadArray([], (internal.pageHistory || []), true);
|
|
76
|
+
pageTrackerStore.setState({
|
|
77
|
+
pageIndex: pageIndex.current,
|
|
78
|
+
isFirstPage: pageIndex.current === 0,
|
|
79
|
+
isLastPage: pageHistory.length === visitedTotalLength.current,
|
|
80
|
+
referrer: (_b = internal.referrer) !== null && _b !== void 0 ? _b : '',
|
|
81
|
+
pageHistory: pageHistory,
|
|
82
|
+
pageHistoryLength: visitedTotalLength.current,
|
|
83
|
+
pageEvent: pageEvent
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
// save original pushState
|
|
87
|
+
var originalPushState = history.pushState.bind(history);
|
|
88
|
+
var normalize = function (raw) { return raw.replace(location.origin, ''); };
|
|
89
|
+
// override popstate using addEventListener
|
|
90
|
+
window.addEventListener('popstate', handlePopState);
|
|
91
|
+
history.pushState = function (state, title, url) {
|
|
92
|
+
var baseHistory = pageTrackerStore.getImmutablePageHistory();
|
|
93
|
+
// trim forward if navigating mid-stack
|
|
94
|
+
if (pageIndex.current < baseHistory.length - 1) {
|
|
95
|
+
baseHistory.splice(pageIndex.current + 1);
|
|
96
|
+
}
|
|
97
|
+
var nextUrl = url ? normalize(url) : normalize(location.href);
|
|
98
|
+
var newPageHistory = __spreadArray(__spreadArray([], baseHistory, true), [nextUrl], false);
|
|
99
|
+
var newPageIndex = newPageHistory.length - 1;
|
|
100
|
+
pageIndex.current = newPageIndex;
|
|
101
|
+
visitedTotalLength.current = newPageHistory.length;
|
|
102
|
+
var newState = {
|
|
103
|
+
pageIndex: newPageIndex,
|
|
104
|
+
referrer: normalize(window.location.href),
|
|
105
|
+
pageHistory: newPageHistory,
|
|
106
|
+
pageHistoryLength: visitedTotalLength.current
|
|
107
|
+
};
|
|
108
|
+
var stateWithPageInfo = __assign(__assign({}, state), { __REACT_PAGE_TRACKER_INTERNAL__: __assign({}, newState) });
|
|
109
|
+
pageTrackerStore.setState(__assign(__assign({}, newState), { isFirstPage: newPageIndex === 0, isLastPage: true, pageEvent: 'push' }));
|
|
110
|
+
debugLog("pushState: stateWithPageInfo.pageIndex -->".concat(stateWithPageInfo.__REACT_PAGE_TRACKER_INTERNAL__.pageIndex, " ,pageIndex.current --> ").concat(pageIndex.current, " referrer -->").concat(stateWithPageInfo.__REACT_PAGE_TRACKER_INTERNAL__.referrer));
|
|
111
|
+
return originalPushState(stateWithPageInfo, title || '', url || '');
|
|
112
|
+
};
|
|
113
|
+
return function () {
|
|
114
|
+
window.removeEventListener('popstate', handlePopState);
|
|
115
|
+
history.pushState = originalPushState;
|
|
116
|
+
};
|
|
117
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
118
|
+
}, []);
|
|
119
|
+
};
|
|
120
|
+
export var PageTracker = function () {
|
|
121
|
+
// eslint-disable-next-line no-use-before-define
|
|
122
|
+
usePageTrackerHandler();
|
|
123
|
+
return null;
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=page-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-tracker.js","sourceRoot":"","sources":["../../../../src/stores/page-tracker/page-tracker.tsx"],"names":[],"mappings":"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"}
|