import { useMemo } from "react"; import { Definition, RowGroup, RowGroupOption, SingleInput, TextField, Toggle, SettingsManager } from "Components/UserSettings"; const { Provider: CopyProvider, useSettings: useCopySettings } = new SettingsManager<"copy">(); const PRESET_OPTIONS = [ { label: "Citation", value: "citation" }, { label: "Citekey", value: "citekey" }, { label: "Page reference", value: "page-reference" }, { label: "Key", value: "raw" }, { label: "Tag", value: "tag" } ]; const USE_OPTIONS = { "preset": "Preset", "template": "Custom template" }; /** * Options for Quick Copy's override key * @readonly * @enum {{label: String, value: String}} */ export const OVERRIDE_KEY_OPTIONS = [ { label: "Alt", value: "altKey" }, { label: "Ctrl", value: "ctrlKey" }, { label: "Shift", value: "shiftKey" }, { label: "System key", value: "metaKey" } ]; const COPY_REPLACEMENTS = ( <> Replacements available: ); function CopyWidget(){ const [ { always, overrideKey, preset, template, useAsDefault, useQuickCopy }, setOpts ] = useCopySettings(); const handlers = useMemo(() => { function toggleBool(op){ setOpts(prevState => ({ ...prevState, [op]: !prevState[op] })); } function updateSingleValue(op, val){ setOpts(prevState => ({ ...prevState, [op]: val })); } return { toggleAlwaysCopy: () => toggleBool("always"), updateOverrideKey: (val) => updateSingleValue("overrideKey", val), updatePresetFormat: (val) => updateSingleValue("preset", val), updateTemplate: (val) => updateSingleValue("template", val), updateUseType: (val) => updateSingleValue("useAsDefault", val), toggleQuickCopy: () => toggleBool("useQuickCopy") }; }, [setOpts]); return <> ; } export { CopyProvider, CopyWidget, useCopySettings };