fractostate 4.7.1 → 4.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"MentalMap.js","sources":["../../../../src/devtools/MentalMap.tsx"],"sourcesContent":["import { useMemo, useState, useEffect, useRef } from \"react\";\nimport {\n ReactFlow,\n Background,\n Controls,\n Edge,\n Node,\n useNodesState,\n useEdgesState,\n ConnectionLineType,\n} from \"@xyflow/react\";\nimport \"@xyflow/react/dist/style.css\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n Database,\n Search,\n X,\n RefreshCcw,\n Maximize2,\n Cpu,\n Minimize2,\n PanelRightClose,\n PanelRight,\n Activity,\n GitBranch,\n Network,\n} from \"lucide-react\";\nimport \"./MentalMap.css\";\nimport { MMapProps } from \"./mmap/MMapTypes\";\nimport { FlowNode, ActorNode, ListenerNode } from \"./mmap/components/FlowNodes\";\nimport { FiberEdge } from \"./MapUtils\";\nimport { MMapSidebar } from \"./mmap/components/MMapSidebar\";\nimport { MMapLedger } from \"./mmap/components/MMapLedger\";\nimport { FlowGenealogy } from \"./mmap/components/FlowGenealogy\";\n\nconst nodeTypes = {\n flow: FlowNode,\n actor: ActorNode,\n listener: ListenerNode,\n};\n\nconst edgeTypes = {\n fiber: FiberEdge,\n};\n\nexport const MentalMap = ({\n snapshot,\n onClose,\n onMinimizeChange,\n minimizedSide = \"right\",\n setIsOpen,\n}: MMapProps) => {\n const [nodes, setNodes, onNodesChange] = useNodesState<Node>([]);\n const [edges, setEdges, onEdgesChange] = useEdgesState<Edge>([]);\n const [selectedFlow, setSelectedFlow] = useState<string | null>(null);\n const [overlayFlow, setOverlayFlow] = useState<string | null>(null);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [isMinimized, setIsMinimized] = useState(false);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLedgerVisible, setIsLedgerVisible] = useState(true);\n const [viewMode, setViewMode] = useState<\"live\" | \"genealogy\">(\"live\");\n\n useEffect(() => {\n onMinimizeChange?.(isMinimized);\n }, [isMinimized, onMinimizeChange]);\n\n // Logic pour le drag du logo réduit\n const [minimizedPos, setMinimizedPos] = useState({\n x: minimizedSide === \"right\" ? window.innerWidth - 100 : 40,\n y: window.innerHeight - 100,\n });\n const [isDraggingLogo, setIsDraggingLogo] = useState(false);\n const wasDragged = useRef(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n\n const handleLogoMouseDown = (e: React.MouseEvent) => {\n if (!isMinimized) return;\n setIsDraggingLogo(true);\n wasDragged.current = false;\n setDragOffset({\n x: e.clientX - minimizedPos.x,\n y: e.clientY - minimizedPos.y,\n });\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (isDraggingLogo) {\n wasDragged.current = true;\n setMinimizedPos({\n x: e.clientX - dragOffset.x,\n y: e.clientY - dragOffset.y,\n });\n }\n };\n const handleMouseUp = () => {\n setTimeout(() => {\n setIsDraggingLogo(false);\n }, 0);\n };\n\n if (isDraggingLogo) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDraggingLogo, dragOffset]);\n\n const [activeFlows, setActiveFlows] = useState<Set<string>>(new Set());\n\n // Detect recent activity\n const recentActivity = useMemo(() => {\n const now = Date.now();\n const activityMap: Record<\n string,\n { active: boolean; actor?: string; type?: string }\n > = {};\n\n Object.entries(snapshot).forEach(([key, data]) => {\n const traces = data.meta.traces || [];\n const lastTrace = traces[traces.length - 1];\n if (lastTrace && now - lastTrace.timestamp < 1000) {\n activityMap[key] = {\n active: true,\n actor: lastTrace.actor,\n type: lastTrace.type,\n };\n }\n });\n return activityMap;\n }, [snapshot]);\n\n useEffect(() => {\n const active = new Set<string>();\n Object.keys(recentActivity).forEach((key) => active.add(key));\n setActiveFlows(active);\n }, [recentActivity]);\n\n const filteredFlows = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n const entries = Object.entries(snapshot);\n if (!query) return entries;\n\n return entries.filter(([key, data]) => {\n if (key.toLowerCase().includes(query)) return true;\n const consumers = data.meta.consumers || [];\n if (consumers.some((c: any) => c.toLowerCase().includes(query)))\n return true;\n try {\n if (JSON.stringify(data.value).toLowerCase().includes(query))\n return true;\n } catch (e) {}\n return false;\n });\n }, [snapshot, searchQuery]);\n\n useEffect(() => {\n if (viewMode !== \"live\") return;\n\n const flowEntries = filteredFlows;\n const newNodes: Node[] = [];\n const newEdges: Edge[] = [];\n\n const actorX = 50;\n const flowX = 500;\n const listenerX = 950;\n\n let flowY = 100;\n let actorY = 100;\n let listenerY = 100;\n\n flowEntries.forEach(([key, data]) => {\n const activity = recentActivity[key];\n const isFlowHot = !!activity;\n\n // --- Node FLOW (Center) ---\n newNodes.push({\n id: `flow-${key}`,\n type: \"flow\",\n position: { x: flowX, y: flowY },\n data: {\n label: key.toUpperCase(),\n value: data.value,\n isActive: selectedFlow === key,\n isHot: isFlowHot,\n onClick: () => setOverlayFlow(key),\n },\n });\n\n // Split Listeners: Named (Actors) vs Anonymous (UI)\n const rawListeners = data.meta.listeners || [];\n const namedActors: any[] = [];\n const uiListeners: any[] = [];\n\n rawListeners.forEach((l: any) => {\n const isUI =\n l.label.startsWith(\"useFlow(\") || l.label === \"Anonymous Subscriber\";\n if (isUI) uiListeners.push(l);\n else namedActors.push(l);\n });\n\n // Mix in the explicit consumers (those who wrote in the past)\n const explicitConsumers = data.meta.consumers || [];\n explicitConsumers.forEach((name: string) => {\n if (!namedActors.find((a) => a.label === name)) {\n namedActors.push({ label: name, isExplicit: true });\n }\n });\n\n // --- Node ACTORS (Left) ---\n namedActors.forEach((actor, i) => {\n const actorId = `actor-${actor.label}-${key}`;\n const isActorHot = isFlowHot && activity.actor === actor.label;\n\n newNodes.push({\n id: actorId,\n type: \"actor\",\n position: { x: actorX, y: actorY },\n data: {\n label: actor.label,\n isActive: selectedFlow === key,\n isHot: isActorHot,\n },\n });\n\n newEdges.push({\n id: `edge-${actor.label}-${key}`,\n source: actorId,\n target: `flow-${key}`,\n targetHandle: \"actor-target\",\n type: \"fiber\",\n animated: true,\n style: {\n stroke: isActorHot ? \"#fbbf24\" : \"#a855f7\",\n strokeWidth: isActorHot ? 4 : 2,\n },\n });\n\n actorY += 120;\n });\n\n // --- Node UI LISTENERS (Right) ---\n // Group UI Listeners by label to avoid redundancy\n const groupedUI = uiListeners.reduce((acc: any, curr: any) => {\n if (!acc[curr.label]) {\n acc[curr.label] = { ...curr, count: 0 };\n }\n acc[curr.label].count += 1;\n return acc;\n }, {}); \n\n Object.values(groupedUI).forEach((group: any, _: number) => {\n const listenerId = `listener-${key}-${group.label}`;\n const isListenerHot =\n isFlowHot && (activity.type === \"read\" || activity.type === \"write\");\n\n newNodes.push({\n id: listenerId,\n type: \"listener\",\n position: { x: listenerX, y: listenerY },\n data: {\n label:\n group.count > 1\n ? `${group.label} (x${group.count})`\n : group.label,\n isActive: selectedFlow === key,\n isHot: isListenerHot,\n },\n });\n\n newEdges.push({\n id: `edge-flow-listener-${key}-${group.label}`,\n source: `flow-${key}`,\n sourceHandle: \"listener-source\",\n target: listenerId,\n type: \"fiber\",\n animated: true,\n style: {\n stroke: isListenerHot ? \"#fbbf24\" : \"#00d4ff\",\n strokeWidth: isListenerHot ? 3 : 2,\n },\n });\n\n listenerY += 100;\n });\n\n const maxRowHeight = Math.max(\n 250,\n namedActors.length * 120,\n Object.keys(groupedUI).length * 100,\n );\n flowY += maxRowHeight + 50;\n if (actorY < flowY) actorY = flowY;\n if (listenerY < flowY) listenerY = flowY;\n });\n\n setNodes(newNodes);\n setEdges(newEdges);\n }, [\n filteredFlows,\n selectedFlow,\n viewMode,\n recentActivity,\n setNodes,\n setEdges,\n ]);\n\n return (\n <motion.div\n className=\"mental-map-overlay\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n >\n {/* ... reste du header identique ... */}\n <div\n className={`mental-map-container ${isMinimized ? \"minimized\" : \"\"}`}\n style={\n isMinimized\n ? {\n left: minimizedPos.x,\n top: minimizedPos.y,\n bottom: \"auto\",\n right: \"auto\",\n }\n : {}\n }\n onMouseDown={handleLogoMouseDown}\n onClick={() => {\n if (!wasDragged.current && isMinimized) setIsMinimized(false);\n }}\n >\n <div\n className={`m2-minimized-logo ${activeFlows.size > 0 ? \"pulse\" : \"\"}`}\n >\n F<span className=\"m2-minimized-badge\">FTE</span>\n </div>\n\n <header className=\"m2-header\">\n <div className=\"m2-logo-group\">\n <div className=\"m2-logo-icon\">\n <Cpu color=\"white\" size={28} />\n </div>\n <div className=\"m2-header-titles\">\n <h1>Mental Map & Trace Engine</h1>\n <div className=\"m2-header-meta\">\n <span className=\"m2-engine-badge\">FM2/FTE5</span>\n <span style={{ fontSize: 10, opacity: 0.5, fontWeight: 700 }}>\n NEHONIX FCE\n </span>\n </div>\n </div>\n </div>\n <div className=\"m2-controls\">\n <div\n className=\"m2-view-switcher\"\n style={{ display: \"flex\", gap: 8, marginRight: 16 }}\n >\n <button\n className={`view-toggle-btn ${viewMode === \"live\" ? \"active\" : \"\"}`}\n onClick={() => setViewMode(\"live\")}\n >\n <Network size={16} /> Live Graph\n </button>\n <button\n className={`view-toggle-btn ${viewMode === \"genealogy\" ? \"active\" : \"\"}`}\n onClick={() => setViewMode(\"genealogy\")}\n >\n <GitBranch size={16} /> Genealogy\n </button>\n </div>\n <div className=\"m2-search-wrapper\">\n <Search className=\"m2-search-icon\" size={18} />\n <input\n type=\"text\"\n className=\"m2-search-input\"\n placeholder=\"Search flows, actors or data patterns...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n </div>\n <div className=\"m2-action-btns\">\n <button\n className=\"m2-icon-btn\"\n title=\"Refresh\"\n onClick={() => window.location.reload()}\n >\n <RefreshCcw size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Minimize\"\n style={{color: \"blue\"}}\n\n onClick={(e) => {\n e.stopPropagation();\n setIsMinimized(true);\n setIsOpen(false);\n }}\n >\n <Minimize2 size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Fullscreen\"\n onClick={() => {\n if (!document.fullscreenElement)\n document.documentElement.requestFullscreen();\n else document.exitFullscreen();\n }}\n >\n <Maximize2 size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Toggle Ledger\"\n onClick={() => setIsLedgerVisible(!isLedgerVisible)}\n >\n {isLedgerVisible ? (\n <PanelRightClose size={20} />\n ) : (\n <PanelRight size={20} />\n )}\n </button>\n <button\n className=\"m2-icon-btn m2-close-btn force-visible\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n title=\"Close\"\n >\n <X size={24} />\n </button>\n </div>\n </div>\n </header>\n\n <div className=\"m2-layout\">\n <MMapSidebar\n filteredFlows={filteredFlows}\n selectedFlow={selectedFlow}\n setSelectedFlow={setSelectedFlow}\n activeFlows={activeFlows}\n />\n <main className=\"m2-canvas\">\n {viewMode === \"live\" ? (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n connectionLineType={ConnectionLineType.Bezier}\n onNodeClick={(_, node) => {\n if (node.type === \"flow\")\n setOverlayFlow(node.id.replace(\"flow-\", \"\"));\n }}\n fitView\n colorMode=\"dark\"\n >\n <Background color=\"#1e293b\" gap={20} />{\" \"}\n <Controls showInteractive={false} />\n </ReactFlow>\n ) : (\n <FlowGenealogy\n snapshot={snapshot}\n onSelectFlow={setOverlayFlow}\n />\n )}\n </main>\n <MMapLedger\n snapshot={snapshot}\n selectedFlow={selectedFlow}\n isLedgerVisible={isLedgerVisible}\n />\n </div>\n\n <AnimatePresence>\n {overlayFlow && (\n <motion.div\n className=\"m2-flow-overlay-backdrop\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={() => setOverlayFlow(null)}\n >\n <div\n className=\"m2-flow-overlay\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"m2-overlay-header\">\n <div className=\"m2-overlay-title\">\n <Database color=\"#00d4ff\" size={24} />\n <h2>{overlayFlow} Activity</h2>\n </div>\n <button\n className=\"m2-icon-btn m2-close-btn\"\n onClick={() => setOverlayFlow(null)}\n >\n <X size={20} />\n </button>\n </div>\n <div className=\"m2-overlay-content\">\n {snapshot[overlayFlow].meta.traces.length === 0 ? (\n <div className=\"m2-empty-state\">\n <Activity size={48} className=\"m2-empty-icon\" />\n <h3>No Activity Detected</h3>\n <p>This flow hasn't emitted any events yet.</p>\n </div>\n ) : (\n <div className=\"m2-trace-list\">\n {[...snapshot[overlayFlow].meta.traces]\n .reverse()\n .map((trace, i) => (\n <div\n key={i}\n className={`m2-trace-card ${trace.type === \"reset\" ? \"reset\" : \"\"}`}\n >\n <div className=\"m2-trace-dot\" />\n <div className=\"m2-trace-header\">\n <span className=\"m2-trace-actor-lbl\">\n {trace.actor}\n </span>\n <span className=\"m2-trace-ts\">\n {new Date(trace.timestamp).toLocaleTimeString()}\n </span>\n </div>\n <div className=\"m2-trace-op-info\">\n <span className=\"m2-op-type\">{trace.type}</span>\n </div>\n <div className=\"m2-trace-data\">\n <pre className=\"m2-trace-json\">\n {JSON.stringify(trace.value, null, 2)}\n </pre>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </motion.div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"MentalMap.js","sources":["../../../../src/devtools/MentalMap.tsx"],"sourcesContent":["import { useMemo, useState, useEffect, useRef } from \"react\";\nimport {\n ReactFlow,\n Background,\n Controls,\n Edge,\n Node,\n useNodesState,\n useEdgesState,\n ConnectionLineType,\n} from \"@xyflow/react\";\nimport \"@xyflow/react/dist/style.css\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n Database,\n Search,\n X,\n RefreshCcw,\n Maximize2,\n Cpu,\n Minimize2,\n PanelRightClose,\n PanelRight,\n Activity,\n GitBranch,\n Network,\n} from \"lucide-react\";\nimport \"./MentalMap.css\";\nimport { MMapProps } from \"./mmap/MMapTypes\";\nimport { FlowNode, ActorNode, ListenerNode } from \"./mmap/components/FlowNodes\";\nimport { FiberEdge } from \"./MapUtils\";\nimport { MMapSidebar } from \"./mmap/components/MMapSidebar\";\nimport { MMapLedger } from \"./mmap/components/MMapLedger\";\nimport { FlowGenealogy } from \"./mmap/components/FlowGenealogy\";\n\nconst nodeTypes = {\n flow: FlowNode,\n actor: ActorNode,\n listener: ListenerNode,\n};\n\nconst edgeTypes = {\n fiber: FiberEdge,\n};\n\nexport const MentalMap = ({\n snapshot,\n onClose,\n onMinimizeChange,\n minimizedSide = \"right\",\n setIsOpen,\n}: MMapProps) => {\n const [nodes, setNodes, onNodesChange] = useNodesState<Node>([]);\n const [edges, setEdges, onEdgesChange] = useEdgesState<Edge>([]);\n const [selectedFlow, setSelectedFlow] = useState<string | null>(null);\n const [overlayFlow, setOverlayFlow] = useState<string | null>(null);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [isMinimized, setIsMinimized] = useState(false);\n const [isLedgerVisible, setIsLedgerVisible] = useState(true);\n const [viewMode, setViewMode] = useState<\"live\" | \"genealogy\">(\"live\");\n\n useEffect(() => {\n onMinimizeChange?.(isMinimized);\n }, [isMinimized, onMinimizeChange]);\n\n // Logic pour le drag du logo réduit\n const [minimizedPos, setMinimizedPos] = useState({\n x: minimizedSide === \"right\" ? window.innerWidth - 100 : 40,\n y: window.innerHeight - 100,\n });\n const [isDraggingLogo, setIsDraggingLogo] = useState(false);\n const wasDragged = useRef(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n\n const handleLogoMouseDown = (e: React.MouseEvent) => {\n if (!isMinimized) return;\n setIsDraggingLogo(true);\n wasDragged.current = false;\n setDragOffset({\n x: e.clientX - minimizedPos.x,\n y: e.clientY - minimizedPos.y,\n });\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (isDraggingLogo) {\n wasDragged.current = true;\n setMinimizedPos({\n x: e.clientX - dragOffset.x,\n y: e.clientY - dragOffset.y,\n });\n }\n };\n const handleMouseUp = () => {\n setTimeout(() => {\n setIsDraggingLogo(false);\n }, 0);\n };\n\n if (isDraggingLogo) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDraggingLogo, dragOffset]);\n\n const [activeFlows, setActiveFlows] = useState<Set<string>>(new Set());\n\n // Detect recent activity\n const recentActivity = useMemo(() => {\n const now = Date.now();\n const activityMap: Record<\n string,\n { active: boolean; actor?: string; type?: string }\n > = {};\n\n Object.entries(snapshot).forEach(([key, data]) => {\n const traces = data.meta.traces || [];\n const lastTrace = traces[traces.length - 1];\n if (lastTrace && now - lastTrace.timestamp < 1000) {\n activityMap[key] = {\n active: true,\n actor: lastTrace.actor,\n type: lastTrace.type,\n };\n }\n });\n return activityMap;\n }, [snapshot]);\n\n useEffect(() => {\n const active = new Set<string>();\n Object.keys(recentActivity).forEach((key) => active.add(key));\n setActiveFlows(active);\n }, [recentActivity]);\n\n const filteredFlows = useMemo(() => {\n const query = searchQuery.toLowerCase().trim();\n const entries = Object.entries(snapshot);\n if (!query) return entries;\n\n return entries.filter(([key, data]) => {\n if (key.toLowerCase().includes(query)) return true;\n const consumers = data.meta.consumers || [];\n if (consumers.some((c: any) => c.toLowerCase().includes(query)))\n return true;\n try {\n if (JSON.stringify(data.value).toLowerCase().includes(query))\n return true;\n } catch (e) {}\n return false;\n });\n }, [snapshot, searchQuery]);\n\n useEffect(() => {\n if (viewMode !== \"live\") return;\n\n const flowEntries = filteredFlows;\n const newNodes: Node[] = [];\n const newEdges: Edge[] = [];\n\n const actorX = 50;\n const flowX = 500;\n const listenerX = 950;\n\n let flowY = 100;\n let actorY = 100;\n let listenerY = 100;\n\n flowEntries.forEach(([key, data]) => {\n const activity = recentActivity[key];\n const isFlowHot = !!activity;\n\n // --- Node FLOW (Center) ---\n newNodes.push({\n id: `flow-${key}`,\n type: \"flow\",\n position: { x: flowX, y: flowY },\n data: {\n label: key.toUpperCase(),\n value: data.value,\n isActive: selectedFlow === key,\n isHot: isFlowHot,\n onClick: () => setOverlayFlow(key),\n },\n });\n\n // Split Listeners: Named (Actors) vs Anonymous (UI)\n const rawListeners = data.meta.listeners || [];\n const namedActors: any[] = [];\n const uiListeners: any[] = [];\n\n rawListeners.forEach((l: any) => {\n const isUI =\n l.label.startsWith(\"useFlow(\") || l.label === \"Anonymous Subscriber\";\n if (isUI) uiListeners.push(l);\n else namedActors.push(l);\n });\n\n // Mix in the explicit consumers (those who wrote in the past)\n const explicitConsumers = data.meta.consumers || [];\n explicitConsumers.forEach((name: string) => {\n if (!namedActors.find((a) => a.label === name)) {\n namedActors.push({ label: name, isExplicit: true });\n }\n });\n\n // --- Node ACTORS (Left) ---\n namedActors.forEach((actor, _) => {\n const actorId = `actor-${actor.label}-${key}`;\n const isActorHot = isFlowHot && activity.actor === actor.label;\n\n newNodes.push({\n id: actorId,\n type: \"actor\",\n position: { x: actorX, y: actorY },\n data: {\n label: actor.label,\n isActive: selectedFlow === key,\n isHot: isActorHot,\n },\n });\n\n newEdges.push({\n id: `edge-${actor.label}-${key}`,\n source: actorId,\n target: `flow-${key}`,\n targetHandle: \"actor-target\",\n type: \"fiber\",\n animated: true,\n style: {\n stroke: isActorHot ? \"#fbbf24\" : \"#a855f7\",\n strokeWidth: isActorHot ? 4 : 2,\n },\n });\n\n actorY += 120;\n });\n\n // --- Node UI LISTENERS (Right) ---\n // Group UI Listeners by label to avoid redundancy\n const groupedUI = uiListeners.reduce((acc: any, curr: any) => {\n if (!acc[curr.label]) {\n acc[curr.label] = { ...curr, count: 0 };\n }\n acc[curr.label].count += 1;\n return acc;\n }, {}); \n\n Object.values(groupedUI).forEach((group: any, _: number) => {\n const listenerId = `listener-${key}-${group.label}`;\n const isListenerHot =\n isFlowHot && (activity.type === \"read\" || activity.type === \"write\");\n\n newNodes.push({\n id: listenerId,\n type: \"listener\",\n position: { x: listenerX, y: listenerY },\n data: {\n label:\n group.count > 1\n ? `${group.label} (x${group.count})`\n : group.label,\n isActive: selectedFlow === key,\n isHot: isListenerHot,\n },\n });\n\n newEdges.push({\n id: `edge-flow-listener-${key}-${group.label}`,\n source: `flow-${key}`,\n sourceHandle: \"listener-source\",\n target: listenerId,\n type: \"fiber\",\n animated: true,\n style: {\n stroke: isListenerHot ? \"#fbbf24\" : \"#00d4ff\",\n strokeWidth: isListenerHot ? 3 : 2,\n },\n });\n\n listenerY += 100;\n });\n\n const maxRowHeight = Math.max(\n 250,\n namedActors.length * 120,\n Object.keys(groupedUI).length * 100,\n );\n flowY += maxRowHeight + 50;\n if (actorY < flowY) actorY = flowY;\n if (listenerY < flowY) listenerY = flowY;\n });\n\n setNodes(newNodes);\n setEdges(newEdges);\n }, [\n filteredFlows,\n selectedFlow,\n viewMode,\n recentActivity,\n setNodes,\n setEdges,\n ]);\n\n return (\n <motion.div\n className=\"mental-map-overlay\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n >\n {/* ... reste du header identique ... */}\n <div\n className={`mental-map-container ${isMinimized ? \"minimized\" : \"\"}`}\n style={\n isMinimized\n ? {\n left: minimizedPos.x,\n top: minimizedPos.y,\n bottom: \"auto\",\n right: \"auto\",\n }\n : {}\n }\n onMouseDown={handleLogoMouseDown}\n onClick={() => {\n if (!wasDragged.current && isMinimized) setIsMinimized(false);\n }}\n >\n <div\n className={`m2-minimized-logo ${activeFlows.size > 0 ? \"pulse\" : \"\"}`}\n >\n F<span className=\"m2-minimized-badge\">FTE</span>\n </div>\n\n <header className=\"m2-header\">\n <div className=\"m2-logo-group\">\n <div className=\"m2-logo-icon\">\n <Cpu color=\"white\" size={28} />\n </div>\n <div className=\"m2-header-titles\">\n <h1>Mental Map & Trace Engine</h1>\n <div className=\"m2-header-meta\">\n <span className=\"m2-engine-badge\">FM2/FTE5</span>\n <span style={{ fontSize: 10, opacity: 0.5, fontWeight: 700 }}>\n NEHONIX FCE\n </span>\n </div>\n </div>\n </div>\n <div className=\"m2-controls\">\n <div\n className=\"m2-view-switcher\"\n style={{ display: \"flex\", gap: 8, marginRight: 16 }}\n >\n <button\n className={`view-toggle-btn ${viewMode === \"live\" ? \"active\" : \"\"}`}\n onClick={() => setViewMode(\"live\")}\n >\n <Network size={16} /> Live Graph\n </button>\n <button\n className={`view-toggle-btn ${viewMode === \"genealogy\" ? \"active\" : \"\"}`}\n onClick={() => setViewMode(\"genealogy\")}\n >\n <GitBranch size={16} /> Genealogy\n </button>\n </div>\n <div className=\"m2-search-wrapper\">\n <Search className=\"m2-search-icon\" size={18} />\n <input\n type=\"text\"\n className=\"m2-search-input\"\n placeholder=\"Search flows, actors or data patterns...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n </div>\n <div className=\"m2-action-btns\">\n <button\n className=\"m2-icon-btn\"\n title=\"Refresh\"\n onClick={() => window.location.reload()}\n >\n <RefreshCcw size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Minimize\"\n style={{color: \"blue\"}}\n\n onClick={(e) => {\n e.stopPropagation();\n setIsMinimized(true);\n setIsOpen(false);\n }}\n >\n <Minimize2 size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Fullscreen\"\n onClick={() => {\n if (!document.fullscreenElement)\n document.documentElement.requestFullscreen();\n else document.exitFullscreen();\n }}\n >\n <Maximize2 size={20} />\n </button>\n <button\n className=\"m2-icon-btn\"\n title=\"Toggle Ledger\"\n onClick={() => setIsLedgerVisible(!isLedgerVisible)}\n >\n {isLedgerVisible ? (\n <PanelRightClose size={20} />\n ) : (\n <PanelRight size={20} />\n )}\n </button>\n <button\n className=\"m2-icon-btn m2-close-btn force-visible\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n title=\"Close\"\n >\n <X size={24} />\n </button>\n </div>\n </div>\n </header>\n\n <div className=\"m2-layout\">\n <MMapSidebar\n filteredFlows={filteredFlows}\n selectedFlow={selectedFlow}\n setSelectedFlow={setSelectedFlow}\n activeFlows={activeFlows}\n />\n <main className=\"m2-canvas\">\n {viewMode === \"live\" ? (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n connectionLineType={ConnectionLineType.Bezier}\n onNodeClick={(_, node) => {\n if (node.type === \"flow\")\n setOverlayFlow(node.id.replace(\"flow-\", \"\"));\n }}\n fitView\n colorMode=\"dark\"\n >\n <Background color=\"#1e293b\" gap={20} />{\" \"}\n <Controls showInteractive={false} />\n </ReactFlow>\n ) : (\n <FlowGenealogy\n snapshot={snapshot}\n onSelectFlow={setOverlayFlow}\n />\n )}\n </main>\n <MMapLedger\n snapshot={snapshot}\n selectedFlow={selectedFlow}\n isLedgerVisible={isLedgerVisible}\n />\n </div>\n\n <AnimatePresence>\n {overlayFlow && (\n <motion.div\n className=\"m2-flow-overlay-backdrop\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={() => setOverlayFlow(null)}\n >\n <div\n className=\"m2-flow-overlay\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"m2-overlay-header\">\n <div className=\"m2-overlay-title\">\n <Database color=\"#00d4ff\" size={24} />\n <h2>{overlayFlow} Activity</h2>\n </div>\n <button\n className=\"m2-icon-btn m2-close-btn\"\n onClick={() => setOverlayFlow(null)}\n >\n <X size={20} />\n </button>\n </div>\n <div className=\"m2-overlay-content\">\n {snapshot[overlayFlow].meta.traces.length === 0 ? (\n <div className=\"m2-empty-state\">\n <Activity size={48} className=\"m2-empty-icon\" />\n <h3>No Activity Detected</h3>\n <p>This flow hasn't emitted any events yet.</p>\n </div>\n ) : (\n <div className=\"m2-trace-list\">\n {[...snapshot[overlayFlow].meta.traces]\n .reverse()\n .map((trace, i) => (\n <div\n key={i}\n className={`m2-trace-card ${trace.type === \"reset\" ? \"reset\" : \"\"}`}\n >\n <div className=\"m2-trace-dot\" />\n <div className=\"m2-trace-header\">\n <span className=\"m2-trace-actor-lbl\">\n {trace.actor}\n </span>\n <span className=\"m2-trace-ts\">\n {new Date(trace.timestamp).toLocaleTimeString()}\n </span>\n </div>\n <div className=\"m2-trace-op-info\">\n <span className=\"m2-op-type\">{trace.type}</span>\n </div>\n <div className=\"m2-trace-data\">\n <pre className=\"m2-trace-json\">\n {JSON.stringify(trace.value, null, 2)}\n </pre>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </motion.div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -94,6 +94,16 @@ function createDeepProxy(key, path, currentVal, options) {
94
94
  };
