add all frontend files

This commit is contained in:
2026-01-17 15:16:36 -05:00
parent ff16ae7858
commit e40287e4aa
25704 changed files with 1935289 additions and 0 deletions

21
node_modules/@rc-component/portal/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019-present react-component
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

54
node_modules/@rc-component/portal/README.md generated vendored Normal file
View File

@@ -0,0 +1,54 @@
# rc-portal
React 18 supported Portal Component.
[![NPM version][npm-image]][npm-url] [![dumi](https://img.shields.io/badge/docs%20by-dumi-blue?style=flat-square)](https://github.com/umijs/dumi) [![build status][github-actions-image]][github-actions-url] [![Codecov][codecov-image]][codecov-url] [![npm download][download-image]][download-url]
[npm-image]: http://img.shields.io/npm/v/rc-portal.svg?style=flat-square
[npm-url]: http://npmjs.org/package/rc-portal
[github-actions-image]: https://github.com/react-component/portal/workflows/CI/badge.svg
[github-actions-url]: https://github.com/react-component/portal/actions
[codecov-image]: https://img.shields.io/codecov/c/github/react-component/portal/master.svg?style=flat-square
[codecov-url]: https://app.codecov.io/gh/react-component/portal
[download-image]: https://img.shields.io/npm/dm/rc-portal.svg?style=flat-square
[download-url]: https://npmjs.org/package/rc-portal
## Development
```bash
npm install
npm start
open http://localhost:8000
```
## Feature
- React life cycle support portal component
## Install
[![rc-portal](https://nodei.co/npm/rc-portal.png)](https://npmjs.org/package/rc-portal)
## Usage
```js | pure
import Portal from 'rc-portal';
const Demo = () => {
return <Portal open>Hello World</Portal>;
};
export default Demo;
```
## 🔥 API
We use typescript to create the Type definition. You can view directly in IDE. But you can still check the type definition [here](https://github.com/react-component/portal/blob/master/src/interface.ts).
### Portal
| Prop | Description | Type | Default |
| ------------ | ---------------------------------- | ------------------------ | ------------- |
| getContainer | Customize portal container element | Element \| () => Element | document.body |
| open | Show the portal | boolean | false |
| autoLock | Lock screen scroll when open | boolean | false |

4
node_modules/@rc-component/portal/es/Context.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import * as React from 'react';
export declare type QueueCreate = (appendFunc: VoidFunction) => void;
declare const OrderContext: React.Context<QueueCreate>;
export default OrderContext;

3
node_modules/@rc-component/portal/es/Context.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import * as React from 'react';
var OrderContext = /*#__PURE__*/React.createContext(null);
export default OrderContext;

18
node_modules/@rc-component/portal/es/Portal.d.ts generated vendored Normal file
View File

@@ -0,0 +1,18 @@
import * as React from 'react';
export declare type ContainerType = Element | DocumentFragment;
export declare type GetContainer = string | ContainerType | (() => ContainerType) | false;
export interface PortalProps {
/** Customize container element. Default will create a div in document.body when `open` */
getContainer?: GetContainer;
children?: React.ReactNode;
/** Show the portal children */
open?: boolean;
/** Remove `children` when `open` is `false`. Set `false` will not handle remove process */
autoDestroy?: boolean;
/** Lock screen scroll when open */
autoLock?: boolean;
/** @private debug name. Do not use in prod */
debug?: string;
}
declare const Portal: React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<any>>;
export default Portal;

104
node_modules/@rc-component/portal/es/Portal.js generated vendored Normal file
View File

@@ -0,0 +1,104 @@
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import * as React from 'react';
import { createPortal } from 'react-dom';
import canUseDom from "rc-util/es/Dom/canUseDom";
import warning from "rc-util/es/warning";
import { supportRef, useComposeRef } from "rc-util/es/ref";
import OrderContext from "./Context";
import useDom from "./useDom";
import useScrollLocker from "./useScrollLocker";
import { inlineMock } from "./mock";
var getPortalContainer = function getPortalContainer(getContainer) {
if (getContainer === false) {
return false;
}
if (!canUseDom() || !getContainer) {
return null;
}
if (typeof getContainer === 'string') {
return document.querySelector(getContainer);
}
if (typeof getContainer === 'function') {
return getContainer();
}
return getContainer;
};
var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
var open = props.open,
autoLock = props.autoLock,
getContainer = props.getContainer,
debug = props.debug,
_props$autoDestroy = props.autoDestroy,
autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,
children = props.children;
var _React$useState = React.useState(open),
_React$useState2 = _slicedToArray(_React$useState, 2),
shouldRender = _React$useState2[0],
setShouldRender = _React$useState2[1];
var mergedRender = shouldRender || open;
// ========================= Warning =========================
if (process.env.NODE_ENV !== 'production') {
warning(canUseDom() || !open, "Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.");
}
// ====================== Should Render ======================
React.useEffect(function () {
if (autoDestroy || open) {
setShouldRender(open);
}
}, [open, autoDestroy]);
// ======================== Container ========================
var _React$useState3 = React.useState(function () {
return getPortalContainer(getContainer);
}),
_React$useState4 = _slicedToArray(_React$useState3, 2),
innerContainer = _React$useState4[0],
setInnerContainer = _React$useState4[1];
React.useEffect(function () {
var customizeContainer = getPortalContainer(getContainer);
// Tell component that we check this in effect which is safe to be `null`
setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
});
var _useDom = useDom(mergedRender && !innerContainer, debug),
_useDom2 = _slicedToArray(_useDom, 2),
defaultContainer = _useDom2[0],
queueCreate = _useDom2[1];
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
// ========================= Locker ==========================
useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));
// =========================== Ref ===========================
var childRef = null;
if (children && supportRef(children) && ref) {
var _ref = children;
childRef = _ref.ref;
}
var mergedRef = useComposeRef(childRef, ref);
// ========================= Render ==========================
// Do not render when nothing need render
// When innerContainer is `undefined`, it may not ready since user use ref in the same render
if (!mergedRender || !canUseDom() || innerContainer === undefined) {
return null;
}
// Render inline
var renderInline = mergedContainer === false || inlineMock();
var reffedChildren = children;
if (ref) {
reffedChildren = /*#__PURE__*/React.cloneElement(children, {
ref: mergedRef
});
}
return /*#__PURE__*/React.createElement(OrderContext.Provider, {
value: queueCreate
}, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));
});
if (process.env.NODE_ENV !== 'production') {
Portal.displayName = 'Portal';
}
export default Portal;

