From 7ca3a55511869c3d1e6378e92c4c94b610a5b6a0 Mon Sep 17 00:00:00 2001 From: Carl Voller Date: Fri, 10 Jun 2022 17:37:23 +0800 Subject: [PATCH 1/3] Added resizerClassName declaration and resizerStyle support --- .gitignore | 1 - dist/index.d.ts | 1 + dist/index.js | 6 + dist/index.js.map | 1 + dist/lib/Pane.d.ts | 10 + dist/lib/Pane.js | 29 + dist/lib/Pane.js.map | 1 + dist/lib/Resizer.d.ts | 12 + dist/lib/Resizer.js | 19 + dist/lib/Resizer.js.map | 1 + dist/lib/SplitPane.d.ts | 20 + dist/lib/SplitPane.js | 167 ++++ dist/lib/SplitPane.js.map | 1 + dist/lib/util.d.ts | 10 + dist/lib/util.js | 63 ++ dist/lib/util.js.map | 1 + package-lock.json | 1681 +++++++++++++++++++++++++++++++++++++ src/lib/Resizer.tsx | 5 +- src/lib/SplitPane.tsx | 4 +- 19 files changed, 2029 insertions(+), 4 deletions(-) create mode 100644 dist/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/index.js.map create mode 100644 dist/lib/Pane.d.ts create mode 100644 dist/lib/Pane.js create mode 100644 dist/lib/Pane.js.map create mode 100644 dist/lib/Resizer.d.ts create mode 100644 dist/lib/Resizer.js create mode 100644 dist/lib/Resizer.js.map create mode 100644 dist/lib/SplitPane.d.ts create mode 100644 dist/lib/SplitPane.js create mode 100644 dist/lib/SplitPane.js.map create mode 100644 dist/lib/util.d.ts create mode 100644 dist/lib/util.js create mode 100644 dist/lib/util.js.map create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index c17bd73..bbc8507 100644 --- a/.gitignore +++ b/.gitignore @@ -34,5 +34,4 @@ node_modules lcov.info .DS_Store -dist build diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..ae47cd5 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1 @@ +export { SplitPane, SplitPaneProps } from './lib/SplitPane'; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..1fa52ca --- /dev/null +++ b/dist/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SplitPane = void 0; +var SplitPane_1 = require("./lib/SplitPane"); +Object.defineProperty(exports, "SplitPane", { enumerable: true, get: function () { return SplitPane_1.SplitPane; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..1f7cb30 --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4D;AAAnD,sGAAA,SAAS,OAAA"} \ No newline at end of file diff --git a/dist/lib/Pane.d.ts b/dist/lib/Pane.d.ts new file mode 100644 index 0000000..2d72f48 --- /dev/null +++ b/dist/lib/Pane.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +export interface PaneProps { + size: number; + minSize: number; + split: 'horizontal' | 'vertical'; + className: string; + forwardRef: React.Ref; + children: React.ReactNode; +} +export declare const Pane: React.MemoExoticComponent<({ size, minSize, split, className, forwardRef, children }: PaneProps) => JSX.Element>; diff --git a/dist/lib/Pane.js b/dist/lib/Pane.js new file mode 100644 index 0000000..81d96b6 --- /dev/null +++ b/dist/lib/Pane.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Pane = void 0; +const React = require("react"); +const baseStyle = { + position: 'relative', + outline: 'none', + border: 0, + overflow: 'hidden', + display: 'flex', + flexBasis: 'auto', +}; +exports.Pane = React.memo(({ size, minSize, split, className, forwardRef, children }) => { + const style = Object.assign(Object.assign({}, baseStyle), { flexGrow: size, flexShrink: size }); + if (split === 'vertical') { + style.width = 0; + style.height = '100%'; + style.minWidth = minSize; + } + else { + style.width = '100%'; + style.height = 0; + style.minHeight = minSize; + } + const classes = ['Pane', split, className].join(' '); + return (React.createElement("div", { className: classes, style: style, ref: forwardRef }, children)); +}); +exports.Pane.displayName = 'Pane'; +//# sourceMappingURL=Pane.js.map \ No newline at end of file diff --git a/dist/lib/Pane.js.map b/dist/lib/Pane.js.map new file mode 100644 index 0000000..f383ff3 --- /dev/null +++ b/dist/lib/Pane.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Pane.js","sourceRoot":"","sources":["../../src/lib/Pane.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAc/B,MAAM,SAAS,GAAwB;IACtC,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;CACjB,CAAC;AAEW,QAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAa,EAAE,EAAE;IACvG,MAAM,KAAK,mCACP,SAAS,KACZ,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,IAAI,GAChB,CAAC;IAEF,IAAI,KAAK,KAAK,UAAU,EAAE;QACzB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;SAAM;QACN,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACrB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;KAC1B;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErD,OAAO,CACN,6BAAK,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,IACpD,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC,CAAC;AACH,YAAI,CAAC,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/dist/lib/Resizer.d.ts b/dist/lib/Resizer.d.ts new file mode 100644 index 0000000..23d29ee --- /dev/null +++ b/dist/lib/Resizer.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { ClientPosition } from './util'; +export interface ResizerProps { + split: 'horizontal' | 'vertical'; + className: string; + index: number; + style?: { + [key: string]: string; + }; + onDragStarted: (index: number, pos: ClientPosition) => void; +} +export declare const Resizer: React.MemoExoticComponent<({ split, className, index, style, onDragStarted }: ResizerProps) => JSX.Element>; diff --git a/dist/lib/Resizer.js b/dist/lib/Resizer.js new file mode 100644 index 0000000..368c631 --- /dev/null +++ b/dist/lib/Resizer.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Resizer = void 0; +const React = require("react"); +const { useCallback } = React; +exports.Resizer = React.memo(({ split, className, index, style = {}, onDragStarted }) => { + const handleMouseDown = useCallback((event) => { + event.preventDefault(); + onDragStarted(index, event); + }, [index, onDragStarted]); + const handleTouchStart = useCallback((event) => { + event.preventDefault(); + onDragStarted(index, event.touches[0]); + }, [index, onDragStarted]); + const classes = ['Resizer', split, className].join(' '); + return (React.createElement("span", { role: 'presentation', className: classes, style: Object.assign({ flex: 'none' }, style), onMouseDown: handleMouseDown, onTouchStart: handleTouchStart })); +}); +exports.Resizer.displayName = 'Resizer'; +//# sourceMappingURL=Resizer.js.map \ No newline at end of file diff --git a/dist/lib/Resizer.js.map b/dist/lib/Resizer.js.map new file mode 100644 index 0000000..3a65b17 --- /dev/null +++ b/dist/lib/Resizer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Resizer.js","sourceRoot":"","sources":["../../src/lib/Resizer.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;AAajB,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,aAAa,EAAgB,EAAE,EAAE;IAC1G,MAAM,eAAe,GAAG,WAAW,CAClC,CAAC,KAAuB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,KAAK,EAAE,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CACnC,CAAC,KAAuB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,KAAK,EAAE,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExD,OAAO,CACN,8BACC,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,OAAO,EAClB,KAAK,kBAAI,IAAI,EAAE,MAAM,IAAK,KAAK,GAC/B,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,GAC7B,CACF,CAAC;AACH,CAAC,CAAC,CAAC;AACH,eAAO,CAAC,WAAW,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/lib/SplitPane.d.ts b/dist/lib/SplitPane.d.ts new file mode 100644 index 0000000..f5c15b5 --- /dev/null +++ b/dist/lib/SplitPane.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +export interface SplitPaneProps { + split?: 'horizontal' | 'vertical'; + className?: string; + resizerClassName?: string; + resizerStyle?: { + [key: string]: string; + }; + children: React.ReactChild[]; + defaultSizes?: number[]; + minSize?: number | number[]; + onDragStarted?: () => void; + onChange?: (sizes: number[]) => void; + onDragFinished?: (sizes: number[]) => void; +} +export interface SplitPaneResizeOptions extends SplitPaneProps { + split: 'horizontal' | 'vertical'; + className: string; +} +export declare const SplitPane: React.MemoExoticComponent<(props: SplitPaneProps) => JSX.Element>; diff --git a/dist/lib/SplitPane.js b/dist/lib/SplitPane.js new file mode 100644 index 0000000..7414193 --- /dev/null +++ b/dist/lib/SplitPane.js @@ -0,0 +1,167 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SplitPane = void 0; +const React = require("react"); +const { useCallback, useRef, useState, useMemo, useEffect } = React; +const Pane_1 = require("./Pane"); +const Resizer_1 = require("./Resizer"); +const util_1 = require("./util"); +const DEFAULT_MIN_SIZE = 50; +function getNodeKey(node, index) { + if (typeof node === 'object' && node && node.key != null) { + return 'key.' + node.key; + } + return 'index.' + index; +} +function getMinSize(index, minSizes) { + if (typeof minSizes === 'number') { + if (minSizes > 0) { + return minSizes; + } + } + else if (minSizes instanceof Array) { + const value = minSizes[index]; + if (value > 0) { + return value; + } + } + return DEFAULT_MIN_SIZE; +} +function getDefaultSize(index, defaultSizes) { + if (defaultSizes) { + const value = defaultSizes[index]; + if (value >= 0) { + return value; + } + } + return 1; +} +function move(sizes, index, offset, minSizes) { + if (!offset || index < 0 || index + 1 >= sizes.length) { + return 0; + } + const firstMinSize = getMinSize(index, minSizes); + const secondMinSize = getMinSize(index + 1, minSizes); + const firstSize = sizes[index] + offset; + const secondSize = sizes[index + 1] - offset; + if (offset < 0 && firstSize < firstMinSize) { + // offset is negative, so missing and pushed are, too + const missing = firstSize - firstMinSize; + const pushed = move(sizes, index - 1, missing, minSizes); + offset -= missing - pushed; + } + else if (offset > 0 && secondSize < secondMinSize) { + const missing = secondMinSize - secondSize; + const pushed = move(sizes, index + 1, missing, minSizes); + offset -= missing - pushed; + } + sizes[index] += offset; + sizes[index + 1] -= offset; + return offset; +} +const defaultProps = { + split: 'vertical', + className: '', +}; +function useSplitPaneResize(options) { + const { children, split, defaultSizes, minSize: minSizes, onDragStarted, onChange, onDragFinished } = options; + const [sizes, setSizes] = useState(new Map()); + const paneRefs = useRef(new Map()); + const getMovedSizes = useCallback((dragState) => { + const collectedSizes = children.map((node, index) => sizes.get(getNodeKey(node, index)) || getDefaultSize(index, defaultSizes)); + if (dragState) { + const { offset, extraState: { index }, } = dragState; + move(collectedSizes, index, offset, minSizes); + } + return collectedSizes; + }, [children, defaultSizes, minSizes, sizes]); + const handleDragFinished = useCallback((dragState) => { + const movedSizes = getMovedSizes(dragState); + setSizes(new Map(children.map((node, index) => [ + getNodeKey(node, index), + movedSizes[index], + ]))); + if (onDragFinished) { + onDragFinished(movedSizes); + } + }, [children, getMovedSizes, onDragFinished]); + const [dragState, beginDrag] = (0, util_1.useDragState)(split, handleDragFinished); + const movedSizes = useMemo(() => getMovedSizes(dragState), [dragState, getMovedSizes]); + const resizeState = dragState ? dragState.extraState : null; + useEffect(() => { + if (onChange && dragState) { + onChange(movedSizes); + } + }, [dragState, movedSizes, onChange]); + const childPanes = useMemo(() => { + const prevPaneRefs = paneRefs.current; + paneRefs.current = new Map(); + return children.map((node, index) => { + const key = getNodeKey(node, index); + const ref = prevPaneRefs.get(key) || React.createRef(); + paneRefs.current.set(key, ref); + const minSize = getMinSize(index, minSizes); + return { key, node, ref, minSize }; + }); + }, [children, minSizes]); + const childPanesWithSizes = useMemo(() => childPanes.map((child, index) => { + const size = movedSizes[index]; + return Object.assign(Object.assign({}, child), { size }); + }), [childPanes, movedSizes]); + const handleDragStart = useCallback((index, pos) => { + const sizeAttr = split === 'vertical' ? 'width' : 'height'; + const clientSizes = new Map(childPanes.map(({ key, ref }) => { + const size = ref.current ? ref.current.getBoundingClientRect()[sizeAttr] : 0; + return [key, size]; + })); + if (onDragStarted) { + onDragStarted(); + } + beginDrag(pos, { index }); + setSizes(clientSizes); + }, [beginDrag, childPanes, onDragStarted, split]); + return { childPanes: childPanesWithSizes, resizeState, handleDragStart }; +} +exports.SplitPane = React.memo((props) => { + const options = Object.assign(Object.assign({}, defaultProps), props); + const { split, className, resizerClassName, resizerStyle } = options; + const { childPanes, resizeState, handleDragStart } = useSplitPaneResize(options); + const splitStyleProps = split === 'vertical' + ? { + left: 0, + right: 0, + flexDirection: 'row', + } + : { + bottom: 0, + top: 0, + flexDirection: 'column', + minHeight: '100%', + width: '100%', + }; + const style = Object.assign({ display: 'flex', flex: 1, height: '100%', position: 'absolute', outline: 'none', overflow: 'hidden' }, splitStyleProps); + const classes = ['SplitPane', split, className].join(' '); + const dragLayerStyle = { + position: 'absolute', + top: 0, + right: 0, + bottom: 0, + left: 0, + }; + const dragLayerClasses = ['DragLayer', split, resizeState ? 'resizing' : '', className].join(' '); + const entries = []; + childPanes.forEach(({ key, node, ref, size, minSize }, index) => { + if (index !== 0) { + const resizing = resizeState && resizeState.index === index - 1; + entries.push(React.createElement(Resizer_1.Resizer, { key: 'resizer.' + index, split: split, style: resizerStyle, className: className + + (resizing ? ' resizing' : '') + + (resizerClassName ? ` ${resizerClassName}` : ``), index: index - 1, onDragStarted: handleDragStart })); + } + entries.push(React.createElement(Pane_1.Pane, { key: 'pane.' + key, forwardRef: ref, size: size, minSize: minSize, split: split, className: className }, node)); + }); + return (React.createElement("div", { className: classes, style: style }, + React.createElement("div", { className: dragLayerClasses, style: dragLayerStyle }), + entries)); +}); +exports.SplitPane.displayName = 'SplitPane'; +//# sourceMappingURL=SplitPane.js.map \ No newline at end of file diff --git a/dist/lib/SplitPane.js.map b/dist/lib/SplitPane.js.map new file mode 100644 index 0000000..df53b03 --- /dev/null +++ b/dist/lib/SplitPane.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../src/lib/SplitPane.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/util.d.ts b/dist/lib/util.d.ts new file mode 100644 index 0000000..3c85c46 --- /dev/null +++ b/dist/lib/util.d.ts @@ -0,0 +1,10 @@ +export interface ClientPosition { + clientX: number; + clientY: number; +} +export declare function useEventListener(type: K, listener?: (this: Document, ev: DocumentEventMap[K]) => void): void; +export interface DragState { + offset: number; + extraState: T; +} +export declare function useDragState(split: 'horizontal' | 'vertical', onDragFinished: (dragState: DragState) => void): [DragState | null, (pos: ClientPosition, extraState: T) => void]; diff --git a/dist/lib/util.js b/dist/lib/util.js new file mode 100644 index 0000000..cd380cc --- /dev/null +++ b/dist/lib/util.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.useDragState = exports.useEventListener = void 0; +const React = require("react"); +const ReactDOM = require("react-dom"); +const { useCallback, useMemo, useState, useEffect } = React; +function useEventListener(type, listener) { + useEffect(() => { + if (!listener) + return; + document.addEventListener(type, listener); + return () => { + document.removeEventListener(type, listener); + }; + }, [type, listener]); +} +exports.useEventListener = useEventListener; +function useDragStateHandlers(split, onDragFinished) { + const [dragging, setDragging] = useState(null); + const [current, setCurrent] = useState(0); + const beginDrag = useCallback((event, extraState) => { + const pos = split === 'vertical' ? event.clientX : event.clientY; + setDragging([extraState, pos]); + setCurrent(pos); + }, [split]); + const [dragState, onMouseUp] = useMemo(() => { + if (!dragging) { + return [null, undefined]; + } + const [extraState, origin] = dragging; + const dragState = { offset: current - origin, extraState }; + const onMouseUp = () => { + ReactDOM.unstable_batchedUpdates(() => { + setDragging(null); + onDragFinished(dragState); + }); + }; + return [dragState, onMouseUp]; + }, [current, dragging, onDragFinished]); + const [onMouseMove, onTouchMove] = useMemo(() => { + if (!dragging) { + return [undefined, undefined]; + } + const onMouseMove = (event) => { + const pos = split === 'vertical' ? event.clientX : event.clientY; + setCurrent(pos); + }; + const onTouchMove = (event) => { + onMouseMove(event.touches[0]); + }; + return [onMouseMove, onTouchMove]; + }, [dragging, split]); + return { beginDrag, dragState, onMouseMove, onTouchMove, onMouseUp }; +} +function useDragState(split, onDragFinished) { + const { beginDrag, dragState, onMouseMove, onTouchMove, onMouseUp } = useDragStateHandlers(split, onDragFinished); + useEventListener('mousemove', onMouseMove); + useEventListener('touchmove', onTouchMove); + useEventListener('mouseup', onMouseUp); + return [dragState, beginDrag]; +} +exports.useDragState = useDragState; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/dist/lib/util.js.map b/dist/lib/util.js.map new file mode 100644 index 0000000..52ae40d --- /dev/null +++ b/dist/lib/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..42f7a3f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1681 @@ +{ + "name": "react-multi-split-pane", + "version": "0.3.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz", + "integrity": "sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", + "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", + "dev": true, + "requires": { + "@types/react": "^17" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz", + "integrity": "sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/type-utils": "5.27.1", + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.1.tgz", + "integrity": "sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", + "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz", + "integrity": "sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.27.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", + "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", + "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", + "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", + "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.27.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", + "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", + "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsx-ast-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", + "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "object.assign": "^4.1.2" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/src/lib/Resizer.tsx b/src/lib/Resizer.tsx index d1496af..6130a76 100644 --- a/src/lib/Resizer.tsx +++ b/src/lib/Resizer.tsx @@ -7,11 +7,12 @@ export interface ResizerProps { split: 'horizontal' | 'vertical'; className: string; index: number; + style?: { [key: string]: string }; onDragStarted: (index: number, pos: ClientPosition) => void; } -export const Resizer = React.memo(({ split, className, index, onDragStarted }: ResizerProps) => { +export const Resizer = React.memo(({ split, className, index, style = {}, onDragStarted }: ResizerProps) => { const handleMouseDown = useCallback( (event: React.MouseEvent) => { event.preventDefault(); @@ -36,7 +37,7 @@ export const Resizer = React.memo(({ split, className, index, onDragStarted }: R diff --git a/src/lib/SplitPane.tsx b/src/lib/SplitPane.tsx index 0f33381..4d435c8 100644 --- a/src/lib/SplitPane.tsx +++ b/src/lib/SplitPane.tsx @@ -11,6 +11,7 @@ export interface SplitPaneProps { split?: 'horizontal' | 'vertical'; className?: string; resizerClassName?: string; + resizerStyle?: { [key: string]: string }; children: React.ReactChild[]; @@ -217,7 +218,7 @@ function useSplitPaneResize(options: SplitPaneResizeOptions): { export const SplitPane = React.memo((props: SplitPaneProps) => { const options = { ...defaultProps, ...props }; - const { split, className, resizerClassName } = options; + const { split, className, resizerClassName, resizerStyle } = options; const { childPanes, resizeState, handleDragStart } = useSplitPaneResize(options); @@ -266,6 +267,7 @@ export const SplitPane = React.memo((props: SplitPaneProps) => { Date: Fri, 10 Jun 2022 17:41:07 +0800 Subject: [PATCH 2/3] Changed type of resizerStyle to React.CSSProperties, removed dist --- .gitignore | 1 + dist/index.d.ts | 1 - dist/index.js | 6 -- dist/index.js.map | 1 - dist/lib/Pane.d.ts | 10 --- dist/lib/Pane.js | 29 ------- dist/lib/Pane.js.map | 1 - dist/lib/Resizer.d.ts | 12 --- dist/lib/Resizer.js | 19 ----- dist/lib/Resizer.js.map | 1 - dist/lib/SplitPane.d.ts | 20 ----- dist/lib/SplitPane.js | 167 -------------------------------------- dist/lib/SplitPane.js.map | 1 - dist/lib/util.d.ts | 10 --- dist/lib/util.js | 63 -------------- dist/lib/util.js.map | 1 - src/lib/Resizer.tsx | 2 +- src/lib/SplitPane.tsx | 2 +- 18 files changed, 3 insertions(+), 344 deletions(-) delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 dist/lib/Pane.d.ts delete mode 100644 dist/lib/Pane.js delete mode 100644 dist/lib/Pane.js.map delete mode 100644 dist/lib/Resizer.d.ts delete mode 100644 dist/lib/Resizer.js delete mode 100644 dist/lib/Resizer.js.map delete mode 100644 dist/lib/SplitPane.d.ts delete mode 100644 dist/lib/SplitPane.js delete mode 100644 dist/lib/SplitPane.js.map delete mode 100644 dist/lib/util.d.ts delete mode 100644 dist/lib/util.js delete mode 100644 dist/lib/util.js.map diff --git a/.gitignore b/.gitignore index bbc8507..c17bd73 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ node_modules lcov.info .DS_Store +dist build diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index ae47cd5..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { SplitPane, SplitPaneProps } from './lib/SplitPane'; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 1fa52ca..0000000 --- a/dist/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SplitPane = void 0; -var SplitPane_1 = require("./lib/SplitPane"); -Object.defineProperty(exports, "SplitPane", { enumerable: true, get: function () { return SplitPane_1.SplitPane; } }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 1f7cb30..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4D;AAAnD,sGAAA,SAAS,OAAA"} \ No newline at end of file diff --git a/dist/lib/Pane.d.ts b/dist/lib/Pane.d.ts deleted file mode 100644 index 2d72f48..0000000 --- a/dist/lib/Pane.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as React from 'react'; -export interface PaneProps { - size: number; - minSize: number; - split: 'horizontal' | 'vertical'; - className: string; - forwardRef: React.Ref; - children: React.ReactNode; -} -export declare const Pane: React.MemoExoticComponent<({ size, minSize, split, className, forwardRef, children }: PaneProps) => JSX.Element>; diff --git a/dist/lib/Pane.js b/dist/lib/Pane.js deleted file mode 100644 index 81d96b6..0000000 --- a/dist/lib/Pane.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Pane = void 0; -const React = require("react"); -const baseStyle = { - position: 'relative', - outline: 'none', - border: 0, - overflow: 'hidden', - display: 'flex', - flexBasis: 'auto', -}; -exports.Pane = React.memo(({ size, minSize, split, className, forwardRef, children }) => { - const style = Object.assign(Object.assign({}, baseStyle), { flexGrow: size, flexShrink: size }); - if (split === 'vertical') { - style.width = 0; - style.height = '100%'; - style.minWidth = minSize; - } - else { - style.width = '100%'; - style.height = 0; - style.minHeight = minSize; - } - const classes = ['Pane', split, className].join(' '); - return (React.createElement("div", { className: classes, style: style, ref: forwardRef }, children)); -}); -exports.Pane.displayName = 'Pane'; -//# sourceMappingURL=Pane.js.map \ No newline at end of file diff --git a/dist/lib/Pane.js.map b/dist/lib/Pane.js.map deleted file mode 100644 index f383ff3..0000000 --- a/dist/lib/Pane.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Pane.js","sourceRoot":"","sources":["../../src/lib/Pane.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAc/B,MAAM,SAAS,GAAwB;IACtC,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;CACjB,CAAC;AAEW,QAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAa,EAAE,EAAE;IACvG,MAAM,KAAK,mCACP,SAAS,KACZ,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,IAAI,GAChB,CAAC;IAEF,IAAI,KAAK,KAAK,UAAU,EAAE;QACzB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;SAAM;QACN,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACrB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;KAC1B;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErD,OAAO,CACN,6BAAK,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,IACpD,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC,CAAC;AACH,YAAI,CAAC,WAAW,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/dist/lib/Resizer.d.ts b/dist/lib/Resizer.d.ts deleted file mode 100644 index 23d29ee..0000000 --- a/dist/lib/Resizer.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as React from 'react'; -import { ClientPosition } from './util'; -export interface ResizerProps { - split: 'horizontal' | 'vertical'; - className: string; - index: number; - style?: { - [key: string]: string; - }; - onDragStarted: (index: number, pos: ClientPosition) => void; -} -export declare const Resizer: React.MemoExoticComponent<({ split, className, index, style, onDragStarted }: ResizerProps) => JSX.Element>; diff --git a/dist/lib/Resizer.js b/dist/lib/Resizer.js deleted file mode 100644 index 368c631..0000000 --- a/dist/lib/Resizer.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Resizer = void 0; -const React = require("react"); -const { useCallback } = React; -exports.Resizer = React.memo(({ split, className, index, style = {}, onDragStarted }) => { - const handleMouseDown = useCallback((event) => { - event.preventDefault(); - onDragStarted(index, event); - }, [index, onDragStarted]); - const handleTouchStart = useCallback((event) => { - event.preventDefault(); - onDragStarted(index, event.touches[0]); - }, [index, onDragStarted]); - const classes = ['Resizer', split, className].join(' '); - return (React.createElement("span", { role: 'presentation', className: classes, style: Object.assign({ flex: 'none' }, style), onMouseDown: handleMouseDown, onTouchStart: handleTouchStart })); -}); -exports.Resizer.displayName = 'Resizer'; -//# sourceMappingURL=Resizer.js.map \ No newline at end of file diff --git a/dist/lib/Resizer.js.map b/dist/lib/Resizer.js.map deleted file mode 100644 index 3a65b17..0000000 --- a/dist/lib/Resizer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Resizer.js","sourceRoot":"","sources":["../../src/lib/Resizer.tsx"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;AAajB,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,aAAa,EAAgB,EAAE,EAAE;IAC1G,MAAM,eAAe,GAAG,WAAW,CAClC,CAAC,KAAuB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,KAAK,EAAE,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CACnC,CAAC,KAAuB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,KAAK,EAAE,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExD,OAAO,CACN,8BACC,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,OAAO,EAClB,KAAK,kBAAI,IAAI,EAAE,MAAM,IAAK,KAAK,GAC/B,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,GAC7B,CACF,CAAC;AACH,CAAC,CAAC,CAAC;AACH,eAAO,CAAC,WAAW,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/lib/SplitPane.d.ts b/dist/lib/SplitPane.d.ts deleted file mode 100644 index f5c15b5..0000000 --- a/dist/lib/SplitPane.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react'; -export interface SplitPaneProps { - split?: 'horizontal' | 'vertical'; - className?: string; - resizerClassName?: string; - resizerStyle?: { - [key: string]: string; - }; - children: React.ReactChild[]; - defaultSizes?: number[]; - minSize?: number | number[]; - onDragStarted?: () => void; - onChange?: (sizes: number[]) => void; - onDragFinished?: (sizes: number[]) => void; -} -export interface SplitPaneResizeOptions extends SplitPaneProps { - split: 'horizontal' | 'vertical'; - className: string; -} -export declare const SplitPane: React.MemoExoticComponent<(props: SplitPaneProps) => JSX.Element>; diff --git a/dist/lib/SplitPane.js b/dist/lib/SplitPane.js deleted file mode 100644 index 7414193..0000000 --- a/dist/lib/SplitPane.js +++ /dev/null @@ -1,167 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SplitPane = void 0; -const React = require("react"); -const { useCallback, useRef, useState, useMemo, useEffect } = React; -const Pane_1 = require("./Pane"); -const Resizer_1 = require("./Resizer"); -const util_1 = require("./util"); -const DEFAULT_MIN_SIZE = 50; -function getNodeKey(node, index) { - if (typeof node === 'object' && node && node.key != null) { - return 'key.' + node.key; - } - return 'index.' + index; -} -function getMinSize(index, minSizes) { - if (typeof minSizes === 'number') { - if (minSizes > 0) { - return minSizes; - } - } - else if (minSizes instanceof Array) { - const value = minSizes[index]; - if (value > 0) { - return value; - } - } - return DEFAULT_MIN_SIZE; -} -function getDefaultSize(index, defaultSizes) { - if (defaultSizes) { - const value = defaultSizes[index]; - if (value >= 0) { - return value; - } - } - return 1; -} -function move(sizes, index, offset, minSizes) { - if (!offset || index < 0 || index + 1 >= sizes.length) { - return 0; - } - const firstMinSize = getMinSize(index, minSizes); - const secondMinSize = getMinSize(index + 1, minSizes); - const firstSize = sizes[index] + offset; - const secondSize = sizes[index + 1] - offset; - if (offset < 0 && firstSize < firstMinSize) { - // offset is negative, so missing and pushed are, too - const missing = firstSize - firstMinSize; - const pushed = move(sizes, index - 1, missing, minSizes); - offset -= missing - pushed; - } - else if (offset > 0 && secondSize < secondMinSize) { - const missing = secondMinSize - secondSize; - const pushed = move(sizes, index + 1, missing, minSizes); - offset -= missing - pushed; - } - sizes[index] += offset; - sizes[index + 1] -= offset; - return offset; -} -const defaultProps = { - split: 'vertical', - className: '', -}; -function useSplitPaneResize(options) { - const { children, split, defaultSizes, minSize: minSizes, onDragStarted, onChange, onDragFinished } = options; - const [sizes, setSizes] = useState(new Map()); - const paneRefs = useRef(new Map()); - const getMovedSizes = useCallback((dragState) => { - const collectedSizes = children.map((node, index) => sizes.get(getNodeKey(node, index)) || getDefaultSize(index, defaultSizes)); - if (dragState) { - const { offset, extraState: { index }, } = dragState; - move(collectedSizes, index, offset, minSizes); - } - return collectedSizes; - }, [children, defaultSizes, minSizes, sizes]); - const handleDragFinished = useCallback((dragState) => { - const movedSizes = getMovedSizes(dragState); - setSizes(new Map(children.map((node, index) => [ - getNodeKey(node, index), - movedSizes[index], - ]))); - if (onDragFinished) { - onDragFinished(movedSizes); - } - }, [children, getMovedSizes, onDragFinished]); - const [dragState, beginDrag] = (0, util_1.useDragState)(split, handleDragFinished); - const movedSizes = useMemo(() => getMovedSizes(dragState), [dragState, getMovedSizes]); - const resizeState = dragState ? dragState.extraState : null; - useEffect(() => { - if (onChange && dragState) { - onChange(movedSizes); - } - }, [dragState, movedSizes, onChange]); - const childPanes = useMemo(() => { - const prevPaneRefs = paneRefs.current; - paneRefs.current = new Map(); - return children.map((node, index) => { - const key = getNodeKey(node, index); - const ref = prevPaneRefs.get(key) || React.createRef(); - paneRefs.current.set(key, ref); - const minSize = getMinSize(index, minSizes); - return { key, node, ref, minSize }; - }); - }, [children, minSizes]); - const childPanesWithSizes = useMemo(() => childPanes.map((child, index) => { - const size = movedSizes[index]; - return Object.assign(Object.assign({}, child), { size }); - }), [childPanes, movedSizes]); - const handleDragStart = useCallback((index, pos) => { - const sizeAttr = split === 'vertical' ? 'width' : 'height'; - const clientSizes = new Map(childPanes.map(({ key, ref }) => { - const size = ref.current ? ref.current.getBoundingClientRect()[sizeAttr] : 0; - return [key, size]; - })); - if (onDragStarted) { - onDragStarted(); - } - beginDrag(pos, { index }); - setSizes(clientSizes); - }, [beginDrag, childPanes, onDragStarted, split]); - return { childPanes: childPanesWithSizes, resizeState, handleDragStart }; -} -exports.SplitPane = React.memo((props) => { - const options = Object.assign(Object.assign({}, defaultProps), props); - const { split, className, resizerClassName, resizerStyle } = options; - const { childPanes, resizeState, handleDragStart } = useSplitPaneResize(options); - const splitStyleProps = split === 'vertical' - ? { - left: 0, - right: 0, - flexDirection: 'row', - } - : { - bottom: 0, - top: 0, - flexDirection: 'column', - minHeight: '100%', - width: '100%', - }; - const style = Object.assign({ display: 'flex', flex: 1, height: '100%', position: 'absolute', outline: 'none', overflow: 'hidden' }, splitStyleProps); - const classes = ['SplitPane', split, className].join(' '); - const dragLayerStyle = { - position: 'absolute', - top: 0, - right: 0, - bottom: 0, - left: 0, - }; - const dragLayerClasses = ['DragLayer', split, resizeState ? 'resizing' : '', className].join(' '); - const entries = []; - childPanes.forEach(({ key, node, ref, size, minSize }, index) => { - if (index !== 0) { - const resizing = resizeState && resizeState.index === index - 1; - entries.push(React.createElement(Resizer_1.Resizer, { key: 'resizer.' + index, split: split, style: resizerStyle, className: className + - (resizing ? ' resizing' : '') + - (resizerClassName ? ` ${resizerClassName}` : ``), index: index - 1, onDragStarted: handleDragStart })); - } - entries.push(React.createElement(Pane_1.Pane, { key: 'pane.' + key, forwardRef: ref, size: size, minSize: minSize, split: split, className: className }, node)); - }); - return (React.createElement("div", { className: classes, style: style }, - React.createElement("div", { className: dragLayerClasses, style: dragLayerStyle }), - entries)); -}); -exports.SplitPane.displayName = 'SplitPane'; -//# sourceMappingURL=SplitPane.js.map \ No newline at end of file diff --git a/dist/lib/SplitPane.js.map b/dist/lib/SplitPane.js.map deleted file mode 100644 index df53b03..0000000 --- a/dist/lib/SplitPane.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../src/lib/SplitPane.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/util.d.ts b/dist/lib/util.d.ts deleted file mode 100644 index 3c85c46..0000000 --- a/dist/lib/util.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ClientPosition { - clientX: number; - clientY: number; -} -export declare function useEventListener(type: K, listener?: (this: Document, ev: DocumentEventMap[K]) => void): void; -export interface DragState { - offset: number; - extraState: T; -} -export declare function useDragState(split: 'horizontal' | 'vertical', onDragFinished: (dragState: DragState) => void): [DragState | null, (pos: ClientPosition, extraState: T) => void]; diff --git a/dist/lib/util.js b/dist/lib/util.js deleted file mode 100644 index cd380cc..0000000 --- a/dist/lib/util.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.useDragState = exports.useEventListener = void 0; -const React = require("react"); -const ReactDOM = require("react-dom"); -const { useCallback, useMemo, useState, useEffect } = React; -function useEventListener(type, listener) { - useEffect(() => { - if (!listener) - return; - document.addEventListener(type, listener); - return () => { - document.removeEventListener(type, listener); - }; - }, [type, listener]); -} -exports.useEventListener = useEventListener; -function useDragStateHandlers(split, onDragFinished) { - const [dragging, setDragging] = useState(null); - const [current, setCurrent] = useState(0); - const beginDrag = useCallback((event, extraState) => { - const pos = split === 'vertical' ? event.clientX : event.clientY; - setDragging([extraState, pos]); - setCurrent(pos); - }, [split]); - const [dragState, onMouseUp] = useMemo(() => { - if (!dragging) { - return [null, undefined]; - } - const [extraState, origin] = dragging; - const dragState = { offset: current - origin, extraState }; - const onMouseUp = () => { - ReactDOM.unstable_batchedUpdates(() => { - setDragging(null); - onDragFinished(dragState); - }); - }; - return [dragState, onMouseUp]; - }, [current, dragging, onDragFinished]); - const [onMouseMove, onTouchMove] = useMemo(() => { - if (!dragging) { - return [undefined, undefined]; - } - const onMouseMove = (event) => { - const pos = split === 'vertical' ? event.clientX : event.clientY; - setCurrent(pos); - }; - const onTouchMove = (event) => { - onMouseMove(event.touches[0]); - }; - return [onMouseMove, onTouchMove]; - }, [dragging, split]); - return { beginDrag, dragState, onMouseMove, onTouchMove, onMouseUp }; -} -function useDragState(split, onDragFinished) { - const { beginDrag, dragState, onMouseMove, onTouchMove, onMouseUp } = useDragStateHandlers(split, onDragFinished); - useEventListener('mousemove', onMouseMove); - useEventListener('touchmove', onTouchMove); - useEventListener('mouseup', onMouseUp); - return [dragState, beginDrag]; -} -exports.useDragState = useDragState; -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/dist/lib/util.js.map b/dist/lib/util.js.map deleted file mode 100644 index 52ae40d..0000000 --- a/dist/lib/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/lib/Resizer.tsx b/src/lib/Resizer.tsx index 6130a76..7997f42 100644 --- a/src/lib/Resizer.tsx +++ b/src/lib/Resizer.tsx @@ -7,7 +7,7 @@ export interface ResizerProps { split: 'horizontal' | 'vertical'; className: string; index: number; - style?: { [key: string]: string }; + style?: React.CSSProperties; onDragStarted: (index: number, pos: ClientPosition) => void; } diff --git a/src/lib/SplitPane.tsx b/src/lib/SplitPane.tsx index 4d435c8..37b2c06 100644 --- a/src/lib/SplitPane.tsx +++ b/src/lib/SplitPane.tsx @@ -11,7 +11,7 @@ export interface SplitPaneProps { split?: 'horizontal' | 'vertical'; className?: string; resizerClassName?: string; - resizerStyle?: { [key: string]: string }; + resizerStyle?: React.CSSProperties; children: React.ReactChild[]; From 2510883c6d63987e1af7b56f3127b7122fb8df36 Mon Sep 17 00:00:00 2001 From: Carl Voller Date: Fri, 10 Jun 2022 17:44:56 +0800 Subject: [PATCH 3/3] Updated README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 419b05f..bae6f8d 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,9 @@ SplitPane. For a class name `custom`, the individual elements can be selected as Additional CSS class name that is appied only to the resizer rendered by the SplitPane. +### resizerStyle: React.CSSProperties +Additional CSS styles to be applied to the resizer rendered by the SplitPane. + ### onDragStarted: () => void This callback is invoked when a drag starts.