@aravindc26/velu 0.12.8 → 0.12.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/package.json +1 -1
- package/src/build.ts +13 -0
- package/src/cli.ts +60 -11
- package/src/engine/app/(docs)/[...slug]/layout.tsx +21 -537
- package/src/engine/app/_preview/[sessionId]/[...slug]/layout.tsx +96 -0
- package/src/engine/app/_preview/[sessionId]/[...slug]/page.tsx +298 -0
- package/src/engine/app/_preview/[sessionId]/layout.tsx +56 -0
- package/src/{preview-engine/app → engine/app/_preview}/[sessionId]/page.tsx +7 -3
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/assets/[...path]/route.ts +1 -1
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/init/route.ts +2 -2
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/route.ts +3 -3
- package/src/{preview-engine/app → engine/app/_preview}/api/sessions/[sessionId]/sync/route.ts +2 -2
- package/src/{preview-engine/app → engine/app/_preview}/layout.tsx +4 -1
- package/src/engine/app/global.css +0 -3623
- package/src/engine/app/layout.tsx +4 -3
- package/src/engine/components/sidebar-links.tsx +11 -5
- package/src/engine/lib/docs-layout.tsx +605 -0
- package/src/engine/lib/layout.shared.ts +7 -7
- package/src/engine/lib/preview-config.ts +129 -0
- package/src/{preview-engine/lib/content-generator.ts → engine/lib/preview-content.ts} +238 -42
- package/src/engine/lib/source.ts +80 -97
- package/src/engine/lib/velu.ts +79 -55
- package/src/engine/mdx-components.tsx +14 -650
- package/src/engine/source.config.ts +11 -89
- package/src/engine/tsconfig.json +1 -0
- package/src/engine-core/components/assistant.tsx +361 -0
- package/src/engine-core/components/banner.tsx +80 -0
- package/src/engine-core/components/changelog-filters.tsx +114 -0
- package/src/engine-core/components/code-group.tsx +383 -0
- package/src/engine-core/components/color.tsx +118 -0
- package/src/engine-core/components/copy-page.tsx +223 -0
- package/src/engine-core/components/dropdown-switcher.tsx +142 -0
- package/src/engine-core/components/expandable.tsx +77 -0
- package/src/engine-core/components/header-tab-link.tsx +43 -0
- package/src/engine-core/components/icon.tsx +136 -0
- package/src/engine-core/components/image-zoom-fallback.tsx +147 -0
- package/src/engine-core/components/image.tsx +111 -0
- package/src/engine-core/components/lang-switcher.tsx +101 -0
- package/src/engine-core/components/manual-api-playground.tsx +154 -0
- package/src/engine-core/components/mermaid.tsx +142 -0
- package/src/engine-core/components/openapi-toc-sync.tsx +59 -0
- package/src/engine-core/components/openapi.tsx +1682 -0
- package/src/engine-core/components/page-feedback-api.test.ts +83 -0
- package/src/engine-core/components/page-feedback-api.ts +89 -0
- package/src/engine-core/components/page-feedback.tsx +200 -0
- package/src/engine-core/components/product-switcher.tsx +107 -0
- package/src/engine-core/components/prompt.tsx +90 -0
- package/src/engine-core/components/providers.tsx +21 -0
- package/src/engine-core/components/search.tsx +318 -0
- package/src/engine-core/components/sidebar-links.tsx +54 -0
- package/src/engine-core/components/synced-tabs.tsx +57 -0
- package/src/engine-core/components/theme-toggle.tsx +39 -0
- package/src/engine-core/components/toc-examples.tsx +110 -0
- package/src/engine-core/components/version-switcher.tsx +95 -0
- package/src/engine-core/components/view.tsx +344 -0
- package/src/engine-core/css/assistant.css +326 -0
- package/src/engine-core/css/copy-page.css +206 -0
- package/src/engine-core/css/search.css +142 -0
- package/src/engine-core/css/shared.css +3628 -0
- package/src/engine-core/lib/remark-plugins.ts +102 -0
- package/src/engine-core/lib/source-plugins.ts +105 -0
- package/src/engine-core/mdx-components.tsx +654 -0
- package/src/engine-core/types.ts +49 -0
- package/src/preview-engine/app/[sessionId]/[...slug]/page.tsx +0 -41
- package/src/preview-engine/app/[sessionId]/layout.tsx +0 -26
- package/src/preview-engine/app/global.css +0 -29
- package/src/preview-engine/lib/session-config.ts +0 -86
- package/src/preview-engine/lib/session-layout.ts +0 -190
- package/src/preview-engine/lib/source.ts +0 -60
- package/src/preview-engine/next.config.mjs +0 -20
- package/src/preview-engine/postcss.config.mjs +0 -8
- package/src/preview-engine/source.config.ts +0 -26
- package/src/preview-engine/tsconfig.json +0 -32
- package/src/preview-engine/tsconfig.tsbuildinfo +0 -1
- /package/src/{preview-engine/app → engine/app/_preview}/page.tsx +0 -0
- /package/src/{preview-engine/lib/auth.ts → engine/lib/preview-auth.ts} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
const TOC_HOST_ID = 'velu-api-toc-rail-host';
|
|
6
|
+
const SOURCE_SELECTOR = '[data-velu-openapi-example-source="true"]';
|
|
7
|
+
|
|
8
|
+
export function OpenApiTocSync({ enabled }: { enabled: boolean }) {
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!enabled) return;
|
|
11
|
+
|
|
12
|
+
let disconnected = false;
|
|
13
|
+
let cleanup: (() => void) | undefined;
|
|
14
|
+
const observer = new MutationObserver(() => {
|
|
15
|
+
if (cleanup || disconnected) return;
|
|
16
|
+
|
|
17
|
+
const host = document.getElementById(TOC_HOST_ID);
|
|
18
|
+
const source = document.querySelector<HTMLElement>(SOURCE_SELECTOR);
|
|
19
|
+
if (!host || !source) return;
|
|
20
|
+
|
|
21
|
+
const previousParent = source.parentNode;
|
|
22
|
+
const previousNextSibling = source.nextSibling;
|
|
23
|
+
host.appendChild(source);
|
|
24
|
+
cleanup = () => {
|
|
25
|
+
if (previousParent) {
|
|
26
|
+
if (previousNextSibling) previousParent.insertBefore(source, previousNextSibling);
|
|
27
|
+
else previousParent.appendChild(source);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
observer.disconnect();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
34
|
+
// Try immediately in case both nodes already exist.
|
|
35
|
+
observer.takeRecords();
|
|
36
|
+
const host = document.getElementById(TOC_HOST_ID);
|
|
37
|
+
const source = document.querySelector<HTMLElement>(SOURCE_SELECTOR);
|
|
38
|
+
if (host && source) {
|
|
39
|
+
const previousParent = source.parentNode;
|
|
40
|
+
const previousNextSibling = source.nextSibling;
|
|
41
|
+
host.appendChild(source);
|
|
42
|
+
cleanup = () => {
|
|
43
|
+
if (previousParent) {
|
|
44
|
+
if (previousNextSibling) previousParent.insertBefore(source, previousNextSibling);
|
|
45
|
+
else previousParent.appendChild(source);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
observer.disconnect();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return () => {
|
|
52
|
+
disconnected = true;
|
|
53
|
+
observer.disconnect();
|
|
54
|
+
cleanup?.();
|
|
55
|
+
};
|
|
56
|
+
}, [enabled]);
|
|
57
|
+
|
|
58
|
+
return null;
|
|
59
|
+
}
|