6
node_modules/@rc-component/portal/es/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import Portal from './Portal';
import type { PortalProps } from './Portal';
import { inlineMock } from './mock';
export type { PortalProps };
export { inlineMock };
export default Portal;

4
node_modules/@rc-component/portal/es/index.js generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import Portal from "./Portal";
import { inlineMock } from "./mock";
export { inlineMock };
export default Portal;

2
node_modules/@rc-component/portal/es/mock.d.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
export declare let inline: boolean;
export declare function inlineMock(nextInline?: boolean): boolean;

7
node_modules/@rc-component/portal/es/mock.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
export var inline = false;
export function inlineMock(nextInline) {
if (typeof nextInline === 'boolean') {
inline = nextInline;
}
return inline;
}

6
node_modules/@rc-component/portal/es/useDom.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import type { QueueCreate } from './Context';
/**
* Will add `div` to document. Nest call will keep order
* @param render Render DOM in document
*/
export default function useDom(render: boolean, debug?: string): [HTMLDivElement, QueueCreate];

74
node_modules/@rc-component/portal/es/useDom.js generated vendored Normal file
View File

@@ -0,0 +1,74 @@
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import * as React from 'react';
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
import canUseDom from "rc-util/es/Dom/canUseDom";
import OrderContext from "./Context";
var EMPTY_LIST = [];
/**
* Will add `div` to document. Nest call will keep order
* @param render Render DOM in document
*/
export default function useDom(render, debug) {
var _React$useState = React.useState(function () {
if (!canUseDom()) {
return null;
}
var defaultEle = document.createElement('div');
if (process.env.NODE_ENV !== 'production' && debug) {
defaultEle.setAttribute('data-debug', debug);
}
return defaultEle;
}),
_React$useState2 = _slicedToArray(_React$useState, 1),
ele = _React$useState2[0];
// ========================== Order ==========================
var appendedRef = React.useRef(false);
var queueCreate = React.useContext(OrderContext);
var _React$useState3 = React.useState(EMPTY_LIST),
_React$useState4 = _slicedToArray(_React$useState3, 2),
queue = _React$useState4[0],
setQueue = _React$useState4[1];
var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {
setQueue(function (origin) {
var newQueue = [appendFn].concat(_toConsumableArray(origin));
return newQueue;
});
});
// =========================== DOM ===========================
function append() {
if (!ele.parentElement) {
document.body.appendChild(ele);
}
appendedRef.current = true;
}
function cleanup() {
var _ele$parentElement;
(_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
appendedRef.current = false;
}
useLayoutEffect(function () {
if (render) {
if (queueCreate) {
queueCreate(append);
} else {
append();
}
} else {
cleanup();
}
return cleanup;
}, [render]);
useLayoutEffect(function () {
if (queue.length) {
queue.forEach(function (appendFn) {
return appendFn();
});
setQueue(EMPTY_LIST);
}
}, [queue]);
return [ele, mergedQueueCreate];
}

