@semcore/core 2.39.4 → 16.0.0-prerelease.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +2 -2
- package/lib/LastInteractionType.d.ts +11 -0
- package/lib/LastInteractionType.js +57 -0
- package/lib/LastInteractionType.js.map +1 -0
- package/lib/LastInteractionType.mjs +51 -0
- package/lib/LastInteractionType.mjs.map +1 -0
- package/lib/core-types/Component.d.ts +189 -0
- package/lib/core-types/Component.js +59 -0
- package/lib/core-types/Component.js.map +1 -0
- package/lib/core-types/Component.mjs +51 -0
- package/lib/core-types/Component.mjs.map +1 -0
- package/lib/core-types/UnknownProperties.d.ts +3 -0
- package/lib/core-types/UnknownProperties.js +2 -0
- package/lib/core-types/UnknownProperties.js.map +1 -0
- package/lib/core-types/UnknownProperties.mjs +2 -0
- package/lib/core-types/UnknownProperties.mjs.map +1 -0
- package/lib/core-types/reshadow.d.js +2 -0
- package/lib/core-types/reshadow.d.js.map +1 -0
- package/lib/core-types/reshadow.d.mjs +2 -0
- package/lib/core-types/reshadow.d.mjs.map +1 -0
- package/lib/core-types/symbols.d.ts +9 -0
- package/lib/core-types/symbols.js +25 -0
- package/lib/core-types/symbols.js.map +1 -0
- package/lib/core-types/symbols.mjs +20 -0
- package/lib/core-types/symbols.mjs.map +1 -0
- package/lib/coreFactory.d.ts +27 -0
- package/lib/coreFactory.js +352 -0
- package/lib/coreFactory.js.map +1 -0
- package/lib/coreFactory.mjs +324 -0
- package/lib/coreFactory.mjs.map +1 -0
- package/lib/enhancement/Children.d.ts +5 -0
- package/lib/enhancement/Children.js +119 -0
- package/lib/enhancement/Children.js.map +1 -0
- package/lib/enhancement/Children.mjs +96 -0
- package/lib/enhancement/Children.mjs.map +1 -0
- package/lib/enhancement/Root.d.ts +6 -0
- package/lib/enhancement/Root.js +78 -0
- package/lib/enhancement/Root.js.map +1 -0
- package/lib/enhancement/Root.mjs +56 -0
- package/lib/enhancement/Root.mjs.map +1 -0
- package/lib/enhancement/bindHandler.d.ts +5 -0
- package/lib/enhancement/bindHandler.js +54 -0
- package/lib/enhancement/bindHandler.js.map +1 -0
- package/lib/enhancement/bindHandler.mjs +48 -0
- package/lib/enhancement/bindHandler.mjs.map +1 -0
- package/lib/enhancement/dataName.d.ts +4 -0
- package/lib/enhancement/dataName.js +20 -0
- package/lib/enhancement/dataName.js.map +1 -0
- package/lib/enhancement/dataName.mjs +13 -0
- package/lib/enhancement/dataName.mjs.map +1 -0
- package/lib/enhancement/enhance.d.ts +5 -0
- package/lib/enhancement/enhance.js +22 -0
- package/lib/enhancement/enhance.js.map +1 -0
- package/lib/enhancement/enhance.mjs +16 -0
- package/lib/enhancement/enhance.mjs.map +1 -0
- package/lib/enhancement/functionDefaultProps.d.ts +8 -0
- package/lib/enhancement/functionDefaultProps.js +36 -0
- package/lib/enhancement/functionDefaultProps.js.map +1 -0
- package/lib/enhancement/functionDefaultProps.mjs +29 -0
- package/lib/enhancement/functionDefaultProps.mjs.map +1 -0
- package/lib/enhancement/hoistProps.d.ts +10 -0
- package/lib/enhancement/hoistProps.js +97 -0
- package/lib/enhancement/hoistProps.js.map +1 -0
- package/lib/enhancement/hoistProps.mjs +78 -0
- package/lib/enhancement/hoistProps.mjs.map +1 -0
- package/lib/enhancement/i18n.d.ts +4 -0
- package/lib/enhancement/i18n.js +28 -0
- package/lib/enhancement/i18n.js.map +1 -0
- package/lib/enhancement/i18n.mjs +20 -0
- package/lib/enhancement/i18n.mjs.map +1 -0
- package/lib/enhancement/inheritedName.d.ts +8 -0
- package/lib/enhancement/inheritedName.js +23 -0
- package/lib/enhancement/inheritedName.js.map +1 -0
- package/lib/enhancement/inheritedName.mjs +16 -0
- package/lib/enhancement/inheritedName.mjs.map +1 -0
- package/lib/enhancement/staticChildren.d.ts +13 -0
- package/lib/enhancement/staticChildren.js +135 -0
- package/lib/enhancement/staticChildren.js.map +1 -0
- package/lib/enhancement/staticChildren.mjs +120 -0
- package/lib/enhancement/staticChildren.mjs.map +1 -0
- package/lib/enhancement/style.d.ts +9 -0
- package/lib/enhancement/style.js +60 -0
- package/lib/enhancement/style.js.map +1 -0
- package/lib/enhancement/style.mjs +49 -0
- package/lib/enhancement/style.mjs.map +1 -0
- package/lib/enhancement/uncontrolledProps.d.ts +7 -0
- package/lib/enhancement/uncontrolledProps.js +131 -0
- package/lib/enhancement/uncontrolledProps.js.map +1 -0
- package/lib/enhancement/uncontrolledProps.mjs +107 -0
- package/lib/enhancement/uncontrolledProps.mjs.map +1 -0
- package/lib/esm/LastInteractionType.mjs +51 -0
- package/lib/esm/core-types/Component.mjs +51 -0
- package/lib/esm/core-types/symbols.mjs +20 -0
- package/lib/esm/coreFactory.mjs +324 -0
- package/lib/esm/enhancement/Children.mjs +96 -0
- package/lib/esm/enhancement/Root.mjs +56 -0
- package/lib/esm/enhancement/bindHandler.mjs +48 -0
- package/lib/esm/enhancement/dataName.mjs +13 -0
- package/lib/esm/enhancement/enhance.mjs +16 -0
- package/lib/esm/enhancement/functionDefaultProps.mjs +29 -0
- package/lib/esm/enhancement/hoistProps.mjs +78 -0
- package/lib/esm/enhancement/i18n.mjs +20 -0
- package/lib/esm/enhancement/inheritedName.mjs +16 -0
- package/lib/esm/enhancement/staticChildren.mjs +120 -0
- package/lib/esm/enhancement/style.mjs +49 -0
- package/lib/esm/enhancement/uncontrolledProps.mjs +107 -0
- package/lib/esm/index.mjs +22 -4
- package/lib/esm/register.mjs +31 -0
- package/lib/esm/styled/index.mjs +8 -0
- package/lib/esm/styled/reshadow-core.mjs +234 -0
- package/lib/esm/styled/sstyled.mjs +121 -0
- package/lib/esm/utils/assignProps.mjs +86 -0
- package/lib/esm/utils/canUseDOM.mjs +6 -0
- package/lib/esm/utils/capitalizeFirstLetter.mjs +6 -0
- package/lib/esm/utils/createHoc.mjs +44 -0
- package/lib/esm/utils/enhances/WithI18n.mjs +78 -0
- package/lib/esm/utils/enhances/i18nEnhance.mjs +91 -0
- package/lib/esm/utils/getDisplayName.mjs +6 -0
- package/lib/esm/utils/logger.mjs +35 -0
- package/lib/esm/utils/pick.mjs +15 -0
- package/lib/esm/utils/ref.mjs +87 -0
- package/lib/esm/utils/use/useEnhancedEffect.mjs +6 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +103 -0
- package/lib/index.js.map +1 -0
- package/lib/index.mjs +24 -0
- package/lib/index.mjs.map +1 -0
- package/lib/register.d.ts +8 -0
- package/lib/register.js +37 -0
- package/lib/register.js.map +1 -0
- package/lib/register.mjs +31 -0
- package/lib/register.mjs.map +1 -0
- package/lib/styled/index.d.ts +11 -0
- package/lib/styled/index.js +32 -0
- package/lib/styled/index.js.map +1 -0
- package/lib/styled/index.mjs +8 -0
- package/lib/styled/index.mjs.map +1 -0
- package/lib/styled/reshadow-core.d.ts +37 -0
- package/lib/styled/reshadow-core.js +256 -0
- package/lib/styled/reshadow-core.js.map +1 -0
- package/lib/styled/reshadow-core.mjs +234 -0
- package/lib/styled/reshadow-core.mjs.map +1 -0
- package/lib/styled/sstyled.d.ts +17 -0
- package/lib/styled/sstyled.js +149 -0
- package/lib/styled/sstyled.js.map +1 -0
- package/lib/styled/sstyled.mjs +121 -0
- package/lib/styled/sstyled.mjs.map +1 -0
- package/lib/theme/dark.json +2506 -0
- package/lib/theme/exclude-tokens.json +10 -0
- package/lib/theme/light.json +2584 -0
- package/lib/theme/processor.d.ts +1 -0
- package/lib/theme/processor.js +315 -0
- package/lib/theme/processor.js.map +1 -0
- package/lib/theme/processor.mjs +307 -0
- package/lib/theme/processor.mjs.map +1 -0
- package/lib/theme/themes/auto.css +1465 -0
- package/lib/theme/themes/dark.css +723 -0
- package/lib/theme/themes/dark.d.ts +378 -0
- package/lib/theme/themes/dark.js +385 -0
- package/lib/theme/themes/dark.js.map +1 -0
- package/lib/theme/themes/dark.mjs +378 -0
- package/lib/theme/themes/dark.mjs.map +1 -0
- package/lib/theme/themes/default.css +742 -0
- package/lib/theme/themes/default.d.ts +387 -0
- package/lib/theme/themes/default.js +394 -0
- package/lib/theme/themes/default.js.map +1 -0
- package/lib/theme/themes/default.mjs +387 -0
- package/lib/theme/themes/default.mjs.map +1 -0
- package/lib/theme/themes/light.css +742 -0
- package/lib/theme/themes/light.d.ts +387 -0
- package/lib/theme/themes/light.js +394 -0
- package/lib/theme/themes/light.js.map +1 -0
- package/lib/theme/themes/light.mjs +387 -0
- package/lib/theme/themes/light.mjs.map +1 -0
- package/lib/theme/utils.d.ts +52 -0
- package/lib/theme/utils.js +297 -0
- package/lib/theme/utils.js.map +1 -0
- package/lib/theme/utils.mjs +286 -0
- package/lib/theme/utils.mjs.map +1 -0
- package/lib/utils/CSSinJS.d.ts +5 -0
- package/lib/utils/CSSinJS.js +36 -0
- package/lib/utils/CSSinJS.js.map +1 -0
- package/lib/utils/CSSinJS.mjs +28 -0
- package/lib/utils/CSSinJS.mjs.map +1 -0
- package/lib/utils/ScreenReaderOnly.d.ts +8 -0
- package/lib/utils/ScreenReaderOnly.js +31 -0
- package/lib/utils/ScreenReaderOnly.js.map +1 -0
- package/lib/utils/ScreenReaderOnly.mjs +24 -0
- package/lib/utils/ScreenReaderOnly.mjs.map +1 -0
- package/lib/utils/ThemeProvider.d.ts +15 -0
- package/lib/utils/ThemeProvider.js +82 -0
- package/lib/utils/ThemeProvider.js.map +1 -0
- package/lib/utils/ThemeProvider.mjs +71 -0
- package/lib/utils/ThemeProvider.mjs.map +1 -0
- package/lib/utils/addonText.d.ts +2 -0
- package/lib/utils/addonText.js +18 -0
- package/lib/utils/addonText.js.map +1 -0
- package/lib/utils/addonText.mjs +11 -0
- package/lib/utils/addonText.mjs.map +1 -0
- package/lib/utils/addonTextChildren.d.ts +3 -0
- package/lib/utils/addonTextChildren.js +45 -0
- package/lib/utils/addonTextChildren.js.map +1 -0
- package/lib/utils/addonTextChildren.mjs +37 -0
- package/lib/utils/addonTextChildren.mjs.map +1 -0
- package/lib/utils/ariaProps.d.ts +12 -0
- package/lib/utils/ariaProps.js +22 -0
- package/lib/utils/ariaProps.js.map +1 -0
- package/lib/utils/ariaProps.mjs +16 -0
- package/lib/utils/ariaProps.mjs.map +1 -0
- package/lib/utils/assignProps.d.ts +11 -0
- package/lib/utils/assignProps.js +93 -0
- package/lib/utils/assignProps.js.map +1 -0
- package/lib/utils/assignProps.mjs +86 -0
- package/lib/utils/assignProps.mjs.map +1 -0
- package/lib/utils/canUseDOM.d.ts +1 -0
- package/lib/utils/canUseDOM.js +10 -0
- package/lib/utils/canUseDOM.js.map +1 -0
- package/lib/utils/canUseDOM.mjs +6 -0
- package/lib/utils/canUseDOM.mjs.map +1 -0
- package/lib/utils/capitalizeFirstLetter.d.ts +1 -0
- package/lib/utils/capitalizeFirstLetter.js +10 -0
- package/lib/utils/capitalizeFirstLetter.js.map +1 -0
- package/lib/utils/capitalizeFirstLetter.mjs +6 -0
- package/lib/utils/capitalizeFirstLetter.mjs.map +1 -0
- package/lib/utils/color.d.ts +5 -0
- package/lib/utils/color.js +208 -0
- package/lib/utils/color.js.map +1 -0
- package/lib/utils/color.mjs +196 -0
- package/lib/utils/color.mjs.map +1 -0
- package/lib/utils/compose.d.ts +1 -0
- package/lib/utils/compose.js +21 -0
- package/lib/utils/compose.js.map +1 -0
- package/lib/utils/compose.mjs +15 -0
- package/lib/utils/compose.mjs.map +1 -0
- package/lib/utils/createHoc.d.ts +3 -0
- package/lib/utils/createHoc.js +55 -0
- package/lib/utils/createHoc.js.map +1 -0
- package/lib/utils/createHoc.mjs +44 -0
- package/lib/utils/createHoc.mjs.map +1 -0
- package/lib/utils/createUUID.d.ts +1 -0
- package/lib/utils/createUUID.js +15 -0
- package/lib/utils/createUUID.js.map +1 -0
- package/lib/utils/createUUID.mjs +9 -0
- package/lib/utils/createUUID.mjs.map +1 -0
- package/lib/utils/cssToIntDefault.d.ts +8 -0
- package/lib/utils/cssToIntDefault.js +22 -0
- package/lib/utils/cssToIntDefault.js.map +1 -0
- package/lib/utils/cssToIntDefault.mjs +16 -0
- package/lib/utils/cssToIntDefault.mjs.map +1 -0
- package/lib/utils/enhances/WithAutoFocus.d.ts +14 -0
- package/lib/utils/enhances/WithAutoFocus.js +75 -0
- package/lib/utils/enhances/WithAutoFocus.js.map +1 -0
- package/lib/utils/enhances/WithAutoFocus.mjs +67 -0
- package/lib/utils/enhances/WithAutoFocus.mjs.map +1 -0
- package/lib/utils/enhances/WithCSS.d.ts +41 -0
- package/lib/utils/enhances/WithCSS.js +93 -0
- package/lib/utils/enhances/WithCSS.js.map +1 -0
- package/lib/utils/enhances/WithCSS.mjs +79 -0
- package/lib/utils/enhances/WithCSS.mjs.map +1 -0
- package/lib/utils/enhances/WithI18n.d.ts +43 -0
- package/lib/utils/enhances/WithI18n.js +95 -0
- package/lib/utils/enhances/WithI18n.js.map +1 -0
- package/lib/utils/enhances/WithI18n.mjs +78 -0
- package/lib/utils/enhances/WithI18n.mjs.map +1 -0
- package/lib/utils/enhances/WithKeyboardFocus.d.ts +45 -0
- package/lib/utils/enhances/WithKeyboardFocus.js +93 -0
- package/lib/utils/enhances/WithKeyboardFocus.js.map +1 -0
- package/lib/utils/enhances/WithKeyboardFocus.mjs +84 -0
- package/lib/utils/enhances/WithKeyboardFocus.mjs.map +1 -0
- package/lib/utils/enhances/WithRef.d.ts +3 -0
- package/lib/utils/enhances/WithRef.js +26 -0
- package/lib/utils/enhances/WithRef.js.map +1 -0
- package/lib/utils/enhances/WithRef.mjs +18 -0
- package/lib/utils/enhances/WithRef.mjs.map +1 -0
- package/lib/utils/enhances/a11yEnhance.d.ts +10 -0
- package/lib/utils/enhances/a11yEnhance.js +74 -0
- package/lib/utils/enhances/a11yEnhance.js.map +1 -0
- package/lib/utils/enhances/a11yEnhance.mjs +66 -0
- package/lib/utils/enhances/a11yEnhance.mjs.map +1 -0
- package/lib/utils/enhances/animatedSizeEnhance.d.ts +12 -0
- package/lib/utils/enhances/animatedSizeEnhance.js +98 -0
- package/lib/utils/enhances/animatedSizeEnhance.js.map +1 -0
- package/lib/utils/enhances/animatedSizeEnhance.mjs +90 -0
- package/lib/utils/enhances/animatedSizeEnhance.mjs.map +1 -0
- package/lib/utils/enhances/autoFocusEnhance.d.ts +10 -0
- package/lib/utils/enhances/autoFocusEnhance.js +46 -0
- package/lib/utils/enhances/autoFocusEnhance.js.map +1 -0
- package/lib/utils/enhances/autoFocusEnhance.mjs +38 -0
- package/lib/utils/enhances/autoFocusEnhance.mjs.map +1 -0
- package/lib/utils/enhances/contextEnhance.d.ts +3 -0
- package/lib/utils/enhances/contextEnhance.js +22 -0
- package/lib/utils/enhances/contextEnhance.js.map +1 -0
- package/lib/utils/enhances/contextEnhance.mjs +14 -0
- package/lib/utils/enhances/contextEnhance.mjs.map +1 -0
- package/lib/utils/enhances/i18nEnhance.d.ts +25 -0
- package/lib/utils/enhances/i18nEnhance.js +101 -0
- package/lib/utils/enhances/i18nEnhance.js.map +1 -0
- package/lib/utils/enhances/i18nEnhance.mjs +91 -0
- package/lib/utils/enhances/i18nEnhance.mjs.map +1 -0
- package/lib/utils/enhances/keyboardFocusEnhance.d.ts +27 -0
- package/lib/utils/enhances/keyboardFocusEnhance.js +63 -0
- package/lib/utils/enhances/keyboardFocusEnhance.js.map +1 -0
- package/lib/utils/enhances/keyboardFocusEnhance.mjs +57 -0
- package/lib/utils/enhances/keyboardFocusEnhance.mjs.map +1 -0
- package/lib/utils/enhances/resolveColorEnhance.d.ts +2 -0
- package/lib/utils/enhances/resolveColorEnhance.js +25 -0
- package/lib/utils/enhances/resolveColorEnhance.js.map +1 -0
- package/lib/utils/enhances/resolveColorEnhance.mjs +17 -0
- package/lib/utils/enhances/resolveColorEnhance.mjs.map +1 -0
- package/lib/utils/eventEmitter.d.ts +9 -0
- package/lib/utils/eventEmitter.js +41 -0
- package/lib/utils/eventEmitter.js.map +1 -0
- package/lib/utils/eventEmitter.mjs +34 -0
- package/lib/utils/eventEmitter.mjs.map +1 -0
- package/lib/utils/findComponent.d.ts +12 -0
- package/lib/utils/findComponent.js +106 -0
- package/lib/utils/findComponent.js.map +1 -0
- package/lib/utils/findComponent.mjs +95 -0
- package/lib/utils/findComponent.mjs.map +1 -0
- package/lib/utils/fire.d.ts +2 -0
- package/lib/utils/fire.js +23 -0
- package/lib/utils/fire.js.map +1 -0
- package/lib/utils/fire.mjs +15 -0
- package/lib/utils/fire.mjs.map +1 -0
- package/lib/utils/focus-lock/focusBorders.d.ts +4 -0
- package/lib/utils/focus-lock/focusBorders.js +72 -0
- package/lib/utils/focus-lock/focusBorders.js.map +1 -0
- package/lib/utils/focus-lock/focusBorders.mjs +62 -0
- package/lib/utils/focus-lock/focusBorders.mjs.map +1 -0
- package/lib/utils/focus-lock/getFocusableIn.d.ts +1 -0
- package/lib/utils/focus-lock/getFocusableIn.js +26 -0
- package/lib/utils/focus-lock/getFocusableIn.js.map +1 -0
- package/lib/utils/focus-lock/getFocusableIn.mjs +19 -0
- package/lib/utils/focus-lock/getFocusableIn.mjs.map +1 -0
- package/lib/utils/focus-lock/isFocusInside.d.ts +1 -0
- package/lib/utils/focus-lock/isFocusInside.js +16 -0
- package/lib/utils/focus-lock/isFocusInside.js.map +1 -0
- package/lib/utils/focus-lock/isFocusInside.mjs +9 -0
- package/lib/utils/focus-lock/isFocusInside.mjs.map +1 -0
- package/lib/utils/focus-lock/isFocusable.d.ts +1 -0
- package/lib/utils/focus-lock/isFocusable.js +51 -0
- package/lib/utils/focus-lock/isFocusable.js.map +1 -0
- package/lib/utils/focus-lock/isFocusable.mjs +43 -0
- package/lib/utils/focus-lock/isFocusable.mjs.map +1 -0
- package/lib/utils/focus-lock/setFocus.d.ts +1 -0
- package/lib/utils/focus-lock/setFocus.js +63 -0
- package/lib/utils/focus-lock/setFocus.js.map +1 -0
- package/lib/utils/focus-lock/setFocus.mjs +55 -0
- package/lib/utils/focus-lock/setFocus.mjs.map +1 -0
- package/lib/utils/getAccessibleName.d.ts +1 -0
- package/lib/utils/getAccessibleName.js +56 -0
- package/lib/utils/getAccessibleName.js.map +1 -0
- package/lib/utils/getAccessibleName.mjs +49 -0
- package/lib/utils/getAccessibleName.mjs.map +1 -0
- package/lib/utils/getDisplayName.d.ts +2 -0
- package/lib/utils/getDisplayName.js +10 -0
- package/lib/utils/getDisplayName.js.map +1 -0
- package/lib/utils/getDisplayName.mjs +6 -0
- package/lib/utils/getDisplayName.mjs.map +1 -0
- package/lib/utils/getEventTarget.d.ts +1 -0
- package/lib/utils/getEventTarget.js +53 -0
- package/lib/utils/getEventTarget.js.map +1 -0
- package/lib/utils/getEventTarget.mjs +45 -0
- package/lib/utils/getEventTarget.mjs.map +1 -0
- package/lib/utils/getOriginChildren.d.ts +2 -0
- package/lib/utils/getOriginChildren.js +18 -0
- package/lib/utils/getOriginChildren.js.map +1 -0
- package/lib/utils/getOriginChildren.mjs +10 -0
- package/lib/utils/getOriginChildren.mjs.map +1 -0
- package/lib/utils/getRandomInt.d.ts +1 -0
- package/lib/utils/getRandomInt.js +11 -0
- package/lib/utils/getRandomInt.js.map +1 -0
- package/lib/utils/getRandomInt.mjs +5 -0
- package/lib/utils/getRandomInt.mjs.map +1 -0
- package/lib/utils/getValue.d.ts +1 -0
- package/lib/utils/getValue.js +16 -0
- package/lib/utils/getValue.js.map +1 -0
- package/lib/utils/getValue.mjs +10 -0
- package/lib/utils/getValue.mjs.map +1 -0
- package/lib/utils/hasLabels.d.ts +7 -0
- package/lib/utils/hasLabels.js +47 -0
- package/lib/utils/hasLabels.js.map +1 -0
- package/lib/utils/hasLabels.mjs +39 -0
- package/lib/utils/hasLabels.mjs.map +1 -0
- package/lib/utils/hasParent.d.ts +1 -0
- package/lib/utils/hasParent.js +14 -0
- package/lib/utils/hasParent.js.map +1 -0
- package/lib/utils/hasParent.mjs +7 -0
- package/lib/utils/hasParent.mjs.map +1 -0
- package/lib/utils/if.d.ts +11 -0
- package/lib/utils/if.js +16 -0
- package/lib/utils/if.js.map +1 -0
- package/lib/utils/if.mjs +9 -0
- package/lib/utils/if.mjs.map +1 -0
- package/lib/utils/ifChildren.d.ts +8 -0
- package/lib/utils/ifChildren.js +17 -0
- package/lib/utils/ifChildren.js.map +1 -0
- package/lib/utils/ifChildren.mjs +10 -0
- package/lib/utils/ifChildren.mjs.map +1 -0
- package/lib/utils/injectStyle.d.ts +2 -0
- package/lib/utils/injectStyle.js +49 -0
- package/lib/utils/injectStyle.js.map +1 -0
- package/lib/utils/injectStyle.mjs +41 -0
- package/lib/utils/injectStyle.mjs.map +1 -0
- package/lib/utils/inputProps.d.ts +2 -0
- package/lib/utils/inputProps.js +22 -0
- package/lib/utils/inputProps.js.map +1 -0
- package/lib/utils/inputProps.mjs +14 -0
- package/lib/utils/inputProps.mjs.map +1 -0
- package/lib/utils/isInteractiveElement.d.ts +1 -0
- package/lib/utils/isInteractiveElement.js +34 -0
- package/lib/utils/isInteractiveElement.js.map +1 -0
- package/lib/utils/isInteractiveElement.mjs +28 -0
- package/lib/utils/isInteractiveElement.mjs.map +1 -0
- package/lib/utils/isNode.d.ts +1 -0
- package/lib/utils/isNode.js +28 -0
- package/lib/utils/isNode.js.map +1 -0
- package/lib/utils/isNode.mjs +21 -0
- package/lib/utils/isNode.mjs.map +1 -0
- package/lib/utils/isPromise.d.ts +1 -0
- package/lib/utils/isPromise.js +10 -0
- package/lib/utils/isPromise.js.map +1 -0
- package/lib/utils/isPromise.mjs +4 -0
- package/lib/utils/isPromise.mjs.map +1 -0
- package/lib/utils/isRetina.d.ts +1 -0
- package/lib/utils/isRetina.js +15 -0
- package/lib/utils/isRetina.js.map +1 -0
- package/lib/utils/isRetina.mjs +9 -0
- package/lib/utils/isRetina.mjs.map +1 -0
- package/lib/utils/logger.d.ts +9 -0
- package/lib/utils/logger.js +40 -0
- package/lib/utils/logger.js.map +1 -0
- package/lib/utils/logger.mjs +35 -0
- package/lib/utils/logger.mjs.map +1 -0
- package/lib/utils/numericChecker.d.ts +5 -0
- package/lib/utils/numericChecker.js +33 -0
- package/lib/utils/numericChecker.js.map +1 -0
- package/lib/utils/numericChecker.mjs +27 -0
- package/lib/utils/numericChecker.mjs.map +1 -0
- package/lib/utils/ownerDocument.d.ts +1 -0
- package/lib/utils/ownerDocument.js +10 -0
- package/lib/utils/ownerDocument.js.map +1 -0
- package/lib/utils/ownerDocument.mjs +4 -0
- package/lib/utils/ownerDocument.mjs.map +1 -0
- package/lib/utils/pick.d.ts +1 -0
- package/lib/utils/pick.js +19 -0
- package/lib/utils/pick.js.map +1 -0
- package/lib/utils/pick.mjs +15 -0
- package/lib/utils/pick.mjs.map +1 -0
- package/lib/utils/propsForElement.d.ts +3 -0
- package/lib/utils/propsForElement.js +59 -0
- package/lib/utils/propsForElement.js.map +1 -0
- package/lib/utils/propsForElement.mjs +50 -0
- package/lib/utils/propsForElement.mjs.map +1 -0
- package/lib/utils/rafTrottle.d.ts +2 -0
- package/lib/utils/rafTrottle.js +33 -0
- package/lib/utils/rafTrottle.js.map +1 -0
- package/lib/utils/rafTrottle.mjs +26 -0
- package/lib/utils/rafTrottle.mjs.map +1 -0
- package/lib/utils/reactToText.d.ts +3 -0
- package/lib/utils/reactToText.js +33 -0
- package/lib/utils/reactToText.js.map +1 -0
- package/lib/utils/reactToText.mjs +26 -0
- package/lib/utils/reactToText.mjs.map +1 -0
- package/lib/utils/ref.d.ts +10 -0
- package/lib/utils/ref.js +96 -0
- package/lib/utils/ref.js.map +1 -0
- package/lib/utils/ref.mjs +87 -0
- package/lib/utils/ref.mjs.map +1 -0
- package/lib/utils/setRef.d.ts +2 -0
- package/lib/utils/setRef.js +10 -0
- package/lib/utils/setRef.js.map +1 -0
- package/lib/utils/setRef.mjs +3 -0
- package/lib/utils/setRef.mjs.map +1 -0
- package/lib/utils/syncScroll.d.ts +1 -0
- package/lib/utils/syncScroll.js +61 -0
- package/lib/utils/syncScroll.js.map +1 -0
- package/lib/utils/syncScroll.mjs +54 -0
- package/lib/utils/syncScroll.mjs.map +1 -0
- package/lib/utils/uncontroll.d.ts +4 -0
- package/lib/utils/uncontroll.js +47 -0
- package/lib/utils/uncontroll.js.map +1 -0
- package/lib/utils/uncontroll.mjs +38 -0
- package/lib/utils/uncontroll.mjs.map +1 -0
- package/lib/utils/uniqueID.d.ts +12 -0
- package/lib/utils/uniqueID.js +42 -0
- package/lib/utils/uniqueID.js.map +1 -0
- package/lib/utils/uniqueID.mjs +33 -0
- package/lib/utils/uniqueID.mjs.map +1 -0
- package/lib/utils/use/useColorResolver.d.ts +1 -0
- package/lib/utils/use/useColorResolver.js +208 -0
- package/lib/utils/use/useColorResolver.js.map +1 -0
- package/lib/utils/use/useColorResolver.mjs +200 -0
- package/lib/utils/use/useColorResolver.mjs.map +1 -0
- package/lib/utils/use/useCss.d.ts +4 -0
- package/lib/utils/use/useCss.js +20 -0
- package/lib/utils/use/useCss.js.map +1 -0
- package/lib/utils/use/useCss.mjs +12 -0
- package/lib/utils/use/useCss.mjs.map +1 -0
- package/lib/utils/use/useEnhancedEffect.d.ts +3 -0
- package/lib/utils/use/useEnhancedEffect.js +13 -0
- package/lib/utils/use/useEnhancedEffect.js.map +1 -0
- package/lib/utils/use/useEnhancedEffect.mjs +6 -0
- package/lib/utils/use/useEnhancedEffect.mjs.map +1 -0
- package/lib/utils/use/useEventCallback.d.ts +4 -0
- package/lib/utils/use/useEventCallback.js +25 -0
- package/lib/utils/use/useEventCallback.js.map +1 -0
- package/lib/utils/use/useEventCallback.mjs +19 -0
- package/lib/utils/use/useEventCallback.mjs.map +1 -0
- package/lib/utils/use/useEventListener.d.ts +2 -0
- package/lib/utils/use/useEventListener.js +33 -0
- package/lib/utils/use/useEventListener.js.map +1 -0
- package/lib/utils/use/useEventListener.mjs +25 -0
- package/lib/utils/use/useEventListener.mjs.map +1 -0
- package/lib/utils/use/useFocusLock.d.ts +10 -0
- package/lib/utils/use/useFocusLock.js +289 -0
- package/lib/utils/use/useFocusLock.js.map +1 -0
- package/lib/utils/use/useFocusLock.mjs +266 -0
- package/lib/utils/use/useFocusLock.mjs.map +1 -0
- package/lib/utils/use/usePreventScroll.d.ts +2 -0
- package/lib/utils/use/usePreventScroll.js +78 -0
- package/lib/utils/use/usePreventScroll.js.map +1 -0
- package/lib/utils/use/usePreventScroll.mjs +70 -0
- package/lib/utils/use/usePreventScroll.mjs.map +1 -0
- package/lib/utils/useCssVariable.d.ts +8 -0
- package/lib/utils/useCssVariable.js +55 -0
- package/lib/utils/useCssVariable.js.map +1 -0
- package/lib/utils/useCssVariable.mjs +46 -0
- package/lib/utils/useCssVariable.mjs.map +1 -0
- package/lib/utils/zIndexStacking.d.ts +8 -0
- package/lib/utils/zIndexStacking.js +48 -0
- package/lib/utils/zIndexStacking.js.map +1 -0
- package/lib/utils/zIndexStacking.mjs +38 -0
- package/lib/utils/zIndexStacking.mjs.map +1 -0
- package/package.json +297 -10
- package/tsconfig-utils.json +4 -0
- package/vite.config.ts +24 -0
- package/lib/cjs/index.js +0 -23
- package/lib/cjs/index.js.map +0 -1
- package/lib/es6/index.js +0 -4
- package/lib/es6/index.js.map +0 -1
- package/lib/types/index.d.ts +0 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.removeFocusBorders = exports.addFocusBorders = exports.BEFORE_BORDER_ID = exports.AFTER_BORDER_ID = void 0;
|
|
7
|
+
var _getFocusableIn = require("./getFocusableIn");
|
|
8
|
+
var focusBordersRefs = new Map();
|
|
9
|
+
var BEFORE_BORDER_ID = '__intergalactic-focus-border-before';
|
|
10
|
+
exports.BEFORE_BORDER_ID = BEFORE_BORDER_ID;
|
|
11
|
+
var AFTER_BORDER_ID = '__intergalactic-focus-border-after';
|
|
12
|
+
exports.AFTER_BORDER_ID = AFTER_BORDER_ID;
|
|
13
|
+
var addFocusBorders = function addFocusBorders(element) {
|
|
14
|
+
if (!focusBordersRefs.has(element) && !(element.previousSibling instanceof HTMLElement && element.previousSibling.dataset.id === BEFORE_BORDER_ID)) {
|
|
15
|
+
var before = document.createElement('div');
|
|
16
|
+
var after = document.createElement('div');
|
|
17
|
+
focusBordersRefs.set(element, {
|
|
18
|
+
before: before,
|
|
19
|
+
after: after
|
|
20
|
+
});
|
|
21
|
+
before.setAttribute('tabindex', '0');
|
|
22
|
+
before.style.position = 'fixed';
|
|
23
|
+
before.dataset.id = BEFORE_BORDER_ID;
|
|
24
|
+
before.addEventListener('focus', function (event) {
|
|
25
|
+
var _focusBordersRefs$get, _focusBordersRefs$get2;
|
|
26
|
+
if (document.activeElement === ((_focusBordersRefs$get = focusBordersRefs.get(element)) === null || _focusBordersRefs$get === void 0 ? void 0 : _focusBordersRefs$get.before) && event.relatedTarget !== ((_focusBordersRefs$get2 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get2 === void 0 ? void 0 : _focusBordersRefs$get2.after) &&
|
|
27
|
+
// prevent loop
|
|
28
|
+
event.relatedTarget // prevent initial focus
|
|
29
|
+
) {
|
|
30
|
+
var focusable = (0, _getFocusableIn.getFocusableIn)(element);
|
|
31
|
+
if (event.relatedTarget === focusable[0]) {
|
|
32
|
+
var _focusable;
|
|
33
|
+
(_focusable = focusable[focusable.length - 1]) === null || _focusable === void 0 ? void 0 : _focusable.focus();
|
|
34
|
+
} else {
|
|
35
|
+
var _focusable$;
|
|
36
|
+
(_focusable$ = focusable[0]) === null || _focusable$ === void 0 ? void 0 : _focusable$.focus();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
after.setAttribute('tabindex', '0');
|
|
41
|
+
after.style.position = 'fixed';
|
|
42
|
+
after.dataset.id = AFTER_BORDER_ID;
|
|
43
|
+
after.addEventListener('focus', function (event) {
|
|
44
|
+
var _focusBordersRefs$get3, _focusBordersRefs$get4;
|
|
45
|
+
if (document.activeElement === ((_focusBordersRefs$get3 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get3 === void 0 ? void 0 : _focusBordersRefs$get3.after) && event.relatedTarget !== ((_focusBordersRefs$get4 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get4 === void 0 ? void 0 : _focusBordersRefs$get4.before) &&
|
|
46
|
+
// prevent loop
|
|
47
|
+
event.relatedTarget // prevent initial focus
|
|
48
|
+
) {
|
|
49
|
+
var focusable = (0, _getFocusableIn.getFocusableIn)(element);
|
|
50
|
+
if (event.relatedTarget === focusable[focusable.length - 1]) {
|
|
51
|
+
var _focusable$2;
|
|
52
|
+
(_focusable$2 = focusable[0]) === null || _focusable$2 === void 0 ? void 0 : _focusable$2.focus();
|
|
53
|
+
} else {
|
|
54
|
+
var _focusable2;
|
|
55
|
+
(_focusable2 = focusable[focusable.length - 1]) === null || _focusable2 === void 0 ? void 0 : _focusable2.focus();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
var elementParent = element.parentElement;
|
|
60
|
+
elementParent === null || elementParent === void 0 ? void 0 : elementParent.insertBefore(before, element);
|
|
61
|
+
elementParent === null || elementParent === void 0 ? void 0 : elementParent.append(after);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.addFocusBorders = addFocusBorders;
|
|
65
|
+
var removeFocusBorders = function removeFocusBorders(element) {
|
|
66
|
+
var focusRefs = focusBordersRefs.get(element);
|
|
67
|
+
focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.before.remove();
|
|
68
|
+
focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.after.remove();
|
|
69
|
+
focusBordersRefs["delete"](element);
|
|
70
|
+
};
|
|
71
|
+
exports.removeFocusBorders = removeFocusBorders;
|
|
72
|
+
//# sourceMappingURL=focusBorders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusBorders.js","names":["_getFocusableIn","require","focusBordersRefs","Map","BEFORE_BORDER_ID","exports","AFTER_BORDER_ID","addFocusBorders","element","has","previousSibling","HTMLElement","dataset","id","before","document","createElement","after","set","setAttribute","style","position","addEventListener","event","_focusBordersRefs$get","_focusBordersRefs$get2","activeElement","get","relatedTarget","focusable","getFocusableIn","_focusable","length","focus","_focusable$","_focusBordersRefs$get3","_focusBordersRefs$get4","_focusable$2","_focusable2","elementParent","parentElement","insertBefore","append","removeFocusBorders","focusRefs","remove"],"sources":["../../../src/utils/focus-lock/focusBorders.ts"],"sourcesContent":["import { getFocusableIn } from './getFocusableIn';\n\nconst focusBordersRefs = new Map<HTMLElement, { before: HTMLElement; after: HTMLElement }>();\n\nexport const BEFORE_BORDER_ID = '__intergalactic-focus-border-before';\nexport const AFTER_BORDER_ID = '__intergalactic-focus-border-after';\n\nexport const addFocusBorders = (element: HTMLElement) => {\n if (\n !focusBordersRefs.has(element) &&\n !(\n element.previousSibling instanceof HTMLElement &&\n element.previousSibling.dataset.id === BEFORE_BORDER_ID\n )\n ) {\n const before = document.createElement('div');\n const after = document.createElement('div');\n\n focusBordersRefs.set(element, { before, after });\n\n before.setAttribute('tabindex', '0');\n before.style.position = 'fixed';\n before.dataset.id = BEFORE_BORDER_ID;\n before.addEventListener('focus', (event) => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.before &&\n event.relatedTarget !== focusBordersRefs.get(element)?.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[0]) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n }\n });\n\n after.setAttribute('tabindex', '0');\n after.style.position = 'fixed';\n after.dataset.id = AFTER_BORDER_ID;\n after.addEventListener('focus', (event) => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.after &&\n event.relatedTarget !== focusBordersRefs.get(element)?.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[focusable.length - 1]) {\n focusable[0]?.focus();\n } else {\n focusable[focusable.length - 1]?.focus();\n }\n }\n });\n\n const elementParent = element.parentElement;\n\n elementParent?.insertBefore(before, element);\n elementParent?.append(after);\n }\n};\nexport const removeFocusBorders = (element: HTMLElement) => {\n const focusRefs = focusBordersRefs.get(element);\n focusRefs?.before.remove();\n focusRefs?.after.remove();\n focusBordersRefs.delete(element);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAMC,gBAAgB,GAAG,IAAIC,GAAG,EAA4D;AAErF,IAAMC,gBAAgB,GAAG,qCAAqC;AAACC,OAAA,CAAAD,gBAAA,GAAAA,gBAAA;AAC/D,IAAME,eAAe,GAAG,oCAAoC;AAACD,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAE7D,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,OAAoB,EAAK;EACvD,IACE,CAACN,gBAAgB,CAACO,GAAG,CAACD,OAAO,CAAC,IAC9B,EACEA,OAAO,CAACE,eAAe,YAAYC,WAAW,IAC9CH,OAAO,CAACE,eAAe,CAACE,OAAO,CAACC,EAAE,KAAKT,gBAAgB,CACxD,EACD;IACA,IAAMU,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC5C,IAAMC,KAAK,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAE3Cd,gBAAgB,CAACgB,GAAG,CAACV,OAAO,EAAE;MAAEM,MAAM,EAANA,MAAM;MAAEG,KAAK,EAALA;IAAM,CAAC,CAAC;IAEhDH,MAAM,CAACK,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IACpCL,MAAM,CAACM,KAAK,CAACC,QAAQ,GAAG,OAAO;IAC/BP,MAAM,CAACF,OAAO,CAACC,EAAE,GAAGT,gBAAgB;IACpCU,MAAM,CAACQ,gBAAgB,CAAC,OAAO,EAAE,UAACC,KAAK,EAAK;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MAC1C,IACEV,QAAQ,CAACW,aAAa,OAAAF,qBAAA,GAAKtB,gBAAgB,CAACyB,GAAG,CAACnB,OAAO,CAAC,cAAAgB,qBAAA,uBAA7BA,qBAAA,CAA+BV,MAAM,KAChES,KAAK,CAACK,aAAa,OAAAH,sBAAA,GAAKvB,gBAAgB,CAACyB,GAAG,CAACnB,OAAO,CAAC,cAAAiB,sBAAA,uBAA7BA,sBAAA,CAA+BR,KAAK;MAAI;MAChEM,KAAK,CAACK,aAAa,CAAC;MAAA,EACpB;QACA,IAAMC,SAAS,GAAG,IAAAC,8BAAc,EAACtB,OAAO,CAAC;QAEzC,IAAIe,KAAK,CAACK,aAAa,KAAKC,SAAS,CAAC,CAAC,CAAC,EAAE;UAAA,IAAAE,UAAA;UACxC,CAAAA,UAAA,GAAAF,SAAS,CAACA,SAAS,CAACG,MAAM,GAAG,CAAC,CAAC,cAAAD,UAAA,uBAA/BA,UAAA,CAAiCE,KAAK,EAAE;QAC1C,CAAC,MAAM;UAAA,IAAAC,WAAA;UACL,CAAAA,WAAA,GAAAL,SAAS,CAAC,CAAC,CAAC,cAAAK,WAAA,uBAAZA,WAAA,CAAcD,KAAK,EAAE;QACvB;MACF;IACF,CAAC,CAAC;IAEFhB,KAAK,CAACE,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IACnCF,KAAK,CAACG,KAAK,CAACC,QAAQ,GAAG,OAAO;IAC9BJ,KAAK,CAACL,OAAO,CAACC,EAAE,GAAGP,eAAe;IAClCW,KAAK,CAACK,gBAAgB,CAAC,OAAO,EAAE,UAACC,KAAK,EAAK;MAAA,IAAAY,sBAAA,EAAAC,sBAAA;MACzC,IACErB,QAAQ,CAACW,aAAa,OAAAS,sBAAA,GAAKjC,gBAAgB,CAACyB,GAAG,CAACnB,OAAO,CAAC,cAAA2B,sBAAA,uBAA7BA,sBAAA,CAA+BlB,KAAK,KAC/DM,KAAK,CAACK,aAAa,OAAAQ,sBAAA,GAAKlC,gBAAgB,CAACyB,GAAG,CAACnB,OAAO,CAAC,cAAA4B,sBAAA,uBAA7BA,sBAAA,CAA+BtB,MAAM;MAAI;MACjES,KAAK,CAACK,aAAa,CAAC;MAAA,EACpB;QACA,IAAMC,SAAS,GAAG,IAAAC,8BAAc,EAACtB,OAAO,CAAC;QAEzC,IAAIe,KAAK,CAACK,aAAa,KAAKC,SAAS,CAACA,SAAS,CAACG,MAAM,GAAG,CAAC,CAAC,EAAE;UAAA,IAAAK,YAAA;UAC3D,CAAAA,YAAA,GAAAR,SAAS,CAAC,CAAC,CAAC,cAAAQ,YAAA,uBAAZA,YAAA,CAAcJ,KAAK,EAAE;QACvB,CAAC,MAAM;UAAA,IAAAK,WAAA;UACL,CAAAA,WAAA,GAAAT,SAAS,CAACA,SAAS,CAACG,MAAM,GAAG,CAAC,CAAC,cAAAM,WAAA,uBAA/BA,WAAA,CAAiCL,KAAK,EAAE;QAC1C;MACF;IACF,CAAC,CAAC;IAEF,IAAMM,aAAa,GAAG/B,OAAO,CAACgC,aAAa;IAE3CD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,YAAY,CAAC3B,MAAM,EAAEN,OAAO,CAAC;IAC5C+B,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,MAAM,CAACzB,KAAK,CAAC;EAC9B;AACF,CAAC;AAACZ,OAAA,CAAAE,eAAA,GAAAA,eAAA;AACK,IAAMoC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAInC,OAAoB,EAAK;EAC1D,IAAMoC,SAAS,GAAG1C,gBAAgB,CAACyB,GAAG,CAACnB,OAAO,CAAC;EAC/CoC,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE9B,MAAM,CAAC+B,MAAM,EAAE;EAC1BD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE3B,KAAK,CAAC4B,MAAM,EAAE;EACzB3C,gBAAgB,UAAO,CAACM,OAAO,CAAC;AAClC,CAAC;AAACH,OAAA,CAAAsC,kBAAA,GAAAA,kBAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { getFocusableIn } from "./getFocusableIn.mjs";
|
|
2
|
+
var focusBordersRefs = new Map();
|
|
3
|
+
export var BEFORE_BORDER_ID = '__intergalactic-focus-border-before';
|
|
4
|
+
export var AFTER_BORDER_ID = '__intergalactic-focus-border-after';
|
|
5
|
+
export var addFocusBorders = function addFocusBorders(element) {
|
|
6
|
+
if (!focusBordersRefs.has(element) && !(element.previousSibling instanceof HTMLElement && element.previousSibling.dataset.id === BEFORE_BORDER_ID)) {
|
|
7
|
+
var before = document.createElement('div');
|
|
8
|
+
var after = document.createElement('div');
|
|
9
|
+
focusBordersRefs.set(element, {
|
|
10
|
+
before: before,
|
|
11
|
+
after: after
|
|
12
|
+
});
|
|
13
|
+
before.setAttribute('tabindex', '0');
|
|
14
|
+
before.style.position = 'fixed';
|
|
15
|
+
before.dataset.id = BEFORE_BORDER_ID;
|
|
16
|
+
before.addEventListener('focus', function (event) {
|
|
17
|
+
var _focusBordersRefs$get, _focusBordersRefs$get2;
|
|
18
|
+
if (document.activeElement === ((_focusBordersRefs$get = focusBordersRefs.get(element)) === null || _focusBordersRefs$get === void 0 ? void 0 : _focusBordersRefs$get.before) && event.relatedTarget !== ((_focusBordersRefs$get2 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get2 === void 0 ? void 0 : _focusBordersRefs$get2.after) &&
|
|
19
|
+
// prevent loop
|
|
20
|
+
event.relatedTarget // prevent initial focus
|
|
21
|
+
) {
|
|
22
|
+
var focusable = getFocusableIn(element);
|
|
23
|
+
if (event.relatedTarget === focusable[0]) {
|
|
24
|
+
var _focusable;
|
|
25
|
+
(_focusable = focusable[focusable.length - 1]) === null || _focusable === void 0 ? void 0 : _focusable.focus();
|
|
26
|
+
} else {
|
|
27
|
+
var _focusable$;
|
|
28
|
+
(_focusable$ = focusable[0]) === null || _focusable$ === void 0 ? void 0 : _focusable$.focus();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
after.setAttribute('tabindex', '0');
|
|
33
|
+
after.style.position = 'fixed';
|
|
34
|
+
after.dataset.id = AFTER_BORDER_ID;
|
|
35
|
+
after.addEventListener('focus', function (event) {
|
|
36
|
+
var _focusBordersRefs$get3, _focusBordersRefs$get4;
|
|
37
|
+
if (document.activeElement === ((_focusBordersRefs$get3 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get3 === void 0 ? void 0 : _focusBordersRefs$get3.after) && event.relatedTarget !== ((_focusBordersRefs$get4 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get4 === void 0 ? void 0 : _focusBordersRefs$get4.before) &&
|
|
38
|
+
// prevent loop
|
|
39
|
+
event.relatedTarget // prevent initial focus
|
|
40
|
+
) {
|
|
41
|
+
var focusable = getFocusableIn(element);
|
|
42
|
+
if (event.relatedTarget === focusable[focusable.length - 1]) {
|
|
43
|
+
var _focusable$2;
|
|
44
|
+
(_focusable$2 = focusable[0]) === null || _focusable$2 === void 0 ? void 0 : _focusable$2.focus();
|
|
45
|
+
} else {
|
|
46
|
+
var _focusable2;
|
|
47
|
+
(_focusable2 = focusable[focusable.length - 1]) === null || _focusable2 === void 0 ? void 0 : _focusable2.focus();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
var elementParent = element.parentElement;
|
|
52
|
+
elementParent === null || elementParent === void 0 ? void 0 : elementParent.insertBefore(before, element);
|
|
53
|
+
elementParent === null || elementParent === void 0 ? void 0 : elementParent.append(after);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export var removeFocusBorders = function removeFocusBorders(element) {
|
|
57
|
+
var focusRefs = focusBordersRefs.get(element);
|
|
58
|
+
focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.before.remove();
|
|
59
|
+
focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.after.remove();
|
|
60
|
+
focusBordersRefs["delete"](element);
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=focusBorders.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusBorders.mjs","names":["getFocusableIn","focusBordersRefs","Map","BEFORE_BORDER_ID","AFTER_BORDER_ID","addFocusBorders","element","has","previousSibling","HTMLElement","dataset","id","before","document","createElement","after","set","setAttribute","style","position","addEventListener","event","_focusBordersRefs$get","_focusBordersRefs$get2","activeElement","get","relatedTarget","focusable","_focusable","length","focus","_focusable$","_focusBordersRefs$get3","_focusBordersRefs$get4","_focusable$2","_focusable2","elementParent","parentElement","insertBefore","append","removeFocusBorders","focusRefs","remove"],"sources":["../../../src/utils/focus-lock/focusBorders.ts"],"sourcesContent":["import { getFocusableIn } from './getFocusableIn';\n\nconst focusBordersRefs = new Map<HTMLElement, { before: HTMLElement; after: HTMLElement }>();\n\nexport const BEFORE_BORDER_ID = '__intergalactic-focus-border-before';\nexport const AFTER_BORDER_ID = '__intergalactic-focus-border-after';\n\nexport const addFocusBorders = (element: HTMLElement) => {\n if (\n !focusBordersRefs.has(element) &&\n !(\n element.previousSibling instanceof HTMLElement &&\n element.previousSibling.dataset.id === BEFORE_BORDER_ID\n )\n ) {\n const before = document.createElement('div');\n const after = document.createElement('div');\n\n focusBordersRefs.set(element, { before, after });\n\n before.setAttribute('tabindex', '0');\n before.style.position = 'fixed';\n before.dataset.id = BEFORE_BORDER_ID;\n before.addEventListener('focus', (event) => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.before &&\n event.relatedTarget !== focusBordersRefs.get(element)?.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[0]) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n }\n });\n\n after.setAttribute('tabindex', '0');\n after.style.position = 'fixed';\n after.dataset.id = AFTER_BORDER_ID;\n after.addEventListener('focus', (event) => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.after &&\n event.relatedTarget !== focusBordersRefs.get(element)?.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[focusable.length - 1]) {\n focusable[0]?.focus();\n } else {\n focusable[focusable.length - 1]?.focus();\n }\n }\n });\n\n const elementParent = element.parentElement;\n\n elementParent?.insertBefore(before, element);\n elementParent?.append(after);\n }\n};\nexport const removeFocusBorders = (element: HTMLElement) => {\n const focusRefs = focusBordersRefs.get(element);\n focusRefs?.before.remove();\n focusRefs?.after.remove();\n focusBordersRefs.delete(element);\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getFocusableIn: (node: HTMLElement) => HTMLElement[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getFocusableIn = void 0;
|
|
7
|
+
var _isFocusable = require("./isFocusable");
|
|
8
|
+
var getFocusableIn = function getFocusableIn(node) {
|
|
9
|
+
var _node$ownerDocument;
|
|
10
|
+
var treeWalker = node === null || node === void 0 ? void 0 : (_node$ownerDocument = node.ownerDocument) === null || _node$ownerDocument === void 0 ? void 0 : _node$ownerDocument.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, function (node) {
|
|
11
|
+
return 'ownerSVGElement' in node && node.ownerSVGElement ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
|
|
12
|
+
});
|
|
13
|
+
var result = [];
|
|
14
|
+
if (!treeWalker) return result;
|
|
15
|
+
if ((0, _isFocusable.isFocusable)(treeWalker.currentNode)) {
|
|
16
|
+
result.push(treeWalker.currentNode);
|
|
17
|
+
}
|
|
18
|
+
while (treeWalker.nextNode() !== null) {
|
|
19
|
+
if ((0, _isFocusable.isFocusable)(treeWalker.currentNode)) {
|
|
20
|
+
result.push(treeWalker.currentNode);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
exports.getFocusableIn = getFocusableIn;
|
|
26
|
+
//# sourceMappingURL=getFocusableIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFocusableIn.js","names":["_isFocusable","require","getFocusableIn","node","_node$ownerDocument","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","ownerSVGElement","FILTER_REJECT","FILTER_ACCEPT","result","isFocusable","currentNode","push","nextNode","exports"],"sources":["../../../src/utils/focus-lock/getFocusableIn.ts"],"sourcesContent":["import { isFocusable } from './isFocusable';\n\nexport const getFocusableIn = (node: HTMLElement) => {\n const treeWalker = node?.ownerDocument?.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, (node) =>\n 'ownerSVGElement' in node && node.ownerSVGElement\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n );\n\n const result: HTMLElement[] = [];\n\n if (!treeWalker) return result;\n if (isFocusable(treeWalker.currentNode)) {\n result.push(treeWalker.currentNode as HTMLElement);\n }\n while (treeWalker.nextNode() !== null) {\n if (isFocusable(treeWalker.currentNode)) {\n result.push(treeWalker.currentNode as HTMLElement);\n }\n }\n\n return result;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAiB,EAAK;EAAA,IAAAC,mBAAA;EACnD,IAAMC,UAAU,GAAGF,IAAI,aAAJA,IAAI,wBAAAC,mBAAA,GAAJD,IAAI,CAAEG,aAAa,cAAAF,mBAAA,uBAAnBA,mBAAA,CAAqBG,gBAAgB,CAACJ,IAAI,EAAEK,UAAU,CAACC,YAAY,EAAE,UAACN,IAAI;IAAA,OAC3F,iBAAiB,IAAIA,IAAI,IAAIA,IAAI,CAACO,eAAe,GAC7CF,UAAU,CAACG,aAAa,GACxBH,UAAU,CAACI,aAAa;EAAA,EAC7B;EAED,IAAMC,MAAqB,GAAG,EAAE;EAEhC,IAAI,CAACR,UAAU,EAAE,OAAOQ,MAAM;EAC9B,IAAI,IAAAC,wBAAW,EAACT,UAAU,CAACU,WAAW,CAAC,EAAE;IACvCF,MAAM,CAACG,IAAI,CAACX,UAAU,CAACU,WAAW,CAAgB;EACpD;EACA,OAAOV,UAAU,CAACY,QAAQ,EAAE,KAAK,IAAI,EAAE;IACrC,IAAI,IAAAH,wBAAW,EAACT,UAAU,CAACU,WAAW,CAAC,EAAE;MACvCF,MAAM,CAACG,IAAI,CAACX,UAAU,CAACU,WAAW,CAAgB;IACpD;EACF;EAEA,OAAOF,MAAM;AACf,CAAC;AAACK,OAAA,CAAAhB,cAAA,GAAAA,cAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { isFocusable } from "./isFocusable.mjs";
|
|
2
|
+
export var getFocusableIn = function getFocusableIn(node) {
|
|
3
|
+
var _node$ownerDocument;
|
|
4
|
+
var treeWalker = node === null || node === void 0 ? void 0 : (_node$ownerDocument = node.ownerDocument) === null || _node$ownerDocument === void 0 ? void 0 : _node$ownerDocument.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, function (node) {
|
|
5
|
+
return 'ownerSVGElement' in node && node.ownerSVGElement ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
|
|
6
|
+
});
|
|
7
|
+
var result = [];
|
|
8
|
+
if (!treeWalker) return result;
|
|
9
|
+
if (isFocusable(treeWalker.currentNode)) {
|
|
10
|
+
result.push(treeWalker.currentNode);
|
|
11
|
+
}
|
|
12
|
+
while (treeWalker.nextNode() !== null) {
|
|
13
|
+
if (isFocusable(treeWalker.currentNode)) {
|
|
14
|
+
result.push(treeWalker.currentNode);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=getFocusableIn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFocusableIn.mjs","names":["isFocusable","getFocusableIn","node","_node$ownerDocument","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","ownerSVGElement","FILTER_REJECT","FILTER_ACCEPT","result","currentNode","push","nextNode"],"sources":["../../../src/utils/focus-lock/getFocusableIn.ts"],"sourcesContent":["import { isFocusable } from './isFocusable';\n\nexport const getFocusableIn = (node: HTMLElement) => {\n const treeWalker = node?.ownerDocument?.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, (node) =>\n 'ownerSVGElement' in node && node.ownerSVGElement\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n );\n\n const result: HTMLElement[] = [];\n\n if (!treeWalker) return result;\n if (isFocusable(treeWalker.currentNode)) {\n result.push(treeWalker.currentNode as HTMLElement);\n }\n while (treeWalker.nextNode() !== null) {\n if (isFocusable(treeWalker.currentNode)) {\n result.push(treeWalker.currentNode as HTMLElement);\n }\n }\n\n return result;\n};\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mBAAe;AAE3C,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAiB,EAAK;EAAA,IAAAC,mBAAA;EACnD,IAAMC,UAAU,GAAGF,IAAI,aAAJA,IAAI,wBAAAC,mBAAA,GAAJD,IAAI,CAAEG,aAAa,cAAAF,mBAAA,uBAAnBA,mBAAA,CAAqBG,gBAAgB,CAACJ,IAAI,EAAEK,UAAU,CAACC,YAAY,EAAE,UAACN,IAAI;IAAA,OAC3F,iBAAiB,IAAIA,IAAI,IAAIA,IAAI,CAACO,eAAe,GAC7CF,UAAU,CAACG,aAAa,GACxBH,UAAU,CAACI,aAAa;EAAA,EAC7B;EAED,IAAMC,MAAqB,GAAG,EAAE;EAEhC,IAAI,CAACR,UAAU,EAAE,OAAOQ,MAAM;EAC9B,IAAIZ,WAAW,CAACI,UAAU,CAACS,WAAW,CAAC,EAAE;IACvCD,MAAM,CAACE,IAAI,CAACV,UAAU,CAACS,WAAW,CAAgB;EACpD;EACA,OAAOT,UAAU,CAACW,QAAQ,EAAE,KAAK,IAAI,EAAE;IACrC,IAAIf,WAAW,CAACI,UAAU,CAACS,WAAW,CAAC,EAAE;MACvCD,MAAM,CAACE,IAAI,CAACV,UAAU,CAACS,WAAW,CAAgB;IACpD;EACF;EAEA,OAAOD,MAAM;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isFocusInside: (topNode: HTMLElement | HTMLElement[], actualActiveElement?: HTMLElement) => boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isFocusInside = void 0;
|
|
7
|
+
var _hasParent = require("../hasParent");
|
|
8
|
+
var isFocusInside = function isFocusInside(topNode, actualActiveElement) {
|
|
9
|
+
var activeElement = actualActiveElement || document.activeElement;
|
|
10
|
+
var nodes = Array.isArray(topNode) ? topNode : [topNode];
|
|
11
|
+
return nodes.some(function (node) {
|
|
12
|
+
return (0, _hasParent.hasParent)(activeElement, node);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
exports.isFocusInside = isFocusInside;
|
|
16
|
+
//# sourceMappingURL=isFocusInside.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFocusInside.js","names":["_hasParent","require","isFocusInside","topNode","actualActiveElement","activeElement","document","nodes","Array","isArray","some","node","hasParent","exports"],"sources":["../../../src/utils/focus-lock/isFocusInside.ts"],"sourcesContent":["import { hasParent } from '../hasParent';\n\nexport const isFocusInside = (\n topNode: HTMLElement | HTMLElement[],\n actualActiveElement?: HTMLElement,\n): boolean => {\n const activeElement = actualActiveElement || document.activeElement;\n const nodes = Array.isArray(topNode) ? topNode : [topNode];\n return nodes.some((node) => hasParent(activeElement, node));\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CACxBC,OAAoC,EACpCC,mBAAiC,EACrB;EACZ,IAAMC,aAAa,GAAGD,mBAAmB,IAAIE,QAAQ,CAACD,aAAa;EACnE,IAAME,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACN,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;EAC1D,OAAOI,KAAK,CAACG,IAAI,CAAC,UAACC,IAAI;IAAA,OAAK,IAAAC,oBAAS,EAACP,aAAa,EAAEM,IAAI,CAAC;EAAA,EAAC;AAC7D,CAAC;AAACE,OAAA,CAAAX,aAAA,GAAAA,aAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { hasParent } from "../hasParent.mjs";
|
|
2
|
+
export var isFocusInside = function isFocusInside(topNode, actualActiveElement) {
|
|
3
|
+
var activeElement = actualActiveElement || document.activeElement;
|
|
4
|
+
var nodes = Array.isArray(topNode) ? topNode : [topNode];
|
|
5
|
+
return nodes.some(function (node) {
|
|
6
|
+
return hasParent(activeElement, node);
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=isFocusInside.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFocusInside.mjs","names":["hasParent","isFocusInside","topNode","actualActiveElement","activeElement","document","nodes","Array","isArray","some","node"],"sources":["../../../src/utils/focus-lock/isFocusInside.ts"],"sourcesContent":["import { hasParent } from '../hasParent';\n\nexport const isFocusInside = (\n topNode: HTMLElement | HTMLElement[],\n actualActiveElement?: HTMLElement,\n): boolean => {\n const activeElement = actualActiveElement || document.activeElement;\n const nodes = Array.isArray(topNode) ? topNode : [topNode];\n return nodes.some((node) => hasParent(activeElement, node));\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,kBAAc;AAExC,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CACxBC,OAAoC,EACpCC,mBAAiC,EACrB;EACZ,IAAMC,aAAa,GAAGD,mBAAmB,IAAIE,QAAQ,CAACD,aAAa;EACnE,IAAME,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACN,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;EAC1D,OAAOI,KAAK,CAACG,IAAI,CAAC,UAACC,IAAI;IAAA,OAAKV,SAAS,CAACI,aAAa,EAAEM,IAAI,CAAC;EAAA,EAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isFocusable: (node: Node) => boolean;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.isFocusable = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var _focusBorders = require("./focusBorders");
|
|
10
|
+
var focusable = [['BUTTON'], ['SELECT'], ['TEXTAREA'], ['INPUT'], ['A', {
|
|
11
|
+
has: 'href'
|
|
12
|
+
}], ['AREA', {
|
|
13
|
+
has: 'href'
|
|
14
|
+
}], ['SUMMARY'], ['IFRAME'], ['OBJECT'], ['EMBED'], ['AUDIO', {
|
|
15
|
+
has: 'controls'
|
|
16
|
+
}], ['VIDEO', {
|
|
17
|
+
has: 'controls'
|
|
18
|
+
}], [{
|
|
19
|
+
has: 'tabindex'
|
|
20
|
+
}], [{
|
|
21
|
+
has: 'contenteditable'
|
|
22
|
+
}], [{
|
|
23
|
+
has: 'autofocus'
|
|
24
|
+
}]];
|
|
25
|
+
var isFocusable = function isFocusable(node) {
|
|
26
|
+
var _node$ownerDocument$d;
|
|
27
|
+
if (!node) return false;
|
|
28
|
+
if (!node.ownerDocument) return false;
|
|
29
|
+
if (!((_node$ownerDocument$d = node.ownerDocument.defaultView) !== null && _node$ownerDocument$d !== void 0 && _node$ownerDocument$d.HTMLElement)) return false;
|
|
30
|
+
if (!(node instanceof node.ownerDocument.defaultView.HTMLElement || node instanceof node.ownerDocument.defaultView.SVGElement)) return false;
|
|
31
|
+
if (node.hasAttribute('disabled')) return false;
|
|
32
|
+
if (node.getAttribute('tabindex') === '-1') return false;
|
|
33
|
+
if (node.getAttribute('hidden') !== null) return false;
|
|
34
|
+
if (node.getAttribute('data-id') === _focusBorders.BEFORE_BORDER_ID || node.getAttribute('data-id') === _focusBorders.AFTER_BORDER_ID) return false;
|
|
35
|
+
var tagName = node.tagName;
|
|
36
|
+
for (var _i = 0, _focusable = focusable; _i < _focusable.length; _i++) {
|
|
37
|
+
var params = _focusable[_i];
|
|
38
|
+
if (params.every(function (param) {
|
|
39
|
+
if (typeof param === 'string' && param === tagName) return true;
|
|
40
|
+
if ((0, _typeof2["default"])(param) === 'object' && param.has && node.hasAttribute(param.has)) return true;
|
|
41
|
+
return false;
|
|
42
|
+
})) {
|
|
43
|
+
var style = getComputedStyle(node);
|
|
44
|
+
if (style.display === 'none' || style.visibility === 'hidden') return false;
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
};
|
|
50
|
+
exports.isFocusable = isFocusable;
|
|
51
|
+
//# sourceMappingURL=isFocusable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFocusable.js","names":["_focusBorders","require","focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","BEFORE_BORDER_ID","AFTER_BORDER_ID","tagName","_i","_focusable","length","params","every","param","_typeof2","style","getComputedStyle","display","visibility","exports"],"sources":["../../../src/utils/focus-lock/isFocusable.ts"],"sourcesContent":["import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from './focusBorders';\n\nconst focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n if (\n node.getAttribute('data-id') === BEFORE_BORDER_ID ||\n node.getAttribute('data-id') === AFTER_BORDER_ID\n )\n return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA,IAAMC,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAEM,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IACEP,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKC,8BAAgB,IACjDR,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKE,6BAAe,EAEhD,OAAO,KAAK;EACd,IAAMC,OAAO,GAAGV,IAAI,CAACU,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBf,SAAS,EAAAc,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAI,IAAAO,QAAA,aAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAClB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACU,KAAK,CAAClB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMoB,KAAK,GAAGC,gBAAgB,CAACnB,IAAI,CAAC;MACpC,IAAIkB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
|
+
import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from "./focusBorders.mjs";
|
|
3
|
+
var focusable = [['BUTTON'], ['SELECT'], ['TEXTAREA'], ['INPUT'], ['A', {
|
|
4
|
+
has: 'href'
|
|
5
|
+
}], ['AREA', {
|
|
6
|
+
has: 'href'
|
|
7
|
+
}], ['SUMMARY'], ['IFRAME'], ['OBJECT'], ['EMBED'], ['AUDIO', {
|
|
8
|
+
has: 'controls'
|
|
9
|
+
}], ['VIDEO', {
|
|
10
|
+
has: 'controls'
|
|
11
|
+
}], [{
|
|
12
|
+
has: 'tabindex'
|
|
13
|
+
}], [{
|
|
14
|
+
has: 'contenteditable'
|
|
15
|
+
}], [{
|
|
16
|
+
has: 'autofocus'
|
|
17
|
+
}]];
|
|
18
|
+
export var isFocusable = function isFocusable(node) {
|
|
19
|
+
var _node$ownerDocument$d;
|
|
20
|
+
if (!node) return false;
|
|
21
|
+
if (!node.ownerDocument) return false;
|
|
22
|
+
if (!((_node$ownerDocument$d = node.ownerDocument.defaultView) !== null && _node$ownerDocument$d !== void 0 && _node$ownerDocument$d.HTMLElement)) return false;
|
|
23
|
+
if (!(node instanceof node.ownerDocument.defaultView.HTMLElement || node instanceof node.ownerDocument.defaultView.SVGElement)) return false;
|
|
24
|
+
if (node.hasAttribute('disabled')) return false;
|
|
25
|
+
if (node.getAttribute('tabindex') === '-1') return false;
|
|
26
|
+
if (node.getAttribute('hidden') !== null) return false;
|
|
27
|
+
if (node.getAttribute('data-id') === BEFORE_BORDER_ID || node.getAttribute('data-id') === AFTER_BORDER_ID) return false;
|
|
28
|
+
var tagName = node.tagName;
|
|
29
|
+
for (var _i = 0, _focusable = focusable; _i < _focusable.length; _i++) {
|
|
30
|
+
var params = _focusable[_i];
|
|
31
|
+
if (params.every(function (param) {
|
|
32
|
+
if (typeof param === 'string' && param === tagName) return true;
|
|
33
|
+
if (_typeof(param) === 'object' && param.has && node.hasAttribute(param.has)) return true;
|
|
34
|
+
return false;
|
|
35
|
+
})) {
|
|
36
|
+
var style = getComputedStyle(node);
|
|
37
|
+
if (style.display === 'none' || style.visibility === 'hidden') return false;
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=isFocusable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isFocusable.mjs","names":["AFTER_BORDER_ID","BEFORE_BORDER_ID","focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","tagName","_i","_focusable","length","params","every","param","_typeof","style","getComputedStyle","display","visibility"],"sources":["../../../src/utils/focus-lock/isFocusable.ts"],"sourcesContent":["import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from './focusBorders';\n\nconst focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n if (\n node.getAttribute('data-id') === BEFORE_BORDER_ID ||\n node.getAttribute('data-id') === AFTER_BORDER_ID\n )\n return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,gBAAgB,QAAQ,oBAAgB;AAElE,IAAMC,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAED,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IACEP,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKX,gBAAgB,IACjDI,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKZ,eAAe,EAEhD,OAAO,KAAK;EACd,IAAMa,OAAO,GAAGR,IAAI,CAACQ,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBb,SAAS,EAAAY,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAIO,OAAA,CAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAChB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACQ,KAAK,CAAChB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMkB,KAAK,GAAGC,gBAAgB,CAACjB,IAAI,CAAC;MACpC,IAAIgB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const setFocus: (node: HTMLElement, previousActiveElement?: HTMLElement | null, actualActiveElement?: HTMLElement, focusOptions?: FocusOptions) => void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.setFocus = void 0;
|
|
8
|
+
var _canUseDOM = _interopRequireDefault(require("../canUseDOM"));
|
|
9
|
+
var _getFocusableIn = require("./getFocusableIn");
|
|
10
|
+
var unsafeSetFocus = function unsafeSetFocus(node, previousActiveElement, actualActiveElement) {
|
|
11
|
+
var _target;
|
|
12
|
+
var focusOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
13
|
+
var activeElement = actualActiveElement || document.activeElement;
|
|
14
|
+
var focusable = (0, _getFocusableIn.getFocusableIn)(node);
|
|
15
|
+
var target = focusable[0];
|
|
16
|
+
if (activeElement && previousActiveElement && previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_PRECEDING && !(previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_CONTAINS)) {
|
|
17
|
+
target = focusable[focusable.length - 1];
|
|
18
|
+
}
|
|
19
|
+
(_target = target) === null || _target === void 0 ? void 0 : _target.focus(focusOptions);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** "safe" focus movement means that function wrapper tries
|
|
23
|
+
* to detect focus war (when two focus locks are trying to
|
|
24
|
+
* control focus recursively) and disables it for 10 seconds
|
|
25
|
+
*/
|
|
26
|
+
var focusMoveRequests = [];
|
|
27
|
+
var focusMoveDisabledUntil = 0;
|
|
28
|
+
var lastUserAction = 0;
|
|
29
|
+
var safeSetFocus = function safeSetFocus() {
|
|
30
|
+
if (focusMoveDisabledUntil > Date.now()) return;
|
|
31
|
+
focusMoveRequests.push(Date.now());
|
|
32
|
+
if (focusMoveRequests.length > 10 && Date.now() - lastUserAction > 600) {
|
|
33
|
+
var lastFocusMoveRequests = focusMoveRequests.slice(-10);
|
|
34
|
+
var timeBetweenFocusMoveRequests = lastFocusMoveRequests.slice(1).map(function (time, index) {
|
|
35
|
+
return Math.abs(time - lastFocusMoveRequests[index]);
|
|
36
|
+
});
|
|
37
|
+
if (timeBetweenFocusMoveRequests.every(function (time) {
|
|
38
|
+
return time < 250;
|
|
39
|
+
})) {
|
|
40
|
+
focusMoveDisabledUntil = Date.now() + 10000;
|
|
41
|
+
focusMoveRequests = [];
|
|
42
|
+
console.error('[useFocusLock] Probably the focus war was detected. It is a process when multiple browser focus control subjects are reacting to "blur" event on their element and are trying to get it back. Focus move function was disabled for 10 seconds. Probably your page has different focus lock systems. If you have multiple versions of Intergalactic components, updated them to the latest version (at least to 15.16.3).');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (focusMoveRequests.length > 500) focusMoveRequests = focusMoveRequests.slice(-10);
|
|
47
|
+
return unsafeSetFocus.apply(void 0, arguments);
|
|
48
|
+
};
|
|
49
|
+
if ((0, _canUseDOM["default"])()) {
|
|
50
|
+
document.addEventListener('keydown', function (event) {
|
|
51
|
+
lastUserAction = Date.now();
|
|
52
|
+
}, {
|
|
53
|
+
capture: true
|
|
54
|
+
});
|
|
55
|
+
document.addEventListener('mousedown', function () {
|
|
56
|
+
lastUserAction = Date.now();
|
|
57
|
+
}, {
|
|
58
|
+
capture: true
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
var setFocus = safeSetFocus;
|
|
62
|
+
exports.setFocus = setFocus;
|
|
63
|
+
//# sourceMappingURL=setFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setFocus.js","names":["_canUseDOM","_interopRequireDefault","require","_getFocusableIn","unsafeSetFocus","node","previousActiveElement","actualActiveElement","_target","focusOptions","arguments","length","undefined","activeElement","document","focusable","getFocusableIn","target","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","focus","focusMoveRequests","focusMoveDisabledUntil","lastUserAction","safeSetFocus","Date","now","push","lastFocusMoveRequests","slice","timeBetweenFocusMoveRequests","map","time","index","Math","abs","every","console","error","apply","canUseDOM","addEventListener","event","capture","setFocus","exports"],"sources":["../../../src/utils/focus-lock/setFocus.ts"],"sourcesContent":["import canUseDOM from '../canUseDOM';\nimport { getFocusableIn } from './getFocusableIn';\n\nconst unsafeSetFocus = (\n node: HTMLElement,\n previousActiveElement?: HTMLElement | null,\n actualActiveElement?: HTMLElement,\n focusOptions: FocusOptions = {},\n) => {\n const activeElement = actualActiveElement || document.activeElement;\n\n const focusable = getFocusableIn(node);\n\n let target = focusable[0];\n\n if (\n activeElement &&\n previousActiveElement &&\n previousActiveElement.compareDocumentPosition(activeElement) &\n Node.DOCUMENT_POSITION_PRECEDING &&\n !(\n previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_CONTAINS\n )\n ) {\n target = focusable[focusable.length - 1];\n }\n\n target?.focus(focusOptions);\n};\n\n/** \"safe\" focus movement means that function wrapper tries\n * to detect focus war (when two focus locks are trying to\n * control focus recursively) and disables it for 10 seconds\n */\nlet focusMoveRequests: number[] = [];\nlet focusMoveDisabledUntil = 0;\nlet lastUserAction = 0;\nconst safeSetFocus: typeof unsafeSetFocus = (...args) => {\n if (focusMoveDisabledUntil > Date.now()) return;\n focusMoveRequests.push(Date.now());\n if (focusMoveRequests.length > 10 && Date.now() - lastUserAction > 600) {\n const lastFocusMoveRequests = focusMoveRequests.slice(-10);\n const timeBetweenFocusMoveRequests = lastFocusMoveRequests\n .slice(1)\n .map((time, index) => Math.abs(time - lastFocusMoveRequests[index]));\n if (timeBetweenFocusMoveRequests.every((time) => time < 250)) {\n focusMoveDisabledUntil = Date.now() + 10000;\n focusMoveRequests = [];\n console.error(\n '[useFocusLock] Probably the focus war was detected. It is a process when multiple browser focus control subjects are reacting to \"blur\" event on their element and are trying to get it back. Focus move function was disabled for 10 seconds. Probably your page has different focus lock systems. If you have multiple versions of Intergalactic components, updated them to the latest version (at least to 15.16.3).',\n );\n return;\n }\n }\n if (focusMoveRequests.length > 500) focusMoveRequests = focusMoveRequests.slice(-10);\n\n return unsafeSetFocus(...args);\n};\nif (canUseDOM()) {\n document.addEventListener(\n 'keydown',\n (event) => {\n lastUserAction = Date.now();\n },\n { capture: true },\n );\n document.addEventListener(\n 'mousedown',\n () => {\n lastUserAction = Date.now();\n },\n { capture: true },\n );\n}\n\nexport const setFocus = safeSetFocus;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import canUseDOM from "../canUseDOM.mjs";
|
|
2
|
+
import { getFocusableIn } from "./getFocusableIn.mjs";
|
|
3
|
+
var unsafeSetFocus = function unsafeSetFocus(node, previousActiveElement, actualActiveElement) {
|
|
4
|
+
var _target;
|
|
5
|
+
var focusOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
6
|
+
var activeElement = actualActiveElement || document.activeElement;
|
|
7
|
+
var focusable = getFocusableIn(node);
|
|
8
|
+
var target = focusable[0];
|
|
9
|
+
if (activeElement && previousActiveElement && previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_PRECEDING && !(previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_CONTAINS)) {
|
|
10
|
+
target = focusable[focusable.length - 1];
|
|
11
|
+
}
|
|
12
|
+
(_target = target) === null || _target === void 0 ? void 0 : _target.focus(focusOptions);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/** "safe" focus movement means that function wrapper tries
|
|
16
|
+
* to detect focus war (when two focus locks are trying to
|
|
17
|
+
* control focus recursively) and disables it for 10 seconds
|
|
18
|
+
*/
|
|
19
|
+
var focusMoveRequests = [];
|
|
20
|
+
var focusMoveDisabledUntil = 0;
|
|
21
|
+
var lastUserAction = 0;
|
|
22
|
+
var safeSetFocus = function safeSetFocus() {
|
|
23
|
+
if (focusMoveDisabledUntil > Date.now()) return;
|
|
24
|
+
focusMoveRequests.push(Date.now());
|
|
25
|
+
if (focusMoveRequests.length > 10 && Date.now() - lastUserAction > 600) {
|
|
26
|
+
var lastFocusMoveRequests = focusMoveRequests.slice(-10);
|
|
27
|
+
var timeBetweenFocusMoveRequests = lastFocusMoveRequests.slice(1).map(function (time, index) {
|
|
28
|
+
return Math.abs(time - lastFocusMoveRequests[index]);
|
|
29
|
+
});
|
|
30
|
+
if (timeBetweenFocusMoveRequests.every(function (time) {
|
|
31
|
+
return time < 250;
|
|
32
|
+
})) {
|
|
33
|
+
focusMoveDisabledUntil = Date.now() + 10000;
|
|
34
|
+
focusMoveRequests = [];
|
|
35
|
+
console.error('[useFocusLock] Probably the focus war was detected. It is a process when multiple browser focus control subjects are reacting to "blur" event on their element and are trying to get it back. Focus move function was disabled for 10 seconds. Probably your page has different focus lock systems. If you have multiple versions of Intergalactic components, updated them to the latest version (at least to 15.16.3).');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (focusMoveRequests.length > 500) focusMoveRequests = focusMoveRequests.slice(-10);
|
|
40
|
+
return unsafeSetFocus.apply(void 0, arguments);
|
|
41
|
+
};
|
|
42
|
+
if (canUseDOM()) {
|
|
43
|
+
document.addEventListener('keydown', function (event) {
|
|
44
|
+
lastUserAction = Date.now();
|
|
45
|
+
}, {
|
|
46
|
+
capture: true
|
|
47
|
+
});
|
|
48
|
+
document.addEventListener('mousedown', function () {
|
|
49
|
+
lastUserAction = Date.now();
|
|
50
|
+
}, {
|
|
51
|
+
capture: true
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export var setFocus = safeSetFocus;
|
|
55
|
+
//# sourceMappingURL=setFocus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setFocus.mjs","names":["canUseDOM","getFocusableIn","unsafeSetFocus","node","previousActiveElement","actualActiveElement","_target","focusOptions","arguments","length","undefined","activeElement","document","focusable","target","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","focus","focusMoveRequests","focusMoveDisabledUntil","lastUserAction","safeSetFocus","Date","now","push","lastFocusMoveRequests","slice","timeBetweenFocusMoveRequests","map","time","index","Math","abs","every","console","error","apply","addEventListener","event","capture","setFocus"],"sources":["../../../src/utils/focus-lock/setFocus.ts"],"sourcesContent":["import canUseDOM from '../canUseDOM';\nimport { getFocusableIn } from './getFocusableIn';\n\nconst unsafeSetFocus = (\n node: HTMLElement,\n previousActiveElement?: HTMLElement | null,\n actualActiveElement?: HTMLElement,\n focusOptions: FocusOptions = {},\n) => {\n const activeElement = actualActiveElement || document.activeElement;\n\n const focusable = getFocusableIn(node);\n\n let target = focusable[0];\n\n if (\n activeElement &&\n previousActiveElement &&\n previousActiveElement.compareDocumentPosition(activeElement) &\n Node.DOCUMENT_POSITION_PRECEDING &&\n !(\n previousActiveElement.compareDocumentPosition(activeElement) & Node.DOCUMENT_POSITION_CONTAINS\n )\n ) {\n target = focusable[focusable.length - 1];\n }\n\n target?.focus(focusOptions);\n};\n\n/** \"safe\" focus movement means that function wrapper tries\n * to detect focus war (when two focus locks are trying to\n * control focus recursively) and disables it for 10 seconds\n */\nlet focusMoveRequests: number[] = [];\nlet focusMoveDisabledUntil = 0;\nlet lastUserAction = 0;\nconst safeSetFocus: typeof unsafeSetFocus = (...args) => {\n if (focusMoveDisabledUntil > Date.now()) return;\n focusMoveRequests.push(Date.now());\n if (focusMoveRequests.length > 10 && Date.now() - lastUserAction > 600) {\n const lastFocusMoveRequests = focusMoveRequests.slice(-10);\n const timeBetweenFocusMoveRequests = lastFocusMoveRequests\n .slice(1)\n .map((time, index) => Math.abs(time - lastFocusMoveRequests[index]));\n if (timeBetweenFocusMoveRequests.every((time) => time < 250)) {\n focusMoveDisabledUntil = Date.now() + 10000;\n focusMoveRequests = [];\n console.error(\n '[useFocusLock] Probably the focus war was detected. It is a process when multiple browser focus control subjects are reacting to \"blur\" event on their element and are trying to get it back. Focus move function was disabled for 10 seconds. Probably your page has different focus lock systems. If you have multiple versions of Intergalactic components, updated them to the latest version (at least to 15.16.3).',\n );\n return;\n }\n }\n if (focusMoveRequests.length > 500) focusMoveRequests = focusMoveRequests.slice(-10);\n\n return unsafeSetFocus(...args);\n};\nif (canUseDOM()) {\n document.addEventListener(\n 'keydown',\n (event) => {\n lastUserAction = Date.now();\n },\n { capture: true },\n );\n document.addEventListener(\n 'mousedown',\n () => {\n lastUserAction = Date.now();\n },\n { capture: true },\n );\n}\n\nexport const setFocus = safeSetFocus;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getAccessibleName(element: HTMLElement | null): string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getAccessibleName = getAccessibleName;
|
|
8
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
9
|
+
function getAccessibleName(element) {
|
|
10
|
+
var _ref, _ref2, _ref3, _getByLabelledBy;
|
|
11
|
+
if (element === null) {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
return (_ref = (_ref2 = (_ref3 = (_getByLabelledBy = getByLabelledBy(element)) !== null && _getByLabelledBy !== void 0 ? _getByLabelledBy : getByAriaLabel(element)) !== null && _ref3 !== void 0 ? _ref3 : getByLabel(element)) !== null && _ref2 !== void 0 ? _ref2 : getByTitle(element)) !== null && _ref !== void 0 ? _ref : '';
|
|
15
|
+
}
|
|
16
|
+
function getByLabelledBy(element) {
|
|
17
|
+
var ariaLabelledBy = element.getAttribute('aria-labelledby');
|
|
18
|
+
if (!ariaLabelledBy) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
var idList = ariaLabelledBy.split(/\s/);
|
|
22
|
+
var result = [];
|
|
23
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(idList),
|
|
24
|
+
_step;
|
|
25
|
+
try {
|
|
26
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27
|
+
var id = _step.value;
|
|
28
|
+
var label = document.getElementById(id);
|
|
29
|
+
if (label) {
|
|
30
|
+
result.push((label.textContent || '').trim());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
} catch (err) {
|
|
34
|
+
_iterator.e(err);
|
|
35
|
+
} finally {
|
|
36
|
+
_iterator.f();
|
|
37
|
+
}
|
|
38
|
+
return result.join(' ');
|
|
39
|
+
}
|
|
40
|
+
function getByAriaLabel(element) {
|
|
41
|
+
return element.getAttribute('aria-label');
|
|
42
|
+
}
|
|
43
|
+
function getByLabel(element) {
|
|
44
|
+
var labels = (element instanceof HTMLButtonElement || element instanceof HTMLInputElement) && element.labels;
|
|
45
|
+
if (!labels || !labels.length) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
var result = Array.prototype.map.call(labels, function (label) {
|
|
49
|
+
return (label.textContent || '').trim();
|
|
50
|
+
});
|
|
51
|
+
return result.join(' ');
|
|
52
|
+
}
|
|
53
|
+
function getByTitle(element) {
|
|
54
|
+
return element.title;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=getAccessibleName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessibleName.js","names":["getAccessibleName","element","_ref","_ref2","_ref3","_getByLabelledBy","getByLabelledBy","getByAriaLabel","getByLabel","getByTitle","ariaLabelledBy","getAttribute","idList","split","result","_iterator","_createForOfIteratorHelper2","_step","s","n","done","id","value","label","document","getElementById","push","textContent","trim","err","e","f","join","labels","HTMLButtonElement","HTMLInputElement","length","Array","prototype","map","call","title"],"sources":["../../src/utils/getAccessibleName.ts"],"sourcesContent":["export function getAccessibleName(element: HTMLElement | null): string {\n if (element === null) {\n return '';\n }\n\n return (\n getByLabelledBy(element) ??\n getByAriaLabel(element) ??\n getByLabel(element) ??\n getByTitle(element) ??\n ''\n );\n}\n\nfunction getByLabelledBy(element: HTMLElement): string | null {\n const ariaLabelledBy = element.getAttribute('aria-labelledby');\n\n if (!ariaLabelledBy) {\n return null;\n }\n\n const idList = ariaLabelledBy.split(/\\s/);\n const result: string[] = [];\n\n for (const id of idList) {\n const label = document.getElementById(id);\n\n if (label) {\n result.push((label.textContent || '').trim());\n }\n }\n\n return result.join(' ');\n}\nfunction getByAriaLabel(element: HTMLElement): string | null {\n return element.getAttribute('aria-label');\n}\nfunction getByLabel(element: HTMLElement): string | null {\n const labels =\n (element instanceof HTMLButtonElement || element instanceof HTMLInputElement) && element.labels;\n\n if (!labels || !labels.length) {\n return null;\n }\n\n const result = Array.prototype.map.call(labels, (label: HTMLLabelElement) => {\n return (label.textContent || '').trim();\n });\n\n return result.join(' ');\n}\n\nfunction getByTitle(element: HTMLElement): string | null {\n return element.title;\n}\n"],"mappings":";;;;;;;;AAAO,SAASA,iBAAiBA,CAACC,OAA2B,EAAU;EAAA,IAAAC,IAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,gBAAA;EACrE,IAAIJ,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,EAAE;EACX;EAEA,QAAAC,IAAA,IAAAC,KAAA,IAAAC,KAAA,IAAAC,gBAAA,GACEC,eAAe,CAACL,OAAO,CAAC,cAAAI,gBAAA,cAAAA,gBAAA,GACxBE,cAAc,CAACN,OAAO,CAAC,cAAAG,KAAA,cAAAA,KAAA,GACvBI,UAAU,CAACP,OAAO,CAAC,cAAAE,KAAA,cAAAA,KAAA,GACnBM,UAAU,CAACR,OAAO,CAAC,cAAAC,IAAA,cAAAA,IAAA,GACnB,EAAE;AAEN;AAEA,SAASI,eAAeA,CAACL,OAAoB,EAAiB;EAC5D,IAAMS,cAAc,GAAGT,OAAO,CAACU,YAAY,CAAC,iBAAiB,CAAC;EAE9D,IAAI,CAACD,cAAc,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,IAAME,MAAM,GAAGF,cAAc,CAACG,KAAK,CAAC,IAAI,CAAC;EACzC,IAAMC,MAAgB,GAAG,EAAE;EAAC,IAAAC,SAAA,OAAAC,2BAAA,aAEXJ,MAAM;IAAAK,KAAA;EAAA;IAAvB,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAyB;MAAA,IAAdC,EAAE,GAAAJ,KAAA,CAAAK,KAAA;MACX,IAAMC,KAAK,GAAGC,QAAQ,CAACC,cAAc,CAACJ,EAAE,CAAC;MAEzC,IAAIE,KAAK,EAAE;QACTT,MAAM,CAACY,IAAI,CAAC,CAACH,KAAK,CAACI,WAAW,IAAI,EAAE,EAAEC,IAAI,EAAE,CAAC;MAC/C;IACF;EAAC,SAAAC,GAAA;IAAAd,SAAA,CAAAe,CAAA,CAAAD,GAAA;EAAA;IAAAd,SAAA,CAAAgB,CAAA;EAAA;EAED,OAAOjB,MAAM,CAACkB,IAAI,CAAC,GAAG,CAAC;AACzB;AACA,SAASzB,cAAcA,CAACN,OAAoB,EAAiB;EAC3D,OAAOA,OAAO,CAACU,YAAY,CAAC,YAAY,CAAC;AAC3C;AACA,SAASH,UAAUA,CAACP,OAAoB,EAAiB;EACvD,IAAMgC,MAAM,GACV,CAAChC,OAAO,YAAYiC,iBAAiB,IAAIjC,OAAO,YAAYkC,gBAAgB,KAAKlC,OAAO,CAACgC,MAAM;EAEjG,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACG,MAAM,EAAE;IAC7B,OAAO,IAAI;EACb;EAEA,IAAMtB,MAAM,GAAGuB,KAAK,CAACC,SAAS,CAACC,GAAG,CAACC,IAAI,CAACP,MAAM,EAAE,UAACV,KAAuB,EAAK;IAC3E,OAAO,CAACA,KAAK,CAACI,WAAW,IAAI,EAAE,EAAEC,IAAI,EAAE;EACzC,CAAC,CAAC;EAEF,OAAOd,MAAM,CAACkB,IAAI,CAAC,GAAG,CAAC;AACzB;AAEA,SAASvB,UAAUA,CAACR,OAAoB,EAAiB;EACvD,OAAOA,OAAO,CAACwC,KAAK;AACtB"}
|