UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 2.15 kB
{"version":3,"file":"FocusScope.mjs","names":[],"sources":["../../../src/base-ui/FocusScope/FocusScope.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { createContext, type HTMLAttributes, type Ref, use, useEffect, useId } from 'react';\n\nimport { registerScope, setActiveScope, useFocusScopeActive } from './store';\nimport { styles } from './style';\n\nexport interface FocusScopeProps extends HTMLAttributes<HTMLDivElement> {\n debugOutline?: boolean;\n id?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst FocusScopeIdContext = createContext<string | null>(null);\n\nexport const useFocusScopeId = () => use(FocusScopeIdContext);\n\nexport const FocusScope = ({\n id,\n debugOutline = false,\n className,\n children,\n onKeyDown,\n ...rest\n}: FocusScopeProps) => {\n const generatedId = useId();\n const scopeId = id ?? generatedId;\n const isActive = useFocusScopeActive(scopeId);\n\n useEffect(() => registerScope(scopeId), [scopeId]);\n\n return (\n <FocusScopeIdContext value={scopeId}>\n <div\n data-focus-scope={scopeId}\n data-scope-active={isActive ? '' : undefined}\n tabIndex={-1}\n {...rest}\n className={cx(styles.root, debugOutline && styles.debugOutline, className)}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === 'Escape') setActiveScope(null);\n }}\n >\n {children}\n </div>\n </FocusScopeIdContext>\n );\n};\n\nFocusScope.displayName = 'FocusScope';\n"],"mappings":";;;;;;;AAcA,MAAM,sBAAsB,cAA6B,IAAI;AAE7D,MAAa,wBAAwB,IAAI,mBAAmB;AAE5D,MAAa,cAAc,EACzB,IACA,eAAe,OACf,WACA,UACA,WACA,GAAG,WACkB;CACrB,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM;CACtB,MAAM,WAAW,oBAAoB,OAAO;CAE5C,gBAAgB,cAAc,OAAO,GAAG,CAAC,OAAO,CAAC;CAEjD,OACE,oBAAC,qBAAD;EAAqB,OAAO;EAC1B,UAAA,oBAAC,OAAD;GACE,oBAAkB;GAClB,qBAAmB,WAAW,KAAK,KAAA;GACnC,UAAU;GACV,GAAI;GACJ,WAAW,GAAG,OAAO,MAAM,gBAAgB,OAAO,cAAc,SAAS;GACzE,YAAY,UAAU;IACpB,YAAY,KAAK;IACjB,IAAI,MAAM,kBAAkB;IAC5B,IAAI,MAAM,QAAQ,UAAU,eAAe,IAAI;GACjD;GAEC;EACE,CAAA;CACc,CAAA;AAEzB;AAEA,WAAW,cAAc"}