View File

@@ -0,0 +1 @@
export default function useScrollLocker(lock?: boolean): void;

View File

@@ -0,0 +1,29 @@
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import * as React from 'react';
import { updateCSS, removeCSS } from "rc-util/es/Dom/dynamicCSS";
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
import { getTargetScrollBarSize } from "rc-util/es/getScrollBarSize";
import { isBodyOverflowing } from "./util";
var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
var uuid = 0;
export default function useScrollLocker(lock) {
var mergedLock = !!lock;
var _React$useState = React.useState(function () {
uuid += 1;
return "".concat(UNIQUE_ID, "_").concat(uuid);
}),
_React$useState2 = _slicedToArray(_React$useState, 1),
id = _React$useState2[0];
useLayoutEffect(function () {
if (mergedLock) {
var scrollbarSize = getTargetScrollBarSize(document.body).width;
var isOverflow = isBodyOverflowing();
updateCSS("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
} else {
removeCSS(id);
}
return function () {
removeCSS(id);
};
}, [mergedLock, id]);
}

4
node_modules/@rc-component/portal/es/util.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
/**
* Test usage export. Do not use in your production
*/
export declare function isBodyOverflowing(): boolean;

6
node_modules/@rc-component/portal/es/util.js generated vendored Normal file
View File

@@ -0,0 +1,6 @@
/**
* Test usage export. Do not use in your production
*/
export function isBodyOverflowing() {
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
}

4
node_modules/@rc-component/portal/lib/Context.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import * as React from 'react';
export declare type QueueCreate = (appendFunc: VoidFunction) => void;
declare const OrderContext: React.Context<QueueCreate>;
export default OrderContext;

11
node_modules/@rc-component/portal/lib/Context.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var OrderContext = /*#__PURE__*/React.createContext(null);
var _default = OrderContext;
exports.default = _default;

18
node_modules/@rc-component/portal/lib/Portal.d.ts generated vendored Normal file
View File

@@ -0,0 +1,18 @@
import * as React from 'react';
export declare type ContainerType = Element | DocumentFragment;
export declare type GetContainer = string | ContainerType | (() => ContainerType) | false;
export interface PortalProps {
/** Customize container element. Default will create a div in document.body when `open` */
getContainer?: GetContainer;
children?: React.ReactNode;
/** Show the portal children */
open?: boolean;
/** Remove `children` when `open` is `false`. Set `false` will not handle remove process */
autoDestroy?: boolean;
/** Lock screen scroll when open */
autoLock?: boolean;
/** @private debug name. Do not use in prod */
debug?: string;
}
declare const Portal: React.ForwardRefExoticComponent<PortalProps & React.RefAttributes<any>>;
export default Portal;

113
node_modules/@rc-component/portal/lib/Portal.js generated vendored Normal file
View File

@@ -0,0 +1,113 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _reactDom = require("react-dom");
var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
var _ref2 = require("rc-util/lib/ref");
var _Context = _interopRequireDefault(require("./Context"));
var _useDom3 = _interopRequireDefault(require("./useDom"));
var _useScrollLocker = _interopRequireDefault(require("./useScrollLocker"));
var _mock = require("./mock");
var getPortalContainer = function getPortalContainer(getContainer) {
if (getContainer === false) {
return false;
}
if (!(0, _canUseDom.default)() || !getContainer) {
return null;
}
if (typeof getContainer === 'string') {
return document.querySelector(getContainer);
}
if (typeof getContainer === 'function') {
return getContainer();
}
return getContainer;
};
var Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {
var open = props.open,
autoLock = props.autoLock,
getContainer = props.getContainer,
debug = props.debug,
_props$autoDestroy = props.autoDestroy,
autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,
children = props.children;
var _React$useState = React.useState(open),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
shouldRender = _React$useState2[0],
setShouldRender = _React$useState2[1];
var mergedRender = shouldRender || open;
// ========================= Warning =========================
if (process.env.NODE_ENV !== 'production') {
(0, _warning.default)((0, _canUseDom.default)() || !open, "Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.");
}
// ====================== Should Render ======================
React.useEffect(function () {
if (autoDestroy || open) {
setShouldRender(open);
}
}, [open, autoDestroy]);
// ======================== Container ========================
var _React$useState3 = React.useState(function () {
return getPortalContainer(getContainer);
}),
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
innerContainer = _React$useState4[0],
setInnerContainer = _React$useState4[1];
React.useEffect(function () {
var customizeContainer = getPortalContainer(getContainer);
// Tell component that we check this in effect which is safe to be `null`
setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
});
var _useDom = (0, _useDom3.default)(mergedRender && !innerContainer, debug),
_useDom2 = (0, _slicedToArray2.default)(_useDom, 2),
defaultContainer = _useDom2[0],
queueCreate = _useDom2[1];
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
// ========================= Locker ==========================
(0, _useScrollLocker.default)(autoLock && open && (0, _canUseDom.default)() && (mergedContainer === defaultContainer || mergedContainer === document.body));
// =========================== Ref ===========================
var childRef = null;
if (children && (0, _ref2.supportRef)(children) && ref) {
var _ref = children;
childRef = _ref.ref;
}
var mergedRef = (0, _ref2.useComposeRef)(childRef, ref);
// ========================= Render ==========================
// Do not render when nothing need render
// When innerContainer is `undefined`, it may not ready since user use ref in the same render
if (!mergedRender || !(0, _canUseDom.default)() || innerContainer === undefined) {
return null;
}
// Render inline
var renderInline = mergedContainer === false || (0, _mock.inlineMock)();
var reffedChildren = children;
if (ref) {
reffedChildren = /*#__PURE__*/React.cloneElement(children, {
ref: mergedRef
});
}
return /*#__PURE__*/React.createElement(_Context.default.Provider, {
value: queueCreate
}, renderInline ? reffedChildren : /*#__PURE__*/(0, _reactDom.createPortal)(reffedChildren, mergedContainer));
});
if (process.env.NODE_ENV !== 'production') {
Portal.displayName = 'Portal';
}
var _default = Portal;
exports.default = _default;

