/
TON618OFF
/
FinalPWHTML
Обзор
Документация
Войти
/
TON618OFF
/
FinalPWHTML
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
node_modules/@popperjs/core/lib/modifiers/hide.js.flow
76 строк
2 KB
TON618OFF
не ну это ваще
23 июн 2024, 00:30
23 июн 2024, 00:30
e27ae20
Код
Авторство
О чём код?
// @flow import type { ModifierArguments, Modifier, Rect, SideObject, Offsets, } from '../types'; import { top, bottom, left, right } from '../enums'; import detectOverflow from '../utils/detectOverflow'; function getSideOffsets( overflow: SideObject, rect: Rect, preventedOffsets: Offsets = { x: 0, y: 0 } ): SideObject { return { top: overflow.top - rect.height - preventedOffsets.y, right: overflow.right - rect.width + preventedOffsets.x, bottom: overflow.bottom - rect.height + preventedOffsets.y, left: overflow.left - rect.width - preventedOffsets.x, }; } function isAnySideFullyClipped(overflow: SideObject): boolean { return [top, right, bottom, left].some((side) => overflow[side] >= 0); } function hide({ state, name }: ModifierArguments<{||}>) { const referenceRect = state.rects.reference; const popperRect = state.rects.popper; const preventedOffsets = state.modifiersData.preventOverflow; const referenceOverflow = detectOverflow(state, { elementContext: 'reference', }); const popperAltOverflow = detectOverflow(state, { altBoundary: true, }); const referenceClippingOffsets = getSideOffsets( referenceOverflow, referenceRect ); const popperEscapeOffsets = getSideOffsets( popperAltOverflow, popperRect, preventedOffsets ); const isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); const hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); state.modifiersData[name] = { referenceClippingOffsets, popperEscapeOffsets, isReferenceHidden, hasPopperEscaped, }; state.attributes.popper = { ...state.attributes.popper, 'data-popper-reference-hidden': isReferenceHidden, 'data-popper-escaped': hasPopperEscaped, }; } // eslint-disable-next-line import/no-unused-modules export type HideModifier = Modifier<'hide', {||}>; export default ({ name: 'hide', enabled: true, phase: 'main', requiresIfExists: ['preventOverflow'], fn: hide, }: HideModifier);