package org.jetbrains.dokka.allModulesPage import org.jetbrains.dokka.CoreExtensions import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.base.resolvers.local.DokkaLocationProviderFactory import org.jetbrains.dokka.base.resolvers.local.LocationProviderFactory import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.DokkaPluginApiPreview import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement import org.jetbrains.dokka.templates.TemplatingPlugin import org.jetbrains.dokka.transformers.pages.PageCreator import org.jetbrains.dokka.transformers.pages.PageTransformer class AllModulesPagePlugin : DokkaPlugin() { val partialLocationProviderFactory by extensionPoint() val allModulesPageCreator by extensionPoint>() val allModulesPageTransformer by extensionPoint() val externalModuleLinkResolver by extensionPoint() val allModulesPageCreators by extending { allModulesPageCreator providing ::MultimodulePageCreator } val dokkaBase by lazy { plugin() } val multimoduleLocationProvider by extending { (dokkaBase.locationProviderFactory providing MultimoduleLocationProvider::Factory override plugin().locationProvider) } val baseLocationProviderFactory by extending { partialLocationProviderFactory providing ::DokkaLocationProviderFactory } val allModulesPageGeneration by extending { (CoreExtensions.generation providing ::AllModulesPageGeneration override dokkaBase.singleGeneration) } val resolveLinkCommandHandler by extending { plugin().directiveBasedCommandHandlers providing ::ResolveLinkCommandHandler } val multiModuleLinkResolver by extending { externalModuleLinkResolver providing ::DefaultExternalModuleLinkResolver } @OptIn(DokkaPluginApiPreview::class) override fun pluginApiPreviewAcknowledgement(): PluginApiPreviewAcknowledgement = PluginApiPreviewAcknowledgement }