@markdy/mdx 0.8.0 → 0.8.2

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/README.md CHANGED
@@ -4,6 +4,7 @@ MDX integration for MarkdyScript with Lighthouse-safe defaults:
4
4
 
5
5
  - `remarkMarkdy` converts fenced code blocks (` ```markdy `) into a player component.
6
6
  - `MarkdyPlayer` hydrates only when visible and lazy-loads `@markdy/renderer-dom`.
7
+ - Rendered diagrams use the same semantic SVG node cards as `@markdy/renderer-dom`.
7
8
 
8
9
  ## Install
9
10
 
@@ -48,7 +49,7 @@ export const mdxComponents = {
48
49
  Then write Markdown:
49
50
 
50
51
  ````md
51
- ```markdy width=800 height=400 bg="#07111f" autoplay=false loop=false
52
+ ```markdy width=800 height=400 bg="#07111f" autoplay=false loop=false playback_rate=0.5 scene_boundary_progress=false
52
53
  scene "Request" theme=midnight width=800 height=400
53
54
  browser Web
54
55
  service API
@@ -63,3 +64,13 @@ beat main:
63
64
  - Default transform options set `autoplay=false`, `loop=false`, `progressBar=false`.
64
65
  - Runtime player does not import renderer code until the block enters viewport.
65
66
  - Placeholder is SSR-safe and keeps stable layout ratio to avoid CLS.
67
+
68
+ ## Fence Metadata
69
+
70
+ Fenced block metadata is passed as props to `MarkdyPlayer`. Snake-case aliases are normalized for renderer options:
71
+
72
+ | Metadata | Prop | Description |
73
+ |---|---|---|
74
+ | `progress_bar=false` | `progressBar={false}` | Deprecated compatibility flag for the scene-boundary progress bar |
75
+ | `scene_boundary_progress=false` | `sceneBoundaryProgress={false}` | Preferred flag for the scene-boundary progress bar |
76
+ | `playback_rate=0.5` | `playbackRate={0.5}` | Timeline speed multiplier |
package/dist/index.d.ts CHANGED
@@ -11,11 +11,13 @@ type MarkdyPlayerProps = {
11
11
  loop?: boolean | string;
12
12
  copyright?: boolean | string;
13
13
  progressBar?: boolean | string;
14
+ sceneBoundaryProgress?: boolean | string;
15
+ playbackRate?: number | string;
14
16
  className?: string;
15
17
  title?: string;
16
18
  description?: string;
17
19
  };
18
- declare function MarkdyPlayer({ code, width, height, bg, assets, autoplay, loop, copyright, progressBar, className, title, description, }: MarkdyPlayerProps): react.JSX.Element;
20
+ declare function MarkdyPlayer({ code, width, height, bg, assets, autoplay, loop, copyright, progressBar, sceneBoundaryProgress, playbackRate, className, title, description, }: MarkdyPlayerProps): react.JSX.Element;
19
21
 
20
22
  type MarkdyFenceDefaults = Partial<{
21
23
  width: number;
package/dist/index.js CHANGED
@@ -38,6 +38,8 @@ function MarkdyPlayer({
38
38
  loop = false,
39
39
  copyright = false,
40
40
  progressBar = false,
41
+ sceneBoundaryProgress,
42
+ playbackRate = 1,
41
43
  className,
42
44
  title = "Markdy animation",
43
45
  description
@@ -48,6 +50,8 @@ function MarkdyPlayer({
48
50
  const resolvedLoop = coerceBoolean(loop, false);
49
51
  const resolvedCopyright = coerceBoolean(copyright, false);
50
52
  const resolvedProgressBar = coerceBoolean(progressBar, false);
53
+ const resolvedSceneBoundaryProgress = coerceBoolean(sceneBoundaryProgress, resolvedProgressBar);
54
+ const resolvedPlaybackRate = coerceNumber(playbackRate, 1);
51
55
  const rootRef = useRef(null);
52
56
  const playerRef = useRef(null);
53
57
  const hydratedRef = useRef(false);
@@ -75,7 +79,9 @@ function MarkdyPlayer({
75
79
  autoplay: forceAutoplay || resolvedAutoplay,
76
80
  loop: resolvedLoop,
77
81
  copyright: resolvedCopyright,
78
- progressBar: resolvedProgressBar
82
+ progressBar: resolvedProgressBar,
83
+ sceneBoundaryProgress: resolvedSceneBoundaryProgress,
84
+ playbackRate: resolvedPlaybackRate > 0 ? resolvedPlaybackRate : 1
79
85
  });
80
86
  root.dataset.markdyInit = "done";
81
87
  root.removeAttribute("aria-busy");
@@ -115,7 +121,16 @@ function MarkdyPlayer({
115
121
  playerRef.current?.destroy();
116
122
  playerRef.current = null;
117
123
  };
118
- }, [assets, code, resolvedAutoplay, resolvedCopyright, resolvedLoop, resolvedProgressBar]);
124
+ }, [
125
+ assets,
126
+ code,
127
+ resolvedAutoplay,
128
+ resolvedCopyright,
129
+ resolvedLoop,
130
+ resolvedProgressBar,
131
+ resolvedSceneBoundaryProgress,
132
+ resolvedPlaybackRate
133
+ ]);
119
134
  return /* @__PURE__ */ jsxs(
120
135
  "div",
121
136
  {
@@ -211,6 +226,8 @@ function parseMetaValue(raw) {
211
226
  }
212
227
  function normalizeMetaKey(key) {
213
228
  if (key === "progress_bar") return "progressBar";
229
+ if (key === "scene_boundary_progress") return "sceneBoundaryProgress";
230
+ if (key === "playback_rate") return "playbackRate";
214
231
  return key;
215
232
  }
216
233
  function parseMeta(meta) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@markdy/mdx",
3
- "version": "0.8.0",
4
- "description": "MDX integration plugin and lightweight React player for Markdy.",
3
+ "version": "0.8.2",
4
+ "description": "MDX plugin and lightweight React player for animated Markdy diagrams.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -22,8 +22,9 @@
22
22
  "markdy",
23
23
  "mdx",
24
24
  "remark",
25
- "react",
26
- "animation"
25
+ "diagram-as-code",
26
+ "architecture-diagram",
27
+ "react"
27
28
  ],
28
29
  "author": "Hoang Yell <hoangyell@gmail.com> (https://hoangyell.com)",
29
30
  "homepage": "https://markdy.com",
@@ -40,7 +41,7 @@
40
41
  },
41
42
  "dependencies": {
42
43
  "unist-util-visit": "^5.0.0",
43
- "@markdy/renderer-dom": "0.8.0"
44
+ "@markdy/renderer-dom": "0.8.2"
44
45
  },
45
46
  "peerDependencies": {
46
47
  "react": ">=18.0.0",