x25 19.1.5 → 19.1.6
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/Modal/Root.js +58 -2
- package/Modal/Root.js.map +1 -1
- package/Modal/types.d.ts +1 -0
- package/package.json +1 -1
package/Modal/Root.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { useSelector } from "react-redux";
|
|
2
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
3
3
|
import { propsAreEqualCreator } from "../utility/others.js";
|
|
4
|
+
import { hideModal } from "./actions.js";
|
|
4
5
|
import getComponent from "./getComponent.js";
|
|
5
6
|
import { selectors } from "./reducer.js";
|
|
7
|
+
const getTopModalProp = (list, key) => {
|
|
8
|
+
if (list.size === 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const top = list.last(), topProps = top === null || top === void 0 ? void 0 : top.get("props");
|
|
12
|
+
if (topProps && typeof topProps.get === "function") {
|
|
13
|
+
return topProps.get(key);
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
6
17
|
const propsAreEqual = propsAreEqualCreator([], ["list"]), RawModalRoot = ({ list }) => {
|
|
7
18
|
if (list.size === 0) {
|
|
8
19
|
return null;
|
|
@@ -18,7 +29,52 @@ const propsAreEqual = propsAreEqualCreator([], ["list"]), RawModalRoot = ({ list
|
|
|
18
29
|
return (React.createElement(Component, Object.assign({ doNotCloseByEscape: isTheLastOne, key: index, pleaseClose: current.get("pleaseClose") }, theProps)));
|
|
19
30
|
})));
|
|
20
31
|
}, InnerModalRoot = React.memo(RawModalRoot, propsAreEqual), ModalRoot = () => {
|
|
21
|
-
const list = useSelector(selectors.getModals);
|
|
32
|
+
const list = useSelector(selectors.getModals), dispatch = useDispatch(), prevSizeRef = React.useRef(0), skipCountRef = React.useRef(0), decreaseFromPopstateRef = React.useRef(0), listRef = React.useRef(list);
|
|
33
|
+
listRef.current = list;
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
const currentSize = list.size, prev = prevSizeRef.current;
|
|
36
|
+
if (currentSize > prev) {
|
|
37
|
+
const toPush = currentSize - prev;
|
|
38
|
+
for (let idx = 0; idx < toPush; idx += 1) {
|
|
39
|
+
window.history.pushState({ x25Modal: true }, "");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (currentSize < prev) {
|
|
43
|
+
let toPop = prev - currentSize;
|
|
44
|
+
if (decreaseFromPopstateRef.current > 0) {
|
|
45
|
+
const consume = Math.min(decreaseFromPopstateRef.current, toPop);
|
|
46
|
+
decreaseFromPopstateRef.current -= consume;
|
|
47
|
+
toPop -= consume;
|
|
48
|
+
}
|
|
49
|
+
for (let idx = 0; idx < toPop; idx += 1) {
|
|
50
|
+
skipCountRef.current += 1;
|
|
51
|
+
window.history.back();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
prevSizeRef.current = currentSize;
|
|
55
|
+
}, [list.size]);
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
const handlePopState = () => {
|
|
58
|
+
if (skipCountRef.current > 0) {
|
|
59
|
+
skipCountRef.current -= 1;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const currentList = listRef.current;
|
|
63
|
+
if (currentList.size === 0) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (getTopModalProp(currentList, "doNotCloseByBack")) {
|
|
67
|
+
window.history.pushState({ x25Modal: true }, "");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
decreaseFromPopstateRef.current += 1;
|
|
71
|
+
dispatch(hideModal());
|
|
72
|
+
};
|
|
73
|
+
window.addEventListener("popstate", handlePopState);
|
|
74
|
+
return () => {
|
|
75
|
+
window.removeEventListener("popstate", handlePopState);
|
|
76
|
+
};
|
|
77
|
+
}, [dispatch]);
|
|
22
78
|
return React.createElement(InnerModalRoot, { list: list });
|
|
23
79
|
};
|
|
24
80
|
export default ModalRoot;
|
package/Modal/Root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/Modal/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/Modal/Root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,eAAe,GAAG,CAAC,IAAa,EAAE,GAAY,EAAQ,EAAE;IAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MACE,GAAG,GAAS,IAAI,CAAC,IAAI,EAAE,EACvB,QAAQ,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/B,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAMF,MACE,aAAa,GAAG,oBAAoB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAClD,YAAY,GAAG,CAAC,EAAE,IAAI,EAAsB,EAAE,EAAE;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAQ,CACN,0CAEI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAa,EAAE,KAAc,EAAE,EAAE;QACzC,MACE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAC/B,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,EACnC,YAAY,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAEzC,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,CACL,6BAAK,GAAG,EAAC,UAAU,IAChB,oCAAoC,SAAS,2BAA2B,CACrE,CACP,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CACf,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAC7C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;SACjC,CAAC,CAAC,CAAC,CAAC,CACH,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAC5B,CACF,CAAC;QAEF,OAAO,CACL,oBAAC,SAAS,kBACR,kBAAkB,EAAE,YAAY,EAChC,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IACnC,QAAQ,EACZ,CACH,CAAC;IACJ,CAAC,CAAC,CAEH,CACJ,CAAC;AACJ,CAAC,EACD,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EACxD,SAAS,GAAG,GAAG,EAAE;IACf,MACE,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,EACvC,QAAQ,GAAG,WAAW,EAAE,EACxB,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAC7B,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAC9B,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACzC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAEvB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MACE,WAAW,GAAG,IAAI,CAAC,IAAI,EACvB,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC;QAE7B,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;YAElC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;YAC9B,IAAI,KAAK,GAAG,IAAI,GAAG,WAAW,CAAC;YAE/B,IAAI,uBAAuB,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEjE,uBAAuB,CAAC,OAAO,IAAI,OAAO,CAAC;gBAC3C,KAAK,IAAI,OAAO,CAAC;YACnB,CAAC;YAED,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACxC,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAED,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7B,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;gBAE1B,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YAEpC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,eAAe,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEjD,OAAO;YACT,CAAC;YAED,uBAAuB,CAAC,OAAO,IAAI,CAAC,CAAC;YACrC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAEpD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,oBAAC,cAAc,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AACxC,CAAC,CAAC;AAEJ,eAAe,SAAS,CAAC"}
|
package/Modal/types.d.ts
CHANGED
package/package.json
CHANGED