{"version":3,"file":"leader.cjs","names":["Type"],"sources":["../../src/schemas/leader.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport type { DoomExtensionContext } from './config.ts';\n\n/**\n * How the key badge is painted. `exit` marks the row that leaves an active minor\n * mode, which the panel colours differently so the reader can tell which way the\n * key flips without checking the mode line first.\n */\nexport const LeaderToneSchema = Type.Union([Type.Literal('default'), Type.Literal('exit')]);\nexport type LeaderTone = Static<typeof LeaderToneSchema>;\n\nexport const LeaderSegmentSchema = Type.Object(\n  {\n    key: Type.String({ minLength: 1, maxLength: 1 }),\n    label: Type.String({ minLength: 1 }),\n    detail: Type.Optional(Type.String()),\n    order: Type.Optional(Type.Integer()),\n    tone: Type.Optional(LeaderToneSchema),\n  },\n  { additionalProperties: false },\n);\nexport type LeaderSegment = Static<typeof LeaderSegmentSchema>;\n\nexport const LeaderCommandSchema = Type.Object(\n  { name: Type.String({ minLength: 1 }), args: Type.Optional(Type.String()) },\n  { additionalProperties: false },\n);\nexport type LeaderCommand = Static<typeof LeaderCommandSchema>;\n\nexport const LeaderActionSchema = Type.Object(\n  {\n    name: Type.String({ minLength: 1, maxLength: 128, pattern: '^[a-z0-9][a-z0-9._:-]*$' }),\n  },\n  { additionalProperties: false },\n);\nexport type LeaderAction = Static<typeof LeaderActionSchema>;\n\nconst LeaderBindingBase = {\n  id: Type.String({ minLength: 1 }),\n  path: Type.Array(LeaderSegmentSchema, { minItems: 1 }),\n};\n\nexport const LeaderBindingSchema = Type.Union([\n  Type.Object({ ...LeaderBindingBase, command: LeaderCommandSchema }, { additionalProperties: false }),\n  Type.Object({ ...LeaderBindingBase, action: LeaderActionSchema }, { additionalProperties: false }),\n]);\nexport type LeaderBinding =\n  | {\n      id: string;\n      path: readonly [LeaderSegment, ...LeaderSegment[]];\n      command: LeaderCommand;\n    }\n  | {\n      id: string;\n      path: readonly [LeaderSegment, ...LeaderSegment[]];\n      action: LeaderAction;\n    };\n\nexport const LeaderSourceSchema = Type.String({\n  minLength: 1,\n  maxLength: 128,\n  pattern: '^[A-Za-z0-9@][A-Za-z0-9@/._:-]*$',\n});\n\nexport const LeaderContributionSchema = Type.Object(\n  {\n    source: LeaderSourceSchema,\n    bindings: Type.Array(LeaderBindingSchema),\n  },\n  { additionalProperties: false },\n);\nexport interface LeaderContribution {\n  source: string;\n  bindings: readonly LeaderBinding[];\n}\n\nexport interface DoomLeaderContributionHandle {\n  update(bindings: readonly LeaderBinding[]): void;\n  dispose(): void;\n}\n\nexport interface DoomLeaderActionHandlerOptions<ExtensionContext extends DoomExtensionContext = DoomExtensionContext> {\n  source: string;\n  handlers: Readonly<Record<string, (context: ExtensionContext) => void | Promise<void>>>;\n  onError: (error: unknown, actionName: string, context: ExtensionContext) => void;\n}\n"],"mappings":"yBAQA,MAAa,EAAmBA,EAAAA,KAAK,MAAM,CAACA,EAAAA,KAAK,QAAQ,SAAS,EAAGA,EAAAA,KAAK,QAAQ,MAAM,CAAC,CAAC,EAG7E,EAAsBA,EAAAA,KAAK,OACtC,CACE,IAAKA,EAAAA,KAAK,OAAO,CAAE,UAAW,EAAG,UAAW,CAAE,CAAC,EAC/C,MAAOA,EAAAA,KAAK,OAAO,CAAE,UAAW,CAAE,CAAC,EACnC,OAAQA,EAAAA,KAAK,SAASA,EAAAA,KAAK,OAAO,CAAC,EACnC,MAAOA,EAAAA,KAAK,SAASA,EAAAA,KAAK,QAAQ,CAAC,EACnC,KAAMA,EAAAA,KAAK,SAAS,CAAgB,CACtC,EACA,CAAE,qBAAsB,EAAM,CAChC,EAGa,EAAsBA,EAAAA,KAAK,OACtC,CAAE,KAAMA,EAAAA,KAAK,OAAO,CAAE,UAAW,CAAE,CAAC,EAAG,KAAMA,EAAAA,KAAK,SAASA,EAAAA,KAAK,OAAO,CAAC,CAAE,EAC1E,CAAE,qBAAsB,EAAM,CAChC,EAGa,EAAqBA,EAAAA,KAAK,OACrC,CACE,KAAMA,EAAAA,KAAK,OAAO,CAAE,UAAW,EAAG,UAAW,IAAK,QAAS,yBAA0B,CAAC,CACxF,EACA,CAAE,qBAAsB,EAAM,CAChC,EAGM,EAAoB,CACxB,GAAIA,EAAAA,KAAK,OAAO,CAAE,UAAW,CAAE,CAAC,EAChC,KAAMA,EAAAA,KAAK,MAAM,EAAqB,CAAE,SAAU,CAAE,CAAC,CACvD,EAEa,EAAsBA,EAAAA,KAAK,MAAM,CAC5CA,EAAAA,KAAK,OAAO,CAAE,GAAG,EAAmB,QAAS,CAAoB,EAAG,CAAE,qBAAsB,EAAM,CAAC,EACnGA,EAAAA,KAAK,OAAO,CAAE,GAAG,EAAmB,OAAQ,CAAmB,EAAG,CAAE,qBAAsB,EAAM,CAAC,CACnG,CAAC,EAaY,EAAqBA,EAAAA,KAAK,OAAO,CAC5C,UAAW,EACX,UAAW,IACX,QAAS,kCACX,CAAC,EAEY,EAA2BA,EAAAA,KAAK,OAC3C,CACE,OAAQ,EACR,SAAUA,EAAAA,KAAK,MAAM,CAAmB,CAC1C,EACA,CAAE,qBAAsB,EAAM,CAChC"}