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 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;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC,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,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO,oBAAC,cAAc,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AACxC,CAAC,CAAC;AAEJ,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/Modal/Root.tsx"],"names":[],"mappings":"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"}
package/Modal/types.d.ts CHANGED
@@ -7,6 +7,7 @@ type CommonProps = {
7
7
  isLastOne?: boolean;
8
8
  onClose?: () => any;
9
9
  doNotCloseByEscape?: boolean;
10
+ doNotCloseByBack?: boolean;
10
11
  preventDispatchHideModal?: boolean;
11
12
  Footer?: any;
12
13
  Header?: any;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "19.1.5",
2
+ "version": "19.1.6",
3
3
  "name": "x25",
4
4
  "type": "module",
5
5
  "description": "x25",