Remove useBackdropHighlight (#2323)
This commit is contained in:
@ -1,57 +0,0 @@
|
||||
import useResizeObserver from '@react-hook/resize-observer'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
||||
interface Rect {
|
||||
top: number
|
||||
left: number
|
||||
height: number
|
||||
width: number
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes an element id and uses React refs to create a CSS clip-path rule to apply to a backdrop element
|
||||
* which excludes the element with the given id, creating a "highlight" effect.
|
||||
* @param highlightId
|
||||
*/
|
||||
export function useBackdropHighlight(target: string): string {
|
||||
const [clipPath, setClipPath] = useState('')
|
||||
const [elem, setElem] = useState(document.getElementById(target))
|
||||
|
||||
// Build the actual clip path string, cutting out the target element
|
||||
function buildClipPath({ top, left, height, width }: Rect) {
|
||||
const windowWidth = window.innerWidth
|
||||
const windowHeight = window.innerHeight
|
||||
|
||||
return `
|
||||
path(evenodd, "M0 0 l${windowWidth} 0 l0 ${windowHeight} l-${windowWidth} 0 Z \
|
||||
M${left} ${top} l${width} 0 l0 ${height} l-${width} 0 Z")
|
||||
`
|
||||
}
|
||||
|
||||
// initial setup of clip path
|
||||
useEffect(() => {
|
||||
if (!elem) {
|
||||
const newElem = document.getElementById(target)
|
||||
if (newElem === null) {
|
||||
throw new Error(
|
||||
`Could not find element with id "${target}" to highlight`
|
||||
)
|
||||
}
|
||||
setElem(document.getElementById(target))
|
||||
return
|
||||
}
|
||||
|
||||
const { top, left, height, width } = elem.getBoundingClientRect()
|
||||
setClipPath(buildClipPath({ top, left, height, width }))
|
||||
}, [elem, target])
|
||||
|
||||
// update clip path on resize
|
||||
useResizeObserver(elem, (entry) => {
|
||||
const { height, width } = entry.contentRect
|
||||
// the top and left are relative to the viewport, so we need to get the target's position
|
||||
const { top, left } = entry.target.getBoundingClientRect()
|
||||
setClipPath(buildClipPath({ top, left, height, width }))
|
||||
})
|
||||
|
||||
return clipPath
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
import { OnboardingButtons, useDismiss, useNextClick } from '.'
|
||||
import { onboardingPaths } from 'routes/Onboarding/paths'
|
||||
import { useStore } from '../../useStore'
|
||||
import { useBackdropHighlight } from 'hooks/useBackdropHighlight'
|
||||
|
||||
export default function CodeEditor() {
|
||||
const { buttonDownInStream } = useStore((s) => ({
|
||||
@ -12,14 +11,6 @@ export default function CodeEditor() {
|
||||
|
||||
return (
|
||||
<div className="fixed grid justify-end items-center inset-0 z-50 pointer-events-none">
|
||||
<div
|
||||
className="fixed inset-0 bg-black opacity-50 dark:opacity-80 pointer-events-none"
|
||||
style={
|
||||
{
|
||||
/*clipPath: useBackdropHighlight('code-pane')*/
|
||||
}
|
||||
}
|
||||
></div>
|
||||
<div
|
||||
className={
|
||||
'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-3/4 flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' +
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { OnboardingButtons, kbdClasses, useDismiss, useNextClick } from '.'
|
||||
import { onboardingPaths } from 'routes/Onboarding/paths'
|
||||
import { useStore } from '../../useStore'
|
||||
import { useBackdropHighlight } from 'hooks/useBackdropHighlight'
|
||||
import { bracketWidthConstantLine } from 'lib/exampleKcl'
|
||||
|
||||
export default function InteractiveNumbers() {
|
||||
@ -13,14 +12,6 @@ export default function InteractiveNumbers() {
|
||||
|
||||
return (
|
||||
<div className="fixed grid justify-end items-center inset-0 z-50 pointer-events-none">
|
||||
<div
|
||||
className="fixed inset-0 bg-black opacity-50 pointer-events-none"
|
||||
style={
|
||||
{
|
||||
/*clipPath: useBackdropHighlight('code-pane')*/
|
||||
}
|
||||
}
|
||||
></div>
|
||||
<div
|
||||
className={
|
||||
'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-3/4 flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' +
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { OnboardingButtons, useDismiss, useNextClick } from '.'
|
||||
import { onboardingPaths } from 'routes/Onboarding/paths'
|
||||
import { useStore } from '../../useStore'
|
||||
import { useBackdropHighlight } from 'hooks/useBackdropHighlight'
|
||||
import { Themes, getSystemTheme } from 'lib/theme'
|
||||
import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
|
||||
import { bracketThicknessCalculationLine } from 'lib/exampleKcl'
|
||||
@ -29,14 +28,6 @@ export default function ParametricModeling() {
|
||||
|
||||
return (
|
||||
<div className="fixed grid justify-end items-center inset-0 z-50 pointer-events-none">
|
||||
<div
|
||||
className="fixed inset-0 bg-black dark:bg-black-80 opacity-50 pointer-events-none"
|
||||
style={
|
||||
{
|
||||
/*clipPath: useBackdropHighlight('code-pane')*/
|
||||
}
|
||||
}
|
||||
></div>
|
||||
<div
|
||||
className={
|
||||
'z-10 max-w-xl border border-chalkboard-50 dark:border-chalkboard-80 shadow-lg h-3/4 flex flex-col justify-center bg-chalkboard-10 dark:bg-chalkboard-90 p-8 rounded' +
|
||||
|
Reference in New Issue
Block a user