first commit
This commit is contained in:
12
frontend/node_modules/rc-menu/lib/hooks/useAccessibility.d.ts
generated
vendored
Normal file
12
frontend/node_modules/rc-menu/lib/hooks/useAccessibility.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
import * as React from 'react';
|
||||
import type { MenuMode } from '../interface';
|
||||
/**
|
||||
* Get focusable elements from the element set under provided container
|
||||
*/
|
||||
export declare function getFocusableElements(container: HTMLElement, elements: Set<HTMLElement>): HTMLElement[];
|
||||
export declare const refreshElements: (keys: string[], id: string) => {
|
||||
elements: Set<HTMLElement>;
|
||||
key2element: Map<string, HTMLElement>;
|
||||
element2key: Map<HTMLElement, string>;
|
||||
};
|
||||
export declare function useAccessibility<T extends HTMLElement>(mode: MenuMode, activeKey: string, isRtl: boolean, id: string, containerRef: React.RefObject<HTMLUListElement>, getKeys: () => string[], getKeyPath: (key: string, includeOverflow?: boolean) => string[], triggerActiveKey: (key: string) => void, triggerAccessibilityOpen: (key: string, open?: boolean) => void, originOnKeyDown?: React.KeyboardEventHandler<T>): React.KeyboardEventHandler<T>;
|
||||
282
frontend/node_modules/rc-menu/lib/hooks/useAccessibility.js
generated
vendored
Normal file
282
frontend/node_modules/rc-menu/lib/hooks/useAccessibility.js
generated
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.getFocusableElements = getFocusableElements;
|
||||
exports.refreshElements = void 0;
|
||||
exports.useAccessibility = useAccessibility;
|
||||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
||||
var _focus = require("rc-util/lib/Dom/focus");
|
||||
var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
|
||||
var _raf = _interopRequireDefault(require("rc-util/lib/raf"));
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _IdContext = require("../context/IdContext");
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
// destruct to reduce minify size
|
||||
var LEFT = _KeyCode.default.LEFT,
|
||||
RIGHT = _KeyCode.default.RIGHT,
|
||||
UP = _KeyCode.default.UP,
|
||||
DOWN = _KeyCode.default.DOWN,
|
||||
ENTER = _KeyCode.default.ENTER,
|
||||
ESC = _KeyCode.default.ESC,
|
||||
HOME = _KeyCode.default.HOME,
|
||||
END = _KeyCode.default.END;
|
||||
var ArrowKeys = [UP, DOWN, LEFT, RIGHT];
|
||||
function getOffset(mode, isRootLevel, isRtl, which) {
|
||||
var _offsets;
|
||||
var prev = 'prev';
|
||||
var next = 'next';
|
||||
var children = 'children';
|
||||
var parent = 'parent';
|
||||
|
||||
// Inline enter is special that we use unique operation
|
||||
if (mode === 'inline' && which === ENTER) {
|
||||
return {
|
||||
inlineTrigger: true
|
||||
};
|
||||
}
|
||||
var inline = (0, _defineProperty2.default)((0, _defineProperty2.default)({}, UP, prev), DOWN, next);
|
||||
var horizontal = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, LEFT, isRtl ? next : prev), RIGHT, isRtl ? prev : next), DOWN, children), ENTER, children);
|
||||
var vertical = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, UP, prev), DOWN, next), ENTER, children), ESC, parent), LEFT, isRtl ? children : parent), RIGHT, isRtl ? parent : children);
|
||||
var offsets = {
|
||||
inline: inline,
|
||||
horizontal: horizontal,
|
||||
vertical: vertical,
|
||||
inlineSub: inline,
|
||||
horizontalSub: vertical,
|
||||
verticalSub: vertical
|
||||
};
|
||||
var type = (_offsets = offsets["".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];
|
||||
switch (type) {
|
||||
case prev:
|
||||
return {
|
||||
offset: -1,
|
||||
sibling: true
|
||||
};
|
||||
case next:
|
||||
return {
|
||||
offset: 1,
|
||||
sibling: true
|
||||
};
|
||||
case parent:
|
||||
return {
|
||||
offset: -1,
|
||||
sibling: false
|
||||
};
|
||||
case children:
|
||||
return {
|
||||
offset: 1,
|
||||
sibling: false
|
||||
};
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function findContainerUL(element) {
|
||||
var current = element;
|
||||
while (current) {
|
||||
if (current.getAttribute('data-menu-list')) {
|
||||
return current;
|
||||
}
|
||||
current = current.parentElement;
|
||||
}
|
||||
|
||||
// Normally should not reach this line
|
||||
/* istanbul ignore next */
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find focused element within element set provided
|
||||
*/
|
||||
function getFocusElement(activeElement, elements) {
|
||||
var current = activeElement || document.activeElement;
|
||||
while (current) {
|
||||
if (elements.has(current)) {
|
||||
return current;
|
||||
}
|
||||
current = current.parentElement;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get focusable elements from the element set under provided container
|
||||
*/
|
||||
function getFocusableElements(container, elements) {
|
||||
var list = (0, _focus.getFocusNodeList)(container, true);
|
||||
return list.filter(function (ele) {
|
||||
return elements.has(ele);
|
||||
});
|
||||
}
|
||||
function getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {
|
||||
var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
||||
// Key on the menu item will not get validate parent container
|
||||
if (!parentQueryContainer) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// List current level menu item elements
|
||||
var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);
|
||||
|
||||
// Find next focus index
|
||||
var count = sameLevelFocusableMenuElementList.length;
|
||||
var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {
|
||||
return focusMenuElement === ele;
|
||||
});
|
||||
if (offset < 0) {
|
||||
if (focusIndex === -1) {
|
||||
focusIndex = count - 1;
|
||||
} else {
|
||||
focusIndex -= 1;
|
||||
}
|
||||
} else if (offset > 0) {
|
||||
focusIndex += 1;
|
||||
}
|
||||
focusIndex = (focusIndex + count) % count;
|
||||
|
||||
// Focus menu item
|
||||
return sameLevelFocusableMenuElementList[focusIndex];
|
||||
}
|
||||
var refreshElements = exports.refreshElements = function refreshElements(keys, id) {
|
||||
var elements = new Set();
|
||||
var key2element = new Map();
|
||||
var element2key = new Map();
|
||||
keys.forEach(function (key) {
|
||||
var element = document.querySelector("[data-menu-id='".concat((0, _IdContext.getMenuId)(id, key), "']"));
|
||||
if (element) {
|
||||
elements.add(element);
|
||||
element2key.set(element, key);
|
||||
key2element.set(key, element);
|
||||
}
|
||||
});
|
||||
return {
|
||||
elements: elements,
|
||||
key2element: key2element,
|
||||
element2key: element2key
|
||||
};
|
||||
};
|
||||
function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {
|
||||
var rafRef = React.useRef();
|
||||
var activeRef = React.useRef();
|
||||
activeRef.current = activeKey;
|
||||
var cleanRaf = function cleanRaf() {
|
||||
_raf.default.cancel(rafRef.current);
|
||||
};
|
||||
React.useEffect(function () {
|
||||
return function () {
|
||||
cleanRaf();
|
||||
};
|
||||
}, []);
|
||||
return function (e) {
|
||||
var which = e.which;
|
||||
if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {
|
||||
var keys = getKeys();
|
||||
var refreshedElements = refreshElements(keys, id);
|
||||
var _refreshedElements = refreshedElements,
|
||||
elements = _refreshedElements.elements,
|
||||
key2element = _refreshedElements.key2element,
|
||||
element2key = _refreshedElements.element2key;
|
||||
|
||||
// First we should find current focused MenuItem/SubMenu element
|
||||
var activeElement = key2element.get(activeKey);
|
||||
var focusMenuElement = getFocusElement(activeElement, elements);
|
||||
var focusMenuKey = element2key.get(focusMenuElement);
|
||||
var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);
|
||||
|
||||
// Some mode do not have fully arrow operation like inline
|
||||
if (!offsetObj && which !== HOME && which !== END) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Arrow prevent default to avoid page scroll
|
||||
if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {
|
||||
e.preventDefault();
|
||||
}
|
||||
var tryFocus = function tryFocus(menuElement) {
|
||||
if (menuElement) {
|
||||
var focusTargetElement = menuElement;
|
||||
|
||||
// Focus to link instead of menu item if possible
|
||||
var link = menuElement.querySelector('a');
|
||||
if (link !== null && link !== void 0 && link.getAttribute('href')) {
|
||||
focusTargetElement = link;
|
||||
}
|
||||
var targetKey = element2key.get(menuElement);
|
||||
triggerActiveKey(targetKey);
|
||||
|
||||
/**
|
||||
* Do not `useEffect` here since `tryFocus` may trigger async
|
||||
* which makes React sync update the `activeKey`
|
||||
* that force render before `useRef` set the next activeKey
|
||||
*/
|
||||
cleanRaf();
|
||||
rafRef.current = (0, _raf.default)(function () {
|
||||
if (activeRef.current === targetKey) {
|
||||
focusTargetElement.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {
|
||||
// ========================== Sibling ==========================
|
||||
// Find walkable focus menu element container
|
||||
var parentQueryContainer;
|
||||
if (!focusMenuElement || mode === 'inline') {
|
||||
parentQueryContainer = containerRef.current;
|
||||
} else {
|
||||
parentQueryContainer = findContainerUL(focusMenuElement);
|
||||
}
|
||||
|
||||
// Get next focus element
|
||||
var targetElement;
|
||||
var focusableElements = getFocusableElements(parentQueryContainer, elements);
|
||||
if (which === HOME) {
|
||||
targetElement = focusableElements[0];
|
||||
} else if (which === END) {
|
||||
targetElement = focusableElements[focusableElements.length - 1];
|
||||
} else {
|
||||
targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);
|
||||
}
|
||||
// Focus menu item
|
||||
tryFocus(targetElement);
|
||||
|
||||
// ======================= InlineTrigger =======================
|
||||
} else if (offsetObj.inlineTrigger) {
|
||||
// Inline trigger no need switch to sub menu item
|
||||
triggerAccessibilityOpen(focusMenuKey);
|
||||
// =========================== Level ===========================
|
||||
} else if (offsetObj.offset > 0) {
|
||||
triggerAccessibilityOpen(focusMenuKey, true);
|
||||
cleanRaf();
|
||||
rafRef.current = (0, _raf.default)(function () {
|
||||
// Async should resync elements
|
||||
refreshedElements = refreshElements(keys, id);
|
||||
var controlId = focusMenuElement.getAttribute('aria-controls');
|
||||
var subQueryContainer = document.getElementById(controlId);
|
||||
|
||||
// Get sub focusable menu item
|
||||
var targetElement = getNextFocusElement(subQueryContainer, refreshedElements.elements);
|
||||
|
||||
// Focus menu item
|
||||
tryFocus(targetElement);
|
||||
}, 5);
|
||||
} else if (offsetObj.offset < 0) {
|
||||
var keyPath = getKeyPath(focusMenuKey, true);
|
||||
var parentKey = keyPath[keyPath.length - 2];
|
||||
var parentMenuElement = key2element.get(parentKey);
|
||||
|
||||
// Focus menu item
|
||||
triggerAccessibilityOpen(parentKey, false);
|
||||
tryFocus(parentMenuElement);
|
||||
}
|
||||
}
|
||||
|
||||
// Pass origin key down event
|
||||
originOnKeyDown === null || originOnKeyDown === void 0 || originOnKeyDown(e);
|
||||
};
|
||||
}
|
||||
9
frontend/node_modules/rc-menu/lib/hooks/useActive.d.ts
generated
vendored
Normal file
9
frontend/node_modules/rc-menu/lib/hooks/useActive.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import * as React from 'react';
|
||||
import type { MenuHoverEventHandler } from '../interface';
|
||||
interface ActiveObj {
|
||||
active: boolean;
|
||||
onMouseEnter?: React.MouseEventHandler<HTMLElement>;
|
||||
onMouseLeave?: React.MouseEventHandler<HTMLElement>;
|
||||
}
|
||||
export default function useActive(eventKey: string, disabled: boolean, onMouseEnter?: MenuHoverEventHandler, onMouseLeave?: MenuHoverEventHandler): ActiveObj;
|
||||
export {};
|
||||
39
frontend/node_modules/rc-menu/lib/hooks/useActive.js
generated
vendored
Normal file
39
frontend/node_modules/rc-menu/lib/hooks/useActive.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
"use strict";
|
||||
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useActive;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _MenuContext = require("../context/MenuContext");
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {
|
||||
var _React$useContext = React.useContext(_MenuContext.MenuContext),
|
||||
activeKey = _React$useContext.activeKey,
|
||||
onActive = _React$useContext.onActive,
|
||||
onInactive = _React$useContext.onInactive;
|
||||
var ret = {
|
||||
active: activeKey === eventKey
|
||||
};
|
||||
|
||||
// Skip when disabled
|
||||
if (!disabled) {
|
||||
ret.onMouseEnter = function (domEvent) {
|
||||
onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({
|
||||
key: eventKey,
|
||||
domEvent: domEvent
|
||||
});
|
||||
onActive(eventKey);
|
||||
};
|
||||
ret.onMouseLeave = function (domEvent) {
|
||||
onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({
|
||||
key: eventKey,
|
||||
domEvent: domEvent
|
||||
});
|
||||
onInactive(eventKey);
|
||||
};
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
2
frontend/node_modules/rc-menu/lib/hooks/useDirectionStyle.d.ts
generated
vendored
Normal file
2
frontend/node_modules/rc-menu/lib/hooks/useDirectionStyle.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import * as React from 'react';
|
||||
export default function useDirectionStyle(level: number): React.CSSProperties;
|
||||
26
frontend/node_modules/rc-menu/lib/hooks/useDirectionStyle.js
generated
vendored
Normal file
26
frontend/node_modules/rc-menu/lib/hooks/useDirectionStyle.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useDirectionStyle;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _MenuContext = require("../context/MenuContext");
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
function useDirectionStyle(level) {
|
||||
var _React$useContext = React.useContext(_MenuContext.MenuContext),
|
||||
mode = _React$useContext.mode,
|
||||
rtl = _React$useContext.rtl,
|
||||
inlineIndent = _React$useContext.inlineIndent;
|
||||
if (mode !== 'inline') {
|
||||
return null;
|
||||
}
|
||||
var len = level;
|
||||
return rtl ? {
|
||||
paddingRight: len * inlineIndent
|
||||
} : {
|
||||
paddingLeft: len * inlineIndent
|
||||
};
|
||||
}
|
||||
10
frontend/node_modules/rc-menu/lib/hooks/useKeyRecords.d.ts
generated
vendored
Normal file
10
frontend/node_modules/rc-menu/lib/hooks/useKeyRecords.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export declare const OVERFLOW_KEY = "rc-menu-more";
|
||||
export default function useKeyRecords(): {
|
||||
registerPath: (key: string, keyPath: string[]) => void;
|
||||
unregisterPath: (key: string, keyPath: string[]) => void;
|
||||
refreshOverflowKeys: (keys: string[]) => void;
|
||||
isSubPathKey: (pathKeys: string[], eventKey: string) => boolean;
|
||||
getKeyPath: (eventKey: string, includeOverflow?: boolean) => string[];
|
||||
getKeys: () => string[];
|
||||
getSubPathKeys: (key: string) => Set<string>;
|
||||
};
|
||||
122
frontend/node_modules/rc-menu/lib/hooks/useKeyRecords.js
generated
vendored
Normal file
122
frontend/node_modules/rc-menu/lib/hooks/useKeyRecords.js
generated
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.OVERFLOW_KEY = void 0;
|
||||
exports.default = useKeyRecords;
|
||||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var _react = _interopRequireWildcard(require("react"));
|
||||
var React = _react;
|
||||
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
||||
var _timeUtil = require("../utils/timeUtil");
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
var PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';
|
||||
var getPathStr = function getPathStr(keyPath) {
|
||||
return keyPath.join(PATH_SPLIT);
|
||||
};
|
||||
var getPathKeys = function getPathKeys(keyPathStr) {
|
||||
return keyPathStr.split(PATH_SPLIT);
|
||||
};
|
||||
var OVERFLOW_KEY = exports.OVERFLOW_KEY = 'rc-menu-more';
|
||||
function useKeyRecords() {
|
||||
var _React$useState = React.useState({}),
|
||||
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
||||
internalForceUpdate = _React$useState2[1];
|
||||
var key2pathRef = (0, _react.useRef)(new Map());
|
||||
var path2keyRef = (0, _react.useRef)(new Map());
|
||||
var _React$useState3 = React.useState([]),
|
||||
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
||||
overflowKeys = _React$useState4[0],
|
||||
setOverflowKeys = _React$useState4[1];
|
||||
var updateRef = (0, _react.useRef)(0);
|
||||
var destroyRef = (0, _react.useRef)(false);
|
||||
var forceUpdate = function forceUpdate() {
|
||||
if (!destroyRef.current) {
|
||||
internalForceUpdate({});
|
||||
}
|
||||
};
|
||||
var registerPath = (0, _react.useCallback)(function (key, keyPath) {
|
||||
// Warning for invalidate or duplicated `key`
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
(0, _warning.default)(!key2pathRef.current.has(key), "Duplicated key '".concat(key, "' used in Menu by path [").concat(keyPath.join(' > '), "]"));
|
||||
}
|
||||
|
||||
// Fill map
|
||||
var connectedPath = getPathStr(keyPath);
|
||||
path2keyRef.current.set(connectedPath, key);
|
||||
key2pathRef.current.set(key, connectedPath);
|
||||
updateRef.current += 1;
|
||||
var id = updateRef.current;
|
||||
(0, _timeUtil.nextSlice)(function () {
|
||||
if (id === updateRef.current) {
|
||||
forceUpdate();
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
var unregisterPath = (0, _react.useCallback)(function (key, keyPath) {
|
||||
var connectedPath = getPathStr(keyPath);
|
||||
path2keyRef.current.delete(connectedPath);
|
||||
key2pathRef.current.delete(key);
|
||||
}, []);
|
||||
var refreshOverflowKeys = (0, _react.useCallback)(function (keys) {
|
||||
setOverflowKeys(keys);
|
||||
}, []);
|
||||
var getKeyPath = (0, _react.useCallback)(function (eventKey, includeOverflow) {
|
||||
var fullPath = key2pathRef.current.get(eventKey) || '';
|
||||
var keys = getPathKeys(fullPath);
|
||||
if (includeOverflow && overflowKeys.includes(keys[0])) {
|
||||
keys.unshift(OVERFLOW_KEY);
|
||||
}
|
||||
return keys;
|
||||
}, [overflowKeys]);
|
||||
var isSubPathKey = (0, _react.useCallback)(function (pathKeys, eventKey) {
|
||||
return pathKeys.filter(function (item) {
|
||||
return item !== undefined;
|
||||
}).some(function (pathKey) {
|
||||
var pathKeyList = getKeyPath(pathKey, true);
|
||||
return pathKeyList.includes(eventKey);
|
||||
});
|
||||
}, [getKeyPath]);
|
||||
var getKeys = function getKeys() {
|
||||
var keys = (0, _toConsumableArray2.default)(key2pathRef.current.keys());
|
||||
if (overflowKeys.length) {
|
||||
keys.push(OVERFLOW_KEY);
|
||||
}
|
||||
return keys;
|
||||
};
|
||||
|
||||
/**
|
||||
* Find current key related child path keys
|
||||
*/
|
||||
var getSubPathKeys = (0, _react.useCallback)(function (key) {
|
||||
var connectedPath = "".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);
|
||||
var pathKeys = new Set();
|
||||
(0, _toConsumableArray2.default)(path2keyRef.current.keys()).forEach(function (pathKey) {
|
||||
if (pathKey.startsWith(connectedPath)) {
|
||||
pathKeys.add(path2keyRef.current.get(pathKey));
|
||||
}
|
||||
});
|
||||
return pathKeys;
|
||||
}, []);
|
||||
React.useEffect(function () {
|
||||
return function () {
|
||||
destroyRef.current = true;
|
||||
};
|
||||
}, []);
|
||||
return {
|
||||
// Register
|
||||
registerPath: registerPath,
|
||||
unregisterPath: unregisterPath,
|
||||
refreshOverflowKeys: refreshOverflowKeys,
|
||||
// Util
|
||||
isSubPathKey: isSubPathKey,
|
||||
getKeyPath: getKeyPath,
|
||||
getKeys: getKeys,
|
||||
getSubPathKeys: getSubPathKeys
|
||||
};
|
||||
}
|
||||
5
frontend/node_modules/rc-menu/lib/hooks/useMemoCallback.d.ts
generated
vendored
Normal file
5
frontend/node_modules/rc-menu/lib/hooks/useMemoCallback.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* Cache callback function that always return same ref instead.
|
||||
* This is used for context optimization.
|
||||
*/
|
||||
export default function useMemoCallback<T extends (...args: any[]) => void>(func: T): T;
|
||||
26
frontend/node_modules/rc-menu/lib/hooks/useMemoCallback.js
generated
vendored
Normal file
26
frontend/node_modules/rc-menu/lib/hooks/useMemoCallback.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useMemoCallback;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
/**
|
||||
* Cache callback function that always return same ref instead.
|
||||
* This is used for context optimization.
|
||||
*/
|
||||
function useMemoCallback(func) {
|
||||
var funRef = React.useRef(func);
|
||||
funRef.current = func;
|
||||
var callback = React.useCallback(function () {
|
||||
var _funRef$current;
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));
|
||||
}, []);
|
||||
return func ? callback : undefined;
|
||||
}
|
||||
1
frontend/node_modules/rc-menu/lib/hooks/useUUID.d.ts
generated
vendored
Normal file
1
frontend/node_modules/rc-menu/lib/hooks/useUUID.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export default function useUUID(id?: string): string;
|
||||
29
frontend/node_modules/rc-menu/lib/hooks/useUUID.js
generated
vendored
Normal file
29
frontend/node_modules/rc-menu/lib/hooks/useUUID.js
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _typeof = require("@babel/runtime/helpers/typeof");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useUUID;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
||||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
||||
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; }
|
||||
var uniquePrefix = Math.random().toFixed(5).toString().slice(2);
|
||||
var internalId = 0;
|
||||
function useUUID(id) {
|
||||
var _useMergedState = (0, _useMergedState3.default)(id, {
|
||||
value: id
|
||||
}),
|
||||
_useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
|
||||
uuid = _useMergedState2[0],
|
||||
setUUID = _useMergedState2[1];
|
||||
React.useEffect(function () {
|
||||
internalId += 1;
|
||||
var newId = process.env.NODE_ENV === 'test' ? 'test' : "".concat(uniquePrefix, "-").concat(internalId);
|
||||
setUUID("rc-menu-uuid-".concat(newId));
|
||||
}, []);
|
||||
return uuid;
|
||||
}
|
||||
Reference in New Issue
Block a user