inital commit

This commit is contained in:
2026-01-01 15:25:19 +05:30
commit f0ae49465a
36361 changed files with 4894111 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
interface Options {
enterDelay?: number;
exitDelay?: number;
onUnmount?: () => void;
}
/**
* Useful to perform CSS transitions on React components without
* using libraries like Framer Motion. This hook will defer the
* unmount of a React component until after a delay.
*
* @param active - Whether the component should be rendered
* @param options - Options for the delayed render
* @param options.enterDelay - Delay before rendering the component
* @param options.exitDelay - Delay before unmounting the component
*
* const Modal = ({ active }) => {
* const { mounted, rendered } = useDelayedRender(active, {
* exitDelay: 2000,
* })
*
* if (!mounted) return null
*
* return (
* <Portal>
* <div className={rendered ? 'modal visible' : 'modal'}>...</div>
* </Portal>
* )
*}
*
* */
export declare function useDelayedRender(active?: boolean, options?: Options): {
mounted: boolean;
rendered: boolean;
};
export {};

View File

@@ -0,0 +1,69 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useDelayedRender", {
enumerable: true,
get: function() {
return useDelayedRender;
}
});
const _react = require("react");
function useDelayedRender(active, options) {
if (active === void 0) active = false;
if (options === void 0) options = {};
const [mounted, setMounted] = (0, _react.useState)(active);
const [rendered, setRendered] = (0, _react.useState)(false);
const renderTimerRef = (0, _react.useRef)(null);
const unmountTimerRef = (0, _react.useRef)(null);
const clearTimers = (0, _react.useCallback)(()=>{
if (renderTimerRef.current !== null) {
window.clearTimeout(renderTimerRef.current);
renderTimerRef.current = null;
}
if (unmountTimerRef.current !== null) {
window.clearTimeout(unmountTimerRef.current);
unmountTimerRef.current = null;
}
}, []);
(0, _react.useEffect)(()=>{
const { enterDelay = 1, exitDelay = 0 } = options;
clearTimers();
if (active) {
setMounted(true);
if (enterDelay <= 0) {
setRendered(true);
} else {
renderTimerRef.current = window.setTimeout(()=>{
setRendered(true);
}, enterDelay);
}
} else {
setRendered(false);
if (exitDelay <= 0) {
setMounted(false);
} else {
unmountTimerRef.current = window.setTimeout(()=>{
setMounted(false);
}, exitDelay);
}
}
return clearTimers;
}, [
active,
options,
clearTimers
]);
return {
mounted,
rendered
};
}
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
//# sourceMappingURL=use-delayed-render.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/ui/hooks/use-delayed-render.ts"],"sourcesContent":["import { useState, useRef, useCallback, useEffect } from 'react'\n\ninterface Options {\n enterDelay?: number\n exitDelay?: number\n onUnmount?: () => void\n}\n\n/**\n * Useful to perform CSS transitions on React components without\n * using libraries like Framer Motion. This hook will defer the\n * unmount of a React component until after a delay.\n *\n * @param active - Whether the component should be rendered\n * @param options - Options for the delayed render\n * @param options.enterDelay - Delay before rendering the component\n * @param options.exitDelay - Delay before unmounting the component\n *\n * const Modal = ({ active }) => {\n * const { mounted, rendered } = useDelayedRender(active, {\n * exitDelay: 2000,\n * })\n *\n * if (!mounted) return null\n *\n * return (\n * <Portal>\n * <div className={rendered ? 'modal visible' : 'modal'}>...</div>\n * </Portal>\n * )\n *}\n *\n * */\nexport function useDelayedRender(active = false, options: Options = {}) {\n const [mounted, setMounted] = useState(active)\n const [rendered, setRendered] = useState(false)\n const renderTimerRef = useRef<number | null>(null)\n const unmountTimerRef = useRef<number | null>(null)\n\n const clearTimers = useCallback(() => {\n if (renderTimerRef.current !== null) {\n window.clearTimeout(renderTimerRef.current)\n renderTimerRef.current = null\n }\n if (unmountTimerRef.current !== null) {\n window.clearTimeout(unmountTimerRef.current)\n unmountTimerRef.current = null\n }\n }, [])\n\n useEffect(() => {\n const { enterDelay = 1, exitDelay = 0 } = options\n\n clearTimers()\n\n if (active) {\n setMounted(true)\n if (enterDelay <= 0) {\n setRendered(true)\n } else {\n renderTimerRef.current = window.setTimeout(() => {\n setRendered(true)\n }, enterDelay)\n }\n } else {\n setRendered(false)\n if (exitDelay <= 0) {\n setMounted(false)\n } else {\n unmountTimerRef.current = window.setTimeout(() => {\n setMounted(false)\n }, exitDelay)\n }\n }\n\n return clearTimers\n }, [active, options, clearTimers])\n\n return { mounted, rendered }\n}\n"],"names":["useDelayedRender","active","options","mounted","setMounted","useState","rendered","setRendered","renderTimerRef","useRef","unmountTimerRef","clearTimers","useCallback","current","window","clearTimeout","useEffect","enterDelay","exitDelay","setTimeout"],"mappings":";;;;+BAiCgBA;;;eAAAA;;;uBAjCyC;AAiClD,SAASA,iBAAiBC,MAAc,EAAEC,OAAqB;IAArCD,IAAAA,mBAAAA,SAAS;IAAOC,IAAAA,oBAAAA,UAAmB,CAAC;IACnE,MAAM,CAACC,SAASC,WAAW,GAAGC,IAAAA,eAAQ,EAACJ;IACvC,MAAM,CAACK,UAAUC,YAAY,GAAGF,IAAAA,eAAQ,EAAC;IACzC,MAAMG,iBAAiBC,IAAAA,aAAM,EAAgB;IAC7C,MAAMC,kBAAkBD,IAAAA,aAAM,EAAgB;IAE9C,MAAME,cAAcC,IAAAA,kBAAW,EAAC;QAC9B,IAAIJ,eAAeK,OAAO,KAAK,MAAM;YACnCC,OAAOC,YAAY,CAACP,eAAeK,OAAO;YAC1CL,eAAeK,OAAO,GAAG;QAC3B;QACA,IAAIH,gBAAgBG,OAAO,KAAK,MAAM;YACpCC,OAAOC,YAAY,CAACL,gBAAgBG,OAAO;YAC3CH,gBAAgBG,OAAO,GAAG;QAC5B;IACF,GAAG,EAAE;IAELG,IAAAA,gBAAS,EAAC;QACR,MAAM,EAAEC,aAAa,CAAC,EAAEC,YAAY,CAAC,EAAE,GAAGhB;QAE1CS;QAEA,IAAIV,QAAQ;YACVG,WAAW;YACX,IAAIa,cAAc,GAAG;gBACnBV,YAAY;YACd,OAAO;gBACLC,eAAeK,OAAO,GAAGC,OAAOK,UAAU,CAAC;oBACzCZ,YAAY;gBACd,GAAGU;YACL;QACF,OAAO;YACLV,YAAY;YACZ,IAAIW,aAAa,GAAG;gBAClBd,WAAW;YACb,OAAO;gBACLM,gBAAgBG,OAAO,GAAGC,OAAOK,UAAU,CAAC;oBAC1Cf,WAAW;gBACb,GAAGc;YACL;QACF;QAEA,OAAOP;IACT,GAAG;QAACV;QAAQC;QAASS;KAAY;IAEjC,OAAO;QAAER;QAASG;IAAS;AAC7B"}

