@rc-component/portal 1.1.1 → 2.0.0

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/README.md CHANGED
@@ -32,7 +32,7 @@ open http://localhost:8000
32
32
  ## Usage
33
33
 
34
34
  ```js | pure
35
- import Portal from 'rc-portal';
35
+ import Portal from '@rc-component/portal';
36
36
 
37
37
  const Demo = () => {
38
38
  return <Portal open>Hello World</Portal>;
package/es/Context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
- export declare type QueueCreate = (appendFunc: VoidFunction) => void;
2
+ export type QueueCreate = (appendFunc: VoidFunction) => void;
3
3
  declare const OrderContext: React.Context<QueueCreate>;
4
4
  export default OrderContext;
package/es/Context.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import * as React from 'react';
2
- var OrderContext = /*#__PURE__*/React.createContext(null);
2
+ const OrderContext = /*#__PURE__*/React.createContext(null);
3
3
  export default OrderContext;
package/es/Portal.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- export declare type ContainerType = Element | DocumentFragment;
3
- export declare type GetContainer = string | ContainerType | (() => ContainerType) | false;
2
+ export type ContainerType = Element | DocumentFragment;
3
+ export type GetContainer = string | ContainerType | (() => ContainerType) | false;
4
4
  export interface PortalProps {
5
5
  /** Customize container element. Default will create a div in document.body when `open` */
6
6
  getContainer?: GetContainer;
package/es/Portal.js CHANGED
@@ -1,14 +1,13 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
1
+ import canUseDom from "@rc-component/util/es/Dom/canUseDom";
2
+ import { getNodeRef, supportRef, useComposeRef } from "@rc-component/util/es/ref";
3
+ import warning from "@rc-component/util/es/warning";
2
4
  import * as React from 'react';
3
5
  import { createPortal } from 'react-dom';
4
- import canUseDom from "rc-util/es/Dom/canUseDom";
5
- import warning from "rc-util/es/warning";
6
- import { supportRef, useComposeRef } from "rc-util/es/ref";
7
6
  import OrderContext from "./Context";
7
+ import { inlineMock } from "./mock";
8
8
  import useDom from "./useDom";
9
9
  import useScrollLocker from "./useScrollLocker";
10
- import { inlineMock } from "./mock";
11
- var getPortalContainer = function getPortalContainer(getContainer) {
10
+ const getPortalContainer = getContainer => {
12
11
  if (getContainer === false) {
13
12
  return false;
14
13
  }
@@ -23,61 +22,50 @@ var getPortalContainer = function getPortalContainer(getContainer) {
23
22
  }
24
23
  return getContainer;
25
24
  };
26
- var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
27
- var open = props.open,
28
- autoLock = props.autoLock,
29
- getContainer = props.getContainer,
30
- debug = props.debug,
31
- _props$autoDestroy = props.autoDestroy,
32
- autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,
33
- children = props.children;
34
- var _React$useState = React.useState(open),
35
- _React$useState2 = _slicedToArray(_React$useState, 2),
36
- shouldRender = _React$useState2[0],
37
- setShouldRender = _React$useState2[1];
38
- var mergedRender = shouldRender || open;
25
+ const Portal = /*#__PURE__*/React.forwardRef((props, ref) => {
26
+ const {
27
+ open,
28
+ autoLock,
29
+ getContainer,
30
+ debug,
31
+ autoDestroy = true,
32
+ children
33
+ } = props;
34
+ const [shouldRender, setShouldRender] = React.useState(open);
35
+ const mergedRender = shouldRender || open;
39
36
 
40
37
  // ========================= Warning =========================
41
38
  if (process.env.NODE_ENV !== 'production') {
42
- warning(canUseDom() || !open, "Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.");
39
+ warning(canUseDom() || !open, `Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.`);
43
40
  }
44
41
 
45
42
  // ====================== Should Render ======================
46
- React.useEffect(function () {
43
+ React.useEffect(() => {
47
44
  if (autoDestroy || open) {
48
45
  setShouldRender(open);
49
46
  }
50
47
  }, [open, autoDestroy]);
51
48
 
52
49
  // ======================== Container ========================
53
- var _React$useState3 = React.useState(function () {
54
- return getPortalContainer(getContainer);
55
- }),
56
- _React$useState4 = _slicedToArray(_React$useState3, 2),
57
- innerContainer = _React$useState4[0],
58
- setInnerContainer = _React$useState4[1];
59
- React.useEffect(function () {
60
- var customizeContainer = getPortalContainer(getContainer);
50
+ const [innerContainer, setInnerContainer] = React.useState(() => getPortalContainer(getContainer));
51
+ React.useEffect(() => {
52
+ const customizeContainer = getPortalContainer(getContainer);
61
53
 
62
54
  // Tell component that we check this in effect which is safe to be `null`
63
- setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
55
+ setInnerContainer(customizeContainer ?? null);
64
56
  });
65
- var _useDom = useDom(mergedRender && !innerContainer, debug),
66
- _useDom2 = _slicedToArray(_useDom, 2),
67
- defaultContainer = _useDom2[0],
68
- queueCreate = _useDom2[1];
69
- var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
57
+ const [defaultContainer, queueCreate] = useDom(mergedRender && !innerContainer, debug);
58
+ const mergedContainer = innerContainer ?? defaultContainer;
70
59
 
71
60
  // ========================= Locker ==========================
72
61
  useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));
73
62
 
74
63
  // =========================== Ref ===========================
75
- var childRef = null;
64
+ let childRef = null;
76
65
  if (children && supportRef(children) && ref) {
77
- var _ref = children;
78
- childRef = _ref.ref;
66
+ childRef = getNodeRef(children);
79
67
  }
80
- var mergedRef = useComposeRef(childRef, ref);
68
+ const mergedRef = useComposeRef(childRef, ref);
81
69
 
82
70
  // ========================= Render ==========================
83
71
  // Do not render when nothing need render
@@ -87,8 +75,8 @@ var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
87
75
  }
88
76
 
89
77
  // Render inline
90
- var renderInline = mergedContainer === false || inlineMock();
91
- var reffedChildren = children;
78
+ const renderInline = mergedContainer === false || inlineMock();
79
+ let reffedChildren = children;
92
80
  if (ref) {
93
81
  reffedChildren = /*#__PURE__*/React.cloneElement(children, {
94
82
  ref: mergedRef
package/es/mock.js CHANGED
@@ -1,4 +1,4 @@
1
- export var inline = false;
1
+ export let inline = false;
2
2
  export function inlineMock(nextInline) {
3
3
  if (typeof nextInline === 'boolean') {
4
4
  inline = nextInline;
package/es/useDom.js CHANGED
@@ -1,39 +1,32 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
1
  import * as React from 'react';
4
- import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
5
- import canUseDom from "rc-util/es/Dom/canUseDom";
2
+ import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
3
+ import canUseDom from "@rc-component/util/es/Dom/canUseDom";
6
4
  import OrderContext from "./Context";
7
- var EMPTY_LIST = [];
5
+ const EMPTY_LIST = [];
8
6
 
9
7
  /**
10
8
  * Will add `div` to document. Nest call will keep order
11
9
  * @param render Render DOM in document
12
10
  */
13
11
  export default function useDom(render, debug) {
14
- var _React$useState = React.useState(function () {
15
- if (!canUseDom()) {
16
- return null;
17
- }
18
- var defaultEle = document.createElement('div');
19
- if (process.env.NODE_ENV !== 'production' && debug) {
20
- defaultEle.setAttribute('data-debug', debug);
21
- }
22
- return defaultEle;
23
- }),
24
- _React$useState2 = _slicedToArray(_React$useState, 1),
25
- ele = _React$useState2[0];
12
+ const [ele] = React.useState(() => {
13
+ if (!canUseDom()) {
14
+ return null;
15
+ }
16
+ const defaultEle = document.createElement('div');
17
+ if (process.env.NODE_ENV !== 'production' && debug) {
18
+ defaultEle.setAttribute('data-debug', debug);
19
+ }
20
+ return defaultEle;
21
+ });
26
22
 
27
23
  // ========================== Order ==========================
28
- var appendedRef = React.useRef(false);
29
- var queueCreate = React.useContext(OrderContext);
30
- var _React$useState3 = React.useState(EMPTY_LIST),
31
- _React$useState4 = _slicedToArray(_React$useState3, 2),
32
- queue = _React$useState4[0],
33
- setQueue = _React$useState4[1];
34
- var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {
35
- setQueue(function (origin) {
36
- var newQueue = [appendFn].concat(_toConsumableArray(origin));
24
+ const appendedRef = React.useRef(false);
25
+ const queueCreate = React.useContext(OrderContext);
26
+ const [queue, setQueue] = React.useState(EMPTY_LIST);
27
+ const mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : appendFn => {
28
+ setQueue(origin => {
29
+ const newQueue = [appendFn, ...origin];
37
30
  return newQueue;
38
31
  });
39
32
  });
@@ -46,11 +39,10 @@ export default function useDom(render, debug) {
46
39
  appendedRef.current = true;
47
40
  }
48
41
  function cleanup() {
49
- var _ele$parentElement;
50
- (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
42
+ ele.parentElement?.removeChild(ele);
51
43
  appendedRef.current = false;
52
44
  }
53
- useLayoutEffect(function () {
45
+ useLayoutEffect(() => {
54
46
  if (render) {
55
47
  if (queueCreate) {
56
48
  queueCreate(append);
@@ -62,11 +54,9 @@ export default function useDom(render, debug) {
62
54
  }
63
55
  return cleanup;
64
56
  }, [render]);
65
- useLayoutEffect(function () {
57
+ useLayoutEffect(() => {
66
58
  if (queue.length) {
67
- queue.forEach(function (appendFn) {
68
- return appendFn();
69
- });
59
+ queue.forEach(appendFn => appendFn());
70
60
  setQueue(EMPTY_LIST);
71
61
  }
72
62
  }, [queue]);
@@ -1,28 +1,29 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
1
  import * as React from 'react';
3
- import { updateCSS, removeCSS } from "rc-util/es/Dom/dynamicCSS";
4
- import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
5
- import getScrollBarSize from "rc-util/es/getScrollBarSize";
2
+ import { updateCSS, removeCSS } from "@rc-component/util/es/Dom/dynamicCSS";
3
+ import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
4
+ import { getTargetScrollBarSize } from "@rc-component/util/es/getScrollBarSize";
6
5
  import { isBodyOverflowing } from "./util";
7
- var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
8
- var uuid = 0;
6
+ const UNIQUE_ID = `rc-util-locker-${Date.now()}`;
7
+ let uuid = 0;
9
8
  export default function useScrollLocker(lock) {
10
- var mergedLock = !!lock;
11
- var _React$useState = React.useState(function () {
12
- uuid += 1;
13
- return "".concat(UNIQUE_ID, "_").concat(uuid);
14
- }),
15
- _React$useState2 = _slicedToArray(_React$useState, 1),
16
- id = _React$useState2[0];
17
- useLayoutEffect(function () {
9
+ const mergedLock = !!lock;
10
+ const [id] = React.useState(() => {
11
+ uuid += 1;
12
+ return `${UNIQUE_ID}_${uuid}`;
13
+ });
14
+ useLayoutEffect(() => {
18
15
  if (mergedLock) {
19
- var scrollbarSize = getScrollBarSize();
20
- var isOverflow = isBodyOverflowing();
21
- updateCSS("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
16
+ const scrollbarSize = getTargetScrollBarSize(document.body).width;
17
+ const isOverflow = isBodyOverflowing();
18
+ updateCSS(`
19
+ html body {
20
+ overflow-y: hidden;
21
+ ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ''}
22
+ }`, id);
22
23
  } else {
23
24
  removeCSS(id);
24
25
  }
25
- return function () {
26
+ return () => {
26
27
  removeCSS(id);
27
28
  };
28
29
  }, [mergedLock, id]);
package/lib/Context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
- export declare type QueueCreate = (appendFunc: VoidFunction) => void;
2
+ export type QueueCreate = (appendFunc: VoidFunction) => void;
3
3
  declare const OrderContext: React.Context<QueueCreate>;
4
4
  export default OrderContext;
package/lib/Context.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.default = void 0;
8
7
  var React = _interopRequireWildcard(require("react"));
9
- var OrderContext = /*#__PURE__*/React.createContext(null);
10
- var _default = OrderContext;
11
- exports.default = _default;
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ const OrderContext = /*#__PURE__*/React.createContext(null);
11
+ var _default = exports.default = OrderContext;
package/lib/Portal.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- export declare type ContainerType = Element | DocumentFragment;
3
- export declare type GetContainer = string | ContainerType | (() => ContainerType) | false;
2
+ export type ContainerType = Element | DocumentFragment;
3
+ export type GetContainer = string | ContainerType | (() => ContainerType) | false;
4
4
  export interface PortalProps {
5
5
  /** Customize container element. Default will create a div in document.body when `open` */
6
6
  getContainer?: GetContainer;
package/lib/Portal.js CHANGED
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = void 0;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
+ var _canUseDom = _interopRequireDefault(require("@rc-component/util/lib/Dom/canUseDom"));
8
+ var _ref = require("@rc-component/util/lib/ref");
9
+ var _warning = _interopRequireDefault(require("@rc-component/util/lib/warning"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _reactDom = require("react-dom");
12
- var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
13
- var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
14
- var _ref2 = require("rc-util/lib/ref");
15
12
  var _Context = _interopRequireDefault(require("./Context"));
16
- var _useDom3 = _interopRequireDefault(require("./useDom"));
17
- var _useScrollLocker = _interopRequireDefault(require("./useScrollLocker"));
18
13
  var _mock = require("./mock");
19
- var getPortalContainer = function getPortalContainer(getContainer) {
14
+ var _useDom = _interopRequireDefault(require("./useDom"));
15
+ var _useScrollLocker = _interopRequireDefault(require("./useScrollLocker"));
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ const getPortalContainer = getContainer => {
20
20
  if (getContainer === false) {
21
21
  return false;
22
22
  }
@@ -31,61 +31,50 @@ var getPortalContainer = function getPortalContainer(getContainer) {
31
31
  }
32
32
  return getContainer;
33
33
  };
34
- var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
35
- var open = props.open,
36
- autoLock = props.autoLock,
37
- getContainer = props.getContainer,
38
- debug = props.debug,
39
- _props$autoDestroy = props.autoDestroy,
40
- autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,
41
- children = props.children;
42
- var _React$useState = React.useState(open),
43
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
44
- shouldRender = _React$useState2[0],
45
- setShouldRender = _React$useState2[1];
46
- var mergedRender = shouldRender || open;
34
+ const Portal = /*#__PURE__*/React.forwardRef((props, ref) => {
35
+ const {
36
+ open,
37
+ autoLock,
38
+ getContainer,
39
+ debug,
40
+ autoDestroy = true,
41
+ children
42
+ } = props;
43
+ const [shouldRender, setShouldRender] = React.useState(open);
44
+ const mergedRender = shouldRender || open;
47
45
 
48
46
  // ========================= Warning =========================
49
47
  if (process.env.NODE_ENV !== 'production') {
50
- (0, _warning.default)((0, _canUseDom.default)() || !open, "Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.");
48
+ (0, _warning.default)((0, _canUseDom.default)() || !open, `Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.`);
51
49
  }
52
50
 
53
51
  // ====================== Should Render ======================
54
- React.useEffect(function () {
52
+ React.useEffect(() => {
55
53
  if (autoDestroy || open) {
56
54
  setShouldRender(open);
57
55
  }
58
56
  }, [open, autoDestroy]);
59
57
 
60
58
  // ======================== Container ========================
61
- var _React$useState3 = React.useState(function () {
62
- return getPortalContainer(getContainer);
63
- }),
64
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
65
- innerContainer = _React$useState4[0],
66
- setInnerContainer = _React$useState4[1];
67
- React.useEffect(function () {
68
- var customizeContainer = getPortalContainer(getContainer);
59
+ const [innerContainer, setInnerContainer] = React.useState(() => getPortalContainer(getContainer));
60
+ React.useEffect(() => {
61
+ const customizeContainer = getPortalContainer(getContainer);
69
62
 
70
63
  // Tell component that we check this in effect which is safe to be `null`
71
- setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
64
+ setInnerContainer(customizeContainer ?? null);
72
65
  });
73
- var _useDom = (0, _useDom3.default)(mergedRender && !innerContainer, debug),
74
- _useDom2 = (0, _slicedToArray2.default)(_useDom, 2),
75
- defaultContainer = _useDom2[0],
76
- queueCreate = _useDom2[1];
77
- var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
66
+ const [defaultContainer, queueCreate] = (0, _useDom.default)(mergedRender && !innerContainer, debug);
67
+ const mergedContainer = innerContainer ?? defaultContainer;
78
68
 
79
69
  // ========================= Locker ==========================
80
70
  (0, _useScrollLocker.default)(autoLock && open && (0, _canUseDom.default)() && (mergedContainer === defaultContainer || mergedContainer === document.body));
81
71
 
82
72
  // =========================== Ref ===========================
83
- var childRef = null;
84
- if (children && (0, _ref2.supportRef)(children) && ref) {
85
- var _ref = children;
86
- childRef = _ref.ref;
73
+ let childRef = null;
74
+ if (children && (0, _ref.supportRef)(children) && ref) {
75
+ childRef = (0, _ref.getNodeRef)(children);
87
76
  }
88
- var mergedRef = (0, _ref2.useComposeRef)(childRef, ref);
77
+ const mergedRef = (0, _ref.useComposeRef)(childRef, ref);
89
78
 
90
79
  // ========================= Render ==========================
91
80
  // Do not render when nothing need render
@@ -95,8 +84,8 @@ var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
95
84
  }
96
85
 
97
86
  // Render inline
98
- var renderInline = mergedContainer === false || (0, _mock.inlineMock)();
99
- var reffedChildren = children;
87
+ const renderInline = mergedContainer === false || (0, _mock.inlineMock)();
88
+ let reffedChildren = children;
100
89
  if (ref) {
101
90
  reffedChildren = /*#__PURE__*/React.cloneElement(children, {
102
91
  ref: mergedRef
@@ -109,5 +98,4 @@ var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
109
98
  if (process.env.NODE_ENV !== 'production') {
110
99
  Portal.displayName = 'Portal';
111
100
  }
112
- var _default = Portal;
113
- exports.default = _default;
101
+ var _default = exports.default = Portal;
package/lib/index.js CHANGED
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.default = void 0;
8
7
  Object.defineProperty(exports, "inlineMock", {
9
8
  enumerable: true,
10
- get: function get() {
9
+ get: function () {
11
10
  return _mock.inlineMock;
12
11
  }
13
12
  });
14
13
  var _Portal = _interopRequireDefault(require("./Portal"));
15
14
  var _mock = require("./mock");
16
- var _default = _Portal.default;
17
- exports.default = _default;
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ var _default = exports.default = _Portal.default;
package/lib/mock.js CHANGED
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.inline = void 0;
7
7
  exports.inlineMock = inlineMock;
8
- var inline = false;
9
- exports.inline = inline;
8
+ let inline = exports.inline = false;
10
9
  function inlineMock(nextInline) {
11
10
  if (typeof nextInline === 'boolean') {
12
11
  exports.inline = inline = nextInline;
package/lib/useDom.js CHANGED
@@ -1,47 +1,41 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = useDom;
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
7
  var React = _interopRequireWildcard(require("react"));
12
- var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
13
- var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
8
+ var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
9
+ var _canUseDom = _interopRequireDefault(require("@rc-component/util/lib/Dom/canUseDom"));
14
10
  var _Context = _interopRequireDefault(require("./Context"));
15
- var EMPTY_LIST = [];
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const EMPTY_LIST = [];
16
15
 
17
16
  /**
18
17
  * Will add `div` to document. Nest call will keep order
19
18
  * @param render Render DOM in document
20
19
  */
21
20
  function useDom(render, debug) {
22
- var _React$useState = React.useState(function () {
23
- if (!(0, _canUseDom.default)()) {
24
- return null;
25
- }
26
- var defaultEle = document.createElement('div');
27
- if (process.env.NODE_ENV !== 'production' && debug) {
28
- defaultEle.setAttribute('data-debug', debug);
29
- }
30
- return defaultEle;
31
- }),
32
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
33
- ele = _React$useState2[0];
21
+ const [ele] = React.useState(() => {
22
+ if (!(0, _canUseDom.default)()) {
23
+ return null;
24
+ }
25
+ const defaultEle = document.createElement('div');
26
+ if (process.env.NODE_ENV !== 'production' && debug) {
27
+ defaultEle.setAttribute('data-debug', debug);
28
+ }
29
+ return defaultEle;
30
+ });
34
31
 
35
32
  // ========================== Order ==========================
36
- var appendedRef = React.useRef(false);
37
- var queueCreate = React.useContext(_Context.default);
38
- var _React$useState3 = React.useState(EMPTY_LIST),
39
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
40
- queue = _React$useState4[0],
41
- setQueue = _React$useState4[1];
42
- var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {
43
- setQueue(function (origin) {
44
- var newQueue = [appendFn].concat((0, _toConsumableArray2.default)(origin));
33
+ const appendedRef = React.useRef(false);
34
+ const queueCreate = React.useContext(_Context.default);
35
+ const [queue, setQueue] = React.useState(EMPTY_LIST);
36
+ const mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : appendFn => {
37
+ setQueue(origin => {
38
+ const newQueue = [appendFn, ...origin];
45
39
  return newQueue;
46
40
  });
47
41
  });
@@ -54,11 +48,10 @@ function useDom(render, debug) {
54
48
  appendedRef.current = true;
55
49
  }
56
50
  function cleanup() {
57
- var _ele$parentElement;
58
- (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
51
+ ele.parentElement?.removeChild(ele);
59
52
  appendedRef.current = false;
60
53
  }
61
- (0, _useLayoutEffect.default)(function () {
54
+ (0, _useLayoutEffect.default)(() => {
62
55
  if (render) {
63
56
  if (queueCreate) {
64
57
  queueCreate(append);
@@ -70,11 +63,9 @@ function useDom(render, debug) {
70
63
  }
71
64
  return cleanup;
72
65
  }, [render]);
73
- (0, _useLayoutEffect.default)(function () {
66
+ (0, _useLayoutEffect.default)(() => {
74
67
  if (queue.length) {
75
- queue.forEach(function (appendFn) {
76
- return appendFn();
77
- });
68
+ queue.forEach(appendFn => appendFn());
78
69
  setQueue(EMPTY_LIST);
79
70
  }
80
71
  }, [queue]);
@@ -1,36 +1,38 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = useScrollLocker;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
7
  var React = _interopRequireWildcard(require("react"));
11
- var _dynamicCSS = require("rc-util/lib/Dom/dynamicCSS");
12
- var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
13
- var _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
8
+ var _dynamicCSS = require("@rc-component/util/lib/Dom/dynamicCSS");
9
+ var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
10
+ var _getScrollBarSize = require("@rc-component/util/lib/getScrollBarSize");
14
11
  var _util = require("./util");
15
- var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
16
- var uuid = 0;
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ const UNIQUE_ID = `rc-util-locker-${Date.now()}`;
16
+ let uuid = 0;
17
17
  function useScrollLocker(lock) {
18
- var mergedLock = !!lock;
19
- var _React$useState = React.useState(function () {
20
- uuid += 1;
21
- return "".concat(UNIQUE_ID, "_").concat(uuid);
22
- }),
23
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
24
- id = _React$useState2[0];
25
- (0, _useLayoutEffect.default)(function () {
18
+ const mergedLock = !!lock;
19
+ const [id] = React.useState(() => {
20
+ uuid += 1;
21
+ return `${UNIQUE_ID}_${uuid}`;
22
+ });
23
+ (0, _useLayoutEffect.default)(() => {
26
24
  if (mergedLock) {
27
- var scrollbarSize = (0, _getScrollBarSize.default)();
28
- var isOverflow = (0, _util.isBodyOverflowing)();
29
- (0, _dynamicCSS.updateCSS)("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
25
+ const scrollbarSize = (0, _getScrollBarSize.getTargetScrollBarSize)(document.body).width;
26
+ const isOverflow = (0, _util.isBodyOverflowing)();
27
+ (0, _dynamicCSS.updateCSS)(`
28
+ html body {
29
+ overflow-y: hidden;
30
+ ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ''}
31
+ }`, id);
30
32
  } else {
31
33
  (0, _dynamicCSS.removeCSS)(id);
32
34
  }
33
- return function () {
35
+ return () => {
34
36
  (0, _dynamicCSS.removeCSS)(id);
35
37
  };
36
38
  }, [mergedLock, id]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/portal",
3
- "version": "1.1.1",
3
+ "version": "2.0.0",
4
4
  "description": "React Portal Component",
5
5
  "keywords": [
6
6
  "react",
@@ -33,44 +33,46 @@
33
33
  "lint": "eslint src/ --ext .tsx,.ts",
34
34
  "lint:tsc": "tsc -p tsconfig.json --noEmit",
35
35
  "now-build": "npm run docs:build",
36
- "prepublishOnly": "npm run compile && np --no-cleanup --yolo --no-publish",
36
+ "prepare": "dumi setup",
37
+ "prepublishOnly": "npm run compile && rc-np",
37
38
  "prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\"",
38
39
  "start": "dumi dev",
39
- "test": "npm run test:client && npm run test:server",
40
- "test:client": "umi-test --testPathIgnorePatterns=ssr.test.tsx --testPathIgnorePatterns=ssr.test.tsx",
41
- "test:coverage": "npm run test:client --coverage",
42
- "test:server": "umi-test --env=node -- tests/ssr.test.tsx",
40
+ "test": "npm run test:server && npm run test:coverage",
41
+ "test:client": "rc-test --testPathIgnorePatterns=ssr.test.tsx --testPathIgnorePatterns=ssr.test.tsx",
42
+ "test:coverage": "npm run test:client -- --coverage",
43
+ "test:server": "rc-test --env=node -- tests/ssr.test.tsx",
43
44
  "watch": "father dev"
44
45
  },
45
46
  "dependencies": {
46
- "@babel/runtime": "^7.18.0",
47
- "classnames": "^2.3.2",
48
- "rc-util": "^5.24.4"
47
+ "@rc-component/util": "^1.2.1",
48
+ "classnames": "^2.3.2"
49
49
  },
50
50
  "devDependencies": {
51
- "@rc-component/father-plugin": "^1.0.0",
51
+ "@rc-component/father-plugin": "^2.0.2",
52
+ "@rc-component/np": "^1.0.3",
52
53
  "@testing-library/jest-dom": "^5.16.4",
53
54
  "@testing-library/react": "^13.0.0",
54
55
  "@types/jest": "^26.0.20",
56
+ "@types/node": "^20.9.0",
55
57
  "@types/react": "^18.0.0",
56
58
  "@types/react-dom": "^18.0.0",
57
- "@umijs/fabric": "^2.5.2",
58
- "dumi": "^1.1.0",
59
+ "@umijs/fabric": "^3.0.0",
60
+ "dumi": "^2.0.0",
59
61
  "eslint": "^7.18.0",
60
- "father": "^4.0.0-rc.8",
61
- "gh-pages": "^3.1.0",
62
- "np": "^5.0.3",
62
+ "father": "^4.0.0",
63
+ "gh-pages": "^6.1.1",
64
+ "glob": "^10.0.0",
63
65
  "prettier": "^2.1.2",
64
- "react": "^18.0.0",
65
- "react-dom": "^18.0.0",
66
- "typescript": "^4.6.3",
67
- "umi-test": "^1.9.7"
66
+ "rc-test": "^7.1.2",
67
+ "react": "^19.0.0",
68
+ "react-dom": "^19.0.0",
69
+ "typescript": "^5.0.0"
68
70
  },
69
71
  "peerDependencies": {
70
- "react": ">=16.9.0",
71
- "react-dom": ">=16.9.0"
72
+ "react": ">=18.0.0",
73
+ "react-dom": ">=18.0.0"
72
74
  },
73
75
  "engines": {
74
- "node": ">=8.x"
76
+ "node": ">=12.x"
75
77
  }
76
78
  }