diff --git a/apps/web/src/dialogs/api-key/registry.tsx b/apps/web/src/dialogs/api-key/registry.tsx
index 97618d1e0..122d7d5ac 100644
--- a/apps/web/src/dialogs/api-key/registry.tsx
+++ b/apps/web/src/dialogs/api-key/registry.tsx
@@ -1,6 +1,6 @@
-import { defineDialogRenderer, defineDialogRendererRegistry } from "../renderer-registry";
+import type { AnyDialogRendererEntry } from "../renderer-registry";
import { CreateApiKeyDialog } from "./create";
-export const apiKeyDialogRendererRegistry = defineDialogRendererRegistry("api-key", [
- defineDialogRenderer("api-key.create", () => ),
-]);
+export const apiKeyDialogRenderers: readonly AnyDialogRendererEntry[] = [
+ { type: "api-key.create", render: () => },
+];
diff --git a/apps/web/src/dialogs/auth/registry.tsx b/apps/web/src/dialogs/auth/registry.tsx
index ca2466ba1..f41c558c4 100644
--- a/apps/web/src/dialogs/auth/registry.tsx
+++ b/apps/web/src/dialogs/auth/registry.tsx
@@ -1,10 +1,10 @@
-import { defineDialogRenderer, defineDialogRendererRegistry } from "../renderer-registry";
+import type { AnyDialogRendererEntry } from "../renderer-registry";
import { ChangePasswordDialog } from "./change-password";
import { DisableTwoFactorDialog } from "./disable-two-factor";
import { EnableTwoFactorDialog } from "./enable-two-factor";
-export const authDialogRendererRegistry = defineDialogRendererRegistry("auth", [
- defineDialogRenderer("auth.change-password", () => ),
- defineDialogRenderer("auth.two-factor.enable", () => ),
- defineDialogRenderer("auth.two-factor.disable", () => ),
-]);
+export const authDialogRenderers: readonly AnyDialogRendererEntry[] = [
+ { type: "auth.change-password", render: () => },
+ { type: "auth.two-factor.enable", render: () => },
+ { type: "auth.two-factor.disable", render: () => },
+];
diff --git a/apps/web/src/dialogs/renderer-registry.ts b/apps/web/src/dialogs/renderer-registry.ts
index 6adf70c06..cd4f83e68 100644
--- a/apps/web/src/dialogs/renderer-registry.ts
+++ b/apps/web/src/dialogs/renderer-registry.ts
@@ -1,26 +1,12 @@
import type { ReactNode } from "react";
import type { DialogSchema, DialogType } from "./schemas";
-export interface DialogRendererEntry {
+// ponytail: defineDialogRenderer/defineDialogRendererRegistry were identity fns; inlined
+export type DialogRendererEntry = {
type: T;
render: (dialog: Extract) => ReactNode;
-}
+};
export type AnyDialogRendererEntry = {
[T in DialogType]: DialogRendererEntry;
}[DialogType];
-
-export interface DialogRendererRegistry {
- domain: string;
- renderers: readonly AnyDialogRendererEntry[];
-}
-
-export const defineDialogRenderer = (
- type: T,
- render: (dialog: Extract) => ReactNode,
-): DialogRendererEntry => ({ type, render });
-
-export const defineDialogRendererRegistry = (
- domain: string,
- renderers: readonly AnyDialogRendererEntry[],
-): DialogRendererRegistry => ({ domain, renderers });
diff --git a/apps/web/src/dialogs/renderers.tsx b/apps/web/src/dialogs/renderers.tsx
index 34922beb0..7caadec32 100644
--- a/apps/web/src/dialogs/renderers.tsx
+++ b/apps/web/src/dialogs/renderers.tsx
@@ -1,25 +1,17 @@
import type { DialogSchema } from "./schemas";
-import { apiKeyDialogRendererRegistry } from "./api-key/registry";
-import { authDialogRendererRegistry } from "./auth/registry";
-import { resumeDialogRendererRegistry } from "./resume/registry";
-
-const dialogRendererRegistries = [
- authDialogRendererRegistry,
- apiKeyDialogRendererRegistry,
- resumeDialogRendererRegistry,
-] as const;
+import { apiKeyDialogRenderers } from "./api-key/registry";
+import { authDialogRenderers } from "./auth/registry";
+import { resumeDialogRenderers } from "./resume/registry";
const dialogRendererByType = new Map(
- dialogRendererRegistries.flatMap((registry) =>
- registry.renderers.map((renderer) => [renderer.type, renderer] as const),
+ [...authDialogRenderers, ...apiKeyDialogRenderers, ...resumeDialogRenderers].map(
+ (renderer) => [renderer.type, renderer] as const,
),
);
export const renderDialog = (dialog: DialogSchema | null) => {
if (!dialog) return null;
-
const renderer = dialogRendererByType.get(dialog.type);
if (renderer) return renderer.render(dialog as never);
-
return null;
};
diff --git a/apps/web/src/dialogs/resume/registry.tsx b/apps/web/src/dialogs/resume/registry.tsx
index cd9cdd3fd..bbc7a289e 100644
--- a/apps/web/src/dialogs/resume/registry.tsx
+++ b/apps/web/src/dialogs/resume/registry.tsx
@@ -1,4 +1,4 @@
-import { defineDialogRenderer, defineDialogRendererRegistry } from "../renderer-registry";
+import type { AnyDialogRendererEntry } from "../renderer-registry";
import { CreateResumeDialog, DuplicateResumeDialog, UpdateResumeDialog } from ".";
import { ImportResumeDialog } from "./import";
import { CreateAwardDialog, UpdateAwardDialog } from "./sections/award";
@@ -18,44 +18,46 @@ import { CreateSummaryItemDialog, UpdateSummaryItemDialog } from "./sections/sum
import { CreateVolunteerDialog, UpdateVolunteerDialog } from "./sections/volunteer";
import { TemplateGalleryDialog } from "./template/gallery";
-export const resumeDialogRendererRegistry = defineDialogRendererRegistry("resume", [
- defineDialogRenderer("resume.create", () => ),
- defineDialogRenderer("resume.update", ({ data }) => ),
- defineDialogRenderer("resume.duplicate", ({ data }) => ),
- defineDialogRenderer("resume.import", () => ),
- defineDialogRenderer("resume.template.gallery", () => ),
- defineDialogRenderer("resume.sections.profiles.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.profiles.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.experience.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.experience.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.education.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.education.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.skills.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.skills.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.projects.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.projects.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.certifications.create", ({ data }) => (
-
- )),
- defineDialogRenderer("resume.sections.certifications.update", ({ data }) => (
-
- )),
- defineDialogRenderer("resume.sections.languages.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.languages.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.publications.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.publications.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.awards.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.awards.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.interests.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.interests.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.volunteer.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.volunteer.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.references.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.references.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.summary.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.summary.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.cover-letter.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.cover-letter.update", ({ data }) => ),
- defineDialogRenderer("resume.sections.custom.create", ({ data }) => ),
- defineDialogRenderer("resume.sections.custom.update", ({ data }) => ),
-]);
+export const resumeDialogRenderers: readonly AnyDialogRendererEntry[] = [
+ { type: "resume.create", render: () => },
+ { type: "resume.update", render: ({ data }) => },
+ { type: "resume.duplicate", render: ({ data }) => },
+ { type: "resume.import", render: () => },
+ { type: "resume.template.gallery", render: () => },
+ { type: "resume.sections.profiles.create", render: ({ data }) => },
+ { type: "resume.sections.profiles.update", render: ({ data }) => },
+ { type: "resume.sections.experience.create", render: ({ data }) => },
+ { type: "resume.sections.experience.update", render: ({ data }) => },
+ { type: "resume.sections.education.create", render: ({ data }) => },
+ { type: "resume.sections.education.update", render: ({ data }) => },
+ { type: "resume.sections.skills.create", render: ({ data }) => },
+ { type: "resume.sections.skills.update", render: ({ data }) => },
+ { type: "resume.sections.projects.create", render: ({ data }) => },
+ { type: "resume.sections.projects.update", render: ({ data }) => },
+ {
+ type: "resume.sections.certifications.create",
+ render: ({ data }) => ,
+ },
+ {
+ type: "resume.sections.certifications.update",
+ render: ({ data }) => ,
+ },
+ { type: "resume.sections.languages.create", render: ({ data }) => },
+ { type: "resume.sections.languages.update", render: ({ data }) => },
+ { type: "resume.sections.publications.create", render: ({ data }) => },
+ { type: "resume.sections.publications.update", render: ({ data }) => },
+ { type: "resume.sections.awards.create", render: ({ data }) => },
+ { type: "resume.sections.awards.update", render: ({ data }) => },
+ { type: "resume.sections.interests.create", render: ({ data }) => },
+ { type: "resume.sections.interests.update", render: ({ data }) => },
+ { type: "resume.sections.volunteer.create", render: ({ data }) => },
+ { type: "resume.sections.volunteer.update", render: ({ data }) => },
+ { type: "resume.sections.references.create", render: ({ data }) => },
+ { type: "resume.sections.references.update", render: ({ data }) => },
+ { type: "resume.sections.summary.create", render: ({ data }) => },
+ { type: "resume.sections.summary.update", render: ({ data }) => },
+ { type: "resume.sections.cover-letter.create", render: ({ data }) => },
+ { type: "resume.sections.cover-letter.update", render: ({ data }) => },
+ { type: "resume.sections.custom.create", render: ({ data }) => },
+ { type: "resume.sections.custom.update", render: ({ data }) => },
+];