@simten/ui 0.1.3 → 0.1.4
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.
- package/dist/canvas/CircuitCanvas.js.map +1 -1
- package/dist/canvas/ClockControls.js.map +1 -1
- package/dist/canvas/CompositeInspectorDialog.js.map +1 -1
- package/dist/canvas/dagre-layout.js.map +1 -1
- package/dist/canvas/drill-down-view.js.map +1 -1
- package/dist/canvas/hooks/useDetectTheme.js.map +1 -1
- package/dist/canvas/hooks/useIsMobile.js.map +1 -1
- package/dist/canvas/hooks/useSimulationSession.js.map +1 -1
- package/dist/canvas/index.js.map +1 -1
- package/dist/canvas/label-utils.js.map +1 -1
- package/dist/canvas/node-types.js.map +1 -1
- package/dist/canvas/projection.js.map +1 -1
- package/dist/canvas/types.js.map +1 -1
- package/dist/canvas/useLayout.js.map +1 -1
- package/dist/editor/components/CircuitSelector.js.map +1 -1
- package/dist/editor/components/CircuitTabBar.js.map +1 -1
- package/dist/editor/components/ClockControls.js.map +1 -1
- package/dist/editor/components/ComponentTooltip.js.map +1 -1
- package/dist/editor/components/ConflictResolutionModal.js.map +1 -1
- package/dist/editor/components/HierarchyBreadcrumb.js.map +1 -1
- package/dist/editor/components/LabelEditor.js.map +1 -1
- package/dist/editor/components/SignalOutputPanel.js.map +1 -1
- package/dist/editor/components/index.js.map +1 -1
- package/dist/editor/hooks/index.js.map +1 -1
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/lib/simulation/index.js.map +1 -1
- package/dist/editor/lib/utils/circuit-flattener.js.map +1 -1
- package/dist/editor/lib/utils/component-utils.js.map +1 -1
- package/dist/editor/lib/utils/index.js.map +1 -1
- package/dist/editor/lib/visualization/index.js.map +1 -1
- package/dist/editor/lib/visualization/vcd-generator.js.map +1 -1
- package/dist/editor/stores/circuit-library-store.js.map +1 -1
- package/dist/editor/stores/circuit-preview-store.js.map +1 -1
- package/dist/editor/stores/circuit-store.js.map +1 -1
- package/dist/editor/stores/index.js.map +1 -1
- package/dist/editor/stores/ui-store.js.map +1 -1
- package/dist/editor/types/circuit.js.map +1 -1
- package/dist/editor/types/index.js.map +1 -1
- package/dist/editor/types/testbench.js.map +1 -1
- package/dist/editor/types/testing.js.map +1 -1
- package/dist/editor/types/ui-model.js.map +1 -1
- package/dist/editor/types/ui.js.map +1 -1
- package/dist/editor/types/visual.js.map +1 -1
- package/dist/editor/utils/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/nodes/BaseNode.js.map +1 -1
- package/dist/nodes/CompositeBadge.js.map +1 -1
- package/dist/nodes/ConsoleNode.js.map +1 -1
- package/dist/nodes/EmbedConsoleNode.js.map +1 -1
- package/dist/nodes/EmbedScreenNode.js.map +1 -1
- package/dist/nodes/EthFrameInputNode.js.map +1 -1
- package/dist/nodes/InputNode.js.map +1 -1
- package/dist/nodes/LogicGateNode.js.map +1 -1
- package/dist/nodes/NicFifoNode.js.map +1 -1
- package/dist/nodes/NodeData.js.map +1 -1
- package/dist/nodes/NumericInputNode.js.map +1 -1
- package/dist/nodes/OutputNode.js.map +1 -1
- package/dist/nodes/RAMNode.js.map +1 -1
- package/dist/nodes/ROMNode.js.map +1 -1
- package/dist/nodes/RV32IInstrMemNode.js.map +1 -1
- package/dist/nodes/RasterDisplayNode.js.map +1 -1
- package/dist/nodes/RegisterNode.js.map +1 -1
- package/dist/nodes/ScreenNode.js.map +1 -1
- package/dist/nodes/UartTxNode.js.map +1 -1
- package/dist/nodes/index.js.map +1 -1
- package/dist/primitives/button.js.map +1 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/sheet.js.map +1 -1
- package/dist/primitives/tooltip.js.map +1 -1
- package/dist/sandbox/SandboxProvider.js.map +1 -1
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/useSandbox.js.map +1 -1
- package/dist/share/encode-source.js.map +1 -1
- package/dist/share/index.js.map +1 -1
- package/dist/waveform/WaveformViewer.js.map +1 -1
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../../src/editor/types/visual.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0DH,8BAA8B;AAC9B,4BAA4B;AAC5B,8BAA8B;AAE9B,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACjC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9B,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,6BAA6B;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,mCAAmC;AAElE,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,KAAK,EAAE,SAAS,EAAE,YAAY;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;CACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../../src/editor/types/visual.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0DH,8BAA8B;AAC9B,4BAA4B;AAC5B,8BAA8B;AAE9B,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACjC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9B,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,6BAA6B;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,mCAAmC;AAElE,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,KAAK,EAAE,SAAS,EAAE,YAAY;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;CACnC,CAAC","sourcesContent":["/**\n * Visual Metadata Types\n *\n * These types define the visual representation layer that sits on top of the IR.\n * Metadata stores positions, sizes, and other visual properties separate from logic.\n */\n\n// ===========================\n// Position & Layout\n// ===========================\n\nexport interface Position {\n x: number;\n y: number;\n}\n\nexport interface Dimensions {\n width: number;\n height: number;\n}\n\n// ===========================\n// Component Metadata\n// ===========================\n\nexport interface ComponentMetadata {\n id: string; // Matches the component ID in IR\n position: Position;\n dimensions?: Dimensions; // Optional, can use defaults based on type\n selected?: boolean;\n zIndex?: number;\n}\n\n// ===========================\n// Port Metadata\n// ===========================\n\nexport interface PortMetadata {\n id: string; // Matches port ID from IR (e.g., \"comp1.in0\")\n position: Position; // Relative to component\n}\n\n// ===========================\n// Connection Metadata\n// ===========================\n\nexport interface ConnectionMetadata {\n id: string; // Matches connection ID in IR\n animated?: boolean; // For visual effects\n color?: string; // Wire color based on signal state\n waypoints?: Position[]; // Custom routing waypoints for orthogonal edges\n selected?: boolean; // Selection state for deletion and visual feedback\n}\n\n// ===========================\n// Metadata State\n// ===========================\n\nexport interface MetadataState {\n components: Record<string, ComponentMetadata>;\n connections: Record<string, ConnectionMetadata>;\n}\n\n// ===========================\n// Default Visual Properties\n// ===========================\n\nexport const DEFAULT_NODE_DIMENSIONS: Record<string, Dimensions> = {\n SWITCH: { width: 80, height: 60 },\n LED: { width: 80, height: 60 },\n AND_GATE: { width: 100, height: 80 },\n};\n\nexport const PORT_SIZE = 12; // Port handle size in pixels\nexport const PORT_OFFSET = 16; // Offset from top/bottom for ports\n\n// Wire colors based on signal state\nexport const WIRE_COLORS = {\n TRUE: '#22c55e', // green-500\n FALSE: '#94a3b8', // slate-400\n UNDEFINED: '#cbd5e1', // slate-300\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editor/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editor/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * Utility exports — editor-specific utilities.\n * Canvas-level utilities (projection, drill-down) are in packages/ui/src/canvas/.\n */\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG","sourcesContent":["/**\n * @simten/ui\n *\n * Use sub-path imports:\n * @simten/ui/nodes — Store-free node components (BaseNode, InputNode, etc.)\n * @simten/ui/canvas — CircuitCanvas, projection, layout\n * @simten/ui/editor — Editor kit (stores, components, hooks)\n *\n * For embeddable components, use @simten/embed directly.\n */\n"]}
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../src/nodes/BaseNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../src/nodes/BaseNode.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React from 'react';\nimport { Handle, Position } from '@xyflow/react';\nimport { cn } from '../lib/utils';\n\nexport interface PortConfig {\n name: string;\n index: number;\n type: 'input' | 'output';\n connected?: boolean;\n value?: boolean;\n}\n\nexport interface BaseNodeProps {\n children: React.ReactNode;\n inputPorts?: PortConfig[];\n outputPorts?: PortConfig[];\n selected?: boolean;\n className?: string;\n showPortLabels?: boolean;\n onPortClick?: (portName: string, portType: 'input' | 'output') => void;\n glowUnconnected?: boolean;\n}\n\nexport function BaseNode({ children, inputPorts = [], outputPorts = [], selected, className, showPortLabels, onPortClick, glowUnconnected }: BaseNodeProps) {\n return (\n <div\n className={cn(\n 'relative rounded-lg border-2 bg-[var(--embed-bg-secondary)] shadow-md transition-all',\n selected ? 'border-blue-500 shadow-lg' : 'border-[var(--embed-border-node)]',\n className\n )}\n >\n {/* Input Ports (Left Side) */}\n {inputPorts.map((port) => {\n const topPct = `${((port.index + 1) * 100) / (inputPorts.length + 1)}%`;\n const unconnected = glowUnconnected && !port.connected;\n return (\n <React.Fragment key={`in-${port.name}`}>\n {unconnected && (\n <div\n className=\"absolute h-5 w-5 rounded-full animate-ping\"\n style={{\n top: topPct,\n left: '-7px',\n transform: 'translateY(-50%)',\n background: 'radial-gradient(circle, rgba(96,165,250,0.5) 0%, transparent 70%)',\n }}\n />\n )}\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`in-${port.name}`}\n className={cn(\n 'h-3 w-3 rounded-full border-2 transition-all duration-200',\n port.connected ? 'bg-blue-500 border-blue-600' : 'bg-[var(--embed-bg-tertiary)] border-[var(--embed-border-node)]',\n unconnected && 'border-blue-400',\n onPortClick && 'cursor-pointer hover:scale-150',\n 'hover:bg-blue-300 hover:border-blue-500'\n )}\n style={{ top: topPct, left: '-6px' }}\n onClick={onPortClick ? (e) => { e.stopPropagation(); onPortClick(port.name, 'input'); } : undefined}\n />\n {showPortLabels && (\n <div\n className=\"absolute text-[9px] font-mono text-[var(--embed-text-secondary)] pointer-events-none select-none\"\n style={{ top: topPct, left: '10px', transform: 'translateY(-50%)' }}\n >\n {port.name}\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {/* Node Content */}\n <div className=\"relative px-3 py-2\">{children}</div>\n\n {/* Output Ports (Right Side) */}\n {outputPorts.map((port) => {\n const topPct = `${((port.index + 1) * 100) / (outputPorts.length + 1)}%`;\n const unconnected = glowUnconnected && !port.connected;\n return (\n <React.Fragment key={`out-${port.name}`}>\n {unconnected && (\n <div\n className=\"absolute h-5 w-5 rounded-full animate-ping\"\n style={{\n top: topPct,\n right: '-7px',\n transform: 'translateY(-50%)',\n background: 'radial-gradient(circle, rgba(74,222,128,0.5) 0%, transparent 70%)',\n }}\n />\n )}\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`out-${port.name}`}\n className={cn(\n 'h-3 w-3 rounded-full border-2 transition-all duration-200',\n port.connected ? 'bg-green-500 border-green-600' : 'bg-[var(--embed-bg-tertiary)] border-[var(--embed-border-node)]',\n port.value === true && 'bg-green-500 border-green-600',\n port.value === false && 'bg-gray-300 border-gray-400',\n unconnected && 'border-green-400',\n onPortClick && 'cursor-pointer hover:scale-150',\n 'hover:bg-green-300 hover:border-green-500'\n )}\n style={{ top: topPct, right: '-6px' }}\n onClick={onPortClick ? (e) => { e.stopPropagation(); onPortClick(port.name, 'output'); } : undefined}\n />\n {showPortLabels && (\n <div\n className=\"absolute text-[9px] font-mono text-[var(--embed-text-secondary)] pointer-events-none select-none\"\n style={{ top: topPct, right: '10px', transform: 'translateY(-50%)', textAlign: 'right' }}\n >\n {port.name}\n </div>\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeBadge.js","sourceRoot":"","sources":["../../src/nodes/CompositeBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CACL,KAAC,eAAe,IAAC,aAAa,EAAE,GAAG,YACjC,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,eAAK,SAAS,EAAC,wFAAwF,aAErG,eAAM,SAAS,EAAC,iGAAiG,GAAG,EAEpH,eAAM,SAAS,EAAC,mJAAmJ,YAEjK,eAAK,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,aAC7H,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,GAAG,EACpC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IACpC,GACD,IACH,GACS,EACjB,KAAC,cAAc,IAAC,IAAI,EAAC,KAAK,EAAC,UAAU,EAAE,CAAC,wCAEvB,IACT,GACM,CACnB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"CompositeBadge.js","sourceRoot":"","sources":["../../src/nodes/CompositeBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CACL,KAAC,eAAe,IAAC,aAAa,EAAE,GAAG,YACjC,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,eAAK,SAAS,EAAC,wFAAwF,aAErG,eAAM,SAAS,EAAC,iGAAiG,GAAG,EAEpH,eAAM,SAAS,EAAC,mJAAmJ,YAEjK,eAAK,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,aAC7H,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,GAAG,EACpC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IACpC,GACD,IACH,GACS,EACjB,KAAC,cAAc,IAAC,IAAI,EAAC,KAAK,EAAC,UAAU,EAAE,CAAC,wCAEvB,IACT,GACM,CACnB,CAAC;AACJ,CAAC","sourcesContent":["\nimport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n} from \"../primitives/tooltip\";\n\n/**\n * Badge shown on composite nodes indicating they can be drilled into.\n * Renders in the top-right corner with a magnifying glass and pulse ring.\n */\nexport function CompositeBadge() {\n return (\n <TooltipProvider delayDuration={200}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"absolute -top-2 -right-2 flex h-6 w-6 items-center justify-center cursor-pointer group\">\n {/* Pulse ring — slow, subtle */}\n <span className=\"absolute inset-0 rounded-full bg-blue-400/30 animate-[ping_2s_cubic-bezier(0,0,0.2,1)_infinite]\" />\n {/* Solid badge */}\n <span className=\"relative flex h-5 w-5 items-center justify-center rounded-full bg-blue-500 group-hover:bg-blue-400 transition-colors shadow-sm shadow-blue-500/30\">\n {/* Magnifying glass SVG */}\n <svg className=\"h-3 w-3 text-white\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4.5\" />\n <line x1=\"10\" y1=\"10\" x2=\"14\" y2=\"14\" />\n </svg>\n </span>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"top\" sideOffset={4}>\n Double-click to inspect\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleNode.js","sourceRoot":"","sources":["../../src/nodes/ConsoleNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,aAAwB,IAAI,EAAE,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wIAAwI,EAClJ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAE/C,IAAI,IAAI,eAAM,SAAS,EAAC,gCAAgC,uCAA8B,GACnF,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"ConsoleNode.js","sourceRoot":"","sources":["../../src/nodes/ConsoleNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,aAAwB,IAAI,EAAE,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wIAAwI,EAClJ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAE/C,IAAI,IAAI,eAAM,SAAS,EAAC,gCAAgC,uCAA8B,GACnF,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { useRef, useEffect } from 'react';\nimport { BaseNode } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface ConsoleNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function ConsoleNode({ data, selected }: ConsoleNodeProps) {\n const textAreaRef = useRef<HTMLPreElement>(null);\n const text = (data.__consoleText as string) ?? '';\n\n useEffect(() => {\n if (textAreaRef.current) {\n textAreaRef.current.scrollTop = textAreaRef.current.scrollHeight;\n }\n }, [text]);\n\n const lineCount = text ? text.split('\\n').length : 0;\n const charCount = text.length;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({ name, index, type: 'input' as const }))}\n outputPorts={data.outputNames.map((name, index) => ({ name, index, type: 'output' as const }))}\n className=\"min-w-[200px]\"\n showPortLabels={data.showPortLabels}\n onPortClick={data.onPortClick}\n glowUnconnected={data.glowUnconnected}\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'Console'}\n </div>\n <pre\n ref={textAreaRef}\n className=\"w-full h-32 overflow-auto rounded border-2 border-gray-700 bg-black text-green-400 font-mono text-xs p-2 whitespace-pre-wrap break-all\"\n style={{ minWidth: '180px', maxHeight: '200px' }}\n >\n {text || <span className=\"text-[var(--embed-text-muted)]\">// output appears here</span>}\n </pre>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {charCount} chars, {lineCount} lines\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbedConsoleNode.js","sourceRoot":"","sources":["../../src/nodes/EmbedConsoleNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAyB;IACxE,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,aAAwB,IAAK,IAAI,CAAC,UAAqB,IAAI,EAAE,CAAC;IAEjF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,EACH,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,QAAiB;SACxB,CAAC,CAAC,EACH,SAAS,EAAC,WAAW,YAErB,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,wEAAwE,YACpF,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wJAAwJ,EAClK,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAE5B,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,gCAAgC,YAC7C,oCAAoC,GAChC,CACR,GACG,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"EmbedConsoleNode.js","sourceRoot":"","sources":["../../src/nodes/EmbedConsoleNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAyB;IACxE,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,aAAwB,IAAK,IAAI,CAAC,UAAqB,IAAI,EAAE,CAAC;IAEjF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,EACH,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,QAAiB;SACxB,CAAC,CAAC,EACH,SAAS,EAAC,WAAW,YAErB,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,wEAAwE,YACpF,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wJAAwJ,EAClK,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAE5B,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,gCAAgC,YAC7C,oCAAoC,GAChC,CACR,GACG,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { useRef, useEffect } from \"react\";\nimport { BaseNode } from \"./BaseNode\";\nimport type { NodeData } from \"./NodeData\";\n\ninterface EmbedConsoleNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function EmbedConsoleNode({ data, selected }: EmbedConsoleNodeProps) {\n const textAreaRef = useRef<HTMLPreElement>(null);\n const text = (data.__consoleText as string) ?? (data.__uartText as string) ?? \"\";\n\n useEffect(() => {\n if (textAreaRef.current) {\n textAreaRef.current.scrollTop = textAreaRef.current.scrollHeight;\n }\n }, [text]);\n\n const lineCount = text ? text.split(\"\\n\").length : 0;\n const charCount = text.length;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({\n name,\n index,\n type: \"input\" as const,\n }))}\n outputPorts={data.outputNames.map((name, index) => ({\n name,\n index,\n type: \"output\" as const,\n }))}\n className=\"w-[380px]\"\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || \"Console\"}\n </div>\n <pre\n ref={textAreaRef}\n className=\"w-full h-32 overflow-auto rounded border-2 border-[var(--embed-border-node)] bg-black text-green-400 font-mono text-xs leading-none p-2 whitespace-pre\"\n style={{ maxHeight: \"200px\" }}\n >\n {text || (\n <span className=\"text-[var(--embed-text-muted)]\">\n {\"// Console output will appear here\"}\n </span>\n )}\n </pre>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {charCount} chars, {lineCount} lines\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbedScreenNode.js","sourceRoot":"","sources":["../../src/nodes/EmbedScreenNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwB;IACtE,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,KAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,MAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IAErC,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,EACH,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,QAAiB;SACxB,CAAC,CAAC,EACH,SAAS,EAAC,eAAe,YAEzB,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,wEAAwE,YACpF,IAAI,CAAC,KAAK,IAAI,QAAQ,GACnB,EACN,cACE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACrD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACtD,SAAS,EAAC,6DAA6D,EACvE,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAClD,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;wBACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;wBACrC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,MAAM,OAAG,MAAM,eACZ,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"EmbedScreenNode.js","sourceRoot":"","sources":["../../src/nodes/EmbedScreenNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwB;IACtE,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,KAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,MAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IAErC,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,OAAgB;SACvB,CAAC,CAAC,EACH,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK;YACL,IAAI,EAAE,QAAiB;SACxB,CAAC,CAAC,EACH,SAAS,EAAC,eAAe,YAEzB,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,wEAAwE,YACpF,IAAI,CAAC,KAAK,IAAI,QAAQ,GACnB,EACN,cACE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACrD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACtD,SAAS,EAAC,6DAA6D,EACvE,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAClD,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;wBACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;wBACrC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,MAAM,OAAG,MAAM,eACZ,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode } from \"./BaseNode\";\nimport type { NodeData } from \"./NodeData\";\n\ninterface EmbedScreenNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function EmbedScreenNode({ data, selected }: EmbedScreenNodeProps) {\n const GRID_W = (data.arguments?.width as number) ?? 8;\n const GRID_H = (data.arguments?.height as number) ?? 8;\n const TOTAL_PIXELS = GRID_W * GRID_H;\n\n const pixels = (data.__pixels as number[]) ?? new Array(TOTAL_PIXELS).fill(0);\n\n const PIXEL_SIZE = GRID_W <= 8 ? 16 : GRID_W <= 16 ? 8 : 4;\n const PIXEL_GAP = GRID_W <= 8 ? 2 : GRID_W <= 16 ? 1 : 0;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({\n name,\n index,\n type: \"input\" as const,\n }))}\n outputPorts={data.outputNames.map((name, index) => ({\n name,\n index,\n type: \"output\" as const,\n }))}\n className=\"min-w-[160px]\"\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || \"Screen\"}\n </div>\n <svg\n width={GRID_W * PIXEL_SIZE + (GRID_W - 1) * PIXEL_GAP}\n height={GRID_H * PIXEL_SIZE + (GRID_H - 1) * PIXEL_GAP}\n className=\"border-2 border-[var(--embed-border-node)] rounded bg-black\"\n style={{ imageRendering: \"pixelated\" }}\n >\n {pixels.slice(0, TOTAL_PIXELS).map((value, index) => {\n const x = index % GRID_W;\n const y = Math.floor(index / GRID_W);\n return (\n <rect\n key={index}\n x={x * (PIXEL_SIZE + PIXEL_GAP)}\n y={y * (PIXEL_SIZE + PIXEL_GAP)}\n width={PIXEL_SIZE}\n height={PIXEL_SIZE}\n fill={value !== 0 ? \"#00ff00\" : \"#1a1a1a\"}\n />\n );\n })}\n </svg>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {GRID_W}x{GRID_H} pixels\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EthFrameInputNode.js","sourceRoot":"","sources":["../../src/nodes/EthFrameInputNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAQvD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAA0B;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,UAAU,GACrB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,cAAK,SAAS,EAAC,4CAA4C,YACxD,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC,CAAC,UAAU,GAC9C,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"EthFrameInputNode.js","sourceRoot":"","sources":["../../src/nodes/EthFrameInputNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAQvD,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAA0B;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,UAAU,GACrB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,cAAK,SAAS,EAAC,4CAA4C,YACxD,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC,CAAC,UAAU,GAC9C,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface EthFrameInputNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function EthFrameInputNode({ data, selected }: EthFrameInputNodeProps) {\n const initData = data.arguments?.init;\n const byteCount = Array.isArray(initData) ? initData.length : 0;\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name, index, type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output',\n }));\n\n return (\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[120px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'EthFrame'}\n </div>\n <div className=\"px-3 py-2 text-xs font-semibold rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)]\">\n ETH\n </div>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {byteCount > 0 ? `${byteCount} bytes` : 'no frame'}\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNode.js","sourceRoot":"","sources":["../../src/nodes/InputNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputNode.js","sourceRoot":"","sources":["../../src/nodes/InputNode.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useCallback, useState } from 'react';\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\nimport { CompositeBadge } from './CompositeBadge';\nimport { cn } from '../lib/utils';\n\ninterface InputNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nfunction NumericInputControl({ data }: { data: NodeData }) {\n const width = data.width ?? 8;\n const maxValue = (1 << Math.min(width, 31)) - 1;\n const currentValue = data.numericValue ?? 0;\n const [isEditing, setIsEditing] = useState(false);\n const [editText, setEditText] = useState('');\n\n const setValue = useCallback((newValue: number) => {\n const clamped = Math.max(0, Math.min(maxValue, newValue));\n data.onValueChange?.(clamped);\n }, [data, maxValue]);\n\n const handleStartEdit = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n setEditText(currentValue.toString());\n setIsEditing(true);\n }, [currentValue]);\n\n const handleFinishEdit = useCallback(() => {\n const parsed = parseInt(editText, 10);\n if (!isNaN(parsed)) setValue(parsed);\n setIsEditing(false);\n }, [editText, setValue]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n e.stopPropagation();\n if (e.key === 'Enter') handleFinishEdit();\n else if (e.key === 'Escape') setIsEditing(false);\n }, [handleFinishEdit]);\n\n const hexDigits = Math.ceil(width / 4);\n const hexValue = currentValue.toString(16).toUpperCase().padStart(hexDigits, '0');\n\n return (\n <div className=\"flex flex-col items-center gap-1.5\">\n <div className=\"flex items-center gap-1\">\n <button\n onClick={(e) => { e.stopPropagation(); setValue(currentValue - 1); }}\n aria-label=\"Decrease value\"\n className=\"w-6 h-6 flex items-center justify-center rounded bg-[var(--embed-bg-tertiary)] hover:opacity-80 text-[var(--embed-text-secondary)] text-sm font-bold active:scale-90 transition-all\"\n >-</button>\n {isEditing ? (\n <input\n type=\"text\"\n value={editText}\n onChange={(e) => setEditText(e.target.value)}\n onBlur={handleFinishEdit}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n autoFocus\n className=\"w-14 h-7 text-center text-xs font-mono bg-white border border-blue-400 rounded outline-none text-gray-800\"\n />\n ) : (\n <button\n onClick={handleStartEdit}\n aria-label={`Current value: ${currentValue}. Click to edit`}\n className=\"w-14 h-7 flex items-center justify-center rounded bg-[var(--embed-bg-tertiary)] text-emerald-400 font-mono text-sm font-bold hover:opacity-80 transition-colors cursor-text\"\n >\n 0x{hexValue}\n </button>\n )}\n <button\n onClick={(e) => { e.stopPropagation(); setValue(currentValue + 1); }}\n aria-label=\"Increase value\"\n className=\"w-6 h-6 flex items-center justify-center rounded bg-[var(--embed-bg-tertiary)] hover:opacity-80 text-[var(--embed-text-secondary)] text-sm font-bold active:scale-90 transition-all\"\n >+</button>\n </div>\n <div className=\"text-[10px] text-[var(--embed-text-secondary)] font-mono\">= {currentValue}</div>\n </div>\n );\n}\n\nexport function InputNode({ data, selected }: InputNodeProps) {\n const value = data.value ?? false;\n const isNumericInput = data.componentRef === 'Input';\n\n const handleToggle = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n data.onToggle?.();\n }, [data]);\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name,\n index,\n type: 'output' as const,\n value: isNumericInput ? (data.numericValue ?? 0) !== 0 : value,\n }));\n\n return (\n <BaseNode outputPorts={outputPorts} selected={selected} className=\"min-w-[80px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative flex flex-col items-center gap-2\">\n {data.isComposite && <CompositeBadge />}\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || data.componentRef}\n </div>\n\n {isNumericInput ? (\n <NumericInputControl data={data} />\n ) : (\n <>\n <button\n onClick={handleToggle}\n role=\"switch\"\n aria-checked={value}\n aria-label={data.label || data.componentRef}\n className={cn(\n 'group relative h-9 w-16 rounded-full transition-all duration-300 ease-in-out',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 focus-visible:ring-offset-gray-900 hover:shadow-md active:scale-95',\n value\n ? 'bg-gradient-to-r from-emerald-500 to-green-500 shadow-sm'\n : 'bg-gradient-to-r from-gray-300 to-gray-400 shadow-sm'\n )}\n >\n <span\n className={cn(\n 'absolute top-0.5 flex items-center justify-center',\n 'h-8 w-8 rounded-full bg-white',\n 'shadow-lg transition-all duration-300 ease-out',\n value ? 'translate-x-[1.875rem]' : 'translate-x-0.5'\n )}\n >\n <span className=\"absolute inset-1 rounded-full bg-gradient-to-br from-white to-gray-50\" />\n <span\n className={cn(\n 'relative z-10 h-2 w-2 rounded-full transition-all duration-300',\n value\n ? 'bg-gradient-to-br from-emerald-400 to-green-500'\n : 'bg-gradient-to-br from-gray-300 to-gray-400'\n )}\n />\n </span>\n </button>\n <div className={cn(\n 'text-xs font-semibold tracking-wide transition-colors duration-300',\n value ? 'text-emerald-400' : 'text-[var(--embed-text-secondary)]'\n )}>\n {value ? 'ON' : 'OFF'}\n </div>\n </>\n )}\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogicGateNode.js","sourceRoot":"","sources":["../../src/nodes/LogicGateNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LogicGateNode.js","sourceRoot":"","sources":["../../src/nodes/LogicGateNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;CAC3D,CAAC,CAAC;AAEH,SAAS,oBAAoB,CAAC,YAAoB,EAAE,IAA8B;IAChF,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAOD,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAsB;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAElC,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI;QACJ,KAAK;QACL,IAAI,EAAE,OAAO;KACd,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI;QACJ,KAAK;QACL,IAAI,EAAE,QAAQ;QACd,KAAK;KACN,CAAC,CAAC,CAAC;IAEJ,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;gBACvB,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;gBACvB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;gBACvB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;gBACxB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;gBACvB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;gBACvB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;gBACxB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;gBAC1B,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC;gBAC7B,KAAK,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC;gBAC9B,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;gBACzB,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,OAAO,CACL,cAAK,SAAS,EAAE,8GACd,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,+CAC9C,EAAE,YACC,MAAM,GACH,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,cAAc,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YAChN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,wDAAwD,YACpE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,GAC5B,EACN,cAAK,SAAS,EAAC,kCAAkC,YAAE,gBAAgB,EAAE,GAAO,EAC3E,IAAI,CAAC,WAAW,IAAI,CACnB,cAAK,SAAS,EAAC,kDAAkD,wCAA8B,CAChG,IACG,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\nimport { CompositeBadge } from './CompositeBadge';\n\nconst SIMPLE_GATES = new Set([\n 'And', 'Or', 'Not', 'Nand', 'Nor', 'Xor', 'Xnor', 'Buffer',\n]);\n\nfunction formatComponentLabel(componentRef: string, args?: Record<string, unknown>): string {\n if (!args || Object.keys(args).length === 0) return componentRef;\n const width = args.width ?? args.input_count;\n if (width !== undefined) return `${componentRef}(${width})`;\n return componentRef;\n}\n\ninterface LogicGateNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function LogicGateNode({ data, selected }: LogicGateNodeProps) {\n const value = data.value ?? false;\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name,\n index,\n type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name,\n index,\n type: 'output',\n value,\n }));\n\n const renderGateSymbol = () => {\n const getSymbol = () => {\n switch (data.componentRef) {\n case 'And': return '&';\n case 'Or': return '≥1';\n case 'Not': return '¬';\n case 'Nand': return '⊼';\n case 'Nor': return '⊽';\n case 'Xor': return '⊕';\n case 'Xnor': return '⊙';\n case 'Buffer': return '▷';\n case 'DFlipFlop': return 'D';\n case 'Register': return 'REG';\n case 'RAM': return 'RAM';\n default: return formatComponentLabel(data.componentRef, data.arguments);\n }\n };\n\n const symbol = getSymbol();\n const isSimple = SIMPLE_GATES.has(data.componentRef);\n\n return (\n <div className={`flex items-center justify-center rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)] ${\n isSimple ? 'h-12 w-12 text-2xl font-bold' : 'h-auto w-auto px-3 py-2 text-xs font-semibold'\n }`}>\n {symbol}\n </div>\n );\n };\n\n return (\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[60px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative flex flex-col items-center gap-1\">\n {data.isComposite && <CompositeBadge />}\n <div className=\"text-xs font-medium text-[var(--embed-text-secondary)]\">\n {data.label || data.componentRef}\n </div>\n <div className=\"flex items-center justify-center\">{renderGateSymbol()}</div>\n {data.isComposite && (\n <div className=\"text-[9px] text-[var(--embed-text-muted)] italic\">double-click to inspect</div>\n )}\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NicFifoNode.js","sourceRoot":"","sources":["../../src/nodes/NicFifoNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAiF,CAAC;IACxG,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC;IAE7C,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,eAAK,SAAS,EAAC,uHAAuH,aACpI,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAM,SAAS,EAAC,oCAAoC,yBAAgB,EACpE,gBAAM,SAAS,EAAC,eAAe,aAAE,OAAO,cAAc,IAClD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAM,SAAS,EAAC,oCAAoC,yBAAgB,EACpE,gBAAM,SAAS,EAAC,gBAAgB,aAAE,OAAO,cAAc,IACnD,EACL,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,uCAAuC,6BAAmB,CAC1E,IACG,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"NicFifoNode.js","sourceRoot":"","sources":["../../src/nodes/NicFifoNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAiF,CAAC;IACxG,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC;IAE7C,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,eAAK,SAAS,EAAC,uHAAuH,aACpI,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAM,SAAS,EAAC,oCAAoC,yBAAgB,EACpE,gBAAM,SAAS,EAAC,eAAe,aAAE,OAAO,cAAc,IAClD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAM,SAAS,EAAC,oCAAoC,yBAAgB,EACpE,gBAAM,SAAS,EAAC,gBAAgB,aAAE,OAAO,cAAc,IACnD,EACL,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,uCAAuC,6BAAmB,CAC1E,IACG,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface NicFifoNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function NicFifoNode({ data, selected }: NicFifoNodeProps) {\n const nicState = data.__nicState as { txCount: number; rxCount: number; draining: boolean } | undefined;\n const txCount = nicState?.txCount ?? 0;\n const rxCount = nicState?.rxCount ?? 0;\n const draining = nicState?.draining ?? false;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({ name, index, type: 'input' as const }))}\n outputPorts={data.outputNames.map((name, index) => ({ name, index, type: 'output' as const }))}\n className=\"min-w-[160px]\"\n showPortLabels={data.showPortLabels}\n onPortClick={data.onPortClick}\n glowUnconnected={data.glowUnconnected}\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'NIC'}\n </div>\n <div className=\"w-full rounded border border-[var(--embed-border-node)] bg-[var(--embed-bg-tertiary)] p-2 text-xs font-mono space-y-1\">\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--embed-text-secondary)]\">TX FIFO:</span>\n <span className=\"text-blue-400\">{txCount} words</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--embed-text-secondary)]\">RX FIFO:</span>\n <span className=\"text-green-400\">{rxCount} words</span>\n </div>\n {draining && (\n <div className=\"text-center text-yellow-400 font-bold\">TRANSMITTING</div>\n )}\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeData.js","sourceRoot":"","sources":["../../src/nodes/NodeData.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"NodeData.js","sourceRoot":"","sources":["../../src/nodes/NodeData.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * NodeData interface for embed node components.\n * Extracted from packages/ui/src/editor/utils/projection.ts.\n * No store dependencies — all interaction via callbacks.\n */\nexport interface NodeData extends Record<string, unknown> {\n nodeId: string;\n componentRef: string;\n label?: string;\n value?: boolean;\n numericValue?: number;\n width?: number;\n inputCount: number;\n outputCount: number;\n inputNames: string[];\n outputNames: string[];\n isComposite?: boolean;\n arguments?: Record<string, unknown>;\n __pixels?: number[];\n __consoleText?: string;\n __uartText?: string;\n __nicState?: { txCount: number; rxCount: number; draining: boolean };\n onToggle?: () => void;\n onValueChange?: (value: number) => void;\n onLoadMemory?: (data: Map<number, number>) => void;\n showPortLabels?: boolean;\n onPortClick?: (portName: string, portType: 'input' | 'output') => void;\n glowUnconnected?: boolean;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumericInputNode.js","sourceRoot":"","sources":["../../src/nodes/NumericInputNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumericInputNode.js","sourceRoot":"","sources":["../../src/nodes/NumericInputNode.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useCallback, useState } from 'react';\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface NumericInputNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function NumericInputNode({ data, selected }: NumericInputNodeProps) {\n const value = data.numericValue ?? 0;\n const width = data.width ?? 8;\n const maxValue = (1 << Math.min(width, 31)) - 1;\n\n const [isEditingValue, setIsEditingValue] = useState(false);\n const [editValue, setEditValue] = useState(value.toString());\n const [displayMode, setDisplayMode] = useState<'dec' | 'hex'>('dec');\n\n const handleValueClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n setEditValue(value.toString());\n setIsEditingValue(true);\n }, [value]);\n\n const handleValueKeyDown = useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n const trimmed = editValue.trim();\n let parsed = trimmed.toLowerCase().startsWith('0x')\n ? parseInt(trimmed, 16)\n : parseInt(trimmed, 10);\n if (isNaN(parsed)) parsed = 0;\n parsed = Math.max(0, Math.min(maxValue, parsed));\n data.onValueChange?.(parsed);\n setIsEditingValue(false);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setIsEditingValue(false);\n }\n }, [editValue, maxValue, data]);\n\n const toggleDisplayMode = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n setDisplayMode((m) => (m === 'dec' ? 'hex' : 'dec'));\n }, []);\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output', value: true,\n }));\n\n const displayValue = displayMode === 'hex'\n ? `0x${value.toString(16).toUpperCase().padStart(Math.ceil(width / 4), '0')}`\n : value.toString();\n\n return (\n <BaseNode outputPorts={outputPorts} selected={selected} className=\"min-w-[100px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || data.componentRef}\n </div>\n <div className=\"flex flex-col items-center gap-1\">\n {isEditingValue ? (\n <input\n type=\"text\"\n value={editValue}\n onChange={(e) => setEditValue(e.target.value)}\n onKeyDown={handleValueKeyDown}\n onBlur={() => setIsEditingValue(false)}\n className=\"w-24 px-2 py-1 text-center font-mono text-sm border-2 border-blue-500 rounded focus:outline-none\"\n autoFocus\n onClick={(e) => e.stopPropagation()}\n />\n ) : (\n <div\n onClick={handleValueClick}\n className=\"px-3 py-1 bg-gradient-to-r from-indigo-500 to-purple-500 text-white rounded cursor-pointer hover:shadow-md transition-all font-mono text-sm\"\n title=\"Click to edit value\"\n >\n {displayValue}\n </div>\n )}\n <button\n onClick={toggleDisplayMode}\n className=\"text-xs text-[var(--embed-text-secondary)] hover:text-[var(--embed-text-primary)] transition-colors\"\n >\n {displayMode === 'dec' ? 'DEC' : 'HEX'}\n </button>\n </div>\n <div className=\"text-xs text-[var(--embed-text-muted)]\">{width}-bit</div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputNode.js","sourceRoot":"","sources":["../../src/nodes/OutputNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OutputNode.js","sourceRoot":"","sources":["../../src/nodes/OutputNode.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\nimport { CompositeBadge } from './CompositeBadge';\nimport { cn } from '../lib/utils';\n\ninterface OutputNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function OutputNode({ data, selected }: OutputNodeProps) {\n const value = data.value ?? false;\n const numericValue = data.numericValue ?? 0;\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name,\n index,\n type: 'input',\n }));\n\n const toHexString = (num: number): string =>\n num.toString(16).toUpperCase().padStart(2, '0');\n\n const renderDisplay = () => {\n if (data.componentRef === 'HexDisplay') {\n const hexValue = toHexString(numericValue);\n return (\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || data.componentRef}\n </div>\n <div className=\"flex items-center justify-center px-4 py-2 bg-black rounded border-2 border-gray-600\">\n <span className=\"text-2xl font-mono font-bold text-green-400\">{hexValue}</span>\n </div>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">Dec: {numericValue}</div>\n </div>\n );\n } else if (data.componentRef === 'SevenSegment') {\n const hexDigit = (numericValue & 0xF).toString(16).toUpperCase();\n return (\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || data.componentRef}\n </div>\n <div className=\"flex items-center justify-center px-3 py-2 bg-black rounded border-2 border-gray-600\">\n <span className=\"text-xl font-mono font-bold text-red-500\">{hexDigit}</span>\n </div>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">Dec: {numericValue & 0xF}</div>\n </div>\n );\n } else {\n // LED display (default)\n return (\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 rounded text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || data.componentRef}\n </div>\n <div\n className={cn(\n 'h-10 w-10 rounded-full border-2 transition-all',\n value\n ? 'border-green-600 bg-green-400 shadow-lg shadow-green-500/50'\n : 'border-gray-500 bg-[var(--embed-bg-tertiary)]'\n )}\n >\n {value && (\n <div className=\"h-full w-full rounded-full bg-gradient-to-br from-green-300 to-green-500\" />\n )}\n </div>\n <div className={cn('text-xs font-semibold', value ? 'text-green-400' : 'text-[var(--embed-text-secondary)]')}>\n {value ? 'ON' : 'OFF'}\n </div>\n </div>\n );\n }\n };\n\n return (\n <BaseNode inputPorts={inputPorts} selected={selected} className=\"min-w-[80px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative\">\n {data.isComposite && <CompositeBadge />}\n {renderDisplay()}\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RAMNode.js","sourceRoot":"","sources":["../../src/nodes/RAMNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgB;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAEtC,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,UAAU,CAAC;QAClE,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,4CAA4C,sBAAY,EACvE,cAAK,SAAS,EAAC,sEAAsE,YAClF,cAAc,EAAE,GACb,IACF,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"RAMNode.js","sourceRoot":"","sources":["../../src/nodes/RAMNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgB;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAEtC,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,UAAU,CAAC;QAClE,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,4CAA4C,sBAAY,EACvE,cAAK,SAAS,EAAC,sEAAsE,YAClF,cAAc,EAAE,GACb,IACF,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport { CompositeBadge } from './CompositeBadge';\nimport type { NodeData } from './NodeData';\n\ninterface RAMNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function RAMNode({ data, selected }: RAMNodeProps) {\n const initData = data.arguments?.init;\n\n const getInitDisplay = () => {\n if (!initData) return 'empty';\n if (Array.isArray(initData)) return `[${initData.length} values]`;\n if (typeof initData === 'object') return `{${Object.keys(initData).length} entries}`;\n return 'empty';\n };\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name, index, type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output',\n }));\n\n return (\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[100px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative flex flex-col items-center gap-2\">\n {data.isComposite && <CompositeBadge />}\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'RAM'}\n </div>\n <div className=\"px-3 py-2 text-xs font-semibold rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)]\">\n RAM\n </div>\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">Init:</div>\n <div className=\"px-2 py-1 bg-purple-500/20 text-purple-400 rounded font-mono text-xs\">\n {getInitDisplay()}\n </div>\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ROMNode.js","sourceRoot":"","sources":["../../src/nodes/ROMNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgB;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAEtC,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,UAAU,CAAC;QAClE,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,cAAK,SAAS,EAAC,4CAA4C,YACxD,cAAc,EAAE,GACb,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"ROMNode.js","sourceRoot":"","sources":["../../src/nodes/ROMNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgB;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAEtC,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,UAAU,CAAC;QAClE,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,GAChB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,cAAK,SAAS,EAAC,4CAA4C,YACxD,cAAc,EAAE,GACb,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport { CompositeBadge } from './CompositeBadge';\nimport type { NodeData } from './NodeData';\n\ninterface ROMNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function ROMNode({ data, selected }: ROMNodeProps) {\n const initData = data.arguments?.init;\n\n const getInitDisplay = () => {\n if (!initData) return 'empty';\n if (Array.isArray(initData)) return `[${initData.length} values]`;\n if (typeof initData === 'object') return `{${Object.keys(initData).length} entries}`;\n return 'empty';\n };\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name, index, type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output',\n }));\n\n return (\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[100px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative flex flex-col items-center gap-2\">\n {data.isComposite && <CompositeBadge />}\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'ROM'}\n </div>\n <div className=\"px-3 py-2 text-xs font-semibold rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)]\">\n ROM\n </div>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {getInitDisplay()}\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RV32IInstrMemNode.js","sourceRoot":"","sources":["../../src/nodes/RV32IInstrMemNode.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RV32IInstrMemNode.js","sourceRoot":"","sources":["../../src/nodes/RV32IInstrMemNode.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * RV32IInstrMemNode Component\n *\n * Renders RV32I instruction memory with:\n * - Drag-and-drop binary file loading\n * - Inline code editor with compile button (calls /api/compile)\n * - Uses onLoadMemory callback to write data via engine.setNode()\n */\n\n\"use client\";\n\nimport React, { useCallback, useState, useRef } from 'react';\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\nconst LANGUAGES = [\n { value: 'c', label: 'C' },\n { value: 'cpp', label: 'C++' },\n { value: 'rust', label: 'Rust' },\n { value: 'asm', label: 'ASM' },\n] as const;\n\nconst PLACEHOLDER_CODE: Record<string, string> = {\n c: `void _start() {\n volatile int *uart = (volatile int *)0x80000000;\n const char *msg = \"Hello from C!\\\\n\";\n while (*msg) *uart = *msg++;\n while (1);\n}`,\n cpp: `extern \"C\" void _start() {\n volatile int *uart = (volatile int *)0x80000000;\n const char *msg = \"Hello from C++!\\\\n\";\n while (*msg) *uart = *msg++;\n while (1) {}\n}`,\n rust: `#![no_std]\n#![no_main]\n\n#[no_mangle]\npub extern \"C\" fn _start() -> ! {\n let uart = 0x80000000 as *mut u32;\n for &b in b\"Hello from Rust!\\\\n\" {\n unsafe { core::ptr::write_volatile(uart, b as u32); }\n }\n loop {}\n}\n\n#[panic_handler]\nfn panic(_: &core::panic::PanicInfo) -> ! { loop {} }`,\n asm: `.global _start\n.text\n_start:\n # Write 'H' to UART\n li t0, 0x80000000\n li a0, 72\n sw a0, 0(t0)\n1: j 1b`,\n};\n\ninterface RV32IInstrMemNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function RV32IInstrMemNode({ data, selected }: RV32IInstrMemNodeProps) {\n const [isDragOver, setIsDragOver] = useState(false);\n const [showCodeEditor, setShowCodeEditor] = useState(false);\n const [language, setLanguage] = useState<string>('c');\n const [code, setCode] = useState('');\n const [compileStatus, setCompileStatus] = useState<'idle' | 'compiling' | 'success' | 'error'>('idle');\n const [compileError, setCompileError] = useState('');\n const [loadedFilename, setLoadedFilename] = useState<string | null>(null);\n const [loadedSize, setLoadedSize] = useState(0);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name, index, type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output',\n }));\n\n const loadBinary = useCallback((binary: Uint8Array, filename: string) => {\n const memoryMap = new Map<number, number>();\n for (let i = 0; i < binary.length; i++) {\n if (binary[i] !== 0) memoryMap.set(i, binary[i]);\n }\n setLoadedFilename(filename);\n setLoadedSize(binary.length);\n data.onLoadMemory?.(memoryMap);\n }, [data.onLoadMemory]);\n\n const handleFileLoad = useCallback(async (file: File) => {\n const buffer = await file.arrayBuffer();\n loadBinary(new Uint8Array(buffer), file.name);\n }, [loadBinary]);\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n const file = e.dataTransfer.files[0];\n if (file) handleFileLoad(file);\n }, [handleFileLoad]);\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(true);\n }, []);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n }, []);\n\n const handleClickDropZone = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n fileInputRef.current?.click();\n }, []);\n\n const handleFileInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileLoad(file);\n e.target.value = '';\n }, [handleFileLoad]);\n\n const handleClear = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n setLoadedFilename(null);\n setLoadedSize(0);\n data.onLoadMemory?.(new Map());\n }, [data.onLoadMemory]);\n\n const handleCompile = useCallback(async () => {\n const sourceCode = code || PLACEHOLDER_CODE[language] || '';\n if (!sourceCode.trim()) return;\n\n setCompileStatus('compiling');\n setCompileError('');\n\n try {\n const resp = await fetch('/api/compile', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ source: sourceCode, language }),\n });\n\n const result = await resp.json() as {\n success: boolean;\n binary?: string;\n stderr?: string;\n error?: string;\n };\n\n if (!result.success) {\n setCompileStatus('error');\n setCompileError(result.stderr || result.error || 'Compilation failed');\n return;\n }\n\n const b64 = result.binary ?? '';\n const raw = atob(b64);\n const binary = new Uint8Array(raw.length);\n for (let i = 0; i < raw.length; i++) binary[i] = raw.charCodeAt(i);\n loadBinary(binary, `program.${language}`);\n setCompileStatus('success');\n setTimeout(() => setCompileStatus('idle'), 2000);\n } catch (e) {\n setCompileStatus('error');\n setCompileError(e instanceof Error ? e.message : 'Network error');\n }\n }, [code, language, loadBinary]);\n\n const handleToggleCodeEditor = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n setShowCodeEditor(prev => !prev);\n }, []);\n\n return (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".bin,.elf\"\n onChange={handleFileInputChange}\n className=\"hidden\"\n />\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[140px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"flex flex-col items-center gap-2\">\n {/* Label */}\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'InstrMem'}\n </div>\n\n {/* Type badge */}\n <div className=\"px-3 py-2 text-xs font-semibold rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)]\">\n IMEM\n </div>\n\n {/* Drop Zone */}\n <div\n className={`\n flex flex-col items-center gap-1 p-2 rounded border-2 border-dashed cursor-pointer transition-all w-full\n ${isDragOver\n ? 'border-blue-500 bg-blue-500/10'\n : loadedFilename\n ? 'border-green-500/50 bg-green-500/10'\n : 'border-[var(--embed-border)] hover:border-blue-400 hover:bg-blue-500/5'\n }\n `}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={handleClickDropZone}\n title={loadedFilename ? 'Click to replace' : 'Drop .bin or click'}\n >\n {loadedFilename ? (\n <>\n <div className=\"text-xs text-green-400 font-medium truncate max-w-[120px]\">\n {loadedFilename}\n </div>\n <div className=\"text-xs text-[var(--embed-text-muted)]\">\n {loadedSize} bytes\n </div>\n <button\n onClick={handleClear}\n className=\"text-xs text-red-400 hover:text-red-300 hover:underline\"\n >\n Clear\n </button>\n </>\n ) : (\n <>\n <div className=\"text-xs text-[var(--embed-text-muted)]\">Drop .bin</div>\n <div className=\"text-xs text-[var(--embed-text-muted)]\">or click</div>\n </>\n )}\n </div>\n\n {/* Code Editor Toggle */}\n <button\n onClick={handleToggleCodeEditor}\n className={`\n w-full px-2 py-1 text-xs rounded transition-colors\n ${showCodeEditor\n ? 'bg-violet-500/20 text-violet-400'\n : 'bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-muted)] hover:bg-violet-500/10 hover:text-violet-400'\n }\n `}\n >\n {showCodeEditor ? 'Hide Code' : 'Code'}\n </button>\n\n {/* Code Editor Panel */}\n {showCodeEditor && (\n <div\n className=\"flex flex-col gap-2 w-full min-w-[280px] nodrag\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* Language Selector */}\n <div className=\"flex gap-1\">\n {LANGUAGES.map(lang => (\n <button\n key={lang.value}\n onClick={() => setLanguage(lang.value)}\n className={`\n px-2 py-0.5 text-xs rounded transition-colors\n ${language === lang.value\n ? 'bg-violet-500/30 text-violet-300'\n : 'bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-muted)] hover:bg-[var(--embed-bg-tertiary)]/80'\n }\n `}\n >\n {lang.label}\n </button>\n ))}\n </div>\n\n {/* Code Input */}\n <textarea\n value={code}\n onChange={(e) => setCode(e.target.value)}\n placeholder={PLACEHOLDER_CODE[language]}\n className=\"w-full h-32 p-2 text-xs font-mono rounded border border-[var(--embed-border)] bg-[var(--embed-bg-code)] text-[var(--embed-text-primary)] resize-y\"\n spellCheck={false}\n />\n\n {/* Compile Button */}\n <button\n onClick={handleCompile}\n disabled={compileStatus === 'compiling'}\n className={`\n w-full px-3 py-1.5 text-xs font-medium rounded transition-colors\n ${compileStatus === 'compiling'\n ? 'bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-muted)] cursor-wait'\n : compileStatus === 'success'\n ? 'bg-green-600 text-white'\n : 'bg-violet-600 hover:bg-violet-500 text-white'\n }\n `}\n >\n {compileStatus === 'compiling' ? 'Compiling...'\n : compileStatus === 'success' ? 'Loaded!'\n : 'Compile & Load'}\n </button>\n\n {/* Error Display */}\n {compileStatus === 'error' && compileError && (\n <div className=\"p-2 text-xs font-mono rounded bg-red-500/10 text-red-400 max-h-24 overflow-y-auto whitespace-pre-wrap\">\n {compileError}\n </div>\n )}\n </div>\n )}\n </div>\n </BaseNode>\n </>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RasterDisplayNode.js","sourceRoot":"","sources":["../../src/nodes/RasterDisplayNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAA0B;IAC1E,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,eAAe,GAC1B,EACN,cACE,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,EAC3D,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,EAC5D,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAC3B,MAAM,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;wBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;wBACxC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,cAAK,SAAS,EAAC,4CAA4C,qCAErD,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"RasterDisplayNode.js","sourceRoot":"","sources":["../../src/nodes/RasterDisplayNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAA0B;IAC1E,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,eAAe,GAC1B,EACN,cACE,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,EAC3D,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,EAC5D,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAC3B,MAAM,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;wBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;wBACxC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,cAAK,SAAS,EAAC,4CAA4C,qCAErD,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface RasterDisplayNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function RasterDisplayNode({ data, selected }: RasterDisplayNodeProps) {\n const pixels = (data.__pixels as number[]) ?? new Array(64).fill(0);\n const GRID_SIZE = 8;\n const PIXEL_SIZE = 16;\n const PIXEL_GAP = 2;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({ name, index, type: 'input' as const }))}\n outputPorts={data.outputNames.map((name, index) => ({ name, index, type: 'output' as const }))}\n className=\"min-w-[160px]\"\n showPortLabels={data.showPortLabels}\n onPortClick={data.onPortClick}\n glowUnconnected={data.glowUnconnected}\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'RasterDisplay'}\n </div>\n <svg\n width={GRID_SIZE * PIXEL_SIZE + (GRID_SIZE - 1) * PIXEL_GAP}\n height={GRID_SIZE * PIXEL_SIZE + (GRID_SIZE - 1) * PIXEL_GAP}\n className=\"border-2 border-gray-700 rounded bg-black\"\n style={{ imageRendering: 'pixelated' }}\n >\n {pixels.map((value, index) => {\n const x = index % GRID_SIZE;\n const y = Math.floor(index / GRID_SIZE);\n return (\n <rect\n key={index}\n x={x * (PIXEL_SIZE + PIXEL_GAP)}\n y={y * (PIXEL_SIZE + PIXEL_GAP)}\n width={PIXEL_SIZE}\n height={PIXEL_SIZE}\n fill={value !== 0 ? '#00ff00' : '#1a1a1a'}\n />\n );\n })}\n </svg>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n 8×8 raster scan\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterNode.js","sourceRoot":"","sources":["../../src/nodes/RegisterNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAqB;IAChE,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,UAAU,GACrB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,4CAA4C,yBAAe,EAC1E,cAAK,SAAS,EAAC,kEAAkE,YAC9E,YAAY,GACT,IACF,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"RegisterNode.js","sourceRoot":"","sources":["../../src/nodes/RegisterNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAqB;IAChE,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,MAAM,UAAU,GAAiB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;KAC3B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;KAC5B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,eAAe,EAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,YACjN,eAAK,SAAS,EAAC,2CAA2C,aACvD,IAAI,CAAC,WAAW,IAAI,KAAC,cAAc,KAAG,EACvC,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,UAAU,GACrB,EACN,cAAK,SAAS,EAAC,2GAA2G,oBAEpH,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,4CAA4C,yBAAe,EAC1E,cAAK,SAAS,EAAC,kEAAkE,YAC9E,YAAY,GACT,IACF,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode, type PortConfig } from './BaseNode';\nimport { CompositeBadge } from './CompositeBadge';\nimport type { NodeData } from './NodeData';\n\ninterface RegisterNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function RegisterNode({ data, selected }: RegisterNodeProps) {\n const initialValue = typeof data.arguments?.initial === 'number' ? data.arguments.initial : 0;\n\n const inputPorts: PortConfig[] = data.inputNames.map((name, index) => ({\n name, index, type: 'input',\n }));\n\n const outputPorts: PortConfig[] = data.outputNames.map((name, index) => ({\n name, index, type: 'output',\n }));\n\n return (\n <BaseNode inputPorts={inputPorts} outputPorts={outputPorts} selected={selected} className=\"min-w-[100px]\" showPortLabels={data.showPortLabels} onPortClick={data.onPortClick} glowUnconnected={data.glowUnconnected}>\n <div className=\"relative flex flex-col items-center gap-2\">\n {data.isComposite && <CompositeBadge />}\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'Register'}\n </div>\n <div className=\"px-3 py-2 text-xs font-semibold rounded-md bg-[var(--embed-bg-tertiary)] text-[var(--embed-text-primary)]\">\n REG\n </div>\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">Initial:</div>\n <div className=\"px-2 py-1 bg-blue-500/20 text-blue-400 rounded font-mono text-xs\">\n {initialValue}\n </div>\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenNode.js","sourceRoot":"","sources":["../../src/nodes/ScreenNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAmB;IAC5D,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,KAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,MAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,QAAQ,GACnB,EACN,cACE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACrD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACtD,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAClD,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;wBACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;wBACrC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,MAAM,YAAS,MAAM,eAClB,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"ScreenNode.js","sourceRoot":"","sources":["../../src/nodes/ScreenNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAmB;IAC5D,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,KAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE,MAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,MAAM,MAAM,GAAI,IAAI,CAAC,QAAqB,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,QAAQ,GACnB,EACN,cACE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACrD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,EACtD,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAErC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAClD,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;wBACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;wBACrC,OAAO,CACL,eAEE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IALpC,KAAK,CAMV,CACH,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,MAAM,YAAS,MAAM,eAClB,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { BaseNode } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface ScreenNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function ScreenNode({ data, selected }: ScreenNodeProps) {\n const GRID_W = (data.arguments?.width as number) ?? 8;\n const GRID_H = (data.arguments?.height as number) ?? 8;\n const TOTAL_PIXELS = GRID_W * GRID_H;\n const pixels = (data.__pixels as number[]) ?? new Array(TOTAL_PIXELS).fill(0);\n const PIXEL_SIZE = GRID_W <= 8 ? 16 : GRID_W <= 16 ? 8 : 4;\n const PIXEL_GAP = GRID_W <= 8 ? 2 : GRID_W <= 16 ? 1 : 0;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({ name, index, type: 'input' as const }))}\n outputPorts={data.outputNames.map((name, index) => ({ name, index, type: 'output' as const }))}\n className=\"min-w-[160px]\"\n showPortLabels={data.showPortLabels}\n onPortClick={data.onPortClick}\n glowUnconnected={data.glowUnconnected}\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'Screen'}\n </div>\n <svg\n width={GRID_W * PIXEL_SIZE + (GRID_W - 1) * PIXEL_GAP}\n height={GRID_H * PIXEL_SIZE + (GRID_H - 1) * PIXEL_GAP}\n className=\"border-2 border-gray-700 rounded bg-black\"\n style={{ imageRendering: 'pixelated' }}\n >\n {pixels.slice(0, TOTAL_PIXELS).map((value, index) => {\n const x = index % GRID_W;\n const y = Math.floor(index / GRID_W);\n return (\n <rect\n key={index}\n x={x * (PIXEL_SIZE + PIXEL_GAP)}\n y={y * (PIXEL_SIZE + PIXEL_GAP)}\n width={PIXEL_SIZE}\n height={PIXEL_SIZE}\n fill={value !== 0 ? '#00ff00' : '#1a1a1a'}\n />\n );\n })}\n </svg>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {GRID_W}×{GRID_H} pixels\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UartTxNode.js","sourceRoot":"","sources":["../../src/nodes/UartTxNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAmB;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,UAAqB,IAAI,EAAE,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wIAAwI,EAClJ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAE/C,IAAI,IAAI,eAAM,SAAS,EAAC,gCAAgC,4CAAmC,GACxF,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"UartTxNode.js","sourceRoot":"","sources":["../../src/nodes/UartTxNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAmB;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAI,IAAI,CAAC,UAAqB,IAAI,EAAE,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAE9B,OAAO,CACL,KAAC,QAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC,EAC3F,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,EAC9F,SAAS,EAAC,eAAe,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,YAErC,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gEAAgE,YAC5E,IAAI,CAAC,KAAK,IAAI,SAAS,GACpB,EACN,cACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,wIAAwI,EAClJ,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAE/C,IAAI,IAAI,eAAM,SAAS,EAAC,gCAAgC,4CAAmC,GACxF,EACN,eAAK,SAAS,EAAC,4CAA4C,aACxD,SAAS,cAAU,SAAS,cACzB,IACF,GACG,CACZ,CAAC;AACJ,CAAC","sourcesContent":["\nimport { useRef, useEffect } from 'react';\nimport { BaseNode } from './BaseNode';\nimport type { NodeData } from './NodeData';\n\ninterface UartTxNodeProps {\n data: NodeData;\n selected?: boolean;\n}\n\nexport function UartTxNode({ data, selected }: UartTxNodeProps) {\n const textAreaRef = useRef<HTMLPreElement>(null);\n const text = (data.__uartText as string) ?? '';\n\n useEffect(() => {\n if (textAreaRef.current) {\n textAreaRef.current.scrollTop = textAreaRef.current.scrollHeight;\n }\n }, [text]);\n\n const lineCount = text ? text.split('\\n').length : 0;\n const charCount = text.length;\n\n return (\n <BaseNode\n selected={selected}\n inputPorts={data.inputNames.map((name, index) => ({ name, index, type: 'input' as const }))}\n outputPorts={data.outputNames.map((name, index) => ({ name, index, type: 'output' as const }))}\n className=\"min-w-[200px]\"\n showPortLabels={data.showPortLabels}\n onPortClick={data.onPortClick}\n glowUnconnected={data.glowUnconnected}\n >\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"px-2 py-1 text-xs font-medium text-[var(--embed-text-primary)]\">\n {data.label || 'UART TX'}\n </div>\n <pre\n ref={textAreaRef}\n className=\"w-full h-32 overflow-auto rounded border-2 border-gray-700 bg-black text-green-400 font-mono text-xs p-2 whitespace-pre-wrap break-all\"\n style={{ minWidth: '180px', maxHeight: '200px' }}\n >\n {text || <span className=\"text-[var(--embed-text-muted)]\">// UART output appears here</span>}\n </pre>\n <div className=\"text-xs text-[var(--embed-text-secondary)]\">\n {charCount} chars, {lineCount} lines\n </div>\n </div>\n </BaseNode>\n );\n}\n"]}
|
package/dist/nodes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,cAAc;AACd,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,cAAc;AACd,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["/**\n * Canonical node components for circuit rendering.\n *\n * Props-driven, store-free, theme-aware via CSS custom properties.\n * Single source of truth — used by embed, editor, and blog.\n */\n\n// Base\nexport { BaseNode } from './BaseNode';\nexport type { PortConfig, BaseNodeProps } from './BaseNode';\nexport { CompositeBadge } from './CompositeBadge';\nexport type { NodeData } from './NodeData';\n\n// Input nodes\nexport { InputNode } from './InputNode';\nexport { NumericInputNode } from './NumericInputNode';\nexport { EthFrameInputNode } from './EthFrameInputNode';\n\n// Output / display nodes\nexport { OutputNode } from './OutputNode';\nexport { ScreenNode } from './ScreenNode';\nexport { RasterDisplayNode } from './RasterDisplayNode';\nexport { ConsoleNode } from './ConsoleNode';\nexport { UartTxNode } from './UartTxNode';\n\n// Lightweight embed variants (legacy aliases)\nexport { EmbedConsoleNode } from './EmbedConsoleNode';\nexport { EmbedScreenNode } from './EmbedScreenNode';\n\n// Logic / structural\nexport { LogicGateNode } from './LogicGateNode';\nexport { RegisterNode } from './RegisterNode';\nexport { RAMNode } from './RAMNode';\nexport { ROMNode } from './ROMNode';\nexport { NicFifoNode } from './NicFifoNode';\nexport { RV32IInstrMemNode } from './RV32IInstrMemNode';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/primitives/button.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,uSAAuS,EACvS;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,+DAA+D;YACjE,WAAW,EACT,8EAA8E;YAChF,OAAO,EACL,0FAA0F;YAC5F,SAAS,EACP,wEAAwE;YAC1E,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,6BAA6B;YACjC,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,SAAS;SAChB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAQD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC9C,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAC3D,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/primitives/button.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,uSAAuS,EACvS;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,+DAA+D;YACjE,WAAW,EACT,8EAA8E;YAChF,OAAO,EACL,0FAA0F;YAC5F,SAAS,EACP,wEAAwE;YAC1E,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,6BAA6B;YACjC,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,SAAS;SAChB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAQD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC9C,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAC3D,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAoB,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAoB,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC","sourcesContent":["export { Button, buttonVariants, type ButtonProps } from './button';\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n} from './tooltip';\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n} from './sheet';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../src/primitives/sheet.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../src/primitives/sheet.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/primitives/tooltip.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,eAAe,CAAC,EACvB,aAAa,GAAG,CAAC,EACjB,GAAG,KAAK,EAC+C;IACvD,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,iBACd,kBAAkB,EAC5B,aAAa,EAAE,aAAa,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C;IACtD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,MAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,maAAma,EACna,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,oGAAoG,GAAG,IAChH,GACH,CAC3B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/primitives/tooltip.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,SAAS,eAAe,CAAC,EACvB,aAAa,GAAG,CAAC,EACjB,GAAG,KAAK,EAC+C;IACvD,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,iBACd,kBAAkB,EAC5B,aAAa,EAAE,aAAa,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C;IACtD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,MAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,maAAma,EACna,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,oGAAoG,GAAG,IAChH,GACH,CAC3B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA","sourcesContent":["\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxProvider.js","sourceRoot":"","sources":["../../src/sandbox/SandboxProvider.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAC;AAEjE,MAAM,cAAc,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAEjE,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAA2B;IACnE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACpC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACjE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAClE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAClE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC3E,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;IACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;CACrB,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"SandboxProvider.js","sourceRoot":"","sources":["../../src/sandbox/SandboxProvider.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,UAAU,EAAsB,MAAM,iBAAiB,CAAC;AAEjE,MAAM,cAAc,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAEjE,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAA2B;IACnE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACpC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACjE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAClE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAClE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACrE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACpE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC3E,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;IACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;CACrB,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC;AACnD,CAAC","sourcesContent":["/**\n * SandboxProvider — singleton sandbox context\n *\n * Wraps the app so all consumers share a single hidden iframe.\n * Use `useSandboxContext()` to get the SandboxHandle.\n */\n\nimport { createContext, useContext, type ReactNode } from 'react';\nimport { useSandbox, type SandboxHandle } from './useSandbox.js';\n\nconst SandboxContext = createContext<SandboxHandle | null>(null);\n\nexport function SandboxProvider({ children }: { children: ReactNode }) {\n const sandbox = useSandbox();\n return (\n <SandboxContext.Provider value={sandbox}>\n {children}\n </SandboxContext.Provider>\n );\n}\n\n// No-op handle returned before the sandbox iframe is ready (SSR / pre-mount)\nconst NULL_HANDLE: SandboxHandle = {\n compile: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n compileIR: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n tick: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n tickN: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n scanPort: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n simulate: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n reset: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n setNode: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n snapshot: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n restore: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n pruneSnapshots: async () => ({ type: 'error', error: 'Sandbox not ready' }),\n dispose: async () => {},\n isReady: () => false,\n};\n\nexport function useSandboxContext(): SandboxHandle {\n return useContext(SandboxContext) ?? NULL_HANDLE;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { useSandbox } from './useSandbox.js';\nexport { SandboxProvider, useSandboxContext } from './SandboxProvider.js';\nexport type {\n SandboxHandle,\n CompileResult,\n CompileIRResult,\n TickResult,\n SimulateResult,\n ResetResult,\n SetNodeResult,\n SandboxError,\n EvalSource,\n SimSlot,\n} from './useSandbox.js';\n"]}
|