import "./NoteBadges.css"; import clsx from "clsx"; import { ComponentChildren, MouseEventHandler } from "preact"; import { useRef } from "preact/hooks"; import { t } from "../../services/i18n"; import Dropdown, { DropdownProps } from "../react/Dropdown"; import { useIsNoteReadOnly, useNoteContext, useNoteLabel, useNoteLabelBoolean, useStaticTooltip } from "../react/hooks"; import Icon from "../react/Icon"; import { useShareInfo } from "../shared_info"; import { Badge } from "../react/Badge"; export default function NoteBadges() { return (
); } function ReadOnlyBadge() { const { note, noteContext } = useNoteContext(); const { isReadOnly, enableEditing } = useIsNoteReadOnly(note, noteContext); const isExplicitReadOnly = note?.isLabelTruthy("readOnly"); const isTemporarilyEditable = noteContext?.ntxId !== "_popup-editor" && noteContext?.viewScope?.readOnlyTemporarilyDisabled; if (isTemporarilyEditable) { return enableEditing(false)} />; } else if (isReadOnly) { return enableEditing()} />; } } function ShareBadge() { const { note } = useNoteContext(); const { isSharedExternally, link, linkHref } = useShareInfo(note); return (link && ); } function ClippedNoteBadge() { const { note } = useNoteContext(); const [ pageUrl ] = useNoteLabel(note, "pageUrl"); return (pageUrl && ); } function ExecuteBadge() { const { note, parentComponent } = useNoteContext(); const isScript = note?.isTriliumScript(); const isSql = note?.isTriliumSqlite(); const isExecutable = isScript || isSql; const [ executeDescription ] = useNoteLabel(note, "executeDescription"); const [ executeButton ] = useNoteLabelBoolean(note, "executeButton"); return (note && isExecutable && (executeDescription || executeButton) && parentComponent.triggerCommand("runActiveNote")} /> ); }