logancyang_obsidian-copilot/src/components/chat-components/plugins/URLPillSyncPlugin.tsx
Zero Liu 6ca2dc01ea
chore(eslint): enable no-explicit-any; fix ~395 violations (#2452)
* chore(eslint): enable no-explicit-any; fix ~395 violations

Switches @typescript-eslint/no-explicit-any from "off" to "error" and
replaces explicit `any` with proper types or `unknown` + narrowing
across ~100 source files and 15 test files. Eleven eslint-disable
comments remain: one for a BaseLanguageModel prototype patch and ten
for Orama<any> API surfaces where typed alternatives poison Orama's
internal inference to `never`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(scripts): cast chainContext to ChainManager in printPromptDebugEntry

The earlier `as any` → `as unknown` rewrite left buildAgentPromptDebugReport's
chainManager argument typed as `unknown`, which CI's `tsc -noEmit` (without
`--skipLibCheck`) flagged. Restore the cast through the real ChainManager type.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(eslint): fix remaining no-explicit-any and unnecessary-type-assertion errors

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(eslint): drop redundant no-explicit-any rule

Already set to "error" by typescript-eslint/recommendedTypeChecked via
obsidianmd's recommended config.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 02:08:45 -07:00

37 lines
1.2 KiB
TypeScript

import React from "react";
import { $isURLPillNode, URLPillNode } from "../pills/URLPillNode";
import { GenericPillSyncPlugin, PillSyncConfig } from "./GenericPillSyncPlugin";
import type { LexicalNode } from "lexical";
/**
* Props for the URLPillSyncPlugin component
*/
interface URLPillSyncPluginProps {
/** Callback triggered when the list of URL pills changes */
onURLsChange?: (urls: string[]) => void;
/** Callback triggered when URL pills are removed from the editor */
onURLsRemoved?: (removedUrls: string[]) => void;
}
/**
* Configuration for URL pill synchronization
*/
const urlPillConfig: PillSyncConfig<string> = {
isPillNode: $isURLPillNode,
extractData: (node: LexicalNode) => (node as URLPillNode).getURL(),
};
/**
* Lexical plugin that monitors URL pill nodes in the editor and syncs
* their state with parent components. Tracks additions, removals, and
* changes to URL pills to keep external state in sync with editor content.
*/
export function URLPillSyncPlugin({ onURLsChange, onURLsRemoved }: URLPillSyncPluginProps) {
return (
<GenericPillSyncPlugin
config={urlPillConfig}
onChange={onURLsChange}
onRemoved={onURLsRemoved}
/>
);
}