6
node_modules/@rc-component/portal/lib/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import Portal from './Portal';
import type { PortalProps } from './Portal';
import { inlineMock } from './mock';
export type { PortalProps };
export { inlineMock };
export default Portal;

17
node_modules/@rc-component/portal/lib/index.js generated vendored Normal file
View File

@@ -0,0 +1,17 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
Object.defineProperty(exports, "inlineMock", {
enumerable: true,
get: function get() {
return _mock.inlineMock;
}
});
var _Portal = _interopRequireDefault(require("./Portal"));
var _mock = require("./mock");
var _default = _Portal.default;
exports.default = _default;

2
node_modules/@rc-component/portal/lib/mock.d.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
export declare let inline: boolean;
export declare function inlineMock(nextInline?: boolean): boolean;

15
node_modules/@rc-component/portal/lib/mock.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inline = void 0;
exports.inlineMock = inlineMock;
var inline = false;
exports.inline = inline;
function inlineMock(nextInline) {
if (typeof nextInline === 'boolean') {
exports.inline = inline = nextInline;
}
return inline;
}

6
node_modules/@rc-component/portal/lib/useDom.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import type { QueueCreate } from './Context';
/**
* Will add `div` to document. Nest call will keep order
* @param render Render DOM in document
*/
export default function useDom(render: boolean, debug?: string): [HTMLDivElement, QueueCreate];

82
node_modules/@rc-component/portal/lib/useDom.js generated vendored Normal file
View File

@@ -0,0 +1,82 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useDom;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
var _Context = _interopRequireDefault(require("./Context"));
var EMPTY_LIST = [];
/**
* Will add `div` to document. Nest call will keep order
* @param render Render DOM in document
*/
function useDom(render, debug) {
var _React$useState = React.useState(function () {
if (!(0, _canUseDom.default)()) {
return null;
}
var defaultEle = document.createElement('div');
if (process.env.NODE_ENV !== 'production' && debug) {
defaultEle.setAttribute('data-debug', debug);
}
return defaultEle;
}),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
ele = _React$useState2[0];
// ========================== Order ==========================
var appendedRef = React.useRef(false);
var queueCreate = React.useContext(_Context.default);
var _React$useState3 = React.useState(EMPTY_LIST),
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
queue = _React$useState4[0],
setQueue = _React$useState4[1];
var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {
setQueue(function (origin) {
var newQueue = [appendFn].concat((0, _toConsumableArray2.default)(origin));
return newQueue;
});
});
// =========================== DOM ===========================
function append() {
if (!ele.parentElement) {
document.body.appendChild(ele);
}
appendedRef.current = true;
}
function cleanup() {
var _ele$parentElement;
(_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
appendedRef.current = false;
}
(0, _useLayoutEffect.default)(function () {
if (render) {
if (queueCreate) {
queueCreate(append);
} else {
append();
}
} else {
cleanup();
}
return cleanup;
}, [render]);
(0, _useLayoutEffect.default)(function () {
if (queue.length) {
queue.forEach(function (appendFn) {
return appendFn();
});
setQueue(EMPTY_LIST);
}
}, [queue]);
return [ele, mergedQueueCreate];
}