95
95
  if (prop === "__actions__")
96
96
  return options.actions;
97
+ if (prop === "_undo")
98
+ return () => store.undo(key);
99
+ if (prop === "_redo")
100
+ return () => store.redo(key);
101
+ if (prop === "_canUndo")
102
+ return (store.getHistory(key)?.length || 0) > 1;
103
+ if (prop === "_canRedo")
104
+ return (store.getRedoStack(key)?.length || 0) > 0;
105
+ if (prop === "_history")
106
+ return store.getHistory(key);
97
107
  // Handle plugin-provided operations (e.g., _persist)
98
108
  const pluginOps = store.getPluginOps(key, options);
99
109
  if (prop in pluginOps)
@@ -148,6 +158,26 @@ function createDeepProxy(key, path, currentVal, options) {
148
158
  : getInPath(store.get(key, undefined, { bypassClone: true }), path);
149
159
  update(liveVal / amount, "_divide");
150
160
  };
161
+ case "_pow":
162
+ return (n) => update(Math.pow(currentVal, n), "_pow");
163
+ case "_sqrt":
164
+ return () => update(Math.sqrt(currentVal), "_sqrt");
165
+ case "_abs":
166
+ return () => update(Math.abs(currentVal), "_abs");
167
+ case "_round":
168
+ return () => update(Math.round(currentVal), "_round");
169
+ case "_floor":
170
+ return () => update(Math.floor(currentVal), "_floor");
171
+ case "_ceil":
172
+ return () => update(Math.ceil(currentVal), "_ceil");
173
+ case "_mod":
174
+ return (n) => update(currentVal % n, "_mod");
175
+ case "_clamp":
176
+ return (min, max) => update(Math.min(Math.max(currentVal, min), max), "_clamp");
177
+ case "_negate":
178
+ return () => update(-currentVal, "_negate");
179
+ case "_toPrecision":
180
+ return (p) => update(parseFloat(currentVal.toPrecision(p)), "_toPrecision");
151
181
  }
