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.
Files changed (35) hide show
  1. package/dist/cjs/components/FormWrap/FormWrap.d.ts +5 -1
  2. package/dist/cjs/components/FormWrap/FormWrap.js +5 -4
  3. package/dist/cjs/components/FormWrap/FormWrap.js.map +1 -1
  4. package/dist/cjs/components/MainWrapV3/MainWrapV3.js +2 -0
  5. package/dist/cjs/components/MainWrapV3/MainWrapV3.js.map +1 -1
  6. package/dist/cjs/hooks/use-router-back.d.ts +1 -0
  7. package/dist/cjs/hooks/use-router-back.js +25 -0
  8. package/dist/cjs/hooks/use-router-back.js.map +1 -0
  9. package/dist/cjs/index.d.ts +2 -1
  10. package/dist/cjs/index.js +3 -1
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/stores/page-tracker/page-tracker-store.d.ts +14 -0
  13. package/dist/cjs/stores/page-tracker/page-tracker-store.js +70 -0
  14. package/dist/cjs/stores/page-tracker/page-tracker-store.js.map +1 -0
  15. package/dist/cjs/stores/page-tracker/page-tracker.d.ts +23 -0
  16. package/dist/cjs/stores/page-tracker/page-tracker.js +130 -0
  17. package/dist/cjs/stores/page-tracker/page-tracker.js.map +1 -0
  18. package/dist/esm/components/FormWrap/FormWrap.d.ts +5 -1
  19. package/dist/esm/components/FormWrap/FormWrap.js +5 -4
  20. package/dist/esm/components/FormWrap/FormWrap.js.map +1 -1
  21. package/dist/esm/components/MainWrapV3/MainWrapV3.js +2 -0
  22. package/dist/esm/components/MainWrapV3/MainWrapV3.js.map +1 -1
  23. package/dist/esm/hooks/use-router-back.d.ts +1 -0
  24. package/dist/esm/hooks/use-router-back.js +21 -0
  25. package/dist/esm/hooks/use-router-back.js.map +1 -0
  26. package/dist/esm/index.d.ts +2 -1
  27. package/dist/esm/index.js +2 -1
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/stores/page-tracker/page-tracker-store.d.ts +14 -0
  30. package/dist/esm/stores/page-tracker/page-tracker-store.js +65 -0
  31. package/dist/esm/stores/page-tracker/page-tracker-store.js.map +1 -0
  32. package/dist/esm/stores/page-tracker/page-tracker.d.ts +23 -0
  33. package/dist/esm/stores/page-tracker/page-tracker.js +125 -0
  34. package/dist/esm/stores/page-tracker/page-tracker.js.map +1 -0
  35. 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phx-react",
3
- "version": "1.3.1086",
3
+ "version": "1.3.1089",
4
4
  "description": "PHX REACT",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",