@vitus-labs/elements 0.54.0 → 0.55.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.
@@ -1 +1 @@
1
- {"version":3,"file":"vitus-labs-elements.module.js","sources":["../src/constants.ts","../src/helpers/Wrapper/constants.ts","../src/helpers/Wrapper/utils.ts","../src/helpers/Wrapper/styled.ts","../src/helpers/Wrapper/component.tsx","../src/helpers/Content/styled.ts","../src/helpers/Content/component.tsx","../src/Element/constants.ts","../src/Element/utils.ts","../src/Element/component.tsx","../src/Element/withEqualSizeBeforeAfter.tsx","../src/helpers/Iterator/component.tsx","../src/List/component.tsx","../src/List/withActiveState.tsx","../src/Portal/component.ts","../src/Overlay/context.tsx","../src/Overlay/useOverlay.tsx","../src/Overlay/component.tsx","../src/Text/styled.ts","../src/Text/component.tsx","../src/Util/component.tsx"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const PKG_NAME = '@vitus-labs/elements' as const\n","/* eslint-disable import/prefer-default-export */\n// https://stackoverflow.com/questions/35464067/flexbox-not-working-on-button-or-fieldset-elements\nexport const INLINE_ELEMENTS_FLEX_FIX = {\n button: true,\n fieldset: true,\n legend: true,\n}\n","/* eslint-disable import/prefer-default-export */\nimport { INLINE_ELEMENTS_FLEX_FIX } from './constants'\n\ntype IsWebFixNeeded = (tag: string) => boolean\nexport const isWebFixNeeded: IsWebFixNeeded = (tag) =>\n INLINE_ELEMENTS_FLEX_FIX[tag]\n","import { config } from '@vitus-labs/core'\nimport { alignContent, extendCss, makeItResponsive } from '@vitus-labs/unistyle'\n\nconst styles = ({ theme: t, css }) => css`\n ${__WEB__ &&\n t.alignY === 'block' &&\n css`\n height: 100%;\n `};\n\n ${alignContent({\n direction: t.direction,\n alignX: t.alignX,\n alignY: t.alignY,\n })};\n\n ${t.block &&\n css`\n align-self: stretch;\n `}\n\n ${__WEB__ &&\n css`\n ${({ $childFix }) =>\n !$childFix &&\n css`\n display: ${t.block ? 'flex' : 'inline-flex'};\n `};\n\n ${({ $parentFix }) =>\n $parentFix &&\n t.block &&\n css`\n flex-direction: column;\n width: 100%;\n `};\n `};\n\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nconst platformStyles = __WEB__ ? 'box-sizing: border-box;' : 'display: flex;'\n\nexport default config.styled(config.component)`\n position: relative;\n ${platformStyles};\n\n ${({ $childFix }) =>\n $childFix &&\n config.css`\n display: flex;\n flex: 1;\n width: 100%;\n height: 100%;\n `};\n\n ${makeItResponsive({\n key: '$element',\n styles,\n css: config.css,\n normalize: true,\n })};\n`\n","import React, { forwardRef, ReactNode } from 'react'\nimport type { StyledComponentPropsWithRef } from 'styled-components'\nimport type {\n Direction,\n AlignX,\n AlignY,\n ResponsiveBooltype,\n ExtendCss,\n} from '~/types'\nimport { isWebFixNeeded } from './utils'\nimport Styled from './styled'\n\ntype Reference = unknown\n\ntype Props = {\n children: ReactNode\n tag: StyledComponentPropsWithRef<any>\n block: ResponsiveBooltype\n isInline: boolean\n direction: Direction\n alignX: AlignX\n alignY: AlignY\n equalCols: ResponsiveBooltype\n extendCss: ExtendCss\n dangerouslySetInnerHTML: any\n}\n\nconst component = forwardRef<Reference, Partial<Props>>(\n (\n {\n children,\n tag,\n block,\n extendCss,\n direction,\n alignX,\n alignY,\n equalCols,\n isInline,\n ...props\n },\n ref\n ) => {\n const debugProps =\n process.env.NODE_ENV !== 'production'\n ? {\n 'data-vl-element': 'Element',\n }\n : {}\n\n const COMMON_PROPS = {\n ...props,\n ...debugProps,\n ref,\n as: tag,\n }\n\n const needsFix = __WEB__\n ? !props.dangerouslySetInnerHTML && tag && isWebFixNeeded(tag)\n : false\n\n // eslint-disable-next-line no-nested-ternary\n const asTag = __WEB__ ? (isInline ? 'span' : 'div') : undefined\n\n if (!needsFix || __NATIVE__) {\n return (\n <Styled\n {...COMMON_PROPS}\n $element={{\n block,\n direction,\n alignX,\n alignY,\n equalCols,\n extraStyles: extendCss,\n }}\n >\n {children}\n </Styled>\n )\n }\n\n return (\n <Styled\n {...COMMON_PROPS}\n $parentFix\n $element={{\n block,\n extraStyles: extendCss,\n }}\n >\n <Styled\n as={asTag}\n $childFix\n $element={{\n direction,\n alignX,\n alignY,\n equalCols,\n }}\n >\n {children}\n </Styled>\n </Styled>\n )\n }\n)\n\nexport default component\n","import { config } from '@vitus-labs/core'\nimport {\n makeItResponsive,\n alignContent,\n extendCss,\n value,\n} from '@vitus-labs/unistyle'\n\n// --------------------------------------------------------\n// calculate spacing between before / content / after\n// --------------------------------------------------------\nconst calculateGap = ({ direction, type, value, css }) => {\n if (!direction || !type) return undefined\n\n const data = {\n inline: {\n before: 'margin-right',\n after: 'margin-left',\n },\n rows: {\n before: 'margin-bottom',\n after: 'margin-top',\n },\n }\n\n const finalStyles = `${data[direction][type]}: ${value};`\n\n return css`\n ${finalStyles};\n `\n}\n\n// --------------------------------------------------------\n// calculations of styles to be rendered\n// --------------------------------------------------------\nconst styles = ({ css, theme: t, rootSize }) => css`\n ${alignContent({\n direction: t.direction,\n alignX: t.alignX,\n alignY: t.alignY,\n })};\n\n ${t.equalCols &&\n css`\n flex: 1;\n `};\n\n ${t.gap &&\n css`\n ${({ $contentType }) =>\n calculateGap({\n direction: t.parentDirection,\n type: $contentType,\n value: value(t.gap, rootSize),\n css,\n })}\n `};\n\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nexport default config.styled(config.component)`\n ${\n __WEB__ &&\n config.css`\n box-sizing: border-box;\n `\n };\n\n display: flex;\n align-self: stretch;\n flex-wrap: wrap;\n\n ${({ $contentType }) =>\n $contentType === 'content' &&\n config.css`\n flex: 1;\n `};\n\n ${makeItResponsive({\n key: '$element',\n styles,\n css: config.css,\n normalize: true,\n })};\n`\n","import React, { memo, VFC, ReactNode } from 'react'\nimport type { StyledComponentPropsWithRef } from 'styled-components'\nimport type {\n Direction,\n AlignX,\n AlignY,\n ResponsiveBooltype,\n Responsive,\n ExtendCss,\n} from '~/types'\nimport Styled from './styled'\n\ntype Props = {\n parentDirection: Direction\n gap: Responsive\n contentType: 'before' | 'content' | 'after'\n children: ReactNode\n tag: StyledComponentPropsWithRef<any>\n direction: Direction\n alignX: AlignX\n alignY: AlignY\n equalCols: ResponsiveBooltype\n extendCss: ExtendCss\n}\n\nconst component: VFC<Partial<Props>> = ({\n contentType,\n tag,\n parentDirection,\n direction,\n alignX,\n alignY,\n equalCols,\n gap,\n extendCss,\n ...props\n}) => {\n const debugProps =\n process.env.NODE_ENV !== 'production'\n ? {\n 'data-vl-element': contentType,\n }\n : {}\n\n return (\n <Styled\n as={tag}\n $contentType={contentType}\n $element={{\n parentDirection,\n direction,\n alignX,\n alignY,\n equalCols,\n gap,\n extraStyles: extendCss,\n }}\n {...debugProps}\n {...props}\n />\n )\n}\n\nexport default memo(component)\n","export const RESERVED_PROPS = [\n 'innerRef',\n 'tag',\n 'block',\n 'label',\n 'children',\n 'beforeContent',\n 'afterContent',\n\n 'equalCols',\n 'vertical',\n 'direction',\n 'alignX',\n 'alignY',\n\n 'css',\n 'contentCss',\n 'beforeContentCss',\n 'afterContentCss',\n\n 'contentDirection',\n 'contentAlignX',\n 'contentAlignY',\n\n 'beforeContentDirection',\n 'beforeContentAlignX',\n 'beforeContentAlignY',\n\n 'afterContentDirection',\n 'afterContentAlignX',\n 'afterContentAlignY',\n] as const\n\nexport const INLINE_ELEMENTS = {\n span: true,\n a: true,\n button: true,\n input: true,\n label: true,\n select: true,\n textarea: true,\n br: true,\n img: true,\n strong: true,\n small: true,\n code: true,\n b: true,\n big: true,\n i: true,\n tt: true,\n abbr: true,\n acronym: true,\n cite: true,\n dfn: true,\n em: true,\n kbd: true,\n samp: true,\n var: true,\n bdo: true,\n map: true,\n object: true,\n q: true,\n script: true,\n sub: true,\n sup: true,\n}\n\nexport const EMPTY_ELEMENTS = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n // 'meta': true,\n // 'param': true,\n source: true,\n track: true,\n wbr: true,\n}\n","import { INLINE_ELEMENTS, EMPTY_ELEMENTS } from './constants'\n\n// type Value<T = unknown> = T extends true ? 'rows' : 'inline'\n\n// type TransformVerticalProp = <\n// T extends boolean | Record<string, boolean> | Array<boolean>\n// >(\n// vertical: T\n// ) => T extends boolean\n// ? Value<T>\n// : T extends Record<string, boolean>\n// ? Record<keyof T, Value<T[keyof T]>>\n// : T extends Array<boolean>\n// ? Array<Value<T[number]>>\n// : T\n\n// export const transformVerticalProp: TransformVerticalProp = (vertical) => {\n// // eslint-disable-next-line @typescript-eslint/no-explicit-any\n// if (vertical == null) return undefined as any\n\n// const verticalType = typeof vertical\n\n// // vertical is a boolean value\n// if (verticalType === 'boolean') {\n// return vertical ? 'rows' : 'inline'\n// }\n\n// if (Array.isArray(vertical)) {\n// return (vertical as Array<boolean>).map((item) =>\n// item ? 'rows' : 'inline'\n// )\n// }\n\n// if (verticalType === 'object') {\n// return Object.keys(vertical).reduce((accumulator, item) => {\n// // eslint-disable-next-line no-param-reassign\n// accumulator[item] = vertical[item] ? 'rows' : 'inline'\n// return accumulator\n// }, {} as Record<string, 'rows' | 'inline'>)\n// }\n\n// return undefined\n// }\n\ntype GetValue = (tag?: string) => boolean\n\nexport const isInlineElement: GetValue = (tag) =>\n tag ? INLINE_ELEMENTS[tag] : false\n\nexport const getShouldBeEmpty: GetValue = (tag) =>\n tag ? EMPTY_ELEMENTS[tag] : false\n","import React, { forwardRef, useMemo } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport { Wrapper, Content } from '~/helpers'\nimport { isInlineElement, getShouldBeEmpty } from './utils'\nimport type { VLElement } from './types'\n\nconst defaultDirection = 'inline'\nconst defaultContentDirection = 'rows'\nconst defaultAlignX = 'left'\nconst defaultAlignY = 'center'\n\nconst component: VLElement = forwardRef(\n (\n {\n innerRef,\n tag,\n label,\n content,\n children,\n beforeContent,\n afterContent,\n\n block,\n equalCols,\n gap,\n\n direction,\n alignX = defaultAlignX,\n alignY = defaultAlignY,\n\n css,\n contentCss,\n beforeContentCss,\n afterContentCss,\n\n contentDirection = defaultContentDirection,\n contentAlignX = defaultAlignX,\n contentAlignY = defaultAlignY,\n\n beforeContentDirection = defaultDirection,\n beforeContentAlignX = defaultAlignX,\n beforeContentAlignY = defaultAlignY,\n\n afterContentDirection = defaultDirection,\n afterContentAlignX = defaultAlignX,\n afterContentAlignY = defaultAlignY,\n\n ...props\n },\n ref\n ) => {\n // --------------------------------------------------------\n // check if should render only single element\n // --------------------------------------------------------\n const shouldBeEmpty =\n !!props.dangerouslySetInnerHTML ||\n (__WEB__ && tag && getShouldBeEmpty(tag))\n\n // --------------------------------------------------------\n // if not single element, calculate values\n // --------------------------------------------------------\n const isSimpleElement = !beforeContent && !afterContent\n const CHILDREN = children || content || label\n\n const isInline = __WEB__ ? isInlineElement(tag) : false\n const SUB_TAG = __WEB__ && isInline ? 'span' : undefined\n\n // --------------------------------------------------------\n // direction & alignX & alignY calculations\n // --------------------------------------------------------\n const { wrapperDirection, wrapperAlignX, wrapperAlignY } = useMemo(() => {\n let wrapperDirection: typeof direction = direction\n let wrapperAlignX: typeof alignX = alignX\n let wrapperAlignY: typeof alignY = alignY\n\n if (isSimpleElement) {\n if (contentDirection) wrapperDirection = contentDirection\n if (contentAlignX) wrapperAlignX = contentAlignX\n if (contentAlignY) wrapperAlignY = contentAlignY\n } else if (direction) {\n wrapperDirection = direction\n } else {\n wrapperDirection = defaultDirection\n }\n\n return { wrapperDirection, wrapperAlignX, wrapperAlignY }\n }, [\n isSimpleElement,\n contentDirection,\n contentAlignX,\n contentAlignY,\n alignX,\n alignY,\n direction,\n ])\n\n // --------------------------------------------------------\n // common wrapper props\n // --------------------------------------------------------\n const WRAPPER_PROPS = {\n ref: ref || innerRef,\n extendCss: css,\n tag,\n block,\n direction: wrapperDirection,\n alignX: wrapperAlignX,\n alignY: wrapperAlignY,\n as: undefined, // reset styled-components `as` prop\n }\n\n // --------------------------------------------------------\n // return simple/empty element like input or image etc.\n // --------------------------------------------------------\n if (shouldBeEmpty) {\n return <Wrapper {...props} {...WRAPPER_PROPS} />\n }\n\n const contentRenderOutput = renderContent(CHILDREN)\n\n return (\n <Wrapper {...props} {...WRAPPER_PROPS} isInline={isInline}>\n {beforeContent && (\n <Content\n tag={SUB_TAG}\n contentType=\"before\"\n parentDirection={wrapperDirection}\n extendCss={beforeContentCss}\n direction={beforeContentDirection}\n alignX={beforeContentAlignX}\n alignY={beforeContentAlignY}\n equalCols={equalCols}\n gap={gap}\n >\n {renderContent(beforeContent)}\n </Content>\n )}\n\n {isSimpleElement ? (\n contentRenderOutput\n ) : (\n <Content\n tag={SUB_TAG}\n contentType=\"content\"\n parentDirection={wrapperDirection}\n extendCss={contentCss}\n direction={contentDirection}\n alignX={contentAlignX}\n alignY={contentAlignY}\n equalCols={equalCols}\n >\n {contentRenderOutput}\n </Content>\n )}\n\n {afterContent && (\n <Content\n tag={SUB_TAG}\n contentType=\"after\"\n parentDirection={wrapperDirection}\n extendCss={afterContentCss}\n direction={afterContentDirection}\n alignX={afterContentAlignX}\n alignY={afterContentAlignY}\n equalCols={equalCols}\n gap={gap}\n >\n {renderContent(afterContent)}\n </Content>\n )}\n </Wrapper>\n )\n }\n)\n\nconst name = `${PKG_NAME}/Element` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","/* eslint-disable no-param-reassign */\nimport React, { createRef } from 'react'\nimport { get } from '@vitus-labs/core'\nimport type { SimpleHoc } from '~/types'\n\nconst isNumber = (a: unknown, b: unknown) =>\n Number.isInteger(a) && Number.isInteger(b)\n\nconst types = {\n height: 'offsetHeight',\n width: 'offsetWidth',\n}\n\ntype Calculate = ({\n beforeContent,\n afterContent,\n}: {\n beforeContent: HTMLElement\n afterContent: HTMLElement\n}) => (type: 'height' | 'width') => void\n\nconst calculate: Calculate =\n ({ beforeContent, afterContent }) =>\n (type: keyof typeof types) => {\n const beforeContentSize = get(beforeContent, types[type])\n const afterContentSize = get(afterContent, types[type])\n\n if (isNumber(beforeContentSize, afterContentSize)) {\n if (beforeContentSize > afterContentSize) {\n beforeContent.style[type] = `${beforeContentSize}px`\n afterContent.style[type] = `${beforeContentSize}px`\n } else {\n beforeContent.style[type] = `${afterContentSize}px`\n afterContent.style[type] = `${afterContentSize}px`\n }\n }\n }\n\ntype Props = Partial<{\n equalBeforeAfter: boolean\n vertical?: boolean\n afterContent?: React.ReactNode\n beforeContent?: React.ReactNode\n}>\n\nconst withEqualBeforeAfter: SimpleHoc<Props> = (WrappedComponent) => {\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n const Enhanced = (props) => {\n const { equalBeforeAfter, vertical, afterContent, beforeContent, ...rest } =\n props\n const elementRef = createRef<HTMLElement>()\n\n const calculateSize = () => {\n const beforeContent = get(elementRef, 'current.children[0]')\n const afterContent = get(elementRef, 'current.children[2]')\n const updateElement = calculate({ beforeContent, afterContent })\n\n if (vertical) updateElement('height')\n else updateElement('width')\n }\n\n if (equalBeforeAfter) calculateSize()\n\n return (\n <WrappedComponent\n {...rest}\n afterContent={afterContent}\n beforeContent={beforeContent}\n ref={elementRef}\n />\n )\n }\n\n Enhanced.displayName = `withEqualSizeBeforeAfter(${displayName})`\n\n return Enhanced\n}\n\nexport default withEqualBeforeAfter\n","import React, {\n Children,\n FC,\n ReactNodeArray,\n useCallback,\n useMemo,\n} from 'react'\nimport { isFragment } from 'react-is'\nimport { renderContent, isEmpty } from '@vitus-labs/core'\nimport type { Props, DataArrayObject, ExtendedProps } from './types'\n\nconst RESERVED_PROPS = [\n 'children',\n 'component',\n 'wrapComponent',\n 'data',\n 'itemKey',\n 'valueName',\n 'itemProps',\n 'wrapProps',\n] as const\n\ntype AttachItemProps = ({\n i,\n length,\n}: {\n i: number\n length: number\n}) => ExtendedProps\n\nconst attachItemProps: AttachItemProps = ({\n i,\n length,\n}: {\n i: number\n length: number\n}) => {\n const position = i + 1\n\n return {\n index: i,\n first: position === 1,\n last: position === length,\n odd: position % 2 === 1,\n even: position % 2 === 0,\n position,\n }\n}\n\ntype Static = {\n isIterator: true\n RESERVED_PROPS: typeof RESERVED_PROPS\n}\n\nconst component: FC<Props> & Static = (props: Props) => {\n const {\n itemKey,\n valueName,\n children,\n component,\n data,\n wrapComponent: Wrapper,\n wrapProps,\n itemProps,\n } = props\n\n const renderedElement = renderContent\n\n const injectItemProps = useMemo(\n () => (typeof itemProps === 'function' ? itemProps : () => itemProps),\n [itemProps]\n )\n\n const injectWrapItemProps = useMemo(\n () => (typeof wrapProps === 'function' ? wrapProps : () => wrapProps),\n [wrapProps]\n )\n\n const getKey = useCallback((item: string | number, index) => {\n if (typeof itemKey === 'function') return itemKey(item, index)\n\n return index\n }, [])\n\n const renderChild = (child, total = 1, i = 0) => {\n const extendedProps = attachItemProps({\n i,\n length: total,\n })\n\n const finalItemProps = itemProps ? injectItemProps({}, extendedProps) : {}\n const finalWrapProps = wrapProps\n ? injectWrapItemProps({}, extendedProps)\n : {}\n\n // if no props extension is required, just return children\n if (!itemProps && !Wrapper) return child\n\n if (Wrapper) {\n return (\n <Wrapper key={i} {...finalWrapProps}>\n {renderedElement(child, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderContent(child, {\n key: i,\n ...finalItemProps,\n })\n }\n\n // --------------------------------------------------------\n // render children\n // --------------------------------------------------------\n const renderChildren = () => {\n if (!children) return null\n\n // if children is Array\n if (Array.isArray(children)) {\n return Children.map(children, (item, i) =>\n renderChild(item, children.length, i)\n )\n }\n\n // if children is Fragment\n if (isFragment(children)) {\n const fragmentChildren = children.props.children as ReactNodeArray\n\n return fragmentChildren.map((item, i) =>\n renderChild(item, fragmentChildren.length, i)\n )\n }\n\n // if single child\n return renderChild(children)\n }\n\n // --------------------------------------------------------\n // render array of strings or numbers\n // --------------------------------------------------------\n const renderSimpleArray = (data) => {\n const { length } = data\n\n // if the data array is empty\n if (data.length === 0) return null\n\n return data.map((item, i) => {\n const key = getKey(item, i)\n const keyName = valueName || 'children'\n const extendedProps = attachItemProps({\n i,\n length,\n })\n\n const finalItemProps = {\n ...(itemProps\n ? injectItemProps({ [keyName]: item }, extendedProps)\n : {}),\n [keyName]: item,\n }\n\n const finalWrapProps = wrapProps\n ? injectWrapItemProps({ [keyName]: item }, extendedProps)\n : {}\n\n if (Wrapper) {\n return (\n <Wrapper key={key} {...finalWrapProps}>\n {renderedElement(component, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderedElement(component, { key, ...finalItemProps })\n })\n }\n\n // --------------------------------------------------------\n // render array of objects\n // --------------------------------------------------------\n const renderComplexArray = (data) => {\n const renderData = data.filter((item) => !isEmpty(item)) // remove empty objects\n const { length } = renderData\n\n // if it's empty\n if (renderData.length === 0) return null\n\n const getKey = (item: DataArrayObject, index) => {\n if (!itemKey) return item.key || item.id || item.itemId || index\n if (typeof itemKey === 'function') return itemKey(item, index)\n if (typeof itemKey === 'string') return item[itemKey]\n\n return index\n }\n\n return renderData.map((item, i) => {\n const { component: itemComponent, ...restItem } = item as DataArrayObject\n const renderItem = itemComponent || component\n const key = getKey(restItem, i)\n const extendedProps = attachItemProps({\n i,\n length,\n })\n\n const finalItemProps = {\n ...(itemProps ? injectItemProps(item, extendedProps) : {}),\n ...restItem,\n }\n\n const finalWrapProps = wrapProps\n ? injectWrapItemProps(item, extendedProps)\n : {}\n\n if (Wrapper && !itemComponent) {\n return (\n <Wrapper key={key} {...finalWrapProps}>\n {renderedElement(renderItem, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderedElement(renderItem, { key, ...finalItemProps })\n })\n }\n\n // --------------------------------------------------------\n // render list items\n // --------------------------------------------------------\n const renderItems = () => {\n // --------------------------------------------------------\n // children have priority over props component + data\n // --------------------------------------------------------\n if (children) return renderChildren()\n\n // --------------------------------------------------------\n // render props component + data\n // --------------------------------------------------------\n if (component && Array.isArray(data)) {\n const clearData = data.filter(\n (item) => item !== null && item !== undefined\n )\n\n const isSimpleArray = clearData.every(\n (item) => typeof item === 'string' || typeof item === 'number'\n )\n\n if (isSimpleArray) return renderSimpleArray(clearData)\n\n const isComplexArray = clearData.every((item) => typeof item === 'object')\n\n if (isComplexArray) return renderComplexArray(clearData)\n\n return null\n }\n\n // --------------------------------------------------------\n // if there are no children or valid react component and data as an array,\n // return null to prevent error\n // --------------------------------------------------------\n return null\n }\n\n return renderItems()\n}\n\ncomponent.isIterator = true\ncomponent.RESERVED_PROPS = RESERVED_PROPS\n\nexport default component\n","import React, { forwardRef } from 'react'\nimport { pick, omit } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport Element, { VLElement } from '~/Element'\nimport Iterator, { Props as IteratorProps } from '~/helpers/Iterator'\nimport type { MergeTypes } from '~/types'\n\nexport type Props = MergeTypes<\n [\n IteratorProps,\n {\n rootElement?: boolean\n label: never\n content: never\n }\n ]\n>\n\nconst component: VLElement<Props> = forwardRef(\n ({ rootElement = false, ...props }, ref) => {\n const renderedList = <Iterator {...pick(props, Iterator.RESERVED_PROPS)} />\n\n if (!rootElement) return renderedList\n\n return (\n <Element ref={ref} {...omit(props, Iterator.RESERVED_PROPS)}>\n {renderedList}\n </Element>\n )\n }\n)\n\nconst name = `${PKG_NAME}/List` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import React, { useState, useEffect } from 'react'\nimport type { SimpleHoc } from '~/types'\n\nconst RESERVED_KEYS = [\n 'type',\n 'activeItems',\n 'itemProps',\n 'activeItemRequired',\n] as const\n\ntype Key = string | number\ntype MultipleMap = Map<Key, boolean>\n\ntype ItemPropsData = {\n key: Key\n first: boolean\n last: boolean\n odd: boolean\n even: boolean\n position: number\n}\n\ntype Props = {\n type?: 'single' | 'multi'\n activeItemRequired?: boolean\n activeItems?: Key | Array<string | number>\n itemProps?:\n | Record<string, unknown>\n | ((props: Record<string, unknown>) => Record<string, unknown>)\n}\n\nconst component: SimpleHoc<Props> = (WrappedComponent) => {\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n const Enhanced = (props) => {\n const {\n type = 'single',\n activeItemRequired,\n activeItems,\n itemProps = {},\n ...rest\n } = props\n\n type InitActiveItems = () => Key | MultipleMap | undefined\n const initActiveItems: InitActiveItems = () => {\n if (type === 'single') {\n if (Array.isArray(activeItems)) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Iterator is type of single. activeItems cannot be an array.'\n )\n } else {\n return activeItems\n }\n } else if (type === 'multi') {\n const activeItemsHelper = Array.isArray(activeItems)\n ? activeItems\n : [activeItems]\n\n return new Map(activeItemsHelper.map((id) => [id, true]))\n }\n\n return undefined\n }\n\n const [innerActiveItems, setActiveItems] = useState(initActiveItems())\n\n const countActiveItems = (data) => {\n let result = 0\n\n data.forEach((value) => {\n if (value) result += 1\n })\n\n return result\n }\n\n const updateItemState = (key: Key) => {\n if (type === 'single') {\n setActiveItems((prevState) => {\n if (activeItemRequired) return key\n if (prevState === key) return undefined\n\n return key\n })\n } else if (type === 'multi') {\n setActiveItems((prevState: MultipleMap) => {\n // TODO: add conditional type to fix this\n const activeItems = new Map(prevState)\n\n if (\n activeItemRequired &&\n activeItems.get(key) &&\n countActiveItems(activeItems) === 1\n ) {\n return activeItems\n }\n\n activeItems.set(key, !activeItems.get(key))\n return activeItems\n })\n } else {\n setActiveItems(undefined)\n }\n }\n\n const handleItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const updateAllItemsState = (status) => {\n if (!status) {\n setActiveItems(new Map())\n }\n }\n\n const setItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const unsetItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const toggleItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n // const setAllItemsActive = () => {\n // updateAllItemsState(true)\n // }\n\n const unsetAllItemsActive = () => {\n updateAllItemsState(false)\n }\n\n const isItemActive = (key: Key): boolean => {\n if (!innerActiveItems) return false\n if (type === 'single') return innerActiveItems === key\n if (type === 'multi' && innerActiveItems instanceof Map) {\n return !!innerActiveItems.get(key)\n }\n return false\n }\n\n const attachMultipleProps = {\n unsetAllItemsActive,\n }\n\n const attachItemProps = (props: ItemPropsData) => {\n const { key } = props\n\n const defaultItemProps =\n typeof itemProps === 'object' ? itemProps : itemProps(props)\n\n const result = {\n ...defaultItemProps,\n active: isItemActive(key),\n handleItemActive: () => handleItemActive(key),\n setItemActive,\n unsetItemActive,\n toggleItemActive,\n ...(type === 'multi' ? attachMultipleProps : {}),\n }\n\n return result\n }\n\n useEffect(() => {\n if (type === 'single' && Array.isArray(activeItems)) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(\n 'When type=`single` activeItems must be a single value, not an array'\n )\n }\n }\n }, [type, activeItems])\n\n return <WrappedComponent {...rest} itemProps={attachItemProps} />\n }\n Enhanced.RESERVED_KEYS = RESERVED_KEYS\n Enhanced.displayName = `@vitus-labs/elements/List/withActiveState(${displayName})`\n\n return Enhanced\n}\n\nexport default component\n","import { useState, useEffect, ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { PKG_NAME } from '~/constants'\nimport type { VLComponent } from '~/types'\n\nexport type Props = {\n position?: HTMLElement\n children: ReactNode\n tag?: string\n}\n\nconst component: VLComponent<Props> = ({\n position = __BROWSER__ ? document.body : undefined,\n tag = 'div',\n children,\n}: Props) => {\n const [element] = useState(\n __BROWSER__ ? document.createElement(tag) : undefined\n )\n\n if (!position || !element) return null\n\n useEffect(() => {\n if (__SERVER__) return undefined\n position.appendChild(element)\n\n return () => {\n position.removeChild(element)\n }\n }, [])\n\n return createPortal(children, element)\n}\n\nconst name = `${PKG_NAME}/Portal` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import React, { FC, createContext, useContext } from 'react'\n\ntype Context = {\n blocked: boolean\n setBlocked: () => void\n setUnblocked: () => void\n}\n\nconst context = createContext<Context>({} as Context)\n\nconst { Provider } = context\n\nexport const useOverlayContext = () => useContext(context)\n\nconst component: FC<Context> = ({\n children,\n blocked,\n setBlocked,\n setUnblocked,\n}) => (\n <Provider value={{ blocked, setBlocked, setUnblocked }}>{children}</Provider>\n)\n\nexport default component\n","/* eslint-disable no-console */\nimport { useRef, useState, useEffect, useContext, useCallback } from 'react'\nimport { throttle, context } from '@vitus-labs/core'\nimport { value } from '@vitus-labs/unistyle'\nimport { useOverlayContext } from './context'\n\ntype OverlayPosition = {\n position: 'absolute' | 'fixed' | 'static' | 'relative'\n top?: number | string\n bottom?: number | string\n left?: number | string\n right?: number | string\n}\n\ntype Align = 'bottom' | 'top' | 'left' | 'bottom' | 'right'\ntype AlignX = 'left' | 'center' | 'right'\ntype AlignY = 'bottom' | 'top' | 'center'\n\nexport type UseOverlayProps = {\n isOpen?: boolean\n openOn?: 'click' | 'hover' | 'manual'\n closeOn?:\n | 'click'\n | 'clickOnTrigger'\n | 'clickOutsideContent'\n | 'hover'\n | 'manual'\n type?: 'dropdown' | 'tooltip' | 'popover' | 'modal'\n position?: 'absolute' | 'fixed' | 'relative' | 'static'\n align?: Align\n alignX?: AlignX\n alignY?: AlignY\n offsetX?: number\n offsetY?: number\n throttleDelay?: number\n customScrollListener?: HTMLElement | null\n closeOnEsc?: boolean\n disabled?: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nexport default ({\n isOpen = false,\n openOn = 'click', // click | hover\n closeOn = 'click', // click | 'clickOnTrigger' | 'clickOutsideContent' | hover | manual\n type = 'dropdown', // dropdown | tooltip | popover | modal\n position = 'fixed', // absolute | fixed | relative | static\n align = 'bottom', // * main align prop * top | left | bottom | right\n alignX = 'left', // left | center | right\n alignY = 'bottom', // top | center | bottom\n offsetX = 0,\n offsetY = 0,\n throttleDelay = 200,\n customScrollListener,\n closeOnEsc = true,\n disabled,\n onOpen,\n onClose,\n}: UseOverlayProps) => {\n const { rootSize } = useContext(context) as { rootSize: number }\n const ctx = useOverlayContext()\n\n const [blocked, handleBlocked] = useState(false)\n const [active, handleActive] = useState(isOpen)\n\n const triggerRef = useRef<HTMLElement>()\n const contentRef = useRef<HTMLElement>()\n\n const setBlocked = useCallback(() => handleBlocked(true), [])\n const setUnblocked = useCallback(() => handleBlocked(false), [])\n\n const showContent = useCallback(() => {\n handleActive(true)\n }, [])\n\n const hideContent = useCallback(() => {\n handleActive(false)\n }, [])\n\n useEffect(() => {\n if (disabled) {\n hideContent()\n }\n }, [disabled])\n\n // calculate position on every position change state\n useEffect(() => {\n if (active) {\n // hack-ish way to correctly calculate position for the first time\n // without calling it twice the posittion is somehow wrong\n calculateContentPosition()\n calculateContentPosition()\n }\n }, [active, align, alignX, alignX])\n\n // if an Overlay has an Overlay child, this will prevent closing parent child\n // + calculate correct position when an Overlay is opened\n useEffect(() => {\n if (active) {\n if (onOpen) onOpen()\n if (ctx && ctx.setBlocked) ctx.setBlocked()\n } else {\n if (onClose) onClose()\n if (ctx && ctx.setUnblocked) ctx.setUnblocked()\n }\n }, [active, onOpen, onClose])\n\n // handles calculating correct position of content\n // on document events (or custom scroll if set)\n useEffect(() => {\n if (!active) return undefined\n\n window.addEventListener('resize', handleContentPosition, false)\n window.addEventListener('scroll', handleContentPosition, false)\n\n if (customScrollListener) {\n customScrollListener.addEventListener(\n 'scroll',\n handleContentPosition,\n false\n )\n }\n\n return () => {\n window.removeEventListener('resize', handleContentPosition, false)\n window.removeEventListener('scroll', handleContentPosition, false)\n\n if (customScrollListener) {\n customScrollListener.removeEventListener(\n 'scroll',\n handleContentPosition,\n false\n )\n }\n }\n }, [active, customScrollListener])\n\n // make sure scrolling is blocked in case of modal windows or when\n // customScroll is set\n useEffect(() => {\n const shouldSetOverflow = __BROWSER__ && type === 'modal' && document.body\n\n if (active) {\n if (customScrollListener && closeOn !== 'hover') {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = 'hidden'\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = 'hidden'\n }\n } else {\n if (customScrollListener) {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = ''\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = ''\n }\n }\n\n return () => {\n if (customScrollListener) {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = ''\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = ''\n }\n }\n }, [active, type, customScrollListener, closeOn])\n\n // only when content is active handle closing\n useEffect(() => {\n if (!active) return undefined\n\n window.addEventListener('scroll', handleVisibility, false)\n\n if (customScrollListener) {\n customScrollListener.addEventListener('scroll', handleVisibility, false)\n }\n\n if (closeOnEsc) {\n window.addEventListener('keydown', handleEscKey, false)\n }\n\n return () => {\n window.removeEventListener('scroll', handleVisibility, false)\n\n if (customScrollListener) {\n customScrollListener.removeEventListener(\n 'scroll',\n handleVisibility,\n false\n )\n }\n\n if (closeOnEsc) {\n window.removeEventListener('keydown', handleEscKey, false)\n }\n }\n }, [active, customScrollListener, closeOnEsc])\n\n useEffect(() => {\n // enable overlay manipulation only when the state is NOT blocked=true\n // nor in disabled state\n if (blocked || disabled) return undefined\n\n if (\n openOn === 'click' ||\n closeOn === 'click' ||\n closeOn === 'clickOnTrigger' ||\n closeOn === 'clickOutsideContent'\n ) {\n window.addEventListener('click', handleClick, false)\n }\n\n if (openOn === 'hover' || closeOn === 'hover') {\n window.addEventListener('mousemove', handleVisibility, false)\n }\n\n return () => {\n window.removeEventListener('click', handleClick, false)\n window.removeEventListener('mousemove', handleVisibility, false)\n }\n }, [openOn, closeOn, blocked, disabled, active])\n\n const isNodeOrChild = (ref) => (e) => {\n if (e && e.target && ref.current) {\n return ref.current.contains(e.target) || e.target === ref.current\n }\n\n return false\n }\n\n const isTrigger = isNodeOrChild(triggerRef)\n const isContent = isNodeOrChild(contentRef)\n\n const calculateContentPosition = () => {\n if (!active) return\n if (!triggerRef.current || !contentRef.current) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('Cannot access `ref` of trigger or content component.')\n }\n\n return\n }\n\n const overlayPosition: OverlayPosition = {\n position,\n }\n\n const t = triggerRef.current.getBoundingClientRect()\n const c = contentRef.current.getBoundingClientRect()\n\n if (['dropdown', 'tooltip', 'popover'].includes(type)) {\n // align is top or bottom\n if (['top', 'bottom'].includes(align)) {\n // axe Y position\n // (assigned as top position)\n const top = t.top - offsetY - c.height\n const bottom = t.bottom + offsetY\n\n // axe X position\n // content position to trigger position\n // (assigned as left position)\n const left = t.left + offsetX\n const right = t.right - offsetX - c.width\n\n // calculate possible position\n const isTop = top >= 0 // represents window.height = 0\n const isBottom = bottom + c.height <= window.innerHeight\n const isLeft = left + c.width <= window.innerWidth\n const isRight = right >= 0 // represents window.width = 0\n\n if (align === 'top') {\n overlayPosition.top = isTop ? top : bottom\n } else if (align === 'bottom') {\n overlayPosition.top = isBottom ? bottom : top\n }\n\n // left\n if (alignX === 'left') {\n overlayPosition.left = isLeft ? left : right\n }\n // center\n else if (alignX === 'center') {\n const center = t.left + (t.right - t.left) / 2 - c.width / 2\n const isCenteredLeft = center >= 0\n const isCenteredRight = center + c.width <= window.innerWidth\n\n if (isCenteredLeft && isCenteredRight) {\n overlayPosition.left = center\n } else if (isCenteredLeft) {\n overlayPosition.left = left\n } else if (isCenteredRight) {\n overlayPosition.left = right\n }\n }\n // right\n else if (alignX === 'right') {\n overlayPosition.left = isRight ? right : left\n }\n }\n\n // align is left or right\n else if (['left', 'right'].includes(align)) {\n // axe X position\n // (assigned as left position)\n const left = t.left - offsetX - c.width\n const right = t.right + offsetX\n\n // axe Y position\n // content position to trigger position\n // (assigned as top position)\n const top = t.top + offsetY\n const bottom = t.bottom - offsetY - c.height\n\n const isLeft = left >= 0\n const isRight = right + c.width <= window.innerWidth\n const isTop = top + c.height <= window.innerHeight\n const isBottom = bottom >= 0\n\n if (align === 'left') {\n overlayPosition.left = isLeft ? left : right\n } else if (align === 'right') {\n overlayPosition.left = isRight ? right : left\n }\n\n // top\n if (alignY === 'top') {\n overlayPosition.top = isTop ? top : bottom\n }\n // center\n else if (alignY === 'center') {\n const center = t.top + (t.bottom - t.top) / 2 - c.height / 2\n const isCenteredTop = center >= 0\n const isCenteredBottom = center + c.height <= window.innerHeight\n\n if (isCenteredTop && isCenteredBottom) {\n overlayPosition.top = center\n } else if (isCenteredTop) {\n overlayPosition.top = top\n } else if (isCenteredBottom) {\n overlayPosition.top = bottom\n }\n }\n // bottom\n else if (alignY === 'bottom') {\n overlayPosition.top = isBottom ? bottom : top\n }\n }\n }\n\n // modal type\n else if (type === 'modal') {\n switch (alignX) {\n case 'right':\n overlayPosition.right = offsetX\n break\n case 'left':\n overlayPosition.left = offsetX\n break\n case 'center':\n default:\n overlayPosition.left = window.innerWidth / 2 - c.width / 2\n break\n }\n\n switch (alignY) {\n case 'top':\n overlayPosition.top = offsetY\n break\n case 'center':\n overlayPosition.top = window.innerHeight / 2 - c.height / 2\n break\n case 'bottom':\n default:\n overlayPosition.bottom = offsetY\n break\n }\n }\n\n const calc = (param) => value(param, rootSize) as string\n\n // ADD POSITION STYLES TO CONTENT\n contentRef.current.style.position = position\n contentRef.current.style.top = calc(overlayPosition.top)\n contentRef.current.style.bottom = calc(overlayPosition.bottom)\n contentRef.current.style.left = calc(overlayPosition.left)\n contentRef.current.style.right = calc(overlayPosition.right)\n }\n\n const handleVisibilityByEventType = (e) => {\n if (!active) {\n if (\n (openOn === 'hover' && e.type === 'mousemove') ||\n (openOn === 'click' && e.type === 'click')\n ) {\n if (isTrigger(e)) {\n showContent()\n }\n }\n }\n\n if (active) {\n if (closeOn === 'hover' && e.type === 'mousemove') {\n if (!isTrigger(e) && !isContent(e)) {\n hideContent()\n }\n }\n\n if (closeOn === 'hover' && e.type === 'scroll') {\n hideContent()\n }\n\n if (closeOn === 'click' && e.type === 'click') {\n hideContent()\n }\n\n if (closeOn === 'clickOnTrigger' && e.type === 'click') {\n if (isTrigger(e)) {\n hideContent()\n }\n }\n\n if (closeOn === 'clickOutsideContent' && e.type === 'click') {\n if (!isContent(e)) {\n hideContent()\n }\n }\n }\n }\n const handleContentPosition = throttle(\n calculateContentPosition,\n throttleDelay\n )\n\n const handleClick = handleVisibilityByEventType\n const handleVisibility = throttle(handleVisibilityByEventType, throttleDelay)\n\n const handleEscKey = (e: any) => {\n if (e.key === 'Escape') {\n hideContent()\n }\n }\n\n return {\n triggerRef,\n contentRef,\n active,\n align,\n alignX,\n alignY,\n showContent,\n hideContent,\n blocked,\n setBlocked,\n setUnblocked,\n }\n}\n","import React, { useMemo } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport Portal from '~/Portal'\nimport type { VLComponent, Content } from '~/types'\nimport useOverlay, { UseOverlayProps } from './useOverlay'\nimport Provider from './context'\n\ntype Align = 'bottom' | 'top' | 'left' | 'bottom' | 'right'\ntype AlignX = 'left' | 'center' | 'right'\ntype AlignY = 'bottom' | 'top' | 'center'\n\ntype TriggerRenderer = (\n props: Partial<{\n active: boolean\n showContent: () => void\n hideContent: () => void\n }>\n) => Content\n\ntype ContentRenderer = (\n props: Partial<{\n active: boolean\n showContent: () => void\n hideContent: () => void\n align: Align\n alignX: AlignX\n alignY: AlignY\n }>\n) => Content\n\nexport type Props = {\n children: Content | TriggerRenderer\n trigger: Content | ContentRenderer\n DOMLocation?: HTMLElement\n triggerRefName?: string\n contentRefName?: string\n} & UseOverlayProps\n\nconst component: VLComponent<Props> = ({\n children,\n trigger,\n DOMLocation,\n triggerRefName = 'ref',\n contentRefName = 'ref',\n ...props\n}) => {\n const {\n active,\n triggerRef,\n contentRef,\n showContent,\n hideContent,\n align,\n alignX,\n alignY,\n ...ctx\n } = useOverlay(props)\n\n const { openOn, closeOn } = props\n\n const passHandlers = useMemo(\n () =>\n openOn === 'manual' ||\n closeOn === 'manual' ||\n closeOn === 'clickOutsideContent',\n [openOn, closeOn]\n )\n\n return (\n <>\n {renderContent(trigger, {\n [triggerRefName]: triggerRef,\n active,\n ...(passHandlers ? { showContent, hideContent } : {}),\n })}\n\n {__BROWSER__ && active && (\n <Portal position={DOMLocation}>\n <Provider {...ctx}>\n {renderContent(children, {\n [contentRefName]: contentRef,\n active,\n align,\n alignX,\n alignY,\n ...(passHandlers ? { showContent, hideContent } : {}),\n })}\n </Provider>\n </Portal>\n )}\n </>\n )\n}\n\nconst name = `${PKG_NAME}/Overlay` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import { config } from '@vitus-labs/core'\nimport { makeItResponsive, extendCss } from '@vitus-labs/unistyle'\n\nconst styles = ({ css, theme: t }) => css`\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nexport default config.styled(config.textComponent)`\n color: inherit;\n font-weight: normal;\n line-height: 1;\n\n ${makeItResponsive({\n key: '$text',\n styles,\n css: config.css,\n normalize: false,\n })};\n`\n","import React, { forwardRef, ReactNode } from 'react'\nimport type { HTMLTagsText } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport type { VLForwardedComponent, ExtendCss } from '~/types'\nimport Styled from './styled'\n\nexport type Props = Partial<{\n paragraph: boolean\n label: ReactNode\n children: ReactNode\n tag: HTMLTagsText\n extendCss: ExtendCss\n}>\n\nconst component: VLForwardedComponent<Props> & {\n isText?: true\n} = forwardRef(\n ({ paragraph, label, children, tag, extendCss, ...props }, ref) => {\n type RenderContent = (as?: any) => any\n const renderContent: RenderContent = (as = undefined) => (\n <Styled ref={ref} as={as} $text={{ extraStyles: extendCss }} {...props}>\n {children || label}\n </Styled>\n )\n\n // eslint-disable-next-line no-nested-ternary\n const finalTag = __WEB__ ? (paragraph ? 'p' : tag) : undefined\n\n return renderContent(finalTag)\n }\n)\n\nconst name = `${PKG_NAME}/Text` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\ncomponent.isText = true\n\nexport default component\n","import { ReactNode } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport type { VLComponent } from '~/types'\n\nexport type Props = {\n children: ReactNode\n className?: string | string[]\n style?: Record<string, unknown>\n}\n\nconst component: VLComponent<Props> = ({\n children,\n className = '',\n style = { color: 'blue' },\n}) => renderContent(children, { className, style })\n\nconst name = `${PKG_NAME}/Util` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n"],"names":["styles","component","Styled","Wrapper","Content","name","Iterator","Element","context"],"mappings":"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"}
1
+ {"version":3,"file":"vitus-labs-elements.module.js","sources":["../src/constants.ts","../src/helpers/Wrapper/constants.ts","../src/helpers/Wrapper/utils.ts","../src/helpers/Wrapper/styled.ts","../src/helpers/Wrapper/component.tsx","../src/helpers/Content/styled.ts","../src/helpers/Content/component.tsx","../src/Element/constants.ts","../src/Element/utils.ts","../src/Element/component.tsx","../src/Element/withEqualSizeBeforeAfter.tsx","../src/helpers/Iterator/component.tsx","../src/List/component.tsx","../src/List/withActiveState.tsx","../src/Portal/component.ts","../src/Overlay/context.tsx","../src/Overlay/useOverlay.tsx","../src/Overlay/component.tsx","../src/Text/styled.ts","../src/Text/component.tsx","../src/Util/component.tsx"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const PKG_NAME = '@vitus-labs/elements' as const\n","/* eslint-disable import/prefer-default-export */\n// https://stackoverflow.com/questions/35464067/flexbox-not-working-on-button-or-fieldset-elements\nexport const INLINE_ELEMENTS_FLEX_FIX = {\n button: true,\n fieldset: true,\n legend: true,\n}\n","/* eslint-disable import/prefer-default-export */\nimport { INLINE_ELEMENTS_FLEX_FIX } from './constants'\n\ntype IsWebFixNeeded = (tag: string) => boolean\nexport const isWebFixNeeded: IsWebFixNeeded = (tag) =>\n INLINE_ELEMENTS_FLEX_FIX[tag]\n","import { config } from '@vitus-labs/core'\nimport { alignContent, extendCss, makeItResponsive } from '@vitus-labs/unistyle'\n\nconst styles = ({ theme: t, css }) => css`\n ${__WEB__ &&\n t.alignY === 'block' &&\n css`\n height: 100%;\n `};\n\n ${alignContent({\n direction: t.direction,\n alignX: t.alignX,\n alignY: t.alignY,\n })};\n\n ${t.block &&\n css`\n align-self: stretch;\n `}\n\n ${__WEB__ &&\n css`\n ${({ $childFix }) =>\n !$childFix &&\n css`\n display: ${t.block ? 'flex' : 'inline-flex'};\n `};\n\n ${({ $parentFix }) =>\n $parentFix &&\n t.block &&\n css`\n flex-direction: column;\n width: 100%;\n `};\n `};\n\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nconst platformStyles = __WEB__ ? 'box-sizing: border-box;' : 'display: flex;'\n\nexport default config.styled(config.component)`\n position: relative;\n ${platformStyles};\n\n ${({ $childFix }) =>\n $childFix &&\n config.css`\n display: flex;\n flex: 1;\n width: 100%;\n height: 100%;\n `};\n\n ${makeItResponsive({\n key: '$element',\n styles,\n css: config.css,\n normalize: true,\n })};\n`\n","import React, { forwardRef, ReactNode } from 'react'\nimport type { StyledComponentPropsWithRef } from 'styled-components'\nimport type {\n Direction,\n AlignX,\n AlignY,\n ResponsiveBooltype,\n ExtendCss,\n} from '~/types'\nimport { isWebFixNeeded } from './utils'\nimport Styled from './styled'\n\ntype Reference = unknown\n\ntype Props = {\n children: ReactNode\n tag: StyledComponentPropsWithRef<any>\n block: ResponsiveBooltype\n isInline: boolean\n direction: Direction\n alignX: AlignX\n alignY: AlignY\n equalCols: ResponsiveBooltype\n extendCss: ExtendCss\n dangerouslySetInnerHTML: any\n}\n\nconst component = forwardRef<Reference, Partial<Props>>(\n (\n {\n children,\n tag,\n block,\n extendCss,\n direction,\n alignX,\n alignY,\n equalCols,\n isInline,\n ...props\n },\n ref\n ) => {\n const debugProps =\n process.env.NODE_ENV !== 'production'\n ? {\n 'data-vl-element': 'Element',\n }\n : {}\n\n const COMMON_PROPS = {\n ...props,\n ...debugProps,\n ref,\n as: tag,\n }\n\n const needsFix = __WEB__\n ? !props.dangerouslySetInnerHTML && tag && isWebFixNeeded(tag)\n : false\n\n // eslint-disable-next-line no-nested-ternary\n const asTag = __WEB__ ? (isInline ? 'span' : 'div') : undefined\n\n if (!needsFix || __NATIVE__) {\n return (\n <Styled\n {...COMMON_PROPS}\n $element={{\n block,\n direction,\n alignX,\n alignY,\n equalCols,\n extraStyles: extendCss,\n }}\n >\n {children}\n </Styled>\n )\n }\n\n return (\n <Styled\n {...COMMON_PROPS}\n $parentFix\n $element={{\n block,\n extraStyles: extendCss,\n }}\n >\n <Styled\n as={asTag}\n $childFix\n $element={{\n direction,\n alignX,\n alignY,\n equalCols,\n }}\n >\n {children}\n </Styled>\n </Styled>\n )\n }\n)\n\nexport default component\n","import { config } from '@vitus-labs/core'\nimport {\n makeItResponsive,\n alignContent,\n extendCss,\n value,\n} from '@vitus-labs/unistyle'\n\n// --------------------------------------------------------\n// calculate spacing between before / content / after\n// --------------------------------------------------------\nconst calculateGap = ({ direction, type, value, css }) => {\n if (!direction || !type) return undefined\n\n const data = {\n inline: {\n before: 'margin-right',\n after: 'margin-left',\n },\n rows: {\n before: 'margin-bottom',\n after: 'margin-top',\n },\n }\n\n const finalStyles = `${data[direction][type]}: ${value};`\n\n return css`\n ${finalStyles};\n `\n}\n\n// --------------------------------------------------------\n// calculations of styles to be rendered\n// --------------------------------------------------------\nconst styles = ({ css, theme: t, rootSize }) => css`\n ${alignContent({\n direction: t.direction,\n alignX: t.alignX,\n alignY: t.alignY,\n })};\n\n ${t.equalCols &&\n css`\n flex: 1;\n `};\n\n ${t.gap &&\n css`\n ${({ $contentType }) =>\n calculateGap({\n direction: t.parentDirection,\n type: $contentType,\n value: value(t.gap, rootSize),\n css,\n })}\n `};\n\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nexport default config.styled(config.component)`\n ${\n __WEB__ &&\n config.css`\n box-sizing: border-box;\n `\n };\n\n display: flex;\n align-self: stretch;\n flex-wrap: wrap;\n\n ${({ $contentType }) =>\n $contentType === 'content' &&\n config.css`\n flex: 1;\n `};\n\n ${makeItResponsive({\n key: '$element',\n styles,\n css: config.css,\n normalize: true,\n })};\n`\n","import React, { memo, VFC, ReactNode } from 'react'\nimport type { StyledComponentPropsWithRef } from 'styled-components'\nimport type {\n Direction,\n AlignX,\n AlignY,\n ResponsiveBooltype,\n Responsive,\n ExtendCss,\n} from '~/types'\nimport Styled from './styled'\n\ntype Props = {\n parentDirection: Direction\n gap: Responsive\n contentType: 'before' | 'content' | 'after'\n children: ReactNode\n tag: StyledComponentPropsWithRef<any>\n direction: Direction\n alignX: AlignX\n alignY: AlignY\n equalCols: ResponsiveBooltype\n extendCss: ExtendCss\n}\n\nconst component: VFC<Partial<Props>> = ({\n contentType,\n tag,\n parentDirection,\n direction,\n alignX,\n alignY,\n equalCols,\n gap,\n extendCss,\n ...props\n}) => {\n const debugProps =\n process.env.NODE_ENV !== 'production'\n ? {\n 'data-vl-element': contentType,\n }\n : {}\n\n return (\n <Styled\n as={tag}\n $contentType={contentType}\n $element={{\n parentDirection,\n direction,\n alignX,\n alignY,\n equalCols,\n gap,\n extraStyles: extendCss,\n }}\n {...debugProps}\n {...props}\n />\n )\n}\n\nexport default memo(component)\n","export const RESERVED_PROPS = [\n 'innerRef',\n 'tag',\n 'block',\n 'label',\n 'children',\n 'beforeContent',\n 'afterContent',\n\n 'equalCols',\n 'vertical',\n 'direction',\n 'alignX',\n 'alignY',\n\n 'css',\n 'contentCss',\n 'beforeContentCss',\n 'afterContentCss',\n\n 'contentDirection',\n 'contentAlignX',\n 'contentAlignY',\n\n 'beforeContentDirection',\n 'beforeContentAlignX',\n 'beforeContentAlignY',\n\n 'afterContentDirection',\n 'afterContentAlignX',\n 'afterContentAlignY',\n] as const\n\nexport const INLINE_ELEMENTS = {\n span: true,\n a: true,\n button: true,\n input: true,\n label: true,\n select: true,\n textarea: true,\n br: true,\n img: true,\n strong: true,\n small: true,\n code: true,\n b: true,\n big: true,\n i: true,\n tt: true,\n abbr: true,\n acronym: true,\n cite: true,\n dfn: true,\n em: true,\n kbd: true,\n samp: true,\n var: true,\n bdo: true,\n map: true,\n object: true,\n q: true,\n script: true,\n sub: true,\n sup: true,\n}\n\nexport const EMPTY_ELEMENTS = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n // 'meta': true,\n // 'param': true,\n source: true,\n track: true,\n wbr: true,\n}\n","import { INLINE_ELEMENTS, EMPTY_ELEMENTS } from './constants'\n\n// type Value<T = unknown> = T extends true ? 'rows' : 'inline'\n\n// type TransformVerticalProp = <\n// T extends boolean | Record<string, boolean> | Array<boolean>\n// >(\n// vertical: T\n// ) => T extends boolean\n// ? Value<T>\n// : T extends Record<string, boolean>\n// ? Record<keyof T, Value<T[keyof T]>>\n// : T extends Array<boolean>\n// ? Array<Value<T[number]>>\n// : T\n\n// export const transformVerticalProp: TransformVerticalProp = (vertical) => {\n// // eslint-disable-next-line @typescript-eslint/no-explicit-any\n// if (vertical == null) return undefined as any\n\n// const verticalType = typeof vertical\n\n// // vertical is a boolean value\n// if (verticalType === 'boolean') {\n// return vertical ? 'rows' : 'inline'\n// }\n\n// if (Array.isArray(vertical)) {\n// return (vertical as Array<boolean>).map((item) =>\n// item ? 'rows' : 'inline'\n// )\n// }\n\n// if (verticalType === 'object') {\n// return Object.keys(vertical).reduce((accumulator, item) => {\n// // eslint-disable-next-line no-param-reassign\n// accumulator[item] = vertical[item] ? 'rows' : 'inline'\n// return accumulator\n// }, {} as Record<string, 'rows' | 'inline'>)\n// }\n\n// return undefined\n// }\n\ntype GetValue = (tag?: string) => boolean\n\nexport const isInlineElement: GetValue = (tag) =>\n tag ? INLINE_ELEMENTS[tag] : false\n\nexport const getShouldBeEmpty: GetValue = (tag) =>\n tag ? EMPTY_ELEMENTS[tag] : false\n","import React, { forwardRef, useMemo } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport { Wrapper, Content } from '~/helpers'\nimport { isInlineElement, getShouldBeEmpty } from './utils'\nimport type { VLElement } from './types'\n\nconst defaultDirection = 'inline'\nconst defaultContentDirection = 'rows'\nconst defaultAlignX = 'left'\nconst defaultAlignY = 'center'\n\nconst component: VLElement = forwardRef(\n (\n {\n innerRef,\n tag,\n label,\n content,\n children,\n beforeContent,\n afterContent,\n\n block,\n equalCols,\n gap,\n\n direction,\n alignX = defaultAlignX,\n alignY = defaultAlignY,\n\n css,\n contentCss,\n beforeContentCss,\n afterContentCss,\n\n contentDirection = defaultContentDirection,\n contentAlignX = defaultAlignX,\n contentAlignY = defaultAlignY,\n\n beforeContentDirection = defaultDirection,\n beforeContentAlignX = defaultAlignX,\n beforeContentAlignY = defaultAlignY,\n\n afterContentDirection = defaultDirection,\n afterContentAlignX = defaultAlignX,\n afterContentAlignY = defaultAlignY,\n\n ...props\n },\n ref\n ) => {\n // --------------------------------------------------------\n // check if should render only single element\n // --------------------------------------------------------\n const shouldBeEmpty =\n !!props.dangerouslySetInnerHTML ||\n (__WEB__ && tag && getShouldBeEmpty(tag))\n\n // --------------------------------------------------------\n // if not single element, calculate values\n // --------------------------------------------------------\n const isSimpleElement = !beforeContent && !afterContent\n const CHILDREN = children || content || label\n\n const isInline = __WEB__ ? isInlineElement(tag) : false\n const SUB_TAG = __WEB__ && isInline ? 'span' : undefined\n\n // --------------------------------------------------------\n // direction & alignX & alignY calculations\n // --------------------------------------------------------\n const { wrapperDirection, wrapperAlignX, wrapperAlignY } = useMemo(() => {\n let wrapperDirection: typeof direction = direction\n let wrapperAlignX: typeof alignX = alignX\n let wrapperAlignY: typeof alignY = alignY\n\n if (isSimpleElement) {\n if (contentDirection) wrapperDirection = contentDirection\n if (contentAlignX) wrapperAlignX = contentAlignX\n if (contentAlignY) wrapperAlignY = contentAlignY\n } else if (direction) {\n wrapperDirection = direction\n } else {\n wrapperDirection = defaultDirection\n }\n\n return { wrapperDirection, wrapperAlignX, wrapperAlignY }\n }, [\n isSimpleElement,\n contentDirection,\n contentAlignX,\n contentAlignY,\n alignX,\n alignY,\n direction,\n ])\n\n // --------------------------------------------------------\n // common wrapper props\n // --------------------------------------------------------\n const WRAPPER_PROPS = {\n ref: ref || innerRef,\n extendCss: css,\n tag,\n block,\n direction: wrapperDirection,\n alignX: wrapperAlignX,\n alignY: wrapperAlignY,\n as: undefined, // reset styled-components `as` prop\n }\n\n // --------------------------------------------------------\n // return simple/empty element like input or image etc.\n // --------------------------------------------------------\n if (shouldBeEmpty) {\n return <Wrapper {...props} {...WRAPPER_PROPS} />\n }\n\n const contentRenderOutput = renderContent(CHILDREN)\n\n return (\n <Wrapper {...props} {...WRAPPER_PROPS} isInline={isInline}>\n {beforeContent && (\n <Content\n tag={SUB_TAG}\n contentType=\"before\"\n parentDirection={wrapperDirection}\n extendCss={beforeContentCss}\n direction={beforeContentDirection}\n alignX={beforeContentAlignX}\n alignY={beforeContentAlignY}\n equalCols={equalCols}\n gap={gap}\n >\n {renderContent(beforeContent)}\n </Content>\n )}\n\n {isSimpleElement ? (\n contentRenderOutput\n ) : (\n <Content\n tag={SUB_TAG}\n contentType=\"content\"\n parentDirection={wrapperDirection}\n extendCss={contentCss}\n direction={contentDirection}\n alignX={contentAlignX}\n alignY={contentAlignY}\n equalCols={equalCols}\n >\n {contentRenderOutput}\n </Content>\n )}\n\n {afterContent && (\n <Content\n tag={SUB_TAG}\n contentType=\"after\"\n parentDirection={wrapperDirection}\n extendCss={afterContentCss}\n direction={afterContentDirection}\n alignX={afterContentAlignX}\n alignY={afterContentAlignY}\n equalCols={equalCols}\n gap={gap}\n >\n {renderContent(afterContent)}\n </Content>\n )}\n </Wrapper>\n )\n }\n)\n\nconst name = `${PKG_NAME}/Element` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","/* eslint-disable no-param-reassign */\nimport React, { createRef } from 'react'\nimport { get } from '@vitus-labs/core'\nimport type { SimpleHoc } from '~/types'\n\nconst isNumber = (a: unknown, b: unknown) =>\n Number.isInteger(a) && Number.isInteger(b)\n\nconst types = {\n height: 'offsetHeight',\n width: 'offsetWidth',\n}\n\ntype Calculate = ({\n beforeContent,\n afterContent,\n}: {\n beforeContent: HTMLElement\n afterContent: HTMLElement\n}) => (type: 'height' | 'width') => void\n\nconst calculate: Calculate =\n ({ beforeContent, afterContent }) =>\n (type: keyof typeof types) => {\n const beforeContentSize = get(beforeContent, types[type])\n const afterContentSize = get(afterContent, types[type])\n\n if (isNumber(beforeContentSize, afterContentSize)) {\n if (beforeContentSize > afterContentSize) {\n beforeContent.style[type] = `${beforeContentSize}px`\n afterContent.style[type] = `${beforeContentSize}px`\n } else {\n beforeContent.style[type] = `${afterContentSize}px`\n afterContent.style[type] = `${afterContentSize}px`\n }\n }\n }\n\ntype Props = Partial<{\n equalBeforeAfter: boolean\n vertical?: boolean\n afterContent?: React.ReactNode\n beforeContent?: React.ReactNode\n}>\n\nconst withEqualBeforeAfter: SimpleHoc<Props> = (WrappedComponent) => {\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n const Enhanced = (props) => {\n const { equalBeforeAfter, vertical, afterContent, beforeContent, ...rest } =\n props\n const elementRef = createRef<HTMLElement>()\n\n const calculateSize = () => {\n const beforeContent = get(elementRef, 'current.children[0]')\n const afterContent = get(elementRef, 'current.children[2]')\n const updateElement = calculate({ beforeContent, afterContent })\n\n if (vertical) updateElement('height')\n else updateElement('width')\n }\n\n if (equalBeforeAfter) calculateSize()\n\n return (\n <WrappedComponent\n {...rest}\n afterContent={afterContent}\n beforeContent={beforeContent}\n ref={elementRef}\n />\n )\n }\n\n Enhanced.displayName = `withEqualSizeBeforeAfter(${displayName})`\n\n return Enhanced\n}\n\nexport default withEqualBeforeAfter\n","import React, {\n Children,\n FC,\n ReactNodeArray,\n useCallback,\n useMemo,\n} from 'react'\nimport { isFragment } from 'react-is'\nimport { renderContent, isEmpty } from '@vitus-labs/core'\nimport type { Props, DataArrayObject, ExtendedProps } from './types'\n\nconst RESERVED_PROPS = [\n 'children',\n 'component',\n 'wrapComponent',\n 'data',\n 'itemKey',\n 'valueName',\n 'itemProps',\n 'wrapProps',\n] as const\n\ntype AttachItemProps = ({\n i,\n length,\n}: {\n i: number\n length: number\n}) => ExtendedProps\n\nconst attachItemProps: AttachItemProps = ({\n i,\n length,\n}: {\n i: number\n length: number\n}) => {\n const position = i + 1\n\n return {\n index: i,\n first: position === 1,\n last: position === length,\n odd: position % 2 === 1,\n even: position % 2 === 0,\n position,\n }\n}\n\ntype Static = {\n isIterator: true\n RESERVED_PROPS: typeof RESERVED_PROPS\n}\n\nconst component: FC<Props> & Static = (props: Props) => {\n const {\n itemKey,\n valueName,\n children,\n component,\n data,\n wrapComponent: Wrapper,\n wrapProps,\n itemProps,\n } = props\n\n const renderedElement = renderContent\n\n const injectItemProps = useMemo(\n () => (typeof itemProps === 'function' ? itemProps : () => itemProps),\n [itemProps]\n )\n\n const injectWrapItemProps = useMemo(\n () => (typeof wrapProps === 'function' ? wrapProps : () => wrapProps),\n [wrapProps]\n )\n\n const getKey = useCallback((item: string | number, index) => {\n if (typeof itemKey === 'function') return itemKey(item, index)\n\n return index\n }, [])\n\n const renderChild = (child, total = 1, i = 0) => {\n const extendedProps = attachItemProps({\n i,\n length: total,\n })\n\n const finalItemProps = itemProps ? injectItemProps({}, extendedProps) : {}\n const finalWrapProps = wrapProps\n ? injectWrapItemProps({}, extendedProps)\n : {}\n\n // if no props extension is required, just return children\n if (!itemProps && !Wrapper) return child\n\n if (Wrapper) {\n return (\n <Wrapper key={i} {...finalWrapProps}>\n {renderedElement(child, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderContent(child, {\n key: i,\n ...finalItemProps,\n })\n }\n\n // --------------------------------------------------------\n // render children\n // --------------------------------------------------------\n const renderChildren = () => {\n if (!children) return null\n\n // if children is Array\n if (Array.isArray(children)) {\n return Children.map(children, (item, i) =>\n renderChild(item, children.length, i)\n )\n }\n\n // if children is Fragment\n if (isFragment(children)) {\n const fragmentChildren = children.props.children as ReactNodeArray\n\n return fragmentChildren.map((item, i) =>\n renderChild(item, fragmentChildren.length, i)\n )\n }\n\n // if single child\n return renderChild(children)\n }\n\n // --------------------------------------------------------\n // render array of strings or numbers\n // --------------------------------------------------------\n const renderSimpleArray = (data) => {\n const { length } = data\n\n // if the data array is empty\n if (data.length === 0) return null\n\n return data.map((item, i) => {\n const key = getKey(item, i)\n const keyName = valueName || 'children'\n const extendedProps = attachItemProps({\n i,\n length,\n })\n\n const finalItemProps = {\n ...(itemProps\n ? injectItemProps({ [keyName]: item }, extendedProps)\n : {}),\n [keyName]: item,\n }\n\n const finalWrapProps = wrapProps\n ? injectWrapItemProps({ [keyName]: item }, extendedProps)\n : {}\n\n if (Wrapper) {\n return (\n <Wrapper key={key} {...finalWrapProps}>\n {renderedElement(component, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderedElement(component, { key, ...finalItemProps })\n })\n }\n\n // --------------------------------------------------------\n // render array of objects\n // --------------------------------------------------------\n const renderComplexArray = (data) => {\n const renderData = data.filter((item) => !isEmpty(item)) // remove empty objects\n const { length } = renderData\n\n // if it's empty\n if (renderData.length === 0) return null\n\n const getKey = (item: DataArrayObject, index) => {\n if (!itemKey) return item.key || item.id || item.itemId || index\n if (typeof itemKey === 'function') return itemKey(item, index)\n if (typeof itemKey === 'string') return item[itemKey]\n\n return index\n }\n\n return renderData.map((item, i) => {\n const { component: itemComponent, ...restItem } = item as DataArrayObject\n const renderItem = itemComponent || component\n const key = getKey(restItem, i)\n const extendedProps = attachItemProps({\n i,\n length,\n })\n\n const finalItemProps = {\n ...(itemProps ? injectItemProps(item, extendedProps) : {}),\n ...restItem,\n }\n\n const finalWrapProps = wrapProps\n ? injectWrapItemProps(item, extendedProps)\n : {}\n\n if (Wrapper && !itemComponent) {\n return (\n <Wrapper key={key} {...finalWrapProps}>\n {renderedElement(renderItem, finalItemProps)}\n </Wrapper>\n )\n }\n\n return renderedElement(renderItem, { key, ...finalItemProps })\n })\n }\n\n // --------------------------------------------------------\n // render list items\n // --------------------------------------------------------\n const renderItems = () => {\n // --------------------------------------------------------\n // children have priority over props component + data\n // --------------------------------------------------------\n if (children) return renderChildren()\n\n // --------------------------------------------------------\n // render props component + data\n // --------------------------------------------------------\n if (component && Array.isArray(data)) {\n const clearData = data.filter(\n (item) => item !== null && item !== undefined\n )\n\n const isSimpleArray = clearData.every(\n (item) => typeof item === 'string' || typeof item === 'number'\n )\n\n if (isSimpleArray) return renderSimpleArray(clearData)\n\n const isComplexArray = clearData.every((item) => typeof item === 'object')\n\n if (isComplexArray) return renderComplexArray(clearData)\n\n return null\n }\n\n // --------------------------------------------------------\n // if there are no children or valid react component and data as an array,\n // return null to prevent error\n // --------------------------------------------------------\n return null\n }\n\n return renderItems()\n}\n\ncomponent.isIterator = true\ncomponent.RESERVED_PROPS = RESERVED_PROPS\n\nexport default component\n","import React, { forwardRef } from 'react'\nimport { pick, omit } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport Element, { VLElement } from '~/Element'\nimport Iterator, { Props as IteratorProps } from '~/helpers/Iterator'\nimport type { MergeTypes } from '~/types'\n\nexport type Props = MergeTypes<\n [\n IteratorProps,\n {\n rootElement?: boolean\n label: never\n content: never\n }\n ]\n>\n\nconst component: VLElement<Props> = forwardRef(\n ({ rootElement = false, ...props }, ref) => {\n const renderedList = <Iterator {...pick(props, Iterator.RESERVED_PROPS)} />\n\n if (!rootElement) return renderedList\n\n return (\n <Element ref={ref} {...omit(props, Iterator.RESERVED_PROPS)}>\n {renderedList}\n </Element>\n )\n }\n)\n\nconst name = `${PKG_NAME}/List` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import React, { useState, useEffect } from 'react'\nimport type { SimpleHoc } from '~/types'\n\nconst RESERVED_KEYS = [\n 'type',\n 'activeItems',\n 'itemProps',\n 'activeItemRequired',\n] as const\n\ntype Key = string | number\ntype MultipleMap = Map<Key, boolean>\n\ntype ItemPropsData = {\n key: Key\n first: boolean\n last: boolean\n odd: boolean\n even: boolean\n position: number\n}\n\ntype Props = {\n type?: 'single' | 'multi'\n activeItemRequired?: boolean\n activeItems?: Key | Array<string | number>\n itemProps?:\n | Record<string, unknown>\n | ((props: Record<string, unknown>) => Record<string, unknown>)\n}\n\nconst component: SimpleHoc<Props> = (WrappedComponent) => {\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component'\n\n const Enhanced = (props) => {\n const {\n type = 'single',\n activeItemRequired,\n activeItems,\n itemProps = {},\n ...rest\n } = props\n\n type InitActiveItems = () => Key | MultipleMap | undefined\n const initActiveItems: InitActiveItems = () => {\n if (type === 'single') {\n if (Array.isArray(activeItems)) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Iterator is type of single. activeItems cannot be an array.'\n )\n } else {\n return activeItems\n }\n } else if (type === 'multi') {\n const activeItemsHelper = Array.isArray(activeItems)\n ? activeItems\n : [activeItems]\n\n return new Map(activeItemsHelper.map((id) => [id, true]))\n }\n\n return undefined\n }\n\n const [innerActiveItems, setActiveItems] = useState(initActiveItems())\n\n const countActiveItems = (data) => {\n let result = 0\n\n data.forEach((value) => {\n if (value) result += 1\n })\n\n return result\n }\n\n const updateItemState = (key: Key) => {\n if (type === 'single') {\n setActiveItems((prevState) => {\n if (activeItemRequired) return key\n if (prevState === key) return undefined\n\n return key\n })\n } else if (type === 'multi') {\n setActiveItems((prevState: MultipleMap) => {\n // TODO: add conditional type to fix this\n const activeItems = new Map(prevState)\n\n if (\n activeItemRequired &&\n activeItems.get(key) &&\n countActiveItems(activeItems) === 1\n ) {\n return activeItems\n }\n\n activeItems.set(key, !activeItems.get(key))\n return activeItems\n })\n } else {\n setActiveItems(undefined)\n }\n }\n\n const handleItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const updateAllItemsState = (status) => {\n if (!status) {\n setActiveItems(new Map())\n }\n }\n\n const setItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const unsetItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n const toggleItemActive = (key: Key) => {\n updateItemState(key)\n }\n\n // const setAllItemsActive = () => {\n // updateAllItemsState(true)\n // }\n\n const unsetAllItemsActive = () => {\n updateAllItemsState(false)\n }\n\n const isItemActive = (key: Key): boolean => {\n if (!innerActiveItems) return false\n if (type === 'single') return innerActiveItems === key\n if (type === 'multi' && innerActiveItems instanceof Map) {\n return !!innerActiveItems.get(key)\n }\n return false\n }\n\n const attachMultipleProps = {\n unsetAllItemsActive,\n }\n\n const attachItemProps = (props: ItemPropsData) => {\n const { key } = props\n\n const defaultItemProps =\n typeof itemProps === 'object' ? itemProps : itemProps(props)\n\n const result = {\n ...defaultItemProps,\n active: isItemActive(key),\n handleItemActive: () => handleItemActive(key),\n setItemActive,\n unsetItemActive,\n toggleItemActive,\n ...(type === 'multi' ? attachMultipleProps : {}),\n }\n\n return result\n }\n\n useEffect(() => {\n if (type === 'single' && Array.isArray(activeItems)) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(\n 'When type=`single` activeItems must be a single value, not an array'\n )\n }\n }\n }, [type, activeItems])\n\n return <WrappedComponent {...rest} itemProps={attachItemProps} />\n }\n Enhanced.RESERVED_KEYS = RESERVED_KEYS\n Enhanced.displayName = `@vitus-labs/elements/List/withActiveState(${displayName})`\n\n return Enhanced\n}\n\nexport default component\n","import { useState, useEffect, ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { PKG_NAME } from '~/constants'\nimport type { VLComponent } from '~/types'\n\nexport type Props = {\n position?: HTMLElement\n children: ReactNode\n tag?: string\n}\n\nconst component: VLComponent<Props> = ({\n position = __BROWSER__ ? document.body : undefined,\n tag = 'div',\n children,\n}: Props) => {\n const [element] = useState(\n __BROWSER__ ? document.createElement(tag) : undefined\n )\n\n if (!position || !element) return null\n\n useEffect(() => {\n if (__SERVER__) return undefined\n position.appendChild(element)\n\n return () => {\n position.removeChild(element)\n }\n }, [])\n\n return createPortal(children, element)\n}\n\nconst name = `${PKG_NAME}/Portal` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import React, { FC, createContext, useContext } from 'react'\n\ntype Context = {\n blocked: boolean\n setBlocked: () => void\n setUnblocked: () => void\n}\n\nconst context = createContext<Context>({} as Context)\n\nconst { Provider } = context\n\nexport const useOverlayContext = () => useContext(context)\n\nconst component: FC<Context> = ({\n children,\n blocked,\n setBlocked,\n setUnblocked,\n}) => (\n <Provider value={{ blocked, setBlocked, setUnblocked }}>{children}</Provider>\n)\n\nexport default component\n","/* eslint-disable no-console */\nimport { useRef, useState, useEffect, useContext, useCallback } from 'react'\nimport { throttle, context } from '@vitus-labs/core'\nimport { value } from '@vitus-labs/unistyle'\nimport { useOverlayContext } from './context'\n\ntype OverlayPosition = {\n position: 'absolute' | 'fixed' | 'static' | 'relative'\n top?: number | string\n bottom?: number | string\n left?: number | string\n right?: number | string\n}\n\ntype Align = 'bottom' | 'top' | 'left' | 'bottom' | 'right'\ntype AlignX = 'left' | 'center' | 'right'\ntype AlignY = 'bottom' | 'top' | 'center'\n\nexport type UseOverlayProps = {\n isOpen?: boolean\n openOn?: 'click' | 'hover' | 'manual'\n closeOn?:\n | 'click'\n | 'clickOnTrigger'\n | 'clickOutsideContent'\n | 'hover'\n | 'manual'\n type?: 'dropdown' | 'tooltip' | 'popover' | 'modal'\n position?: 'absolute' | 'fixed' | 'relative' | 'static'\n align?: Align\n alignX?: AlignX\n alignY?: AlignY\n offsetX?: number\n offsetY?: number\n throttleDelay?: number\n customScrollListener?: HTMLElement | null\n closeOnEsc?: boolean\n disabled?: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nexport default ({\n isOpen = false,\n openOn = 'click', // click | hover\n closeOn = 'click', // click | 'clickOnTrigger' | 'clickOutsideContent' | hover | manual\n type = 'dropdown', // dropdown | tooltip | popover | modal\n position = 'fixed', // absolute | fixed | relative | static\n align = 'bottom', // * main align prop * top | left | bottom | right\n alignX = 'left', // left | center | right\n alignY = 'bottom', // top | center | bottom\n offsetX = 0,\n offsetY = 0,\n throttleDelay = 200,\n customScrollListener,\n closeOnEsc = true,\n disabled,\n onOpen,\n onClose,\n}: UseOverlayProps) => {\n const { rootSize } = useContext(context) as { rootSize: number }\n const ctx = useOverlayContext()\n\n const [innerAlignX, setInnerAlignX] = useState(alignX)\n const [innerAlignY, setInnerAlignY] = useState(alignY)\n\n const [blocked, handleBlocked] = useState(false)\n const [active, handleActive] = useState(isOpen)\n\n const triggerRef = useRef<HTMLElement>()\n const contentRef = useRef<HTMLElement>()\n\n const setBlocked = useCallback(() => handleBlocked(true), [])\n const setUnblocked = useCallback(() => handleBlocked(false), [])\n\n const showContent = useCallback(() => {\n handleActive(true)\n }, [])\n\n const hideContent = useCallback(() => {\n handleActive(false)\n }, [])\n\n useEffect(() => {\n if (disabled) {\n hideContent()\n }\n }, [disabled])\n\n // calculate position on every position change state\n useEffect(() => {\n if (active) {\n // hack-ish way to correctly calculate position for the first time\n // without calling it twice the posittion is somehow wrong\n calculateContentPosition()\n calculateContentPosition()\n }\n }, [active, align, alignX, alignX])\n\n // if an Overlay has an Overlay child, this will prevent closing parent child\n // + calculate correct position when an Overlay is opened\n useEffect(() => {\n if (active) {\n if (onOpen) onOpen()\n if (ctx && ctx.setBlocked) ctx.setBlocked()\n } else {\n if (onClose) onClose()\n if (ctx && ctx.setUnblocked) ctx.setUnblocked()\n }\n }, [active, onOpen, onClose])\n\n // handles calculating correct position of content\n // on document events (or custom scroll if set)\n useEffect(() => {\n if (!active) return undefined\n\n window.addEventListener('resize', handleContentPosition, false)\n window.addEventListener('scroll', handleContentPosition, false)\n\n if (customScrollListener) {\n customScrollListener.addEventListener(\n 'scroll',\n handleContentPosition,\n false\n )\n }\n\n return () => {\n window.removeEventListener('resize', handleContentPosition, false)\n window.removeEventListener('scroll', handleContentPosition, false)\n\n if (customScrollListener) {\n customScrollListener.removeEventListener(\n 'scroll',\n handleContentPosition,\n false\n )\n }\n }\n }, [active, customScrollListener])\n\n // make sure scrolling is blocked in case of modal windows or when\n // customScroll is set\n useEffect(() => {\n const shouldSetOverflow = __BROWSER__ && type === 'modal' && document.body\n\n if (active) {\n if (customScrollListener && closeOn !== 'hover') {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = 'hidden'\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = 'hidden'\n }\n } else {\n if (customScrollListener) {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = ''\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = ''\n }\n }\n\n return () => {\n if (customScrollListener) {\n // eslint-disable-next-line no-param-reassign\n customScrollListener.style.overflow = ''\n }\n\n if (shouldSetOverflow) {\n document.body.style.overflow = ''\n }\n }\n }, [active, type, customScrollListener, closeOn])\n\n // only when content is active handle closing\n useEffect(() => {\n if (!active) return undefined\n\n window.addEventListener('scroll', handleVisibility, false)\n\n if (customScrollListener) {\n customScrollListener.addEventListener('scroll', handleVisibility, false)\n }\n\n if (closeOnEsc) {\n window.addEventListener('keydown', handleEscKey, false)\n }\n\n return () => {\n window.removeEventListener('scroll', handleVisibility, false)\n\n if (customScrollListener) {\n customScrollListener.removeEventListener(\n 'scroll',\n handleVisibility,\n false\n )\n }\n\n if (closeOnEsc) {\n window.removeEventListener('keydown', handleEscKey, false)\n }\n }\n }, [active, customScrollListener, closeOnEsc])\n\n useEffect(() => {\n // enable overlay manipulation only when the state is NOT blocked=true\n // nor in disabled state\n if (blocked || disabled) return undefined\n\n if (\n openOn === 'click' ||\n closeOn === 'click' ||\n closeOn === 'clickOnTrigger' ||\n closeOn === 'clickOutsideContent'\n ) {\n window.addEventListener('click', handleClick, false)\n }\n\n if (openOn === 'hover' || closeOn === 'hover') {\n window.addEventListener('mousemove', handleVisibility, false)\n }\n\n return () => {\n window.removeEventListener('click', handleClick, false)\n window.removeEventListener('mousemove', handleVisibility, false)\n }\n }, [openOn, closeOn, blocked, disabled, active])\n\n const isNodeOrChild = (ref) => (e) => {\n if (e && e.target && ref.current) {\n return ref.current.contains(e.target) || e.target === ref.current\n }\n\n return false\n }\n\n const isTrigger = isNodeOrChild(triggerRef)\n const isContent = isNodeOrChild(contentRef)\n\n const calculateContentPosition = () => {\n if (!active) return\n if (!triggerRef.current || !contentRef.current) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('Cannot access `ref` of trigger or content component.')\n }\n\n return\n }\n\n const overlayPosition: OverlayPosition = {\n position,\n }\n\n const t = triggerRef.current.getBoundingClientRect()\n const c = contentRef.current.getBoundingClientRect()\n\n if (['dropdown', 'tooltip', 'popover'].includes(type)) {\n // align is top or bottom\n if (['top', 'bottom'].includes(align)) {\n // axe Y position\n // (assigned as top position)\n const top = t.top - offsetY - c.height\n const bottom = t.bottom + offsetY\n\n // axe X position\n // content position to trigger position\n // (assigned as left position)\n const left = t.left + offsetX\n const right = t.right - offsetX - c.width\n\n // calculate possible position\n const isTop = top >= 0 // represents window.height = 0\n const isBottom = bottom + c.height <= window.innerHeight\n const isLeft = left + c.width <= window.innerWidth\n const isRight = right >= 0 // represents window.width = 0\n\n if (align === 'top') {\n setInnerAlignY(isTop ? 'top' : 'bottom')\n overlayPosition.top = isTop ? top : bottom\n } else if (align === 'bottom') {\n setInnerAlignY(isBottom ? 'bottom' : 'top')\n overlayPosition.top = isBottom ? bottom : top\n }\n\n // left\n if (alignX === 'left') {\n setInnerAlignX(isLeft ? 'left' : 'right')\n overlayPosition.left = isLeft ? left : right\n }\n // center\n else if (alignX === 'center') {\n const center = t.left + (t.right - t.left) / 2 - c.width / 2\n const isCenteredLeft = center >= 0\n const isCenteredRight = center + c.width <= window.innerWidth\n\n if (isCenteredLeft && isCenteredRight) {\n setInnerAlignX('center')\n overlayPosition.left = center\n } else if (isCenteredLeft) {\n setInnerAlignX('left')\n overlayPosition.left = left\n } else if (isCenteredRight) {\n setInnerAlignX('right')\n overlayPosition.left = right\n }\n }\n // right\n else if (alignX === 'right') {\n setInnerAlignX(isRight ? 'right' : 'left')\n overlayPosition.left = isRight ? right : left\n }\n }\n\n // align is left or right\n else if (['left', 'right'].includes(align)) {\n // axe X position\n // (assigned as left position)\n const left = t.left - offsetX - c.width\n const right = t.right + offsetX\n\n // axe Y position\n // content position to trigger position\n // (assigned as top position)\n const top = t.top + offsetY\n const bottom = t.bottom - offsetY - c.height\n\n const isLeft = left >= 0\n const isRight = right + c.width <= window.innerWidth\n const isTop = top + c.height <= window.innerHeight\n const isBottom = bottom >= 0\n\n if (align === 'left') {\n setInnerAlignX(isLeft ? 'left' : 'right')\n overlayPosition.left = isLeft ? left : right\n } else if (align === 'right') {\n setInnerAlignX(isRight ? 'right' : 'left')\n overlayPosition.left = isRight ? right : left\n }\n\n // top\n if (alignY === 'top') {\n setInnerAlignY(isTop ? 'top' : 'bottom')\n overlayPosition.top = isTop ? top : bottom\n }\n // center\n else if (alignY === 'center') {\n const center = t.top + (t.bottom - t.top) / 2 - c.height / 2\n const isCenteredTop = center >= 0\n const isCenteredBottom = center + c.height <= window.innerHeight\n\n if (isCenteredTop && isCenteredBottom) {\n setInnerAlignY('center')\n overlayPosition.top = center\n } else if (isCenteredTop) {\n setInnerAlignY('top')\n overlayPosition.top = top\n } else if (isCenteredBottom) {\n setInnerAlignY('bottom')\n overlayPosition.top = bottom\n }\n }\n // bottom\n else if (alignY === 'bottom') {\n setInnerAlignY(isBottom ? 'bottom' : 'top')\n overlayPosition.top = isBottom ? bottom : top\n }\n }\n }\n\n // modal type\n else if (type === 'modal') {\n switch (alignX) {\n case 'right':\n overlayPosition.right = offsetX\n break\n case 'left':\n overlayPosition.left = offsetX\n break\n case 'center':\n default:\n overlayPosition.left = window.innerWidth / 2 - c.width / 2\n break\n }\n\n switch (alignY) {\n case 'top':\n overlayPosition.top = offsetY\n break\n case 'center':\n overlayPosition.top = window.innerHeight / 2 - c.height / 2\n break\n case 'bottom':\n default:\n overlayPosition.bottom = offsetY\n break\n }\n }\n\n const calc = (param) => value(param, rootSize) as string\n\n // ADD POSITION STYLES TO CONTENT\n contentRef.current.style.position = position\n contentRef.current.style.top = calc(overlayPosition.top)\n contentRef.current.style.bottom = calc(overlayPosition.bottom)\n contentRef.current.style.left = calc(overlayPosition.left)\n contentRef.current.style.right = calc(overlayPosition.right)\n }\n\n const handleVisibilityByEventType = (e) => {\n if (!active) {\n if (\n (openOn === 'hover' && e.type === 'mousemove') ||\n (openOn === 'click' && e.type === 'click')\n ) {\n if (isTrigger(e)) {\n showContent()\n }\n }\n }\n\n if (active) {\n if (closeOn === 'hover' && e.type === 'mousemove') {\n if (!isTrigger(e) && !isContent(e)) {\n hideContent()\n }\n }\n\n if (closeOn === 'hover' && e.type === 'scroll') {\n hideContent()\n }\n\n if (closeOn === 'click' && e.type === 'click') {\n hideContent()\n }\n\n if (closeOn === 'clickOnTrigger' && e.type === 'click') {\n if (isTrigger(e)) {\n hideContent()\n }\n }\n\n if (closeOn === 'clickOutsideContent' && e.type === 'click') {\n if (!isContent(e)) {\n hideContent()\n }\n }\n }\n }\n const handleContentPosition = throttle(\n calculateContentPosition,\n throttleDelay\n )\n\n const handleClick = handleVisibilityByEventType\n const handleVisibility = throttle(handleVisibilityByEventType, throttleDelay)\n\n const handleEscKey = (e: any) => {\n if (e.key === 'Escape') {\n hideContent()\n }\n }\n\n return {\n triggerRef,\n contentRef,\n active,\n align,\n alignX: innerAlignX,\n alignY: innerAlignY,\n showContent,\n hideContent,\n blocked,\n setBlocked,\n setUnblocked,\n }\n}\n","import React, { useMemo } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport Portal from '~/Portal'\nimport type { VLComponent, Content } from '~/types'\nimport useOverlay, { UseOverlayProps } from './useOverlay'\nimport Provider from './context'\n\ntype Align = 'bottom' | 'top' | 'left' | 'bottom' | 'right'\ntype AlignX = 'left' | 'center' | 'right'\ntype AlignY = 'bottom' | 'top' | 'center'\n\ntype TriggerRenderer = (\n props: Partial<{\n active: boolean\n showContent: () => void\n hideContent: () => void\n }>\n) => Content\n\ntype ContentRenderer = (\n props: Partial<{\n active: boolean\n showContent: () => void\n hideContent: () => void\n align: Align\n alignX: AlignX\n alignY: AlignY\n }>\n) => Content\n\nexport type Props = {\n children: Content | TriggerRenderer\n trigger: Content | ContentRenderer\n DOMLocation?: HTMLElement\n triggerRefName?: string\n contentRefName?: string\n} & UseOverlayProps\n\nconst component: VLComponent<Props> = ({\n children,\n trigger,\n DOMLocation,\n triggerRefName = 'ref',\n contentRefName = 'ref',\n ...props\n}) => {\n const {\n active,\n triggerRef,\n contentRef,\n showContent,\n hideContent,\n align,\n alignX,\n alignY,\n ...ctx\n } = useOverlay(props)\n\n const { openOn, closeOn } = props\n\n const passHandlers = useMemo(\n () =>\n openOn === 'manual' ||\n closeOn === 'manual' ||\n closeOn === 'clickOutsideContent',\n [openOn, closeOn]\n )\n\n return (\n <>\n {renderContent(trigger, {\n [triggerRefName]: triggerRef,\n active,\n ...(passHandlers ? { showContent, hideContent } : {}),\n })}\n\n {__BROWSER__ && active && (\n <Portal position={DOMLocation}>\n <Provider {...ctx}>\n {renderContent(children, {\n [contentRefName]: contentRef,\n active,\n align,\n alignX,\n alignY,\n ...(passHandlers ? { showContent, hideContent } : {}),\n })}\n </Provider>\n </Portal>\n )}\n </>\n )\n}\n\nconst name = `${PKG_NAME}/Overlay` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n","import { config } from '@vitus-labs/core'\nimport { makeItResponsive, extendCss } from '@vitus-labs/unistyle'\n\nconst styles = ({ css, theme: t }) => css`\n ${t.extraStyles && extendCss(t.extraStyles)};\n`\n\nexport default config.styled(config.textComponent)`\n color: inherit;\n font-weight: normal;\n line-height: 1;\n\n ${makeItResponsive({\n key: '$text',\n styles,\n css: config.css,\n normalize: false,\n })};\n`\n","import React, { forwardRef, ReactNode } from 'react'\nimport type { HTMLTagsText } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport type { VLForwardedComponent, ExtendCss } from '~/types'\nimport Styled from './styled'\n\nexport type Props = Partial<{\n paragraph: boolean\n label: ReactNode\n children: ReactNode\n tag: HTMLTagsText\n extendCss: ExtendCss\n}>\n\nconst component: VLForwardedComponent<Props> & {\n isText?: true\n} = forwardRef(\n ({ paragraph, label, children, tag, extendCss, ...props }, ref) => {\n type RenderContent = (as?: any) => any\n const renderContent: RenderContent = (as = undefined) => (\n <Styled ref={ref} as={as} $text={{ extraStyles: extendCss }} {...props}>\n {children || label}\n </Styled>\n )\n\n // eslint-disable-next-line no-nested-ternary\n const finalTag = __WEB__ ? (paragraph ? 'p' : tag) : undefined\n\n return renderContent(finalTag)\n }\n)\n\nconst name = `${PKG_NAME}/Text` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\ncomponent.isText = true\n\nexport default component\n","import { ReactNode } from 'react'\nimport { renderContent } from '@vitus-labs/core'\nimport { PKG_NAME } from '~/constants'\nimport type { VLComponent } from '~/types'\n\nexport type Props = {\n children: ReactNode\n className?: string | string[]\n style?: Record<string, unknown>\n}\n\nconst component: VLComponent<Props> = ({\n children,\n className = '',\n style = { color: 'blue' },\n}) => renderContent(children, { className, style })\n\nconst name = `${PKG_NAME}/Util` as const\n\ncomponent.displayName = name\ncomponent.pkgName = PKG_NAME\ncomponent.VITUS_LABS__COMPONENT = name\n\nexport default component\n"],"names":["styles","component","Styled","Wrapper","Content","name","Iterator","Element","context"],"mappings":"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"}
@@ -621,6 +621,8 @@ alignY = 'bottom', // top | center | bottom
621
621
  offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc = true, disabled, onOpen, onClose, }) => {
622
622
  const { rootSize } = useContext(context$1);
623
623
  const ctx = useOverlayContext();
624
+ const [innerAlignX, setInnerAlignX] = useState(alignX);
625
+ const [innerAlignY, setInnerAlignY] = useState(alignY);
624
626
  const [blocked, handleBlocked] = useState(false);
625
627
  const [active, handleActive] = useState(isOpen);
626
628
  const triggerRef = useRef();
@@ -783,13 +785,16 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc
783
785
  const isLeft = left + c.width <= window.innerWidth;
784
786
  const isRight = right >= 0; // represents window.width = 0
785
787
  if (align === 'top') {
788
+ setInnerAlignY(isTop ? 'top' : 'bottom');
786
789
  overlayPosition.top = isTop ? top : bottom;
787
790
  }
788
791
  else if (align === 'bottom') {
792
+ setInnerAlignY(isBottom ? 'bottom' : 'top');
789
793
  overlayPosition.top = isBottom ? bottom : top;
790
794
  }
791
795
  // left
792
796
  if (alignX === 'left') {
797
+ setInnerAlignX(isLeft ? 'left' : 'right');
793
798
  overlayPosition.left = isLeft ? left : right;
794
799
  }
795
800
  // center
@@ -798,17 +803,21 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc
798
803
  const isCenteredLeft = center >= 0;
799
804
  const isCenteredRight = center + c.width <= window.innerWidth;
800
805
  if (isCenteredLeft && isCenteredRight) {
806
+ setInnerAlignX('center');
801
807
  overlayPosition.left = center;
802
808
  }
803
809
  else if (isCenteredLeft) {
810
+ setInnerAlignX('left');
804
811
  overlayPosition.left = left;
805
812
  }
806
813
  else if (isCenteredRight) {
814
+ setInnerAlignX('right');
807
815
  overlayPosition.left = right;
808
816
  }
809
817
  }
810
818
  // right
811
819
  else if (alignX === 'right') {
820
+ setInnerAlignX(isRight ? 'right' : 'left');
812
821
  overlayPosition.left = isRight ? right : left;
813
822
  }
814
823
  }
@@ -828,13 +837,16 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc
828
837
  const isTop = top + c.height <= window.innerHeight;
829
838
  const isBottom = bottom >= 0;
830
839
  if (align === 'left') {
840
+ setInnerAlignX(isLeft ? 'left' : 'right');
831
841
  overlayPosition.left = isLeft ? left : right;
832
842
  }
833
843
  else if (align === 'right') {
844
+ setInnerAlignX(isRight ? 'right' : 'left');
834
845
  overlayPosition.left = isRight ? right : left;
835
846
  }
836
847
  // top
837
848
  if (alignY === 'top') {
849
+ setInnerAlignY(isTop ? 'top' : 'bottom');
838
850
  overlayPosition.top = isTop ? top : bottom;
839
851
  }
840
852
  // center
@@ -843,17 +855,21 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc
843
855
  const isCenteredTop = center >= 0;
844
856
  const isCenteredBottom = center + c.height <= window.innerHeight;
845
857
  if (isCenteredTop && isCenteredBottom) {
858
+ setInnerAlignY('center');
846
859
  overlayPosition.top = center;
847
860
  }
848
861
  else if (isCenteredTop) {
862
+ setInnerAlignY('top');
849
863
  overlayPosition.top = top;
850
864
  }
851
865
  else if (isCenteredBottom) {
866
+ setInnerAlignY('bottom');
852
867
  overlayPosition.top = bottom;
853
868
  }
854
869
  }
855
870
  // bottom
856
871
  else if (alignY === 'bottom') {
872
+ setInnerAlignY(isBottom ? 'bottom' : 'top');
857
873
  overlayPosition.top = isBottom ? bottom : top;
858
874
  }
859
875
  }
@@ -939,8 +955,8 @@ offsetX = 0, offsetY = 0, throttleDelay = 200, customScrollListener, closeOnEsc
939
955
  contentRef,
940
956
  active,
941
957
  align,
942
- alignX,
943
- alignY,
958
+ alignX: innerAlignX,
959
+ alignY: innerAlignY,
944
960
  showContent,
945
961
  hideContent,
946
962
  blocked,