30 lines
992 B
TypeScript
30 lines
992 B
TypeScript
import type { DocsGraphicSnapGuideState } from "./docs-graphic-snap.ts"
|
|
|
|
export const DOCS_GRAPHIC_SNAP_GUIDES_EVENT = "ultidocs:graphic-snap-guides"
|
|
|
|
let snapGuideState: DocsGraphicSnapGuideState | null = null
|
|
|
|
export function getDocsGraphicSnapGuideState(): DocsGraphicSnapGuideState | null {
|
|
return snapGuideState
|
|
}
|
|
|
|
export function setDocsGraphicSnapGuides(state: DocsGraphicSnapGuideState | null) {
|
|
snapGuideState = state
|
|
if (typeof window !== "undefined") {
|
|
window.dispatchEvent(
|
|
new CustomEvent(DOCS_GRAPHIC_SNAP_GUIDES_EVENT, { detail: { state } })
|
|
)
|
|
}
|
|
}
|
|
|
|
export function clearDocsGraphicSnapGuides() {
|
|
setDocsGraphicSnapGuides(null)
|
|
}
|
|
|
|
export function subscribeDocsGraphicSnapGuides(listener: () => void): () => void {
|
|
if (typeof window === "undefined") return () => {}
|
|
const handler = () => listener()
|
|
window.addEventListener(DOCS_GRAPHIC_SNAP_GUIDES_EVENT, handler)
|
|
return () => window.removeEventListener(DOCS_GRAPHIC_SNAP_GUIDES_EVENT, handler)
|
|
}
|