react-dev-insight 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/overlay/RenderBadge.tsx","../src/overlay/HighlightBox.tsx","../src/overlay/useDraggable.ts","../src/overlay/Dashboard.tsx","../src/overlay/FloatingToggle.tsx","../src/overlay/OverlayRoot.tsx"],"names":["React","useState","useEffect","useRef","subscribeToReRenders","useMemo","createPortal"],"mappings":"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","file":"chunk-JOBOK6JI.js","sourcesContent":["import React from \"react\";\n\ninterface RenderBadgeProps {\n count: number;\n}\n\nexport const RenderBadge: React.FC<RenderBadgeProps> = ({ count }) => {\n return (\n <div\n style={{\n position: \"absolute\",\n top: -10,\n right: -10,\n backgroundColor: \"rgba(10, 10, 10, 0.75)\",\n backdropFilter: \"blur(12px)\",\n WebkitBackdropFilter: \"blur(12px)\",\n border: \"1px solid rgba(255, 255, 255, 0.12)\",\n borderRadius: \"10px\",\n padding: \"2px 8px\",\n color: \"#f1f5f9\",\n fontSize: \"11px\",\n fontWeight: 600,\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.3)\",\n zIndex: 1000001,\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minWidth: \"16px\",\n }}\n >\n <span style={{ textShadow: \"0 0 8px rgba(255,255,255,0.3)\" }}>\n {count}\n </span>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { RenderBadge } from \"./RenderBadge\";\nimport { RenderCause } from \"../core/renderStore\";\n\nexport interface HighlightBoxProps {\n rect: DOMRect;\n count: number;\n changedProps: string[];\n name: string;\n cause: RenderCause;\n isFrequent: boolean;\n showHighlight?: boolean;\n showBadge?: boolean;\n}\n\nexport const HighlightBox: React.FC<HighlightBoxProps> = ({\n rect,\n count,\n changedProps,\n name,\n cause,\n isFrequent,\n showHighlight = true,\n showBadge = true,\n}) => {\n const [visible, setVisible] = useState(true);\n\n useEffect(() => {\n setVisible(true);\n const timer = setTimeout(() => {\n setVisible(false);\n }, 1200); // 1.2s fade out\n return () => clearTimeout(timer);\n }, [count]);\n\n if (!visible) return null;\n if (!showHighlight && !showBadge) return null;\n\n // Minimal aesthetic colors (Subtle cyan vs muted red)\n const borderColor = isFrequent\n ? \"rgba(248, 113, 113, 0.4)\" // Red-400\n : \"rgba(45, 212, 191, 0.4)\"; // Teal-400\n\n const glowColor = isFrequent\n ? \"rgba(248, 113, 113, 0.15)\"\n : \"rgba(45, 212, 191, 0.15)\";\n\n return (\n <div\n style={{\n position: \"absolute\",\n top: rect.top + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n height: rect.height,\n pointerEvents: \"none\",\n zIndex: 1000000,\n border: showHighlight ? `1px solid ${borderColor}` : \"none\",\n borderRadius: \"4px\",\n boxShadow: showHighlight\n ? `0 0 12px ${glowColor}, inset 0 0 8px ${glowColor}`\n : \"none\",\n background: showHighlight ? \"rgba(255, 255, 255, 0.02)\" : \"transparent\",\n transition: \"opacity 0.2s ease-out\",\n animation: showHighlight\n ? \"react-dev-insight-pulse 0.4s cubic-bezier(0.16, 1, 0.3, 1)\"\n : \"none\",\n }}\n >\n {showBadge && <RenderBadge count={count} />}\n\n {showHighlight && (\n <div\n style={{\n position: \"absolute\",\n top: \"100%\",\n marginTop: \"6px\",\n left: 0,\n background: \"rgba(10, 10, 10, 0.85)\",\n backdropFilter: \"blur(12px)\",\n WebkitBackdropFilter: \"blur(12px)\",\n color: \"#e2e8f0\",\n fontSize: \"11px\",\n padding: \"8px 10px\",\n borderRadius: \"6px\",\n whiteSpace: \"nowrap\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n pointerEvents: \"none\",\n zIndex: 1000002,\n boxShadow:\n \"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.3)\",\n }}\n >\n <div\n style={{\n fontWeight: 600,\n color: \"#f8fafc\",\n marginBottom: \"3px\",\n letterSpacing: \"0.02em\",\n }}\n >\n {name}\n </div>\n <div style={{ display: \"flex\", gap: \"6px\", alignItems: \"center\" }}>\n <span style={{ color: \"#64748b\" }}>Cause:</span>\n <span style={{ color: \"#e2e8f0\" }}>{cause}</span>\n </div>\n\n {changedProps.length > 0 && (\n <div style={{ marginTop: \"3px\", display: \"flex\", gap: \"6px\" }}>\n <span style={{ color: \"#64748b\" }}>Props:</span>\n <span style={{ color: \"#cbd5e1\" }}>\n {changedProps.join(\", \")}\n </span>\n </div>\n )}\n\n {isFrequent && (\n <div\n style={{\n marginTop: \"6px\",\n color: \"#f87171\",\n fontWeight: 500,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"4px\",\n fontSize: \"10px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n <div\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n background: \"#f87171\",\n boxShadow: \"0 0 4px #f87171\",\n }}\n />\n Frequent\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import { useState, useEffect, useRef } from \"react\";\n\nexport function useDraggable(initialPos = { x: 20, y: 20 }) {\n const [position, setPosition] = useState(initialPos);\n const [isDragging, setIsDragging] = useState(false);\n const dragRef = useRef<HTMLDivElement>(null);\n\n // Ref to track offset from mouse to top-left of element during drag\n const offsetRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (!isDragging) return;\n\n setPosition({\n x: e.clientX - offsetRef.current.x,\n y: e.clientY - offsetRef.current.y,\n });\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n };\n\n if (isDragging) {\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging]);\n\n const onMouseDown = (e: React.MouseEvent) => {\n if (dragRef.current) {\n const rect = dragRef.current.getBoundingClientRect();\n offsetRef.current = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n setIsDragging(true);\n // Prevent text selection while dragging\n e.preventDefault();\n }\n };\n\n return { position, isDragging, dragRef, onMouseDown };\n}\n","import React from \"react\";\nimport { useDraggable } from \"./useDraggable\";\n\ninterface DashboardProps {\n isVisible: boolean;\n onClose: () => void;\n totalRenders: number;\n highlightBoxesEnabled: boolean;\n setHighlightBoxesEnabled: (val: boolean) => void;\n badgesEnabled: boolean;\n setBadgesEnabled: (val: boolean) => void;\n tracesEnabled: boolean;\n setTracesEnabled: (val: boolean) => void;\n componentStats: Array<{ name: string; count: number }>;\n}\n\nexport const Dashboard: React.FC<DashboardProps> = ({\n isVisible,\n onClose,\n totalRenders,\n highlightBoxesEnabled,\n setHighlightBoxesEnabled,\n badgesEnabled,\n setBadgesEnabled,\n tracesEnabled,\n setTracesEnabled,\n componentStats,\n}) => {\n const { position, dragRef, onMouseDown } = useDraggable({\n x: typeof window !== \"undefined\" ? window.innerWidth - 300 : 20,\n y: typeof window !== \"undefined\" ? window.innerHeight - 380 : 20,\n });\n\n if (!isVisible) return null;\n\n return (\n <div\n style={{\n position: \"fixed\",\n left: position.x,\n top: position.y,\n width: \"260px\",\n maxHeight: \"380px\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: \"12px\",\n background: \"rgba(10, 10, 10, 0.75)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n border: \"1px solid rgba(255, 255, 255, 0.08)\",\n boxShadow:\n \"0 10px 40px -10px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.05)\",\n zIndex: 1000004,\n color: \"#e2e8f0\",\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n overflow: \"hidden\",\n animation:\n \"react-dev-insight-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n >\n {/* Header (Draggable Area) */}\n <div\n ref={dragRef}\n onMouseDown={onMouseDown}\n style={{\n padding: \"12px 16px\",\n borderBottom: \"1px solid rgba(255, 255, 255, 0.06)\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n cursor: \"grab\",\n background: \"rgba(255,255,255,0.02)\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <div\n style={{\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n background: \"#f8fafc\",\n boxShadow: \"0 0 8px rgba(255,255,255,0.8)\",\n }}\n />\n <span\n style={{\n fontWeight: 500,\n fontSize: \"12px\",\n letterSpacing: \"0.04em\",\n color: \"#f8fafc\",\n }}\n >\n Dev Overlay\n </span>\n </div>\n <button\n onClick={onClose}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"#64748b\",\n cursor: \"pointer\",\n padding: \"2px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"4px\",\n transition: \"color 0.2s\",\n }}\n onMouseOver={(e) => (e.currentTarget.style.color = \"#e2e8f0\")}\n onMouseOut={(e) => (e.currentTarget.style.color = \"#64748b\")}\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n {/* Content */}\n <div style={{ padding: \"16px\", overflowY: \"auto\" }}>\n {/* Performance Overview */}\n <div style={{ marginBottom: \"24px\" }}>\n <div\n style={{\n fontSize: \"10px\",\n color: \"#64748b\",\n textTransform: \"uppercase\",\n marginBottom: \"8px\",\n letterSpacing: \"0.06em\",\n }}\n >\n Performance\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <span style={{ fontSize: \"13px\", color: \"#cbd5e1\" }}>\n Total Renders\n </span>\n <span\n style={{ fontSize: \"15px\", fontWeight: 600, color: \"#f8fafc\" }}\n >\n {totalRenders}\n </span>\n </div>\n </div>\n\n {/* Toggles */}\n <div style={{ marginBottom: \"24px\" }}>\n <div\n style={{\n fontSize: \"10px\",\n color: \"#64748b\",\n textTransform: \"uppercase\",\n marginBottom: \"8px\",\n letterSpacing: \"0.06em\",\n }}\n >\n Settings\n </div>\n\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"10px\" }}\n >\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"12px\",\n cursor: \"pointer\",\n color: \"#cbd5e1\",\n }}\n >\n <span>Highlight Boxes</span>\n <input\n type=\"checkbox\"\n checked={highlightBoxesEnabled}\n onChange={(e) => setHighlightBoxesEnabled(e.target.checked)}\n style={{\n accentColor: \"#475569\",\n width: \"14px\",\n height: \"14px\",\n cursor: \"pointer\",\n }}\n />\n </label>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"12px\",\n cursor: \"pointer\",\n color: \"#cbd5e1\",\n }}\n >\n <span>Render Badges</span>\n <input\n type=\"checkbox\"\n checked={badgesEnabled}\n onChange={(e) => setBadgesEnabled(e.target.checked)}\n style={{\n accentColor: \"#475569\",\n width: \"14px\",\n height: \"14px\",\n cursor: \"pointer\",\n }}\n />\n </label>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"12px\",\n cursor: \"pointer\",\n color: \"#cbd5e1\",\n }}\n >\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}\n >\n <span>Render Traces</span>\n <span\n style={{\n fontSize: \"9px\",\n padding: \"2px 4px\",\n background: \"rgba(45, 212, 191, 0.2)\",\n color: \"#2dd4bf\",\n borderRadius: \"4px\",\n }}\n >\n NEW\n </span>\n </div>\n <input\n type=\"checkbox\"\n checked={tracesEnabled}\n onChange={(e) => setTracesEnabled(e.target.checked)}\n style={{\n accentColor: \"#475569\",\n width: \"14px\",\n height: \"14px\",\n cursor: \"pointer\",\n }}\n />\n </label>\n </div>\n </div>\n\n {/* Top Components list */}\n <div>\n <div\n style={{\n fontSize: \"10px\",\n color: \"#64748b\",\n textTransform: \"uppercase\",\n marginBottom: \"8px\",\n letterSpacing: \"0.06em\",\n }}\n >\n Most Re-rendered\n </div>\n {componentStats.length === 0 ? (\n <div\n style={{\n fontSize: \"12px\",\n color: \"#475569\",\n fontStyle: \"italic\",\n }}\n >\n No tracking data.\n </div>\n ) : (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"6px\" }}\n >\n {componentStats.map((stat, idx) => (\n <div\n key={idx}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontSize: \"12px\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{\n fontFamily:\n \"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\",\n color: \"#94a3b8\",\n }}\n >\n {stat.name}\n </span>\n <span\n style={{\n color: \"#e2e8f0\",\n fontWeight: 500,\n background: \"rgba(255,255,255,0.05)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n }}\n >\n {stat.count}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { useDraggable } from \"./useDraggable\";\n\ninterface FloatingToggleProps {\n onClick: () => void;\n isOpen: boolean;\n}\n\nexport const FloatingToggle: React.FC<FloatingToggleProps> = ({\n onClick,\n isOpen,\n}) => {\n const { position, dragRef, onMouseDown, isDragging } = useDraggable({\n x: typeof window !== \"undefined\" ? window.innerWidth - 80 : 20,\n y: typeof window !== \"undefined\" ? window.innerHeight - 80 : 20,\n });\n\n return (\n <div\n ref={dragRef}\n onMouseDown={onMouseDown}\n onClick={() => {\n if (!isDragging) onClick();\n }}\n style={{\n position: \"fixed\",\n left: position.x,\n top: position.y,\n width: \"44px\",\n height: \"44px\",\n borderRadius: \"50%\",\n background: \"rgba(10, 10, 10, 0.65)\",\n backdropFilter: \"blur(16px)\",\n WebkitBackdropFilter: \"blur(16px)\",\n border: \"1px solid rgba(255, 255, 255, 0.08)\",\n boxShadow: isOpen\n ? \"0 0 16px rgba(255, 255, 255, 0.1), inset 0 0 8px rgba(255, 255, 255, 0.05)\"\n : \"0 4px 12px rgba(0, 0, 0, 0.4)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: isDragging ? \"grabbing\" : \"grab\",\n zIndex: 1000005,\n transition: isDragging\n ? \"none\"\n : \"box-shadow 0.3s ease, transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)\",\n transform: isDragging ? \"scale(1.05)\" : \"scale(1)\",\n color: \"#e2e8f0\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transition: \"transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n transform: isOpen ? \"rotate(90deg)\" : \"rotate(0deg)\",\n }}\n >\n <path d=\"M12 3a9 9 0 0 0-9 9 9 9 0 0 0 9 9 9 9 0 0 0 9-9 9 9 0 0 0-9-9\" />\n <path d=\"M12 8v8\" />\n <path d=\"M8 12h8\" />\n </svg>\n </div>\n );\n};\n","import React, { useEffect, useState, useMemo } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { HighlightBox } from \"./HighlightBox\";\nimport { subscribeToReRenders, RenderListener } from \"../core/tracker\";\nimport { RenderCause } from \"../core/renderStore\";\nimport { Dashboard } from \"./Dashboard\";\nimport { FloatingToggle } from \"./FloatingToggle\";\n\nexport const OverlayRoot: React.FC = () => {\n const [renders, setRenders] = useState<\n Map<\n object,\n {\n rect: DOMRect;\n count: number;\n changedProps: string[];\n name: string;\n timestamp: number;\n cause: RenderCause;\n isFrequent: boolean;\n sourceRef: object | null;\n }\n >\n >(new Map());\n\n // Dashboard Stats State\n const [totalRenders, setTotalRenders] = useState(0);\n const [componentStats, setComponentStats] = useState<Record<string, number>>(\n {},\n );\n\n // UI State\n const [isDashboardVisible, setIsDashboardVisible] = useState(false);\n const [highlightBoxesEnabled, setHighlightBoxesEnabled] = useState(true);\n const [badgesEnabled, setBadgesEnabled] = useState(true);\n const [tracesEnabled, setTracesEnabled] = useState(true);\n\n useEffect(() => {\n // Inject global styles\n if (typeof document !== \"undefined\") {\n let style = document.getElementById(\"react-dev-insight-styles\");\n if (!style) {\n style = document.createElement(\"style\");\n style.id = \"react-dev-insight-styles\";\n style.innerHTML = `\n @keyframes react-dev-insight-pulse {\n 0% { transform: scale(0.98); opacity: 0; }\n 30% { transform: scale(1.01); opacity: 1; }\n 100% { transform: scale(1); opacity: 1; }\n }\n @keyframes react-dev-insight-slide-up {\n from { transform: translateY(10px) scale(0.98); opacity: 0; }\n to { transform: translateY(0) scale(1); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n }\n }\n\n const listener: RenderListener = (ref, data) => {\n // Update global stats\n setTotalRenders((prev) => prev + 1);\n setComponentStats((prev) => ({\n ...prev,\n [data.name]: Math.max(data.count, prev[data.name] || 0),\n }));\n\n if (!data.elementRef) return;\n\n const rect = data.elementRef.getBoundingClientRect();\n // Only show if it's visible on screen (basic check)\n if (rect.width === 0 && rect.height === 0) return;\n\n setRenders((prev) => {\n const next = new Map(prev);\n next.set(ref, {\n rect,\n count: data.count,\n changedProps: Object.keys(data.changedProps),\n name: data.name,\n timestamp: data.timestamp,\n cause: data.cause,\n isFrequent: data.isFrequent,\n sourceRef: data.sourceRef,\n });\n return next;\n });\n };\n\n const unsubscribe = subscribeToReRenders(listener);\n return () => unsubscribe();\n }, []);\n\n // Cleanup old highlights\n useEffect(() => {\n const interval = setInterval(() => {\n const now = performance.now();\n setRenders((prev) => {\n let changed = false;\n const next = new Map(prev);\n for (const [key, value] of next.entries()) {\n if (now - value.timestamp > 1200) {\n // match 1200ms fade\n next.delete(key);\n changed = true;\n }\n }\n return changed ? next : prev;\n });\n }, 1000);\n return () => clearInterval(interval);\n }, []);\n\n const statsList = useMemo(() => {\n return Object.entries(componentStats)\n .map(([name, count]) => ({ name, count }))\n .sort((a, b) => b.count - a.count)\n .slice(0, 10);\n }, [componentStats]);\n\n if (typeof document === \"undefined\") return null;\n\n const boxes = Array.from(renders.values()).map((r, i) => (\n <HighlightBox\n key={`${r.name}-${i}`} // Use stable index/name keys or better unique IDs\n rect={r.rect}\n count={r.count}\n changedProps={r.changedProps}\n name={r.name}\n cause={r.cause}\n isFrequent={r.isFrequent}\n showHighlight={highlightBoxesEnabled}\n showBadge={badgesEnabled}\n />\n ));\n\n const svgTraces: React.ReactNode[] = [];\n if (tracesEnabled) {\n const rendersArr = Array.from(renders.entries());\n rendersArr.forEach(([key, r], i) => {\n if (r.sourceRef && renders.has(r.sourceRef)) {\n const sourceRect = renders.get(r.sourceRef)!.rect;\n const targetRect = r.rect;\n\n // Calculate center points\n const startX = sourceRect.left + sourceRect.width / 2;\n const startY = sourceRect.top + sourceRect.height / 2;\n const endX = targetRect.left + targetRect.width / 2;\n const endY = targetRect.top + targetRect.height / 2;\n\n // Draw a bezier curve connecting them\n // Control points are offset vertically to create a smooth arch\n const cx1 = startX;\n const cy1 = startY + (endY - startY) * 0.5;\n const cx2 = endX;\n const cy2 = startY + (endY - startY) * 0.5;\n\n // Determine if it's an old trace to begin fading it out\n const age = performance.now() - r.timestamp;\n const opacity = Math.max(0, 1 - age / 1200);\n\n const pathId = `trace-path-${i}`;\n\n svgTraces.push(\n <g key={pathId} style={{ opacity }}>\n <path\n d={`M ${startX} ${startY} C ${cx1} ${cy1}, ${cx2} ${cy2}, ${endX} ${endY}`}\n fill=\"none\"\n stroke=\"rgba(45, 212, 191, 0.4)\" // Teal glow color\n strokeWidth=\"2\"\n strokeDasharray=\"4 4\"\n />\n {/* Animated dot moving along the path */}\n <circle r=\"3\" fill=\"#2dd4bf\">\n <animateMotion\n dur=\"0.8s\"\n repeatCount=\"1\"\n path={`M ${startX} ${startY} C ${cx1} ${cy1}, ${cx2} ${cy2}, ${endX} ${endY}`}\n fill=\"freeze\"\n />\n </circle>\n </g>,\n );\n }\n });\n }\n\n return createPortal(\n <>\n {tracesEnabled && svgTraces.length > 0 && (\n <svg\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"100vh\",\n pointerEvents: \"none\",\n zIndex: 999998,\n }}\n >\n {svgTraces}\n </svg>\n )}\n\n <div\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n pointerEvents: \"none\",\n zIndex: 999999,\n }}\n >\n {boxes}\n </div>\n\n <div style={{ zIndex: 1000003, position: \"fixed\", top: 0, left: 0 }}>\n <FloatingToggle\n isOpen={isDashboardVisible}\n onClick={() => setIsDashboardVisible((prev) => !prev)}\n />\n\n <Dashboard\n isVisible={isDashboardVisible}\n onClose={() => setIsDashboardVisible(false)}\n totalRenders={totalRenders}\n componentStats={statsList}\n highlightBoxesEnabled={highlightBoxesEnabled}\n setHighlightBoxesEnabled={setHighlightBoxesEnabled}\n badgesEnabled={badgesEnabled}\n setBadgesEnabled={setBadgesEnabled}\n tracesEnabled={tracesEnabled}\n setTracesEnabled={setTracesEnabled}\n />\n </div>\n </>,\n document.body,\n );\n};\n"]}
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ // src/core/renderStore.ts
4
+ var renderStore = /* @__PURE__ */ new WeakMap();
5
+ function getRenderData(key) {
6
+ if (!renderStore.has(key)) {
7
+ renderStore.set(key, {
8
+ count: 0,
9
+ lastRenderTime: 0,
10
+ renderTimings: [],
11
+ prevProps: {},
12
+ changedProps: {},
13
+ isClient: typeof window !== "undefined",
14
+ elementRef: null,
15
+ cause: "mount",
16
+ isFrequent: false,
17
+ sourceRef: null
18
+ });
19
+ }
20
+ return renderStore.get(key);
21
+ }
22
+ function updateRenderData(key, data) {
23
+ const existing = getRenderData(key);
24
+ renderStore.set(key, { ...existing, ...data });
25
+ }
26
+
27
+ // src/core/diff.ts
28
+ function shallowDiff(prevProps, nextProps) {
29
+ const changes = {};
30
+ const prevKeys = Object.keys(prevProps);
31
+ const nextKeys = Object.keys(nextProps);
32
+ const allKeys = /* @__PURE__ */ new Set([...prevKeys, ...nextKeys]);
33
+ for (const key of allKeys) {
34
+ if (key === "children") continue;
35
+ const oldVal = prevProps[key];
36
+ const newVal = nextProps[key];
37
+ if (!Object.is(oldVal, newVal)) {
38
+ changes[key] = { oldVal, newVal };
39
+ }
40
+ }
41
+ return changes;
42
+ }
43
+
44
+ // src/core/tracker.ts
45
+ var listeners = /* @__PURE__ */ new Set();
46
+ function subscribeToReRenders(listener) {
47
+ listeners.add(listener);
48
+ return () => {
49
+ listeners.delete(listener);
50
+ };
51
+ }
52
+ var notifyTimeouts = /* @__PURE__ */ new WeakMap();
53
+ function notifyListeners(ref, options, elementRef) {
54
+ const data = getRenderData(ref);
55
+ const eventData = {
56
+ name: options.componentName,
57
+ count: data.count,
58
+ changedProps: data.changedProps,
59
+ timestamp: data.lastRenderTime,
60
+ elementRef,
61
+ cause: data.cause,
62
+ isFrequent: data.isFrequent,
63
+ sourceRef: data.sourceRef
64
+ };
65
+ if (notifyTimeouts.has(ref)) {
66
+ clearTimeout(notifyTimeouts.get(ref));
67
+ }
68
+ const timeout = setTimeout(() => {
69
+ listeners.forEach((listener) => listener(ref, eventData));
70
+ }, 16);
71
+ notifyTimeouts.set(ref, timeout);
72
+ }
73
+ var lastTrackedRender = null;
74
+ function trackRender(ref, props, options) {
75
+ if (process.env.NODE_ENV !== "development") return;
76
+ const data = getRenderData(ref);
77
+ const now = performance.now();
78
+ const changedProps = shallowDiff(data.prevProps, props);
79
+ const hasPropChanges = Object.keys(changedProps).length > 0;
80
+ if (data.count > 0 && !hasPropChanges && now - data.lastRenderTime < 10) {
81
+ return;
82
+ }
83
+ let cause = "mount";
84
+ if (data.count > 0) {
85
+ cause = hasPropChanges ? "props" : "state/context";
86
+ }
87
+ let sourceRef = null;
88
+ if (cause === "props" && lastTrackedRender && now - lastTrackedRender.timestamp < 10 && lastTrackedRender.ref !== ref) {
89
+ sourceRef = lastTrackedRender.ref;
90
+ }
91
+ lastTrackedRender = { ref, timestamp: now };
92
+ const newTimings = [...data.renderTimings, now].slice(-10);
93
+ let isFrequent = false;
94
+ if (newTimings.length >= 3) {
95
+ const timeSinceThirdLast = now - newTimings[newTimings.length - 3];
96
+ isFrequent = timeSinceThirdLast < 500;
97
+ }
98
+ updateRenderData(ref, {
99
+ count: data.count + 1,
100
+ lastRenderTime: now,
101
+ renderTimings: newTimings,
102
+ prevProps: { ...props },
103
+ changedProps,
104
+ cause,
105
+ isFrequent,
106
+ sourceRef
107
+ });
108
+ }
109
+
110
+ exports.getRenderData = getRenderData;
111
+ exports.notifyListeners = notifyListeners;
112
+ exports.renderStore = renderStore;
113
+ exports.shallowDiff = shallowDiff;
114
+ exports.subscribeToReRenders = subscribeToReRenders;
115
+ exports.trackRender = trackRender;
116
+ exports.updateRenderData = updateRenderData;
117
+ //# sourceMappingURL=chunk-SLJD3GYE.js.map
118
+ //# sourceMappingURL=chunk-SLJD3GYE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/renderStore.ts","../src/core/diff.ts","../src/core/tracker.ts"],"names":[],"mappings":"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","file":"chunk-SLJD3GYE.js","sourcesContent":["export type RenderCause = \"mount\" | \"props\" | \"state/context\" | \"unknown\";\n\nexport interface RenderData {\n count: number;\n lastRenderTime: number;\n renderTimings: number[];\n prevProps: Record<string, any>;\n changedProps: Record<string, { oldVal: any; newVal: any }>;\n isClient: boolean;\n elementRef: HTMLElement | null;\n cause: RenderCause;\n isFrequent: boolean;\n sourceRef: object | null;\n}\n\n// Global WeakMap to store render data per component instance without memory leaks.\n// Keys are the component's internal unique object reference or an instance id.\nexport const renderStore = new WeakMap<object, RenderData>();\n\nexport function getRenderData(key: object): RenderData {\n if (!renderStore.has(key)) {\n renderStore.set(key, {\n count: 0,\n lastRenderTime: 0,\n renderTimings: [],\n prevProps: {},\n changedProps: {},\n isClient: typeof window !== \"undefined\",\n elementRef: null,\n cause: \"mount\",\n isFrequent: false,\n sourceRef: null,\n });\n }\n return renderStore.get(key)!;\n}\n\nexport function updateRenderData(key: object, data: Partial<RenderData>) {\n const existing = getRenderData(key);\n renderStore.set(key, { ...existing, ...data });\n}\n","export function shallowDiff(\n prevProps: Record<string, any>,\n nextProps: Record<string, any>,\n): Record<string, { oldVal: any; newVal: any }> {\n const changes: Record<string, { oldVal: any; newVal: any }> = {};\n\n const prevKeys = Object.keys(prevProps);\n const nextKeys = Object.keys(nextProps);\n\n const allKeys = new Set([...prevKeys, ...nextKeys]);\n\n for (const key of allKeys) {\n if (key === \"children\") continue;\n\n const oldVal = prevProps[key];\n const newVal = nextProps[key];\n\n // Performance-safe exact match check (Object.is handles NaN and -0 properly)\n if (!Object.is(oldVal, newVal)) {\n // Don't flag function reference changes as heavily since they often change (e.g., inline arrow functions)\n // but they are technically changed. We record them.\n changes[key] = { oldVal, newVal };\n }\n }\n\n return changes;\n}\n","import {\n getRenderData,\n renderStore,\n updateRenderData,\n RenderCause,\n} from \"./renderStore\";\nimport { shallowDiff } from \"./diff\";\n\nexport interface TrackerOptions {\n componentName: string;\n}\n\n/**\n * Listener function that receives render metadata broadcasts.\n */\nexport type RenderListener = (\n componentRef: object,\n data: {\n name: string;\n count: number;\n changedProps: Record<string, { oldVal: any; newVal: any }>;\n timestamp: number;\n elementRef: HTMLElement | null;\n cause: RenderCause;\n isFrequent: boolean;\n sourceRef: object | null;\n },\n) => void;\n\nconst listeners = new Set<RenderListener>();\n\n/**\n * Subscribes to global render events emitted by the tracker.\n * @returns An unsubscribe function.\n */\nexport function subscribeToReRenders(listener: RenderListener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\n// Map to handle debouncing of notifications\nconst notifyTimeouts = new WeakMap<object, ReturnType<typeof setTimeout>>();\n\n/**\n * Debounces and notifies all subscribed listeners of a component's render event.\n */\nexport function notifyListeners(\n ref: object,\n options: TrackerOptions,\n elementRef: HTMLElement | null,\n) {\n const data = getRenderData(ref);\n const eventData = {\n name: options.componentName,\n count: data.count,\n changedProps: data.changedProps,\n timestamp: data.lastRenderTime,\n elementRef,\n cause: data.cause,\n isFrequent: data.isFrequent,\n sourceRef: data.sourceRef,\n };\n\n // Debouncing the broadcast slightly to avoid overwhelming the overlay\n // especially in React 18 concurrent features.\n if (notifyTimeouts.has(ref)) {\n clearTimeout(notifyTimeouts.get(ref)!);\n }\n\n const timeout = setTimeout(() => {\n listeners.forEach((listener) => listener(ref, eventData));\n }, 16); // ~1 frame\n\n notifyTimeouts.set(ref, timeout);\n}\n\n// Track the immediately preceding render in the current Javascript execution macrotask\n// This allows us to map out the render \"cascade\" tree (e.g. Parent -> Child)\nlet lastTrackedRender: { ref: object; timestamp: number } | null = null;\n\n/**\n * Synchronously tracks a component render, calculates prop diffs, and computes the cause.\n * Includes protection against React 18 Strict Mode double-invocations.\n */\nexport function trackRender(\n ref: object,\n props: Record<string, any>,\n options: TrackerOptions,\n) {\n if (process.env.NODE_ENV !== \"development\") return;\n\n const data = getRenderData(ref);\n const now = performance.now();\n\n const changedProps = shallowDiff(data.prevProps, props);\n const hasPropChanges = Object.keys(changedProps).length > 0;\n\n // Mitigation for React 18 Strict Mode double-renders:\n // If no props changed and the render happened within 10ms of the last one,\n // it is almost certainly a strict-mode double invocation. Ignore it.\n if (data.count > 0 && !hasPropChanges && now - data.lastRenderTime < 10) {\n return;\n }\n\n let cause: RenderCause = \"mount\";\n if (data.count > 0) {\n cause = hasPropChanges ? \"props\" : \"state/context\";\n }\n\n // Check for rendering cascade (rendered within 5ms of another component)\n let sourceRef: object | null = null;\n if (\n cause === \"props\" &&\n lastTrackedRender &&\n now - lastTrackedRender.timestamp < 10 &&\n lastTrackedRender.ref !== ref\n ) {\n sourceRef = lastTrackedRender.ref;\n }\n\n lastTrackedRender = { ref, timestamp: now };\n\n const newTimings = [...data.renderTimings, now].slice(-10); // Keep last 10\n\n // Frequent render check: 3 renders within 500ms\n let isFrequent = false;\n if (newTimings.length >= 3) {\n const timeSinceThirdLast = now - newTimings[newTimings.length - 3];\n isFrequent = timeSinceThirdLast < 500;\n }\n\n // Update state for this component instance\n updateRenderData(ref, {\n count: data.count + 1,\n lastRenderTime: now,\n renderTimings: newTimings,\n prevProps: { ...props },\n changedProps,\n cause,\n isFrequent,\n sourceRef,\n });\n}\n"]}
@@ -0,0 +1,43 @@
1
+ import { R as RenderCause } from '../renderStore-CpCFW5My.mjs';
2
+ export { a as RenderData, g as getRenderData, r as renderStore, u as updateRenderData } from '../renderStore-CpCFW5My.mjs';
3
+
4
+ declare function shallowDiff(prevProps: Record<string, any>, nextProps: Record<string, any>): Record<string, {
5
+ oldVal: any;
6
+ newVal: any;
7
+ }>;
8
+
9
+ interface TrackerOptions {
10
+ componentName: string;
11
+ }
12
+ /**
13
+ * Listener function that receives render metadata broadcasts.
14
+ */
15
+ type RenderListener = (componentRef: object, data: {
16
+ name: string;
17
+ count: number;
18
+ changedProps: Record<string, {
19
+ oldVal: any;
20
+ newVal: any;
21
+ }>;
22
+ timestamp: number;
23
+ elementRef: HTMLElement | null;
24
+ cause: RenderCause;
25
+ isFrequent: boolean;
26
+ sourceRef: object | null;
27
+ }) => void;
28
+ /**
29
+ * Subscribes to global render events emitted by the tracker.
30
+ * @returns An unsubscribe function.
31
+ */
32
+ declare function subscribeToReRenders(listener: RenderListener): () => void;
33
+ /**
34
+ * Debounces and notifies all subscribed listeners of a component's render event.
35
+ */
36
+ declare function notifyListeners(ref: object, options: TrackerOptions, elementRef: HTMLElement | null): void;
37
+ /**
38
+ * Synchronously tracks a component render, calculates prop diffs, and computes the cause.
39
+ * Includes protection against React 18 Strict Mode double-invocations.
40
+ */
41
+ declare function trackRender(ref: object, props: Record<string, any>, options: TrackerOptions): void;
42
+
43
+ export { RenderCause, type RenderListener, type TrackerOptions, notifyListeners, shallowDiff, subscribeToReRenders, trackRender };
@@ -0,0 +1,43 @@
1
+ import { R as RenderCause } from '../renderStore-CpCFW5My.js';
2
+ export { a as RenderData, g as getRenderData, r as renderStore, u as updateRenderData } from '../renderStore-CpCFW5My.js';
3
+
4
+ declare function shallowDiff(prevProps: Record<string, any>, nextProps: Record<string, any>): Record<string, {
5
+ oldVal: any;
6
+ newVal: any;
7
+ }>;
8
+
9
+ interface TrackerOptions {
10
+ componentName: string;
11
+ }
12
+ /**
13
+ * Listener function that receives render metadata broadcasts.
14
+ */
15
+ type RenderListener = (componentRef: object, data: {
16
+ name: string;
17
+ count: number;
18
+ changedProps: Record<string, {
19
+ oldVal: any;
20
+ newVal: any;
21
+ }>;
22
+ timestamp: number;
23
+ elementRef: HTMLElement | null;
24
+ cause: RenderCause;
25
+ isFrequent: boolean;
26
+ sourceRef: object | null;
27
+ }) => void;
28
+ /**
29
+ * Subscribes to global render events emitted by the tracker.
30
+ * @returns An unsubscribe function.
31
+ */
32
+ declare function subscribeToReRenders(listener: RenderListener): () => void;
33
+ /**
34
+ * Debounces and notifies all subscribed listeners of a component's render event.
35
+ */
36
+ declare function notifyListeners(ref: object, options: TrackerOptions, elementRef: HTMLElement | null): void;
37
+ /**
38
+ * Synchronously tracks a component render, calculates prop diffs, and computes the cause.
39
+ * Includes protection against React 18 Strict Mode double-invocations.
40
+ */
41
+ declare function trackRender(ref: object, props: Record<string, any>, options: TrackerOptions): void;
42
+
43
+ export { RenderCause, type RenderListener, type TrackerOptions, notifyListeners, shallowDiff, subscribeToReRenders, trackRender };
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var chunkSLJD3GYE_js = require('../chunk-SLJD3GYE.js');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "getRenderData", {
8
+ enumerable: true,
9
+ get: function () { return chunkSLJD3GYE_js.getRenderData; }
10
+ });
11
+ Object.defineProperty(exports, "notifyListeners", {
12
+ enumerable: true,
13
+ get: function () { return chunkSLJD3GYE_js.notifyListeners; }
14
+ });
15
+ Object.defineProperty(exports, "renderStore", {
16
+ enumerable: true,
17
+ get: function () { return chunkSLJD3GYE_js.renderStore; }
18
+ });
19
+ Object.defineProperty(exports, "shallowDiff", {
20
+ enumerable: true,
21
+ get: function () { return chunkSLJD3GYE_js.shallowDiff; }
22
+ });
23
+ Object.defineProperty(exports, "subscribeToReRenders", {
24
+ enumerable: true,
25
+ get: function () { return chunkSLJD3GYE_js.subscribeToReRenders; }
26
+ });
27
+ Object.defineProperty(exports, "trackRender", {
28
+ enumerable: true,
29
+ get: function () { return chunkSLJD3GYE_js.trackRender; }
30
+ });
31
+ Object.defineProperty(exports, "updateRenderData", {
32
+ enumerable: true,
33
+ get: function () { return chunkSLJD3GYE_js.updateRenderData; }
34
+ });
35
+ //# sourceMappingURL=index.js.map
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,3 @@
1
+ export { getRenderData, notifyListeners, renderStore, shallowDiff, subscribeToReRenders, trackRender, updateRenderData } from '../chunk-HH72HK3H.mjs';
2
+ //# sourceMappingURL=index.mjs.map
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ /**
5
+ * A hook to explicitly track a component's renders.
6
+ * Use this inside a component by attaching the returned ref to its outermost DOM element.
7
+ *
8
+ * @param componentName The name of the component for logging.
9
+ * @param props The props of the component to diff against.
10
+ * @returns A React ref object to attach to the root DOM node of the component.
11
+ */
12
+ declare function useRenderTracker<T extends HTMLElement>(componentName: string, props: Record<string, any>): React.RefObject<T>;
13
+
14
+ /**
15
+ * The top-level provider for the React Dev Overlay.
16
+ * Wrap your root application component in this to initialize the global overlay dashboard.
17
+ * In production builds, this component strips away overhead and simply renders `children`.
18
+ */
19
+ declare const DevInsightProvider: React__default.FC<{
20
+ children: React__default.ReactNode;
21
+ }>;
22
+
23
+ /**
24
+ * A Higher-Order Component (HOC) that wraps standard React components to track their renders.
25
+ * In production builds, this HOC is stripped away entirely, returning the original unmodified component.
26
+ *
27
+ * @param WrappedComponent The React component to track.
28
+ * @param componentName Optional explicit name for the component in the overlay dashboard.
29
+ * @returns The wrapped component configured for dev overlay insights.
30
+ */
31
+ declare function withDevInsight<P extends object>(WrappedComponent: React__default.ComponentType<P>, componentName?: string): React__default.ComponentType<P> | React__default.ForwardRefExoticComponent<React__default.PropsWithoutRef<P> & React__default.RefAttributes<HTMLElement>>;
32
+
33
+ export { DevInsightProvider, useRenderTracker, withDevInsight };
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ /**
5
+ * A hook to explicitly track a component's renders.
6
+ * Use this inside a component by attaching the returned ref to its outermost DOM element.
7
+ *
8
+ * @param componentName The name of the component for logging.
9
+ * @param props The props of the component to diff against.
10
+ * @returns A React ref object to attach to the root DOM node of the component.
11
+ */
12
+ declare function useRenderTracker<T extends HTMLElement>(componentName: string, props: Record<string, any>): React.RefObject<T>;
13
+
14
+ /**
15
+ * The top-level provider for the React Dev Overlay.
16
+ * Wrap your root application component in this to initialize the global overlay dashboard.
17
+ * In production builds, this component strips away overhead and simply renders `children`.
18
+ */
19
+ declare const DevInsightProvider: React__default.FC<{
20
+ children: React__default.ReactNode;
21
+ }>;
22
+
23
+ /**
24
+ * A Higher-Order Component (HOC) that wraps standard React components to track their renders.
25
+ * In production builds, this HOC is stripped away entirely, returning the original unmodified component.
26
+ *
27
+ * @param WrappedComponent The React component to track.
28
+ * @param componentName Optional explicit name for the component in the overlay dashboard.
29
+ * @returns The wrapped component configured for dev overlay insights.
30
+ */
31
+ declare function withDevInsight<P extends object>(WrappedComponent: React__default.ComponentType<P>, componentName?: string): React__default.ComponentType<P> | React__default.ForwardRefExoticComponent<React__default.PropsWithoutRef<P> & React__default.RefAttributes<HTMLElement>>;
32
+
33
+ export { DevInsightProvider, useRenderTracker, withDevInsight };
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var chunkJOBOK6JI_js = require('./chunk-JOBOK6JI.js');
4
+ var chunkSLJD3GYE_js = require('./chunk-SLJD3GYE.js');
5
+ var React = require('react');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefault(React);
10
+
11
+ function useRenderTracker(componentName, props) {
12
+ const ref = React.useRef(null);
13
+ const internalKey = React.useRef({});
14
+ if (process.env.NODE_ENV !== "development") {
15
+ return ref;
16
+ }
17
+ React.useEffect(() => {
18
+ chunkSLJD3GYE_js.notifyListeners(internalKey.current, { componentName }, ref.current);
19
+ });
20
+ chunkSLJD3GYE_js.trackRender(internalKey.current, props, { componentName });
21
+ return ref;
22
+ }
23
+ var DevInsightProvider = ({
24
+ children
25
+ }) => {
26
+ if (process.env.NODE_ENV !== "development") {
27
+ return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, children);
28
+ }
29
+ return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, children, /* @__PURE__ */ React__default.default.createElement(chunkJOBOK6JI_js.OverlayRoot, null));
30
+ };
31
+ function withDevInsight(WrappedComponent, componentName) {
32
+ if (process.env.NODE_ENV !== "development") {
33
+ return WrappedComponent;
34
+ }
35
+ const name = componentName || WrappedComponent.displayName || WrappedComponent.name || "Component";
36
+ const WithDevInsight = React.forwardRef((props, ref) => {
37
+ const trackerRef = useRenderTracker(name, props);
38
+ return /* @__PURE__ */ React__default.default.createElement(
39
+ "div",
40
+ {
41
+ ref: trackerRef,
42
+ style: { display: "contents" },
43
+ "data-dev-overlay-tracker": name
44
+ },
45
+ /* @__PURE__ */ React__default.default.createElement(WrappedComponent, { ...props })
46
+ );
47
+ });
48
+ WithDevInsight.displayName = `withDevInsight(${name})`;
49
+ return WithDevInsight;
50
+ }
51
+
52
+ exports.DevInsightProvider = DevInsightProvider;
53
+ exports.useRenderTracker = useRenderTracker;
54
+ exports.withDevInsight = withDevInsight;
55
+ //# sourceMappingURL=index.js.map
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useRenderTracker.ts","../src/provider/DevOverlayProvider.tsx","../src/hoc/withDevOverlay.tsx"],"names":["useRef","useEffect","notifyListeners","trackRender","React","OverlayRoot","forwardRef"],"mappings":";;;;;;;;;;AAWO,SAAS,gBAAA,CACd,eACA,KAAA,EACA;AACA,EAAA,MAAM,GAAA,GAAMA,aAAU,IAAI,CAAA;AAC1B,EAAA,MAAM,WAAA,GAAcA,YAAA,CAAO,EAAE,CAAA;AAE7B,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAE1C,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAAC,eAAA,CAAU,MAAM;AAEd,IAAAC,gCAAA,CAAgB,YAAY,OAAA,EAAS,EAAE,aAAA,EAAc,EAAG,IAAI,OAAO,CAAA;AAAA,EACrE,CAAC,CAAA;AAGD,EAAAC,4BAAA,CAAY,WAAA,CAAY,OAAA,EAAS,KAAA,EAAO,EAAE,eAAe,CAAA;AAEzD,EAAA,OAAO,GAAA;AACT;ACxBO,IAAM,qBAA8D,CAAC;AAAA,EAC1E;AACF,CAAA,KAAM;AACJ,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAC1C,IAAA,mGAAU,QAAS,CAAA;AAAA,EACrB;AAEA,EAAA,uBACEC,sBAAA,CAAA,aAAA,CAAAA,sBAAA,CAAA,QAAA,EAAA,IAAA,EACG,QAAA,kBACDA,sBAAA,CAAA,aAAA,CAACC,4BAAA,EAAA,IAAY,CACf,CAAA;AAEJ;ACVO,SAAS,cAAA,CACd,kBACA,aAAA,EACA;AACA,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAC1C,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GACJ,aAAA,IACA,gBAAA,CAAiB,WAAA,IACjB,iBAAiB,IAAA,IACjB,WAAA;AAEF,EAAA,MAAM,cAAA,GAAiBC,gBAAA,CAA2B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAGhE,IAAA,MAAM,UAAA,GAAa,gBAAA,CAAiC,IAAA,EAAM,KAAK,CAAA;AAE/D,IAAA,uBACEF,sBAAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,EAAE,OAAA,EAAS,UAAA,EAAW;AAAA,QAC7B,0BAAA,EAA0B;AAAA,OAAA;AAAA,sBAE1BA,sBAAAA,CAAA,aAAA,CAAC,gBAAA,EAAA,EAAkB,GAAI,KAAA,EAAe;AAAA,KACxC;AAAA,EAEJ,CAAC,CAAA;AAED,EAAA,cAAA,CAAe,WAAA,GAAc,kBAAkB,IAAI,CAAA,CAAA,CAAA;AAEnD,EAAA,OAAO,cAAA;AACT","file":"index.js","sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { trackRender, notifyListeners } from \"../core/tracker\";\n\n/**\n * A hook to explicitly track a component's renders.\n * Use this inside a component by attaching the returned ref to its outermost DOM element.\n *\n * @param componentName The name of the component for logging.\n * @param props The props of the component to diff against.\n * @returns A React ref object to attach to the root DOM node of the component.\n */\nexport function useRenderTracker<T extends HTMLElement>(\n componentName: string,\n props: Record<string, any>,\n) {\n const ref = useRef<T>(null);\n const internalKey = useRef({}); // Unique object reference per instance\n\n if (process.env.NODE_ENV !== \"development\") {\n // In production, return an empty ref to allow full tree-shaking dead code elimination\n return ref;\n }\n\n useEffect(() => {\n // We notify right after render completes\n notifyListeners(internalKey.current, { componentName }, ref.current);\n });\n\n // Track render (synchronously during render phase)\n trackRender(internalKey.current, props, { componentName });\n\n return ref;\n}\n","import React from \"react\";\nimport { OverlayRoot } from \"../overlay\";\n\n/**\n * The top-level provider for the React Dev Overlay.\n * Wrap your root application component in this to initialize the global overlay dashboard.\n * In production builds, this component strips away overhead and simply renders `children`.\n */\nexport const DevInsightProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n if (process.env.NODE_ENV !== \"development\") {\n return <>{children}</>;\n }\n\n return (\n <>\n {children}\n <OverlayRoot />\n </>\n );\n};\n","import React, { forwardRef } from \"react\";\nimport { useRenderTracker } from \"../hooks/useRenderTracker\";\n\n/**\n * A Higher-Order Component (HOC) that wraps standard React components to track their renders.\n * In production builds, this HOC is stripped away entirely, returning the original unmodified component.\n *\n * @param WrappedComponent The React component to track.\n * @param componentName Optional explicit name for the component in the overlay dashboard.\n * @returns The wrapped component configured for dev overlay insights.\n */\nexport function withDevInsight<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n componentName?: string,\n) {\n if (process.env.NODE_ENV !== \"development\") {\n return WrappedComponent;\n }\n\n const name =\n componentName ||\n WrappedComponent.displayName ||\n WrappedComponent.name ||\n \"Component\";\n\n const WithDevInsight = forwardRef<HTMLElement, P>((props, ref) => {\n // We wrap the component in a purely logic-bound display: contents div\n // This allows us to track bounding boxes without polluting the DOM hierarchy styling\n const trackerRef = useRenderTracker<HTMLDivElement>(name, props);\n\n return (\n <div\n ref={trackerRef}\n style={{ display: \"contents\" }}\n data-dev-overlay-tracker={name}\n >\n <WrappedComponent {...(props as any)} />\n </div>\n );\n });\n\n WithDevInsight.displayName = `withDevInsight(${name})`;\n\n return WithDevInsight;\n}\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,48 @@
1
+ import { OverlayRoot } from './chunk-IDEYIAB5.mjs';
2
+ import { notifyListeners, trackRender } from './chunk-HH72HK3H.mjs';
3
+ import React, { useRef, useEffect, forwardRef } from 'react';
4
+
5
+ function useRenderTracker(componentName, props) {
6
+ const ref = useRef(null);
7
+ const internalKey = useRef({});
8
+ if (process.env.NODE_ENV !== "development") {
9
+ return ref;
10
+ }
11
+ useEffect(() => {
12
+ notifyListeners(internalKey.current, { componentName }, ref.current);
13
+ });
14
+ trackRender(internalKey.current, props, { componentName });
15
+ return ref;
16
+ }
17
+ var DevInsightProvider = ({
18
+ children
19
+ }) => {
20
+ if (process.env.NODE_ENV !== "development") {
21
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
22
+ }
23
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children, /* @__PURE__ */ React.createElement(OverlayRoot, null));
24
+ };
25
+ function withDevInsight(WrappedComponent, componentName) {
26
+ if (process.env.NODE_ENV !== "development") {
27
+ return WrappedComponent;
28
+ }
29
+ const name = componentName || WrappedComponent.displayName || WrappedComponent.name || "Component";
30
+ const WithDevInsight = forwardRef((props, ref) => {
31
+ const trackerRef = useRenderTracker(name, props);
32
+ return /* @__PURE__ */ React.createElement(
33
+ "div",
34
+ {
35
+ ref: trackerRef,
36
+ style: { display: "contents" },
37
+ "data-dev-overlay-tracker": name
38
+ },
39
+ /* @__PURE__ */ React.createElement(WrappedComponent, { ...props })
40
+ );
41
+ });
42
+ WithDevInsight.displayName = `withDevInsight(${name})`;
43
+ return WithDevInsight;
44
+ }
45
+
46
+ export { DevInsightProvider, useRenderTracker, withDevInsight };
47
+ //# sourceMappingURL=index.mjs.map
48
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useRenderTracker.ts","../src/provider/DevOverlayProvider.tsx","../src/hoc/withDevOverlay.tsx"],"names":["React"],"mappings":";;;;AAWO,SAAS,gBAAA,CACd,eACA,KAAA,EACA;AACA,EAAA,MAAM,GAAA,GAAM,OAAU,IAAI,CAAA;AAC1B,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,EAAE,CAAA;AAE7B,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAE1C,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,eAAA,CAAgB,YAAY,OAAA,EAAS,EAAE,aAAA,EAAc,EAAG,IAAI,OAAO,CAAA;AAAA,EACrE,CAAC,CAAA;AAGD,EAAA,WAAA,CAAY,WAAA,CAAY,OAAA,EAAS,KAAA,EAAO,EAAE,eAAe,CAAA;AAEzD,EAAA,OAAO,GAAA;AACT;ACxBO,IAAM,qBAA8D,CAAC;AAAA,EAC1E;AACF,CAAA,KAAM;AACJ,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAC1C,IAAA,iEAAU,QAAS,CAAA;AAAA,EACrB;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,QAAA,kBACD,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,IAAY,CACf,CAAA;AAEJ;ACVO,SAAS,cAAA,CACd,kBACA,aAAA,EACA;AACA,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAC1C,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAA,GACJ,aAAA,IACA,gBAAA,CAAiB,WAAA,IACjB,iBAAiB,IAAA,IACjB,WAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,UAAA,CAA2B,CAAC,KAAA,EAAO,GAAA,KAAQ;AAGhE,IAAA,MAAM,UAAA,GAAa,gBAAA,CAAiC,IAAA,EAAM,KAAK,CAAA;AAE/D,IAAA,uBACEA,KAAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,EAAE,OAAA,EAAS,UAAA,EAAW;AAAA,QAC7B,0BAAA,EAA0B;AAAA,OAAA;AAAA,sBAE1BA,KAAAA,CAAA,aAAA,CAAC,gBAAA,EAAA,EAAkB,GAAI,KAAA,EAAe;AAAA,KACxC;AAAA,EAEJ,CAAC,CAAA;AAED,EAAA,cAAA,CAAe,WAAA,GAAc,kBAAkB,IAAI,CAAA,CAAA,CAAA;AAEnD,EAAA,OAAO,cAAA;AACT","file":"index.mjs","sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { trackRender, notifyListeners } from \"../core/tracker\";\n\n/**\n * A hook to explicitly track a component's renders.\n * Use this inside a component by attaching the returned ref to its outermost DOM element.\n *\n * @param componentName The name of the component for logging.\n * @param props The props of the component to diff against.\n * @returns A React ref object to attach to the root DOM node of the component.\n */\nexport function useRenderTracker<T extends HTMLElement>(\n componentName: string,\n props: Record<string, any>,\n) {\n const ref = useRef<T>(null);\n const internalKey = useRef({}); // Unique object reference per instance\n\n if (process.env.NODE_ENV !== \"development\") {\n // In production, return an empty ref to allow full tree-shaking dead code elimination\n return ref;\n }\n\n useEffect(() => {\n // We notify right after render completes\n notifyListeners(internalKey.current, { componentName }, ref.current);\n });\n\n // Track render (synchronously during render phase)\n trackRender(internalKey.current, props, { componentName });\n\n return ref;\n}\n","import React from \"react\";\nimport { OverlayRoot } from \"../overlay\";\n\n/**\n * The top-level provider for the React Dev Overlay.\n * Wrap your root application component in this to initialize the global overlay dashboard.\n * In production builds, this component strips away overhead and simply renders `children`.\n */\nexport const DevInsightProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n if (process.env.NODE_ENV !== \"development\") {\n return <>{children}</>;\n }\n\n return (\n <>\n {children}\n <OverlayRoot />\n </>\n );\n};\n","import React, { forwardRef } from \"react\";\nimport { useRenderTracker } from \"../hooks/useRenderTracker\";\n\n/**\n * A Higher-Order Component (HOC) that wraps standard React components to track their renders.\n * In production builds, this HOC is stripped away entirely, returning the original unmodified component.\n *\n * @param WrappedComponent The React component to track.\n * @param componentName Optional explicit name for the component in the overlay dashboard.\n * @returns The wrapped component configured for dev overlay insights.\n */\nexport function withDevInsight<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n componentName?: string,\n) {\n if (process.env.NODE_ENV !== \"development\") {\n return WrappedComponent;\n }\n\n const name =\n componentName ||\n WrappedComponent.displayName ||\n WrappedComponent.name ||\n \"Component\";\n\n const WithDevInsight = forwardRef<HTMLElement, P>((props, ref) => {\n // We wrap the component in a purely logic-bound display: contents div\n // This allows us to track bounding boxes without polluting the DOM hierarchy styling\n const trackerRef = useRenderTracker<HTMLDivElement>(name, props);\n\n return (\n <div\n ref={trackerRef}\n style={{ display: \"contents\" }}\n data-dev-overlay-tracker={name}\n >\n <WrappedComponent {...(props as any)} />\n </div>\n );\n });\n\n WithDevInsight.displayName = `withDevInsight(${name})`;\n\n return WithDevInsight;\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+ import { R as RenderCause } from '../renderStore-CpCFW5My.mjs';
3
+
4
+ interface RenderBadgeProps {
5
+ count: number;
6
+ }
7
+ declare const RenderBadge: React__default.FC<RenderBadgeProps>;
8
+
9
+ interface HighlightBoxProps {
10
+ rect: DOMRect;
11
+ count: number;
12
+ changedProps: string[];
13
+ name: string;
14
+ cause: RenderCause;
15
+ isFrequent: boolean;
16
+ showHighlight?: boolean;
17
+ showBadge?: boolean;
18
+ }
19
+ declare const HighlightBox: React__default.FC<HighlightBoxProps>;
20
+
21
+ declare const OverlayRoot: React__default.FC;
22
+
23
+ export { HighlightBox, type HighlightBoxProps, OverlayRoot, RenderBadge };