View File

@@ -0,0 +1 @@
export default function useScrollLocker(lock?: boolean): void;

View File

@@ -0,0 +1,37 @@
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useScrollLocker;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _dynamicCSS = require("rc-util/lib/Dom/dynamicCSS");
var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
var _getScrollBarSize = require("rc-util/lib/getScrollBarSize");
var _util = require("./util");
var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
var uuid = 0;
function useScrollLocker(lock) {
var mergedLock = !!lock;
var _React$useState = React.useState(function () {
uuid += 1;
return "".concat(UNIQUE_ID, "_").concat(uuid);
}),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 1),
id = _React$useState2[0];
(0, _useLayoutEffect.default)(function () {
if (mergedLock) {
var scrollbarSize = (0, _getScrollBarSize.getTargetScrollBarSize)(document.body).width;
var isOverflow = (0, _util.isBodyOverflowing)();
(0, _dynamicCSS.updateCSS)("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id);
} else {
(0, _dynamicCSS.removeCSS)(id);
}
return function () {
(0, _dynamicCSS.removeCSS)(id);
};
}, [mergedLock, id]);
}

4
node_modules/@rc-component/portal/lib/util.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
/**
* Test usage export. Do not use in your production
*/
export declare function isBodyOverflowing(): boolean;

12
node_modules/@rc-component/portal/lib/util.js generated vendored Normal file
View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isBodyOverflowing = isBodyOverflowing;
/**
* Test usage export. Do not use in your production
*/
function isBodyOverflowing() {
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
}

76
node_modules/@rc-component/portal/package.json generated vendored Normal file
View File

@@ -0,0 +1,76 @@
{
"name": "@rc-component/portal",
"version": "1.1.2",
"description": "React Portal Component",
"keywords": [
"react",
"react-component",
"react-portal"
],
"homepage": "https://github.com/react-component/portal",
"bugs": {
"url": "https://github.com/react-component/portal/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/react-component/portal.git"
},
"license": "MIT",
"author": "smith3816@gmail.com",
"main": "./lib/index",
"module": "./es/index",
"typings": "es/index.d.ts",
"files": [
"lib",
"es",
"dist"
],
"scripts": {
"compile": "father build",
"deploy": "npm run docs:build && npm run docs:deploy",
"docs:build": "dumi build",
"docs:deploy": "gh-pages -d docs-dist",
"lint": "eslint src/ --ext .tsx,.ts",
"lint:tsc": "tsc -p tsconfig.json --noEmit",
"now-build": "npm run docs:build",
"prepublishOnly": "npm run compile && np --no-cleanup --yolo --no-publish",
"prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\"",
"start": "dumi dev",
"test": "npm run test:client && npm run test:server",
"test:client": "umi-test --testPathIgnorePatterns=ssr.test.tsx --testPathIgnorePatterns=ssr.test.tsx",
"test:coverage": "npm run test:client --coverage",
"test:server": "umi-test --env=node -- tests/ssr.test.tsx",
"watch": "father dev"
},
"dependencies": {
"@babel/runtime": "^7.18.0",
"classnames": "^2.3.2",
"rc-util": "^5.24.4"
},
"devDependencies": {
"@rc-component/father-plugin": "^1.0.0",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.0.0",
"@types/jest": "^26.0.20",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@umijs/fabric": "^2.5.2",
"dumi": "^1.1.0",
"eslint": "^7.18.0",
"father": "^4.0.0-rc.8",
"gh-pages": "^3.1.0",
"np": "^5.0.3",
"prettier": "^2.1.2",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"typescript": "^4.6.3",
"umi-test": "^1.9.7"
},
"peerDependencies": {
"react": ">=16.9.0",
"react-dom": ">=16.9.0"
},
"engines": {
"node": ">=8.x"
}
}