| | |
| | | function getComponentResources(ctx: BuildCtx): ComponentResources { |
| | | const allComponents: Set<QuartzComponent> = new Set() |
| | | for (const emitter of ctx.cfg.plugins.emitters) { |
| | | const components = emitter.getQuartzComponents(ctx) |
| | | const components = emitter.getQuartzComponents?.(ctx) ?? [] |
| | | for (const component of components) { |
| | | allComponents.add(component) |
| | | } |
| | |
| | | afterDOMLoaded: new Set<string>(), |
| | | } |
| | | |
| | | function normalizeResource(resource: string | string[] | undefined): string[] { |
| | | if (!resource) return [] |
| | | if (Array.isArray(resource)) return resource |
| | | return [resource] |
| | | } |
| | | |
| | | for (const component of allComponents) { |
| | | const { css, beforeDOMLoaded, afterDOMLoaded } = component |
| | | if (css) { |
| | | componentResources.css.add(css) |
| | | } |
| | | if (beforeDOMLoaded) { |
| | | componentResources.beforeDOMLoaded.add(beforeDOMLoaded) |
| | | } |
| | | if (afterDOMLoaded) { |
| | | componentResources.afterDOMLoaded.add(afterDOMLoaded) |
| | | } |
| | | const normalizedCss = normalizeResource(css) |
| | | const normalizedBeforeDOMLoaded = normalizeResource(beforeDOMLoaded) |
| | | const normalizedAfterDOMLoaded = normalizeResource(afterDOMLoaded) |
| | | |
| | | normalizedCss.forEach((c) => componentResources.css.add(c)) |
| | | normalizedBeforeDOMLoaded.forEach((b) => componentResources.beforeDOMLoaded.add(b)) |
| | | normalizedAfterDOMLoaded.forEach((a) => componentResources.afterDOMLoaded.add(a)) |
| | | } |
| | | |
| | | return { |
| | |
| | | export const ComponentResources: QuartzEmitterPlugin = () => { |
| | | return { |
| | | name: "ComponentResources", |
| | | getQuartzComponents() { |
| | | return [] |
| | | }, |
| | | async getDependencyGraph(_ctx, _content, _resources) { |
| | | return new DepGraph<FilePath>() |
| | | }, |