152
182
  }
153
183
  // --- Array Operations (Optimized with minimal allocations) ---
@@ -204,6 +234,53 @@ function createDeepProxy(key, path, currentVal, options) {
204
234
  newArr[i + 1] = currentVal[i];
205
235
  update(newArr, "_insertAt");
206
236
  };
237
+ // --- New Ops (v4.8.0) ---
238
+ case "_splice":
239
+ return (s, d, ...items) => {
240
+ const next = [...currentVal];
241
+ next.splice(s, d, ...items);
242
+ update(next, "_splice");
243
+ };
244
+ case "_reverse":
245
+ return () => update([...currentVal].reverse(), "_reverse");
246
+ case "_sort":
247
+ return (fn) => update([...currentVal].sort(fn), "_sort");
248
+ case "_fill":
249
+ return (v, s, e) => {
250
+ const next = [...currentVal];
251
+ next.fill(v, s, e);
252
+ update(next, "_fill");
253
+ };
254
+ case "_concat":
255
+ return (other) => update(currentVal.concat(other), "_concat");
256
+ case "_uniq":
257
+ return () => update(Array.from(new Set(currentVal)), "_uniq");
258
+ case "_shuffle":
259
+ return () => {
260
+ const next = [...currentVal];
261
+ for (let i = next.length - 1; i > 0; i--) {
262
+ const j = Math.floor(Math.random() * (i + 1));
263
+ [next[i], next[j]] = [next[j], next[i]];
264
+ }
265
+ update(next, "_shuffle");
266
+ };
267
+ // Traversers that return a proxy to an item
268
+ case "_at":
269
+ return (i) => {
270
+ const idx = i < 0 ? currentVal.length + i : i;
271
+ return createDeepProxy(key, getCachedPath(path, idx.toString()), currentVal[idx], options);
272
+ };
273
+ case "_first":
274
+ return () => createDeepProxy(key, getCachedPath(path, "0"), currentVal[0], options);
275
+ case "_last":
276
+ return () => createDeepProxy(key, getCachedPath(path, (currentVal.length - 1).toString()), currentVal[currentVal.length - 1], options);
277
+ case "_findBy":
278
+ return (fn) => {
279
+ const idx = currentVal.findIndex(fn);
280
+ if (idx === -1)
281
+ return undefined;
282
+ return createDeepProxy(key, getCachedPath(path, idx.toString()), currentVal[idx], options);
283
+ };
207
284
  }
