mirror of
https://github.com/immich-app/drift.git
synced 2026-09-30 13:22:57 +08:00
84 lines
2.3 KiB
Dart
84 lines
2.3 KiB
Dart
import 'package:jaspr/src/framework/framework.dart';
|
|
import 'package:jaspr_content/jaspr_content.dart';
|
|
import 'package:jaspr_content/theme.dart';
|
|
import 'package:jaspr_content_snippets/jaspr_content_snippets.dart';
|
|
import 'package:jaspr_docsy/jaspr_docsy.dart';
|
|
import 'package:markdown/markdown.dart' as md;
|
|
import 'package:watcher/watcher.dart';
|
|
|
|
import 'components/admonition.dart';
|
|
import 'components/collapsible.dart';
|
|
import 'components/page_ref.dart';
|
|
import 'components/web_compatibility.dart';
|
|
import 'generated_snippets.dart';
|
|
import 'layouts/docs.dart';
|
|
import 'relative_watcher.dart';
|
|
import 'version_data_loader.dart';
|
|
|
|
md.Document driftMarkdownDocumentBuilder() {
|
|
return md.Document(
|
|
blockSyntaxes: [
|
|
...MarkdownParser.defaultBlockSyntaxes,
|
|
const AdmonitionSyntax(),
|
|
],
|
|
extensionSet: md.ExtensionSet.gitHubWeb,
|
|
);
|
|
}
|
|
|
|
FilesystemLoader driftWebsiteLoader() {
|
|
return FilesystemLoader(
|
|
'content',
|
|
// ignore: invalid_use_of_visible_for_testing_member
|
|
watcherFactory: (path) {
|
|
final inner = DirectoryWatcher(path);
|
|
// Workaround for https://github.com/schultek/jaspr/pull/571
|
|
return RelativeDirectoryWatcher(inner);
|
|
},
|
|
);
|
|
}
|
|
|
|
ConfigResolver driftPageConfig({bool forSearchIndex = false}) {
|
|
return PageConfig.all(
|
|
enableFrontmatter: true,
|
|
dataLoaders: [
|
|
PackageVersionDataLoader(),
|
|
MemoryDataLoader({
|
|
'site': {'base': false},
|
|
}),
|
|
],
|
|
templateEngine: MustacheTemplateEngine(),
|
|
parsers: [
|
|
MarkdownParser(documentBuilder: (_) => driftMarkdownDocumentBuilder()),
|
|
],
|
|
extensions: [
|
|
// Adds heading anchors to each heading.
|
|
HeadingAnchorsExtension(),
|
|
// Generates a table of contents for each page.
|
|
TableOfContentsExtension(),
|
|
],
|
|
components: [
|
|
PageRef(),
|
|
BetterCodeBlock(),
|
|
Collapsible.component(),
|
|
DocsyTabs(),
|
|
renderedSnippetComponent(snippets: generatedSnippets),
|
|
CustomComponent(
|
|
pattern: 'WebCompatibilityCheck',
|
|
builder: (_, _, _) => WebCompatibilityCheck(),
|
|
),
|
|
],
|
|
layouts: [if (forSearchIndex) _ContentOnlyLayout() else DriftDocsLayout()],
|
|
theme: ContentTheme.none(),
|
|
);
|
|
}
|
|
|
|
final class _ContentOnlyLayout extends PageLayoutBase {
|
|
@override
|
|
Component buildBody(Page page, Component child) {
|
|
return child;
|
|
}
|
|
|
|
@override
|
|
Pattern get name => 'text';
|
|
}
|