@amritanshu3011/mdx-renderer 1.0.8 → 1.0.10
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/IntentProvider.d.ts +1 -0
- package/dist/IntentProvider.js +3 -2
- package/dist/components/DynamicVisualizations.js +12 -10
- package/dist/context/VisualizationContext.d.ts +14 -8
- package/dist/context/VisualizationContext.js +16 -5
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/package.json +1 -1
package/dist/IntentProvider.d.ts
CHANGED
package/dist/IntentProvider.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ThemeProvider } from './theme/ThemeContext';
|
|
3
3
|
import { VisualizationProvider } from './context/VisualizationContext';
|
|
4
|
-
export const IntentProvider = ({ children, data = [], theme }
|
|
5
|
-
|
|
4
|
+
export const IntentProvider = ({ children, data = [], theme, registry = {} // Default to empty
|
|
5
|
+
}) => {
|
|
6
|
+
return (_jsx(ThemeProvider, { initialTheme: theme, children: _jsx(VisualizationProvider, { initialVisualizations: data, customRegistry: registry, children: children }) }));
|
|
6
7
|
};
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useVisualizations } from '../context/VisualizationContext';
|
|
3
|
-
import { visualizationRegistry } from '../registry/visualizationRegistry';
|
|
4
3
|
export const DynamicVisualizations = () => {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
// 1. Get the MERGED registry from Context (Defaults + User Custom)
|
|
5
|
+
const { visualizations, registry } = useVisualizations();
|
|
6
|
+
if (!visualizations || visualizations.length === 0)
|
|
7
7
|
return null;
|
|
8
|
-
return (_jsx("div", { children: visualizations.map((viz, index) => {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
return (_jsx("div", { className: "w-full flex flex-col gap-8 my-8", children: visualizations.map((viz, index) => {
|
|
9
|
+
// 2. Look up component in the Context Registry
|
|
10
|
+
// We use string indexing because users can add ANY key
|
|
11
|
+
const Component = registry[viz.type];
|
|
11
12
|
if (!Component) {
|
|
12
|
-
console.warn(`Unknown visualization type
|
|
13
|
-
|
|
13
|
+
console.warn(`MDX Renderer: Unknown visualization type "${viz.type}"`);
|
|
14
|
+
// Render a helpful error for the developer/user
|
|
15
|
+
return (_jsxs("div", { className: "p-4 border border-red-200 bg-red-50 text-red-600 rounded-lg text-sm font-mono", children: ["\u26A0\uFE0F Unknown component type: ", _jsx("strong", { children: viz.type })] }, index));
|
|
14
16
|
}
|
|
15
|
-
return (_jsx("div", { children: _jsx(Component, { ...viz.data }) }, index));
|
|
17
|
+
return (_jsx("div", { className: "mdx-viz-block w-full", children: _jsx(Component, { ...viz.data }) }, index));
|
|
16
18
|
}) }));
|
|
17
19
|
};
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { ReactNode, ComponentType } from 'react';
|
|
2
|
+
export interface VisualizationItem {
|
|
3
|
+
type: string;
|
|
4
|
+
data: any;
|
|
5
|
+
}
|
|
3
6
|
interface VisualizationContextType {
|
|
4
|
-
visualizations:
|
|
5
|
-
addVisualization: (viz:
|
|
7
|
+
visualizations: VisualizationItem[];
|
|
8
|
+
addVisualization: (viz: VisualizationItem) => void;
|
|
6
9
|
clearVisualizations: () => void;
|
|
10
|
+
registry: Record<string, ComponentType<any>>;
|
|
11
|
+
}
|
|
12
|
+
export interface VisualizationProviderProps {
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
initialVisualizations?: VisualizationItem[];
|
|
15
|
+
customRegistry?: Record<string, ComponentType<any>>;
|
|
7
16
|
}
|
|
8
|
-
export declare const VisualizationProvider: ({ children, initialVisualizations }:
|
|
9
|
-
children: React.ReactNode;
|
|
10
|
-
initialVisualizations?: any[];
|
|
11
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const VisualizationProvider: ({ children, initialVisualizations, customRegistry }: VisualizationProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
18
|
export declare const useVisualizations: () => VisualizationContextType;
|
|
13
19
|
export {};
|
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import React, { createContext, useContext } from 'react';
|
|
2
|
+
import React, { createContext, useContext, useState } from 'react';
|
|
3
|
+
// Import your default registry to use as a base
|
|
4
|
+
import { visualizationRegistry as defaultRegistry } from '../registry/visualizationRegistry';
|
|
3
5
|
const VisualizationContext = createContext(undefined);
|
|
4
|
-
export const VisualizationProvider = ({ children, initialVisualizations = [] }) => {
|
|
5
|
-
const [visualizations, setVisualizations] =
|
|
6
|
+
export const VisualizationProvider = ({ children, initialVisualizations = [], customRegistry = {} }) => {
|
|
7
|
+
const [visualizations, setVisualizations] = useState(initialVisualizations);
|
|
8
|
+
// 1. MERGE LOGIC: Combine defaults with user overrides
|
|
9
|
+
// Using useMemo is good practice here to prevent recreation on every render,
|
|
10
|
+
// but for simplicity, direct object spread works too.
|
|
11
|
+
const mergedRegistry = { ...defaultRegistry, ...customRegistry };
|
|
12
|
+
// 2. Reactive State Update
|
|
6
13
|
React.useEffect(() => {
|
|
7
14
|
if (initialVisualizations.length > 0) {
|
|
8
15
|
setVisualizations(initialVisualizations);
|
|
9
16
|
}
|
|
10
17
|
}, [initialVisualizations]);
|
|
11
18
|
const addVisualization = (viz) => {
|
|
12
|
-
console.log('Storing visualization:', viz);
|
|
13
19
|
setVisualizations(prev => [...prev, viz]);
|
|
14
20
|
};
|
|
15
21
|
const clearVisualizations = () => {
|
|
16
22
|
setVisualizations([]);
|
|
17
23
|
};
|
|
18
|
-
return (_jsx(VisualizationContext.Provider, { value: {
|
|
24
|
+
return (_jsx(VisualizationContext.Provider, { value: {
|
|
25
|
+
visualizations,
|
|
26
|
+
addVisualization,
|
|
27
|
+
clearVisualizations,
|
|
28
|
+
registry: mergedRegistry // <--- Pass the merged registry to the app
|
|
29
|
+
}, children: children }));
|
|
19
30
|
};
|
|
20
31
|
export const useVisualizations = () => {
|
|
21
32
|
const context = useContext(VisualizationContext);
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export { useThemeWithFallback } from './utils/useThemeWithFallback';
|
|
|
5
5
|
export type { Theme } from './theme/types';
|
|
6
6
|
export { MDXRenderer } from './MDXRenderer';
|
|
7
7
|
export { IntentProvider } from './IntentProvider';
|
|
8
|
-
import './styles/base.css';
|
|
9
8
|
export { ProsConsBlock } from './components/smart/ProsConsBlock';
|
|
10
9
|
export { ComparisonBlock } from './components/smart/ComparisonBlock';
|
|
11
10
|
export { FlowBlock } from './components/smart/FlowBlock';
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,6 @@ export { useThemeWithFallback } from './utils/useThemeWithFallback';
|
|
|
6
6
|
// Renderer
|
|
7
7
|
export { MDXRenderer } from './MDXRenderer';
|
|
8
8
|
export { IntentProvider } from './IntentProvider';
|
|
9
|
-
import './styles/base.css';
|
|
10
9
|
// Smart Components
|
|
11
10
|
export { ProsConsBlock } from './components/smart/ProsConsBlock';
|
|
12
11
|
export { ComparisonBlock } from './components/smart/ComparisonBlock';
|