208
285
  }
209
286
  // --- String Operations ---
@@ -219,6 +296,27 @@ function createDeepProxy(key, path, currentVal, options) {
219
296
  return () => update(currentVal.toLowerCase(), "_lowercase");
220
297
  case "_trim":
221
298
  return () => update(currentVal.trim(), "_trim");
299
+ // --- New Ops (v4.8.0) ---
300
+ case "_replace":
301
+ return (p, r) => update(currentVal.replace(p, r), "_replace");
302
+ case "_replaceAll":
303
+ return (p, r) => update(currentVal.replaceAll(p, r), "_replaceAll");
304
+ case "_substring":
305
+ return (s, e) => update(currentVal.substring(s, e), "_substring");
306
+ case "_slice":
307
+ return (s, e) => update(currentVal.slice(s, e), "_slice");
308
+ case "_capitalize":
309
+ return () => update(currentVal.charAt(0).toUpperCase() + currentVal.slice(1), "_capitalize");
310
+ case "_truncate":
311
+ return (l, s = "...") => update(currentVal.length > l
312
+ ? currentVal.substring(0, l) + s
313
+ : currentVal, "_truncate");
314
+ case "_padEnd":
315
+ return (l, f) => update(currentVal.padEnd(l, f), "_padEnd");
316
+ case "_padStart":
317
+ return (l, f) => update(currentVal.padStart(l, f), "_padStart");
318
+ case "_repeat":
319
+ return (c) => update(currentVal.repeat(c), "_repeat");
222
320
  }
