UNPKG

svelte-markdown-pages

Version:

Build and render markdown-based content with distributed navigation for Svelte projects

1 lines 5.78 kB
{"version":3,"sources":["../../src/renderer/components.ts"],"names":[],"mappings":"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","file":"components.cjs","sourcesContent":["import { NavigationTree, NavigationItem } from '../types.js';\n\n// Legacy class-based components for backward compatibility\nexport interface DocsSidebarProps {\n navigation: NavigationTree;\n currentPage?: string | null;\n onPageSelect?: ((path: string) => void) | undefined;\n collapsed?: boolean | undefined;\n}\n\nexport interface DocsContentProps {\n content?: string | null;\n title?: string;\n loading?: boolean;\n error?: string | null;\n}\n\nexport interface DocsLayoutProps {\n navigation: NavigationTree;\n currentPage?: string | null;\n content?: string | null;\n onPageSelect?: ((path: string) => void) | undefined;\n sidebarCollapsed?: boolean | undefined;\n onSidebarToggle?: (() => void) | undefined;\n}\n\n// Legacy class-based implementations\nexport class DocsSidebarClass {\n constructor(props: DocsSidebarProps) {\n this.props = props;\n }\n\n private props: DocsSidebarProps;\n\n render(): string {\n return `\n <nav class=\"docs-sidebar ${this.props.collapsed ? 'collapsed' : ''}\">\n ${this.renderNavigationItems(this.props.navigation.items)}\n </nav>\n `;\n }\n\n private renderNavigationItems(items: NavigationItem[]): string {\n return items.map(item => {\n if (item.type === 'section') {\n return `\n <div class=\"nav-section\">\n <div class=\"nav-section-header\">${item.label}</div>\n ${item.items ? this.renderNavigationItems(item.items) : ''}\n </div>\n `;\n } else {\n const isActive = this.props.currentPage === item.path;\n return `\n <a href=\"#\" \n class=\"nav-link ${isActive ? 'active' : ''}\"\n data-path=\"${item.path}\"\n onclick=\"this.dispatchEvent(new CustomEvent('pageSelect', {detail: '${item.path}'}))\">\n ${item.label}\n </a>\n `;\n }\n }).join('');\n }\n}\n\nexport class DocsContentClass {\n constructor(props: DocsContentProps) {\n this.props = props;\n }\n\n private props: DocsContentProps;\n\n render(): string {\n if (this.props.loading) {\n return '<div class=\"docs-content loading\">Loading...</div>';\n }\n\n if (this.props.error) {\n return `<div class=\"docs-content error\">Error: ${this.props.error}</div>`;\n }\n\n if (!this.props.content) {\n return '<div class=\"docs-content empty\">No content selected</div>';\n }\n\n return `\n <div class=\"docs-content\">\n ${this.props.title ? `<h1>${this.props.title}</h1>` : ''}\n <div class=\"content-body\">\n ${this.props.content}\n </div>\n </div>\n `;\n }\n}\n\n// Legacy exports for backward compatibility\nexport { DocsSidebarClass as DocsSidebar, DocsContentClass as DocsContent };\n\n// Utility functions\nexport function createDocsSidebar(props: DocsSidebarProps): DocsSidebarClass {\n return new DocsSidebarClass(props);\n}\n\nexport function createDocsContent(props: DocsContentProps): DocsContentClass {\n return new DocsContentClass(props);\n}\n\nexport function createDocsLayout(props: DocsLayoutProps): string {\n const sidebar = new DocsSidebarClass({\n navigation: props.navigation,\n currentPage: props.currentPage,\n onPageSelect: props.onPageSelect,\n collapsed: props.sidebarCollapsed\n });\n\n const content = new DocsContentClass({\n content: props.content,\n loading: false,\n error: null\n });\n\n return `\n <div class=\"docs-layout\">\n ${sidebar.render()}\n ${content.render()}\n </div>\n `;\n}"]}