import { useEntitySetContext } from "components/EntitySetProvider";
import { generateKeyBetween } from "fractional-indexing";
import { useEffect, useState } from "react";
import { useEntity, useReplicache } from "src/replicache";
import { useUIState } from "src/useUIState";
import { addLinkBlock } from "src/utils/addLinkBlock";
import { BlockProps, BlockLayout } from "./Block";
import { v7 } from "uuid";
import { useSmoker } from "components/Toast";
import { Separator } from "components/Layout";
import { Input } from "components/Input";
import { focusElement } from "src/utils/focusElement";
import { isUrl } from "src/utils/isURL";
import { elementId } from "src/utils/elementId";
import { focusBlock } from "src/utils/focusBlock";
import { CheckTiny } from "components/Icons/CheckTiny";
import { LinkSmall } from "components/Icons/LinkSmall";
export const ExternalLinkBlock = (
props: BlockProps & { preview?: boolean },
) => {
let { permissions } = useEntitySetContext();
let previewImage = useEntity(props.entityID, "link/preview");
let title = useEntity(props.entityID, "link/title");
let description = useEntity(props.entityID, "link/description");
let url = useEntity(props.entityID, "link/url");
let isSelected = useUIState((s) =>
s.selectedBlocks.find((b) => b.value === props.entityID),
);
useEffect(() => {
if (props.preview) return;
let input = document.getElementById(elementId.block(props.entityID).input);
if (isSelected) {
setTimeout(() => {
let input = document.getElementById(
elementId.block(props.entityID).input,
);
focusElement(input as HTMLInputElement | null);
}, 20);
} else input?.blur();
}, [isSelected, props.entityID, props.preview]);
if (url === undefined) {
if (!permissions.write) return null;
return (
);
}
return (