223
321
  }
224
322
  // --- Boolean Operations ---
@@ -250,6 +348,40 @@ function createDeepProxy(key, path, currentVal, options) {
250
348
  update(next, "_delete");
251
349
  };
252
350
  }
351
+ // --- New Ops (v4.8.0) ---
352
+ if (prop === "_pick") {
353
+ return (keys) => {
354
+ const next = {};
355
+ keys.forEach((k) => {
356
+ if (k in currentVal)
357
+ next[k] = currentVal[k];
358
+ });
359
+ update(next, "_pick");
360
+ };
361
+ }
362
+ if (prop === "_omit") {
363
+ return (keys) => {
364
+ const next = { ...currentVal };
365
+ keys.forEach((k) => delete next[k]);
366
+ update(next, "_omit");
367
+ };
368
+ }
369
+ if (prop === "_defaults") {
370
+ return (d) => update({ ...d, ...currentVal }, "_defaults");
371
+ }
372
+ if (prop === "_clear")
373
+ return () => update({}, "_clear");
374
+ if (prop === "_clone")
375
+ return () => update({ ...currentVal }, "_clone");
376
+ if (prop === "_assign")
377
+ return (s) => update({ ...currentVal, ...s }, "_assign");
378
+ if (prop === "_mapValues") {
379
+ return (fn) => {
380
+ const next = {};
381
+ Object.keys(currentVal).forEach((k) => (next[k] = fn(currentVal[k], k)));
382
+ update(next, "_mapValues");
383
+ };
384
+ }
253
385
  }
254
386
  // Recursive step: create a new proxy for the child property