View File

@@ -0,0 +1 @@
export declare function useMeasureHeight(ref: React.RefObject<HTMLDivElement | null>): [number, boolean];

View File

@@ -0,0 +1,48 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useMeasureHeight", {
enumerable: true,
get: function() {
return useMeasureHeight;
}
});
const _react = require("react");
function useMeasureHeight(ref) {
const [pristine, setPristine] = (0, _react.useState)(true);
const [height, setHeight] = (0, _react.useState)(0);
(0, _react.useEffect)(()=>{
const el = ref.current;
if (!el) {
return;
}
const observer = new ResizeObserver(()=>{
const { height: h } = el.getBoundingClientRect();
setHeight((prevHeight)=>{
if (prevHeight !== 0) {
setPristine(false);
}
return h;
});
});
observer.observe(el);
return ()=>{
observer.disconnect();
setPristine(true);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return [
height,
pristine
];
}
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
//# sourceMappingURL=use-measure-height.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/ui/hooks/use-measure-height.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport function useMeasureHeight(\n ref: React.RefObject<HTMLDivElement | null>\n): [number, boolean] {\n const [pristine, setPristine] = useState<boolean>(true)\n const [height, setHeight] = useState<number>(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n const { height: h } = el.getBoundingClientRect()\n setHeight((prevHeight) => {\n if (prevHeight !== 0) {\n setPristine(false)\n }\n return h\n })\n })\n\n observer.observe(el)\n return () => {\n observer.disconnect()\n setPristine(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return [height, pristine]\n}\n"],"names":["useMeasureHeight","ref","pristine","setPristine","useState","height","setHeight","useEffect","el","current","observer","ResizeObserver","h","getBoundingClientRect","prevHeight","observe","disconnect"],"mappings":";;;;+BAEgBA;;;eAAAA;;;uBAFoB;AAE7B,SAASA,iBACdC,GAA2C;IAE3C,MAAM,CAACC,UAAUC,YAAY,GAAGC,IAAAA,eAAQ,EAAU;IAClD,MAAM,CAACC,QAAQC,UAAU,GAAGF,IAAAA,eAAQ,EAAS;IAE7CG,IAAAA,gBAAS,EAAC;QACR,MAAMC,KAAKP,IAAIQ,OAAO;QAEtB,IAAI,CAACD,IAAI;YACP;QACF;QAEA,MAAME,WAAW,IAAIC,eAAe;YAClC,MAAM,EAAEN,QAAQO,CAAC,EAAE,GAAGJ,GAAGK,qBAAqB;YAC9CP,UAAU,CAACQ;gBACT,IAAIA,eAAe,GAAG;oBACpBX,YAAY;gBACd;gBACA,OAAOS;YACT;QACF;QAEAF,SAASK,OAAO,CAACP;QACjB,OAAO;YACLE,SAASM,UAAU;YACnBb,YAAY;QACd;IACA,uDAAuD;IACzD,GAAG,EAAE;IAEL,OAAO;QAACE;QAAQH;KAAS;AAC3B"}

View File

@@ -0,0 +1 @@
export declare function useOnClickOutside(el: Node | null, cssSelectorsToExclude: string[], handler: ((e: MouseEvent | TouchEvent) => void) | undefined): void;

View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useOnClickOutside", {
enumerable: true,
get: function() {
return useOnClickOutside;
}
});
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
function useOnClickOutside(el, cssSelectorsToExclude, handler) {
_react.useEffect(()=>{
if (el == null || handler == null) {
return;
}
const listener = (e)=>{
// Do nothing if clicking ref's element or descendent elements
if (!el || el.contains(e.target)) {
return;
}
if (// Do nothing if clicking on an element that is excluded by the CSS selector(s)
cssSelectorsToExclude.some((cssSelector)=>e.target.closest(cssSelector))) {
return;
}
handler(e);
};
const root = el.getRootNode();
root.addEventListener('mouseup', listener);
root.addEventListener('touchend', listener, {
passive: false
});
return function() {
root.removeEventListener('mouseup', listener);
root.removeEventListener('touchend', listener);
};
}, [
handler,
el,
cssSelectorsToExclude
]);
}
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
//# sourceMappingURL=use-on-click-outside.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/ui/hooks/use-on-click-outside.ts"],"sourcesContent":["import * as React from 'react'\n\nexport function useOnClickOutside(\n el: Node | null,\n cssSelectorsToExclude: string[],\n handler: ((e: MouseEvent | TouchEvent) => void) | undefined\n) {\n React.useEffect(() => {\n if (el == null || handler == null) {\n return\n }\n\n const listener = (e: MouseEvent | TouchEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(e.target as Element)) {\n return\n }\n\n if (\n // Do nothing if clicking on an element that is excluded by the CSS selector(s)\n cssSelectorsToExclude.some((cssSelector) =>\n (e.target as Element).closest(cssSelector)\n )\n ) {\n return\n }\n\n handler(e)\n }\n\n const root = el.getRootNode()\n root.addEventListener('mouseup', listener as EventListener)\n root.addEventListener('touchend', listener as EventListener, {\n passive: false,\n })\n return function () {\n root.removeEventListener('mouseup', listener as EventListener)\n root.removeEventListener('touchend', listener as EventListener)\n }\n }, [handler, el, cssSelectorsToExclude])\n}\n"],"names":["useOnClickOutside","el","cssSelectorsToExclude","handler","React","useEffect","listener","e","contains","target","some","cssSelector","closest","root","getRootNode","addEventListener","passive","removeEventListener"],"mappings":";;;;+BAEgBA;;;eAAAA;;;;iEAFO;AAEhB,SAASA,kBACdC,EAAe,EACfC,qBAA+B,EAC/BC,OAA2D;IAE3DC,OAAMC,SAAS,CAAC;QACd,IAAIJ,MAAM,QAAQE,WAAW,MAAM;YACjC;QACF;QAEA,MAAMG,WAAW,CAACC;YAChB,8DAA8D;YAC9D,IAAI,CAACN,MAAMA,GAAGO,QAAQ,CAACD,EAAEE,MAAM,GAAc;gBAC3C;YACF;YAEA,IACE,+EAA+E;YAC/EP,sBAAsBQ,IAAI,CAAC,CAACC,cAC1B,AAACJ,EAAEE,MAAM,CAAaG,OAAO,CAACD,eAEhC;gBACA;YACF;YAEAR,QAAQI;QACV;QAEA,MAAMM,OAAOZ,GAAGa,WAAW;QAC3BD,KAAKE,gBAAgB,CAAC,WAAWT;QACjCO,KAAKE,gBAAgB,CAAC,YAAYT,UAA2B;YAC3DU,SAAS;QACX;QACA,OAAO;YACLH,KAAKI,mBAAmB,CAAC,WAAWX;YACpCO,KAAKI,mBAAmB,CAAC,YAAYX;QACvC;IACF,GAAG;QAACH;QAASF;QAAIC;KAAsB;AACzC"}