255
387
  // Use cached path
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sources":["../../../src/proxy.ts"],"sourcesContent":["/* *****************************************************************************\n * FractoSate\n *\n * ACCESS RESTRICTIONS:\n * - This software is exclusively for use by Authorized Personnel of NEHONIX\n * - Intended for Internal Use only within NEHONIX operations\n * - No rights granted to unauthorized individuals or entities\n * - All modifications are works made for hire assigned to NEHONIX\n *\n * PROHIBITED ACTIVITIES:\n * - Copying, distributing, or sublicensing without written permission\n * - Reverse engineering, decompiling, or disassembling\n * - Creating derivative works without explicit authorization\n * - External use or commercial distribution outside NEHONIX\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * For questions or permissions, contact:\n * NEHONIX Legal Department\n * Email: legal@nehonix.com\n * Website: www.nehonix.com\n ***************************************************************************** */\n\nimport type { FlowOptions, TypeAwareOps } from \"./types\";\nimport { store } from \"./store\";\n\n// Path cache to avoid repeated array allocations\nconst pathCache = new WeakMap<string[], Map<string, string[]>>();\n\nfunction getCachedPath(path: string[], prop: string): string[] {\n let cache = pathCache.get(path);\n if (!cache) {\n cache = new Map();\n pathCache.set(path, cache);\n }\n\n let cached = cache.get(prop);\n if (!cached) {\n cached = [...path, prop];\n cache.set(prop, cached);\n }\n return cached;\n}\n\n/**\n * Creates a deep proxy that provides type-specific atomic operations for a flow.\n * The proxy tracks its path within the state tree and maps access to specific update logic.\n *\n * Reduced allocations, cached operations\n */\nexport function createDeepProxy<T = any, A = Record<string, any>>(\n key: string,\n path: string[],\n currentVal: any,\n options: FlowOptions<any>,\n): TypeAwareOps<T, A> {\n // Pre-bind commit function to avoid recreation\n const commit = (\n val: any,\n forceful: boolean,\n skipEquality = false,\n op?: string,\n ) => {\n try {\n // INTERNAL OPTIMIZATION: We fetch the RAW current state from the vault\n // without cloning it. Since we are about to produce a new IMMUTABLE state\n // using setInPath (which does structural cloning), this is safe and\n // avoiding a full deepClone of the entire tree on every tiny action\n // results in 100x performance in loops.\n const currentState = store.get(key, undefined, { bypassClone: true });\n const newState = setInPath(currentState, path, val);\n store.set(key, newState, {\n ...options,\n force: forceful,\n skipEquality,\n _op: op || (options as any)._op || \"set\",\n _path: path,\n } as any);\n } catch (error) {\n console.error(\n `[FlowProxy] Commit error at path ${path.join(\".\")}:`,\n error,\n );\n throw error;\n }\n };\n\n // Pre-create update function\n const update = (val: any, op?: string) => {\n commit(val, false, true, op);\n };\n\n return new Proxy(() => {}, {\n get(_target: any, prop: any) {\n if (typeof prop === \"symbol\") return undefined;\n\n // --- Meta-Operations (Fast path) ---\n if (prop === \"_val\") return currentVal;\n if (prop === \"_set\")\n return (val: any) => {\n commit(val, true, false, \"_set\");\n };\n if (prop === \"_patch\")\n return (val: any) => {\n commit(val, false, false, \"_patch\");\n };\n if (prop === \"__actions__\") return (options as any).actions;\n\n // Handle plugin-provided operations (e.g., _persist)\n const pluginOps = store.getPluginOps(key, options);\n if (prop in pluginOps) return pluginOps[prop];\n\n // Type check once for this level\n const valType = typeof currentVal;\n const isArray = Array.isArray(currentVal);\n\n // --- Number Operations (Optimized with cached functions) ---\n if (valType === \"number\") {\n switch (prop) {\n case \"_increment\":\n return (amount = 1) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal + amount, \"_increment\");\n };\n case \"_decrement\":\n return (amount = 1) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal - amount, \"_decrement\");\n };\n case \"_add\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal + amount, \"_add\");\n };\n case \"_subtract\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal - amount, \"_subtract\");\n };\n case \"_multiply\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal * amount, \"_multiply\");\n };\n case \"_divide\":\n return (amount: number) => {\n if (amount === 0) throw new Error(\"[FlowProxy] Division by zero\");\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal / amount, \"_divide\");\n };\n }\n }\n\n // --- Array Operations (Optimized with minimal allocations) ---\n if (isArray) {\n switch (prop) {\n case \"_push\":\n return (item: any) => {\n // Manual copy instead of spread for large arrays\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n for (let i = 0; i < len; i++) newArr[i] = currentVal[i];\n newArr[len] = item;\n update(newArr, \"_push\");\n };\n case \"_pop\":\n return () => update(currentVal.slice(0, -1), \"_pop\");\n case \"_shift\":\n return () => update(currentVal.slice(1), \"_shift\");\n case \"_unshift\":\n return (item: any) => {\n // Manual copy for better performance\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n newArr[0] = item;\n for (let i = 0; i < len; i++) newArr[i + 1] = currentVal[i];\n update(newArr, \"_unshift\");\n };\n case \"_filter\":\n return (fn: any) => update(currentVal.filter(fn), \"_filter\");\n case \"_map\":\n return (fn: any) => update(currentVal.map(fn), \"_map\");\n case \"_removeAt\":\n return (index: number) => {\n // Manual filter for single index\n const len = currentVal.length;\n const newArr = new Array(len - 1);\n let j = 0;\n for (let i = 0; i < len; i++) {\n if (i !== index) newArr[j++] = currentVal[i];\n }\n update(newArr, \"_removeAt\");\n };\n case \"_insertAt\":\n return (index: number, item: any) => {\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n for (let i = 0; i < index; i++) newArr[i] = currentVal[i];\n newArr[index] = item;\n for (let i = index; i < len; i++) newArr[i + 1] = currentVal[i];\n update(newArr, \"_insertAt\");\n };\n }\n }\n\n // --- String Operations ---\n if (valType === \"string\") {\n switch (prop) {\n case \"_append\":\n return (str: string) => update(currentVal + str, \"_append\");\n case \"_prepend\":\n return (str: string) => update(str + currentVal, \"_prepend\");\n case \"_uppercase\":\n return () => update(currentVal.toUpperCase(), \"_uppercase\");\n case \"_lowercase\":\n return () => update(currentVal.toLowerCase(), \"_lowercase\");\n case \"_trim\":\n return () => update(currentVal.trim(), \"_trim\");\n }\n }\n\n // --- Boolean Operations ---\n if (valType === \"boolean\") {\n if (prop === \"_toggle\") {\n return () => update(!currentVal, \"_toggle\");\n }\n }\n\n // --- Object Operations ---\n if (currentVal !== null && valType === \"object\" && !isArray) {\n if (prop === \"_merge\") {\n return (obj: any) => {\n // Object.assign faster than spread for merge\n const merged = Object.assign({}, currentVal, obj);\n update(merged, \"_merge\");\n };\n }\n if (prop === \"_delete\") {\n return (keyToDel: string) => {\n // Only copy if key exists\n if (!(keyToDel in currentVal)) return;\n const keys = Object.keys(currentVal);\n const next: any = {};\n for (const k of keys) {\n if (k !== keyToDel) next[k] = currentVal[k];\n }\n update(next, \"_delete\");\n };\n }\n }\n\n // Recursive step: create a new proxy for the child property\n // Use cached path\n const nextVal =\n currentVal !== null && currentVal !== undefined\n ? currentVal[prop]\n : undefined;\n const newPath = getCachedPath(path, prop);\n return createDeepProxy(key, newPath, nextVal, options);\n },\n apply(_target, _thisArg, args) {\n if (typeof currentVal === \"function\") {\n return currentVal(...args);\n }\n console.warn(\n `[FlowProxy] Attempted to call a non-function value at path: ${path.join(\".\")}`,\n );\n },\n }) as unknown as TypeAwareOps<T, A>;\n}\n\n/**\n * Immutable update utility that sets a value at a specific path within an object/array.\n */\nexport function setInPath(obj: any, path: string[], value: any): any {\n return setInPathRecursive(obj, path, value, 0);\n}\n\nfunction setInPathRecursive(\n obj: any,\n path: string[],\n value: any,\n index: number,\n): any {\n if (index === path.length) return value;\n\n const head = path[index];\n\n if (Array.isArray(obj)) {\n const i = parseInt(head, 10);\n if (isNaN(i) || i < 0)\n throw new Error(`[FlowProxy] Invalid array index: ${head}`);\n\n const len = obj.length;\n const newArr = new Array(Math.max(len, i + 1));\n\n // Fast copy with check for modified index\n for (let j = 0; j < newArr.length; j++) {\n if (j === i) {\n newArr[j] = setInPathRecursive(obj[j], path, value, index + 1);\n } else {\n newArr[j] = j < len ? obj[j] : undefined;\n }\n }\n return newArr;\n }\n\n // Object path\n const currentObj = obj ?? {};\n const keys = Object.keys(currentObj);\n const result: any = {};\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n result[key] =\n key === head\n ? setInPathRecursive(currentObj[key], path, value, index + 1)\n : currentObj[key];\n }\n\n if (!(head in currentObj)) {\n result[head] = setInPathRecursive(undefined, path, value, index + 1);\n }\n\n return result;\n}\n\n/**\n * Access utility to get a value at a specific path.\n */\nfunction getInPath(obj: any, path: string[]): any {\n let current = obj;\n for (let i = 0; i < path.length; i++) {\n if (current === null || current === undefined) return undefined;\n current = current[path[i]];\n }\n return current;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sources":["../../../src/proxy.ts"],"sourcesContent":["/* *****************************************************************************\n * FractoSate\n *\n * ACCESS RESTRICTIONS:\n * - This software is exclusively for use by Authorized Personnel of NEHONIX\n * - Intended for Internal Use only within NEHONIX operations\n * - No rights granted to unauthorized individuals or entities\n * - All modifications are works made for hire assigned to NEHONIX\n *\n * PROHIBITED ACTIVITIES:\n * - Copying, distributing, or sublicensing without written permission\n * - Reverse engineering, decompiling, or disassembling\n * - Creating derivative works without explicit authorization\n * - External use or commercial distribution outside NEHONIX\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * For questions or permissions, contact:\n * NEHONIX Legal Department\n * Email: legal@nehonix.com\n * Website: www.nehonix.com\n ***************************************************************************** */\n\nimport type { FlowOptions, TypeAwareOps } from \"./types\";\nimport { store } from \"./store\";\n\n// Path cache to avoid repeated array allocations\nconst pathCache = new WeakMap<string[], Map<string, string[]>>();\n\nfunction getCachedPath(path: string[], prop: string): string[] {\n let cache = pathCache.get(path);\n if (!cache) {\n cache = new Map();\n pathCache.set(path, cache);\n }\n\n let cached = cache.get(prop);\n if (!cached) {\n cached = [...path, prop];\n cache.set(prop, cached);\n }\n return cached;\n}\n\n/**\n * Creates a deep proxy that provides type-specific atomic operations for a flow.\n * The proxy tracks its path within the state tree and maps access to specific update logic.\n *\n * Reduced allocations, cached operations\n */\nexport function createDeepProxy<T = any, A = Record<string, any>>(\n key: string,\n path: string[],\n currentVal: any,\n options: FlowOptions<any>,\n): TypeAwareOps<T, A> {\n // Pre-bind commit function to avoid recreation\n const commit = (\n val: any,\n forceful: boolean,\n skipEquality = false,\n op?: string,\n ) => {\n try {\n // INTERNAL OPTIMIZATION: We fetch the RAW current state from the vault\n // without cloning it. Since we are about to produce a new IMMUTABLE state\n // using setInPath (which does structural cloning), this is safe and\n // avoiding a full deepClone of the entire tree on every tiny action\n // results in 100x performance in loops.\n const currentState = store.get(key, undefined, { bypassClone: true });\n const newState = setInPath(currentState, path, val);\n store.set(key, newState, {\n ...options,\n force: forceful,\n skipEquality,\n _op: op || (options as any)._op || \"set\",\n _path: path,\n } as any);\n } catch (error) {\n console.error(\n `[FlowProxy] Commit error at path ${path.join(\".\")}:`,\n error,\n );\n throw error;\n }\n };\n\n // Pre-create update function\n const update = (val: any, op?: string) => {\n commit(val, false, true, op);\n };\n\n return new Proxy(() => {}, {\n get(_target: any, prop: any) {\n if (typeof prop === \"symbol\") return undefined;\n\n // --- Meta-Operations (Fast path) ---\n if (prop === \"_val\") return currentVal;\n if (prop === \"_set\")\n return (val: any) => {\n commit(val, true, false, \"_set\");\n };\n if (prop === \"_patch\")\n return (val: any) => {\n commit(val, false, false, \"_patch\");\n };\n if (prop === \"__actions__\") return (options as any).actions;\n if (prop === \"_undo\") return () => store.undo(key);\n if (prop === \"_redo\") return () => store.redo(key);\n if (prop === \"_canUndo\") return (store.getHistory(key)?.length || 0) > 1;\n if (prop === \"_canRedo\")\n return (store.getRedoStack(key)?.length || 0) > 0;\n if (prop === \"_history\") return store.getHistory(key);\n\n // Handle plugin-provided operations (e.g., _persist)\n const pluginOps = store.getPluginOps(key, options);\n if (prop in pluginOps) return pluginOps[prop];\n\n // Type check once for this level\n const valType = typeof currentVal;\n const isArray = Array.isArray(currentVal);\n\n // --- Number Operations (Optimized with cached functions) ---\n if (valType === \"number\") {\n switch (prop) {\n case \"_increment\":\n return (amount = 1) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal + amount, \"_increment\");\n };\n case \"_decrement\":\n return (amount = 1) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal - amount, \"_decrement\");\n };\n case \"_add\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal + amount, \"_add\");\n };\n case \"_subtract\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal - amount, \"_subtract\");\n };\n case \"_multiply\":\n return (amount: number) => {\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal * amount, \"_multiply\");\n };\n case \"_divide\":\n return (amount: number) => {\n if (amount === 0) throw new Error(\"[FlowProxy] Division by zero\");\n const liveVal =\n path.length === 0\n ? store.get(key, undefined, { bypassClone: true })\n : getInPath(\n store.get(key, undefined, { bypassClone: true }),\n path,\n );\n update(liveVal / amount, \"_divide\");\n };\n case \"_pow\":\n return (n: number) => update(Math.pow(currentVal, n), \"_pow\");\n case \"_sqrt\":\n return () => update(Math.sqrt(currentVal), \"_sqrt\");\n case \"_abs\":\n return () => update(Math.abs(currentVal), \"_abs\");\n case \"_round\":\n return () => update(Math.round(currentVal), \"_round\");\n case \"_floor\":\n return () => update(Math.floor(currentVal), \"_floor\");\n case \"_ceil\":\n return () => update(Math.ceil(currentVal), \"_ceil\");\n case \"_mod\":\n return (n: number) => update(currentVal % n, \"_mod\");\n case \"_clamp\":\n return (min: number, max: number) =>\n update(Math.min(Math.max(currentVal, min), max), \"_clamp\");\n case \"_negate\":\n return () => update(-currentVal, \"_negate\");\n case \"_toPrecision\":\n return (p: number) =>\n update(parseFloat(currentVal.toPrecision(p)), \"_toPrecision\");\n }\n }\n\n // --- Array Operations (Optimized with minimal allocations) ---\n if (isArray) {\n switch (prop) {\n case \"_push\":\n return (item: any) => {\n // Manual copy instead of spread for large arrays\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n for (let i = 0; i < len; i++) newArr[i] = currentVal[i];\n newArr[len] = item;\n update(newArr, \"_push\");\n };\n case \"_pop\":\n return () => update(currentVal.slice(0, -1), \"_pop\");\n case \"_shift\":\n return () => update(currentVal.slice(1), \"_shift\");\n case \"_unshift\":\n return (item: any) => {\n // Manual copy for better performance\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n newArr[0] = item;\n for (let i = 0; i < len; i++) newArr[i + 1] = currentVal[i];\n update(newArr, \"_unshift\");\n };\n case \"_filter\":\n return (fn: any) => update(currentVal.filter(fn), \"_filter\");\n case \"_map\":\n return (fn: any) => update(currentVal.map(fn), \"_map\");\n case \"_removeAt\":\n return (index: number) => {\n // Manual filter for single index\n const len = currentVal.length;\n const newArr = new Array(len - 1);\n let j = 0;\n for (let i = 0; i < len; i++) {\n if (i !== index) newArr[j++] = currentVal[i];\n }\n update(newArr, \"_removeAt\");\n };\n case \"_insertAt\":\n return (index: number, item: any) => {\n const len = currentVal.length;\n const newArr = new Array(len + 1);\n for (let i = 0; i < index; i++) newArr[i] = currentVal[i];\n newArr[index] = item;\n for (let i = index; i < len; i++) newArr[i + 1] = currentVal[i];\n update(newArr, \"_insertAt\");\n };\n // --- New Ops (v4.8.0) ---\n case \"_splice\":\n return (s: number, d: number, ...items: any[]) => {\n const next = [...currentVal];\n next.splice(s, d, ...items);\n update(next, \"_splice\");\n };\n case \"_reverse\":\n return () => update([...currentVal].reverse(), \"_reverse\");\n case \"_sort\":\n return (fn: any) => update([...currentVal].sort(fn), \"_sort\");\n case \"_fill\":\n return (v: any, s?: number, e?: number) => {\n const next = [...currentVal];\n next.fill(v, s, e);\n update(next, \"_fill\");\n };\n case \"_concat\":\n return (other: any[]) =>\n update(currentVal.concat(other), \"_concat\");\n case \"_uniq\":\n return () => update(Array.from(new Set(currentVal)), \"_uniq\");\n case \"_shuffle\":\n return () => {\n const next = [...currentVal];\n for (let i = next.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [next[i], next[j]] = [next[j], next[i]];\n }\n update(next, \"_shuffle\");\n };\n // Traversers that return a proxy to an item\n case \"_at\":\n return (i: number) => {\n const idx = i < 0 ? currentVal.length + i : i;\n return createDeepProxy(\n key,\n getCachedPath(path, idx.toString()),\n currentVal[idx],\n options,\n );\n };\n case \"_first\":\n return () =>\n createDeepProxy(\n key,\n getCachedPath(path, \"0\"),\n currentVal[0],\n options,\n );\n case \"_last\":\n return () =>\n createDeepProxy(\n key,\n getCachedPath(path, (currentVal.length - 1).toString()),\n currentVal[currentVal.length - 1],\n options,\n );\n case \"_findBy\":\n return (fn: (item: any, idx: number) => boolean) => {\n const idx = currentVal.findIndex(fn);\n if (idx === -1) return undefined;\n return createDeepProxy(\n key,\n getCachedPath(path, idx.toString()),\n currentVal[idx],\n options,\n );\n };\n }\n }\n\n // --- String Operations ---\n if (valType === \"string\") {\n switch (prop) {\n case \"_append\":\n return (str: string) => update(currentVal + str, \"_append\");\n case \"_prepend\":\n return (str: string) => update(str + currentVal, \"_prepend\");\n case \"_uppercase\":\n return () => update(currentVal.toUpperCase(), \"_uppercase\");\n case \"_lowercase\":\n return () => update(currentVal.toLowerCase(), \"_lowercase\");\n case \"_trim\":\n return () => update(currentVal.trim(), \"_trim\");\n // --- New Ops (v4.8.0) ---\n case \"_replace\":\n return (p: string | RegExp, r: string) =>\n update(currentVal.replace(p, r), \"_replace\");\n case \"_replaceAll\":\n return (p: string | RegExp, r: string) =>\n update(currentVal.replaceAll(p, r), \"_replaceAll\");\n case \"_substring\":\n return (s: number, e?: number) =>\n update(currentVal.substring(s, e), \"_substring\");\n case \"_slice\":\n return (s: number, e?: number) =>\n update(currentVal.slice(s, e), \"_slice\");\n case \"_capitalize\":\n return () =>\n update(\n currentVal.charAt(0).toUpperCase() + currentVal.slice(1),\n \"_capitalize\",\n );\n case \"_truncate\":\n return (l: number, s = \"...\") =>\n update(\n currentVal.length > l\n ? currentVal.substring(0, l) + s\n : currentVal,\n \"_truncate\",\n );\n case \"_padEnd\":\n return (l: number, f?: string) =>\n update(currentVal.padEnd(l, f), \"_padEnd\");\n case \"_padStart\":\n return (l: number, f?: string) =>\n update(currentVal.padStart(l, f), \"_padStart\");\n case \"_repeat\":\n return (c: number) => update(currentVal.repeat(c), \"_repeat\");\n }\n }\n\n // --- Boolean Operations ---\n if (valType === \"boolean\") {\n if (prop === \"_toggle\") {\n return () => update(!currentVal, \"_toggle\");\n }\n }\n\n // --- Object Operations ---\n if (currentVal !== null && valType === \"object\" && !isArray) {\n if (prop === \"_merge\") {\n return (obj: any) => {\n // Object.assign faster than spread for merge\n const merged = Object.assign({}, currentVal, obj);\n update(merged, \"_merge\");\n };\n }\n if (prop === \"_delete\") {\n return (keyToDel: string) => {\n // Only copy if key exists\n if (!(keyToDel in currentVal)) return;\n const keys = Object.keys(currentVal);\n const next: any = {};\n for (const k of keys) {\n if (k !== keyToDel) next[k] = currentVal[k];\n }\n update(next, \"_delete\");\n };\n }\n // --- New Ops (v4.8.0) ---\n if (prop === \"_pick\") {\n return (keys: string[]) => {\n const next: any = {};\n keys.forEach((k) => {\n if (k in currentVal) next[k] = currentVal[k];\n });\n update(next, \"_pick\");\n };\n }\n if (prop === \"_omit\") {\n return (keys: string[]) => {\n const next = { ...currentVal };\n keys.forEach((k) => delete next[k]);\n update(next, \"_omit\");\n };\n }\n if (prop === \"_defaults\") {\n return (d: any) => update({ ...d, ...currentVal }, \"_defaults\");\n }\n if (prop === \"_clear\") return () => update({}, \"_clear\");\n if (prop === \"_clone\") return () => update({ ...currentVal }, \"_clone\");\n if (prop === \"_assign\")\n return (s: any) => update({ ...currentVal, ...s }, \"_assign\");\n if (prop === \"_mapValues\") {\n return (fn: any) => {\n const next: any = {};\n Object.keys(currentVal).forEach(\n (k) => (next[k] = fn(currentVal[k], k)),\n );\n update(next, \"_mapValues\");\n };\n }\n }\n\n // Recursive step: create a new proxy for the child property\n // Use cached path\n const nextVal =\n currentVal !== null && currentVal !== undefined\n ? currentVal[prop]\n : undefined;\n const newPath = getCachedPath(path, prop);\n return createDeepProxy(key, newPath, nextVal, options);\n },\n apply(_target, _thisArg, args) {\n if (typeof currentVal === \"function\") {\n return currentVal(...args);\n }\n console.warn(\n `[FlowProxy] Attempted to call a non-function value at path: ${path.join(\".\")}`,\n );\n },\n }) as unknown as TypeAwareOps<T, A>;\n}\n\n/**\n * Immutable update utility that sets a value at a specific path within an object/array.\n */\nexport function setInPath(obj: any, path: string[], value: any): any {\n return setInPathRecursive(obj, path, value, 0);\n}\n\nfunction setInPathRecursive(\n obj: any,\n path: string[],\n value: any,\n index: number,\n): any {\n if (index === path.length) return value;\n\n const head = path[index];\n\n if (Array.isArray(obj)) {\n const i = parseInt(head, 10);\n if (isNaN(i) || i < 0)\n throw new Error(`[FlowProxy] Invalid array index: ${head}`);\n\n const len = obj.length;\n const newArr = new Array(Math.max(len, i + 1));\n\n // Fast copy with check for modified index\n for (let j = 0; j < newArr.length; j++) {\n if (j === i) {\n newArr[j] = setInPathRecursive(obj[j], path, value, index + 1);\n } else {\n newArr[j] = j < len ? obj[j] : undefined;\n }\n }\n return newArr;\n }\n\n // Object path\n const currentObj = obj ?? {};\n const keys = Object.keys(currentObj);\n const result: any = {};\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n result[key] =\n key === head\n ? setInPathRecursive(currentObj[key], path, value, index + 1)\n : currentObj[key];\n }\n\n if (!(head in currentObj)) {\n result[head] = setInPathRecursive(undefined, path, value, index + 1);\n }\n\n return result;\n}\n\n/**\n * Access utility to get a value at a specific path.\n */\nfunction getInPath(obj: any, path: string[]): any {\n let current = obj;\n for (let i = 0; i < path.length; i++) {\n if (current === null || current === undefined) return undefined;\n current = current[path[i]];\n }\n return current;\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as FlowDefinition, D as DerivedFlowDefinition, C as ContextGetterOps, a as FlowOptions, A as ActionOpsObject, b as FlowOperations, U as UseFlowOptions } from './types-uxZZ-BGu.js';
2
- export { c as ArrayOps, B as BaseOps, d as BooleanOps, e as BoundActions, f as FlowAction, g as FlowEffect, h as FlowOpsObject, i as FlowPlugin, N as NumberOps, O as ObjectOps, S as StringOps, T as TypeAwareOps } from './types-uxZZ-BGu.js';
1
+ import { F as FlowDefinition, D as DerivedFlowDefinition, C as ContextGetterOps, a as FlowOptions, A as ActionOpsObject, b as FlowOperations, U as UseFlowOptions } from './types-B6F3mRRc.js';
2
+ export { c as ArrayOps, B as BaseOps, d as BooleanOps, e as BoundActions, f as FlowAction, g as FlowEffect, h as FlowOpsObject, i as FlowPlugin, N as NumberOps, O as ObjectOps, S as StringOps, T as TypeAwareOps } from './types-B6F3mRRc.js';
3
3
 
4
4
  /**
5
5
  * Manually initializes a flow to ensure its effects run immediately.
package/dist/plugins.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { i as FlowPlugin, h as FlowOpsObject } from './types-uxZZ-BGu.js';
1
+ import { i as FlowPlugin, h as FlowOpsObject } from './types-B6F3mRRc.js';
2
2
 
3
3
  interface LoggerOptions {
4
4
  collapsed?: boolean;