diff --git a/package.json b/package.json index 53ca7f4..726e921 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,15 @@ "module": "build/esm/index.js", "types": "types/src/index.d.ts", "exports": { - ".": { - "types": "./types/src/index.d.ts", - "require": "./build/cjs/index.js", - "import": "./build/esm/index.js" + "./window-scroll": { + "types": "./types/src/window-scroll.d.ts", + "require": "./build/cjs/window-scroll.js", + "import": "./build/esm/window-scroll.js" + }, + "./container-scroll": { + "types": "./types/src/container-scroll.d.ts", + "require": "./build/cjs/container-scroll.js", + "import": "./build/esm/container-scroll.js" } }, "files": [ diff --git a/src/ReactUnipika/ReactUnipika.tsx b/src/ReactUnipika/ReactUnipika.tsx deleted file mode 100644 index 4fe6460..0000000 --- a/src/ReactUnipika/ReactUnipika.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import React from 'react'; - -// @ts-expect-error -import unipika from '@gravity-ui/unipika/lib/unipika'; - -import {CollapseIconType, ToolbarProps, UnipikaSettings} from '../StructuredYson/types'; - -import {StructuredYson} from '../StructuredYson/StructuredYson'; -import {cn} from '../utils/classname'; - -const block = cn('g-ru-react-unipika'); - -export interface ReactUnipikaProps { - settings?: UnipikaSettings; - value: any; - inline?: boolean; - children?: React.ReactNode; - extraTools?: React.ReactNode; - virtualized?: boolean; - className?: string; - customLayout?: (args: {toolbar: React.ReactNode; content: React.ReactNode}) => React.ReactNode; - toolbarStickyTop?: number; - renderToolbar?: (props: ToolbarProps) => React.ReactNode; - collapseIconType?: CollapseIconType; - showContainerSize?: boolean; - initiallyCollapsed?: boolean; - caseInsensitiveSearch?: boolean; - renderError?: (error: unknown) => React.ReactNode; -} - -const defaultUnipikaSettings = { - asHTML: true, - format: 'json', - compact: false, - escapeWhitespace: true, - showDecoded: true, - binaryAsHex: true, -}; - -export function ReactUnipika({ - value, - settings = defaultUnipikaSettings, - inline = false, - children, - virtualized = true, - extraTools, - className, - customLayout, - toolbarStickyTop = 0, - renderToolbar, - collapseIconType, - showContainerSize, - initiallyCollapsed, - caseInsensitiveSearch, - renderError, -}: ReactUnipikaProps) { - const {convertedValue, error} = React.useMemo(() => { - try { - // TODO: fix me later - // The call is required because unipika.format() applies default values to a passed settings inplace. - // We have to leave this call without it the behaviour will be broken. - if (settings.format === 'raw-json') { - unipika.formatRaw(value, settings); - } else { - unipika.formatFromYSON(value, settings); - } - - if (value === undefined) { - return ''; - } - - if (settings.format === 'raw-json') { - return unipika.converters.raw(value, settings); - } - - return {convertedValue: unipika.converters.yson(value, settings)}; - } catch (error) { - return {error}; - } - }, [value, settings]); - - const classes = block( - { - inline: inline && 'yes', - }, - className, - ); - - if (error) { - return renderError?.(error); - } - - function getFormattedTitle() { - if (!inline) { - return undefined; - } - - const titleSettings = Object.assign({}, settings, {asHTML: false}); - return unipika.format(convertedValue, titleSettings); - } - - function getFormattedValue() { - return unipika.format(convertedValue, settings); - } - - return settings.asHTML ? ( -
- {virtualized ? ( - - ) : ( -
-            )}
-            {children}
-        
- ) : ( -
- {children} -
- ); -} diff --git a/src/ReactUnipika/ReactUnipikaBase.tsx b/src/ReactUnipika/ReactUnipikaBase.tsx new file mode 100644 index 0000000..f9ef3c9 --- /dev/null +++ b/src/ReactUnipika/ReactUnipikaBase.tsx @@ -0,0 +1,117 @@ +import React from 'react'; + +// @ts-expect-error +import unipika from '@gravity-ui/unipika/lib/unipika'; + +import {cn} from '../utils/classname'; +import {ReactUnipikaCommonProps} from './types'; +import {UnipikaSettings} from '../StructuredYson/types'; +import {defaultUnipikaSettings} from './constants'; + +const block = cn('g-ru-react-unipika'); + +interface ConvertedValue { + convertedValue?: any; + error?: any; +} + +function convertValue(value: any, settings: UnipikaSettings): ConvertedValue { + try { + // TODO: fix me later + // The call is required because unipika.format() applies default values to a passed settings inplace. + // We have to leave this call without it the behaviour will be broken. + if (settings.format === 'raw-json') { + unipika.formatRaw(value, settings); + } else { + unipika.formatFromYSON(value, settings); + } + + if (value === undefined) { + return {convertedValue: ''}; + } + + if (settings.format === 'raw-json') { + return {convertedValue: unipika.converters.raw(value, settings)}; + } + + return {convertedValue: unipika.converters.yson(value, settings)}; + } catch (error) { + return {error}; + } +} + +interface WithReactUnipikaBaseProps

{ + renderVirtualized: (props: P, convertedValue: any) => React.ReactNode; +} + +export function withReactUnipikaBase

( + config: WithReactUnipikaBaseProps

, +) { + return function ReactUnipikaBaseComponent(props: P) { + const { + value, + settings = defaultUnipikaSettings, + inline = false, + children, + virtualized = true, + className, + renderError, + } = props; + + const {convertedValue, error} = React.useMemo( + () => convertValue(value, settings), + [value, settings], + ); + + const getFormattedTitle = React.useCallback(() => { + if (!inline) { + return undefined; + } + + const titleSettings = Object.assign({}, settings, {asHTML: false}); + return unipika.format(convertedValue, titleSettings); + }, [inline, settings, convertedValue]); + + const getFormattedValue = React.useCallback(() => { + return unipika.format(convertedValue, settings); + }, [convertedValue, settings]); + + const classes = block( + { + inline: inline && 'yes', + }, + className, + ); + + if (error) { + return renderError?.(error); + } + + return settings.asHTML ? ( +

+ {virtualized ? ( + config.renderVirtualized(props, convertedValue) + ) : ( +
+                )}
+                {children}
+            
+ ) : ( +
+ {children} +
+ ); + }; +} diff --git a/src/ReactUnipika/ReactUnipikaContainerScroll.tsx b/src/ReactUnipika/ReactUnipikaContainerScroll.tsx new file mode 100644 index 0000000..eb6774e --- /dev/null +++ b/src/ReactUnipika/ReactUnipikaContainerScroll.tsx @@ -0,0 +1,39 @@ +import React from 'react'; + +import {StructuredYsonContainerScroll} from '../StructuredYson/StructuredYsonContainerScroll'; +import {withReactUnipikaBase} from './ReactUnipikaBase'; +import {ReactUnipikaWithScrollContainer} from './types'; +import {defaultUnipikaSettings} from './constants'; + +export const ReactUnipikaContainerScroll = withReactUnipikaBase({ + renderVirtualized: (props, convertedValue) => { + const { + settings = defaultUnipikaSettings, + extraTools, + customLayout, + toolbarStickyTop, + renderToolbar, + collapseIconType, + showContainerSize, + initiallyCollapsed, + caseInsensitiveSearch, + scrollContainerRef, + } = props; + + return ( + + ); + }, +}); diff --git a/src/ReactUnipika/ReactUnipikaWindowScroll.tsx b/src/ReactUnipika/ReactUnipikaWindowScroll.tsx new file mode 100644 index 0000000..5ddd12d --- /dev/null +++ b/src/ReactUnipika/ReactUnipikaWindowScroll.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +import {StructuredYsonWindowScroll} from '../StructuredYson/StructuredYsonWindowScroll'; +import {withReactUnipikaBase} from './ReactUnipikaBase'; +import {ReactUnipikaCommonProps} from './types'; +import {defaultUnipikaSettings} from './constants'; + +export const ReactUnipikaWindowScroll = withReactUnipikaBase({ + renderVirtualized: (props, convertedValue) => { + const { + settings = defaultUnipikaSettings, + extraTools, + customLayout, + toolbarStickyTop, + renderToolbar, + collapseIconType, + showContainerSize, + initiallyCollapsed, + caseInsensitiveSearch, + } = props; + + return ( + + ); + }, +}); diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png deleted file mode 100644 index f6bd9f0..0000000 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png and /dev/null differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png deleted file mode 100644 index e09901f..0000000 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png and /dev/null differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png deleted file mode 100644 index e28b237..0000000 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png and /dev/null differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png deleted file mode 100644 index d0e8484..0000000 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png and /dev/null differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..54f8e73 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-2-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-2-chromium-linux.png new file mode 100644 index 0000000..777a2f4 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-chromium-2-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..c3935fe Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-2-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-2-webkit-linux.png new file mode 100644 index 0000000..9fa472c Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-dark-webkit-2-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..c186a9d Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-2-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-2-chromium-linux.png new file mode 100644 index 0000000..68b3ecc Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-chromium-2-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..f1eeac3 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-2-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-2-webkit-linux.png new file mode 100644 index 0000000..e4db843 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-check-virtualization-light-webkit-2-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..54f8e73 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..c3935fe Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..c186a9d Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..f1eeac3 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..4a8825d Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..8e6dac5 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..dd9e38b Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..875e198 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..859b2cd Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..359b854 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..4a28330 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..ad81fbe Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..2232032 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..58b1c87 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..30e54fe Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..8e47092 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..30fa89c Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..b1a3579 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..3f58d22 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..891777e Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..c98abc5 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..03570b5 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..0068262 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..afd196c Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..8445d81 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..97c7778 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..dae08e5 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..2e23299 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..2b35670 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..567be91 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..dd49454 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..d775db6 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..f32ddeb Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..5074c80 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..6d8086d Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..49bc7a3 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..15ae73b Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..5ba9d58 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..745f4c4 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..1a8c2e6 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..1168f02 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..3cd743a Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..2bc7b5d Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..f907758 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..37b5125 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..03b0ce5 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..124d2a1 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..0d672cf Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..ba366bf Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..639fe48 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..1b6d446 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..f3268c0 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..bb2db4a Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..9356bdf Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..017b353 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..3196b5f Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..f05f5e3 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..ce881ba Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..d683858 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..49a9217 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..582bc64 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..ddb3626 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..081d67e Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..b575182 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png new file mode 100644 index 0000000..5d53b7c Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..b00f3c1 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png new file mode 100644 index 0000000..6e70c6a Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..26a0878 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaContainerScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-2-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-2-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-2-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-chromium-2-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-2-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-2-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-2-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-dark-webkit-2-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-2-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-2-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-2-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-chromium-2-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-2-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-2-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-2-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-first-render-light-webkit-2-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-collapsed-initially-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-json-with-container-size-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-preview-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png similarity index 72% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png index c196455..98475de 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png similarity index 67% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png index 6276e90..369f212 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png similarity index 75% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png index db5227a..0303a02 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png similarity index 65% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png index e6be839..b5aee8b 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---collapsed-tree-with-search-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png similarity index 79% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png index 3431117..30150d3 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png similarity index 84% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png index 57696ac..d653d79 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png similarity index 79% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png index 6bc61fb..8906a90 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-chromium-1-chromium-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png similarity index 81% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png index f88cd82..6a6493e 100644 Binary files a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-in-collapsed---navigate-forward-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-by-Enter-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..4818b9f Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png new file mode 100644 index 0000000..b3def77 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-next-light-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-by-SHIFT-Enter-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-search-prev-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-2-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-insensitive-search-with-matches-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-no-matches-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..7919db9 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-case-sensitive-search-with-matches-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png new file mode 100644 index 0000000..f621ef1 Binary files /dev/null and b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-dark-webkit-1-webkit-linux.png differ diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-content-above-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-with-error-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-dark-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-chromium-1-chromium-linux.png diff --git a/src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png b/src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png similarity index 100% rename from src/ReactUnipika/__snapshots__/ReactUnipika.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png rename to src/ReactUnipika/__snapshots__/ReactUnipikaWindowScroll.visual.test.tsx-snapshots/ReactUnipika-yson-light-webkit-1-webkit-linux.png diff --git a/src/ReactUnipika/__stories__/ReactUnipikaContainerScroll.stories.tsx b/src/ReactUnipika/__stories__/ReactUnipikaContainerScroll.stories.tsx new file mode 100644 index 0000000..fc27b76 --- /dev/null +++ b/src/ReactUnipika/__stories__/ReactUnipikaContainerScroll.stories.tsx @@ -0,0 +1,115 @@ +import React from 'react'; +import {Button} from '@gravity-ui/uikit'; + +import {Meta, StoryObj} from '@storybook/react'; + +import {ReactUnipika, ReactUnipikaProps} from '../../container-scroll'; + +import data from './data.json'; + +function WithScrollContainerComponent(props: Omit) { + const scrollContainerRef = React.useRef(null); + return ( +
+ +
+ ); +} + +const meta: Meta = { + title: 'ReactUnipika/Container Scroll', + component: WithScrollContainerComponent, +}; +export default meta; + +export const Json: StoryObj = { + args: { + value: data, + }, +}; + +export const Yson: StoryObj = { + args: { + value: data, + settings: {format: 'yson'}, + }, +}; + +function WithCaseInsensitiveSearchComponent() { + const [caseInsensitiveSearch, setCaseInsensitiveSearch] = React.useState(true); + return ( + <> + + + + ); +} + +export const WithCaseInsensitiveSearch: StoryObj = { + render() { + return ; + }, +}; + +export const WithContentAbove: StoryObj = { + render() { + return ( + <> +
+ Some content above +
+ + + ); + }, +}; + +export const WithContainerSize: StoryObj = { + args: { + value: data, + showContainerSize: true, + }, +}; + +export const WithContainerSizeCollapsed: StoryObj = { + args: { + value: data, + showContainerSize: true, + initiallyCollapsed: true, + }, +}; + +export const WithContainerSizeYson: StoryObj = { + args: { + value: data, + settings: {format: 'yson'}, + showContainerSize: true, + }, +}; + +export const WithError: StoryObj = { + args: { + value: {val: Infinity}, + renderError: (error: unknown) => { + if (error instanceof Error) { + return
{error.message}
; + } + return 'Unknown error while parsing data'; + }, + }, +}; diff --git a/src/ReactUnipika/__stories__/ReactUnipika.stories.tsx b/src/ReactUnipika/__stories__/ReactUnipikaWindowScroll.stories.tsx similarity index 95% rename from src/ReactUnipika/__stories__/ReactUnipika.stories.tsx rename to src/ReactUnipika/__stories__/ReactUnipikaWindowScroll.stories.tsx index 9bd5f88..6904aec 100644 --- a/src/ReactUnipika/__stories__/ReactUnipika.stories.tsx +++ b/src/ReactUnipika/__stories__/ReactUnipikaWindowScroll.stories.tsx @@ -1,14 +1,15 @@ import React from 'react'; +import {Button} from '@gravity-ui/uikit'; + import {Meta, StoryObj} from '@storybook/react'; -import {ReactUnipika, ReactUnipikaProps} from '../../index'; +import {ReactUnipika, ReactUnipikaProps} from '../../window-scroll'; import data from './data.json'; -import {Button} from '@gravity-ui/uikit'; const meta: Meta = { - title: 'ReactUnipika', + title: 'ReactUnipika/Window Scroll', component: ReactUnipika, }; export default meta; diff --git a/src/ReactUnipika/__tests__/ReactUnipikaContainerScroll.visual.test.tsx b/src/ReactUnipika/__tests__/ReactUnipikaContainerScroll.visual.test.tsx new file mode 100644 index 0000000..f0a5655 --- /dev/null +++ b/src/ReactUnipika/__tests__/ReactUnipikaContainerScroll.visual.test.tsx @@ -0,0 +1,297 @@ +import React from 'react'; +import {test} from '../../../playwright/core'; + +import {ContainerScroll as Stories} from './stories-to-test'; + +test('ReactUnipika: first render', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search next', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('level10_item0'); + + await page.getByTestId('qa:structuredyson:search:next').click(); + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search next by Enter', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('level10_item0'); + + await page.getByTestId('qa:structuredyson:search').locator('input').focus(); + await page.keyboard.press('Enter'); + + await page.getByText('level8_item3').waitFor({state: 'visible'}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search prev', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('level10_item0'); + + await page.getByTestId('qa:structuredyson:search:prev').click(); + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search prev by SHIFT+Enter', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('level10_item0'); + + await page.getByTestId('qa:structuredyson:search').locator('input').focus(); + await page.keyboard.press('Shift+Enter'); + + await page.getByText('level8_item3').waitFor({state: 'visible'}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: preview', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('value-to-search'); + + await page.locator('.g-ru-clickable-text').click(); + await expectScreenshot({component: page}); +}); + +test('ReactUnipika:yson', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with content above', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('level8_item4'); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: json with container size', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: json with container size collapsed initially', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search in collapsed - collapsed tree with search', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + // Collapse all + await page.getByTestId('qa:structuredyson:collapse-all').click(); + + // Enter search term + await page.getByTestId('qa:structuredyson:search').locator('input').fill('attr'); + + // Wait for search to complete by checking match counter is updated + await page.locator('.g-ru-structured-yson__match-counter').waitFor({state: 'visible'}); + await page.locator('.g-ru-structured-yson__match-counter:has-text("1 / 9")').waitFor(); + + // Wait for the first match to be automatically expanded and highlighted text to be visible + await page + .locator('.g-ru-cell__filtered_highlighted:has-text("attr")') + .first() + .waitFor({state: 'visible'}); + + // Verify that only one highlighted element with "attr" is visible on screen + const visibleHighlightedElements = await page + .locator('.g-ru-cell__filtered_highlighted:has-text("attr")') + .filter({hasText: 'attr'}) + .count(); + if (visibleHighlightedElements !== 1) { + throw new Error( + `Expected 1 visible highlighted element with "attr", but found ${visibleHighlightedElements}`, + ); + } + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: search in collapsed - navigate forward', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + // Collapse all + await page.getByTestId('qa:structuredyson:collapse-all').click(); + + // Enter search term + await page.getByTestId('qa:structuredyson:search').locator('input').fill('attr'); + + // Wait for search to complete by checking match counter is updated + await page.locator('.g-ru-structured-yson__match-counter').waitFor({state: 'visible'}); + await page.locator('.g-ru-structured-yson__match-counter:has-text("1 / 9")').waitFor(); + + // Navigate forward (should expand first collapsed node with match) + await page.getByTestId('qa:structuredyson:search:next').click(); + + // Wait for expansion and navigation by checking the match counter updates to show position + await page.locator('.g-ru-structured-yson__match-counter:has-text("2 / 9")').waitFor(); + + // Wait for the second match to be visible + await page + .locator('.g-ru-cell__filtered_highlighted:has-text("attr")') + .nth(1) + .waitFor({state: 'visible'}); + + // Verify that exactly 2 highlighted elements with "attr" are visible on screen + const visibleHighlightedElements = await page + .locator('.g-ru-cell__filtered_highlighted:has-text("attr")') + .filter({hasText: 'attr'}) + .count(); + if (visibleHighlightedElements !== 2) { + throw new Error( + `Expected 2 visible highlighted elements with "attr", but found ${visibleHighlightedElements}`, + ); + } + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with error', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: check virtualization', async ({mount, expectScreenshot, page}) => { + await mount(, {width: 1280}); + + // Count initial rendered rows + const initialRowCount = await page.locator('.gt-table__row').count(); + + // Verify that exactly 21 rows are rendered (virtualization working) + if (initialRowCount !== 21) { + throw new Error(`Initially expected 21 rendered rows, but found ${initialRowCount}`); + } + + await expectScreenshot({component: page}); + + // Find the scroll container + const scrollContainer = page.getByTestId('qa:scroll-container'); + + // Scroll to the end of the page + await scrollContainer.evaluate((el) => { + el.scrollTop = el.scrollHeight; + }); + + // Wait for virtualization to render new rows + await page.waitForTimeout(500); + + // Count rows after scrolling + const finalRowCount = await page.locator('.gt-table__row').count(); + + // Verify that exactly 21 rows are rendered (virtualization working) + if (finalRowCount !== 18) { + throw new Error(`Finally expected 18 rendered rows, but found ${finalRowCount}`); + } + + // Check that element with data-index="88" is visible + const element88 = page.locator('[data-index="88"]'); + await element88.waitFor({state: 'visible'}); + + const isVisible = await element88.isVisible(); + if (!isVisible) { + throw new Error('Element with data-index="88" is not visible after scrolling to the end'); + } + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with case insensitive search with matches', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('Attr'); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with case insensitive search with matches 2', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('attr'); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with case insensitive search toggle', async ({mount, page}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('Type_1'); + + const visibleHighlightedElements = await page + .locator('.g-ru-cell__filtered_highlighted:has-text("type_1")') + .filter({hasText: 'Type_1'}) + .count(); + if (visibleHighlightedElements !== 1) { + throw new Error( + `Expected 1 visible highlighted elements with "Type_1", but found ${visibleHighlightedElements}`, + ); + } + + await page.getByTestId('qa:case-sensitive-button').click(); + const newVisibleHighlightedElements = await page + .locator('.g-ru-cell__filtered_highlighted:has-text("type_1")') + .filter({hasText: 'Type_1'}) + .count(); + if (newVisibleHighlightedElements !== 0) { + throw new Error( + `Expected 0 visible highlighted elements with "Type_1", but found ${visibleHighlightedElements}`, + ); + } +}); + +test('ReactUnipika: with case sensitive search no matches', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('Attr'); + + await expectScreenshot({component: page}); +}); + +test('ReactUnipika: with case sensitive search with matches', async ({ + mount, + expectScreenshot, + page, +}) => { + await mount(, {width: 1280}); + + await page.getByTestId('qa:structuredyson:search').locator('input').fill('attr'); + + await expectScreenshot({component: page}); +}); diff --git a/src/ReactUnipika/__tests__/ReactUnipika.visual.test.tsx b/src/ReactUnipika/__tests__/ReactUnipikaWindowScroll.visual.test.tsx similarity index 99% rename from src/ReactUnipika/__tests__/ReactUnipika.visual.test.tsx rename to src/ReactUnipika/__tests__/ReactUnipikaWindowScroll.visual.test.tsx index d1f8287..c450ff8 100644 --- a/src/ReactUnipika/__tests__/ReactUnipika.visual.test.tsx +++ b/src/ReactUnipika/__tests__/ReactUnipikaWindowScroll.visual.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {test} from '../../../playwright/core'; -import {Stories} from './stories-to-test'; +import {WindowScroll as Stories} from './stories-to-test'; test('ReactUnipika: first render', async ({mount, expectScreenshot, page}) => { await mount(, {width: 1280}); diff --git a/src/ReactUnipika/__tests__/stories-to-test.tsx b/src/ReactUnipika/__tests__/stories-to-test.tsx index 1f0c95a..11fb231 100644 --- a/src/ReactUnipika/__tests__/stories-to-test.tsx +++ b/src/ReactUnipika/__tests__/stories-to-test.tsx @@ -1,5 +1,7 @@ import {composeStories} from '@storybook/react'; -import * as DefaultStories from '../__stories__/ReactUnipika.stories'; +import * as WindowScrollStories from '../__stories__/ReactUnipikaWindowScroll.stories'; +import * as ContainerScrollStories from '../__stories__/ReactUnipikaContainerScroll.stories'; -export const Stories = composeStories(DefaultStories); +export const WindowScroll = composeStories(WindowScrollStories); +export const ContainerScroll = composeStories(ContainerScrollStories); diff --git a/src/ReactUnipika/constants.ts b/src/ReactUnipika/constants.ts new file mode 100644 index 0000000..ba01e25 --- /dev/null +++ b/src/ReactUnipika/constants.ts @@ -0,0 +1,8 @@ +export const defaultUnipikaSettings = { + asHTML: true, + format: 'json', + compact: false, + escapeWhitespace: true, + showDecoded: true, + binaryAsHex: true, +}; diff --git a/src/ReactUnipika/index.ts b/src/ReactUnipika/index.ts index 369cfc1..1b24dc3 100644 --- a/src/ReactUnipika/index.ts +++ b/src/ReactUnipika/index.ts @@ -1 +1,7 @@ -export {ReactUnipika, type ReactUnipikaProps} from './ReactUnipika'; +export {ReactUnipikaWindowScroll} from './ReactUnipikaWindowScroll'; +export {ReactUnipikaContainerScroll} from './ReactUnipikaContainerScroll'; +export type { + ReactUnipikaCommonProps, + ReactUnipikaCommonProps as ReactUnipikaProps, + ReactUnipikaWithScrollContainer, +} from './types'; diff --git a/src/ReactUnipika/types.ts b/src/ReactUnipika/types.ts new file mode 100644 index 0000000..fa63ec6 --- /dev/null +++ b/src/ReactUnipika/types.ts @@ -0,0 +1,23 @@ +import type {UnipikaSettings, ToolbarProps, CollapseIconType} from '../StructuredYson/types'; + +export interface ReactUnipikaCommonProps { + settings?: UnipikaSettings; + value: any; + inline?: boolean; + children?: React.ReactNode; + extraTools?: React.ReactNode; + virtualized?: boolean; + className?: string; + customLayout?: (args: {toolbar: React.ReactNode; content: React.ReactNode}) => React.ReactNode; + toolbarStickyTop?: number; + renderToolbar?: (props: ToolbarProps) => React.ReactNode; + collapseIconType?: CollapseIconType; + showContainerSize?: boolean; + initiallyCollapsed?: boolean; + caseInsensitiveSearch?: boolean; + renderError?: (error: unknown) => React.ReactNode; +} + +export interface ReactUnipikaWithScrollContainer extends ReactUnipikaCommonProps { + scrollContainerRef: React.RefObject; +} diff --git a/src/StructuredYson/StructuredYson.tsx b/src/StructuredYson/StructuredYsonBase.tsx similarity index 93% rename from src/StructuredYson/StructuredYson.tsx rename to src/StructuredYson/StructuredYsonBase.tsx index cacc540..587d51c 100644 --- a/src/StructuredYson/StructuredYson.tsx +++ b/src/StructuredYson/StructuredYsonBase.tsx @@ -23,7 +23,7 @@ import { import {StickyContainer} from '../StickyContainer/StickyContainer'; import {StructuredYsonToolbar} from './StructuredYsonToolbar'; import {FullValueDialog} from './FullValueDialog'; -import {Table, TableProps} from './Table'; +import {TableProps} from './Table/types'; import {cn} from '../utils/classname'; @@ -31,7 +31,7 @@ import './StructuredYson.scss'; const block = cn('g-ru-structured-yson'); -interface Props { +export interface StructuredYsonBaseProps { value: UnipikaValue; settings: UnipikaSettings; extraTools?: React.ReactNode; @@ -46,8 +46,8 @@ interface Props { interface State { flattenResult: FlattenUnipikaResult; - value: Props['value']; - settings: Props['settings']; + value: StructuredYsonBaseProps['value']; + settings: StructuredYsonBaseProps['settings']; yson: boolean; caseInsensitiveSearch?: boolean; collapsedState: CollapsedState; @@ -115,8 +115,10 @@ function calculateState( ); } -export class StructuredYson extends React.PureComponent { - static getDerivedStateFromProps(props: Props, state: State) { +export abstract class StructuredYsonBase< + P extends StructuredYsonBaseProps = StructuredYsonBaseProps, +> extends React.PureComponent { + static getDerivedStateFromProps(props: StructuredYsonBaseProps, state: State) { const { value: prevValue, settings: prevSettings, @@ -212,30 +214,8 @@ export class StructuredYson extends React.PureComponent { ); } - renderTable() { - const { - flattenResult: {data, searchIndex}, - yson, - settings, - filter, - } = this.state; - const {collapseIconType, showContainerSize} = this.props; + abstract renderTable(): React.ReactNode; - return ( - - ); - } onExpandAll = () => { this.updateState({collapsedState: {}}, () => { this.onNextMatch(null, 0); diff --git a/src/StructuredYson/StructuredYsonContainerScroll.tsx b/src/StructuredYson/StructuredYsonContainerScroll.tsx new file mode 100644 index 0000000..1c90ed8 --- /dev/null +++ b/src/StructuredYson/StructuredYsonContainerScroll.tsx @@ -0,0 +1,36 @@ +import React from 'react'; + +import {StructuredYsonBase, StructuredYsonBaseProps} from './StructuredYsonBase'; +import {Table} from './Table/TableContainerScroll'; + +export interface StructuredYsonContainerScrollProps extends StructuredYsonBaseProps { + scrollContainerRef: React.RefObject; +} + +export class StructuredYsonContainerScroll extends StructuredYsonBase { + renderTable() { + const { + flattenResult: {data, searchIndex}, + yson, + settings, + filter, + } = this.state; + const {collapseIconType, showContainerSize, scrollContainerRef} = this.props; + + return ( +
+ ); + } +} diff --git a/src/StructuredYson/StructuredYsonWindowScroll.tsx b/src/StructuredYson/StructuredYsonWindowScroll.tsx new file mode 100644 index 0000000..60acc90 --- /dev/null +++ b/src/StructuredYson/StructuredYsonWindowScroll.tsx @@ -0,0 +1,31 @@ +import React from 'react'; + +import {StructuredYsonBase, StructuredYsonBaseProps} from './StructuredYsonBase'; +import {Table} from './Table/TableWindowScroll'; + +export class StructuredYsonWindowScroll extends StructuredYsonBase { + renderTable() { + const { + flattenResult: {data, searchIndex}, + yson, + settings, + filter, + } = this.state; + const {collapseIconType, showContainerSize} = this.props; + + return ( +
+ ); + } +} diff --git a/src/StructuredYson/Table.tsx b/src/StructuredYson/Table.tsx deleted file mode 100644 index 5a2ba34..0000000 --- a/src/StructuredYson/Table.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import React from 'react'; -import {Table as GravityTable, useTable, useWindowRowVirtualizer} from '@gravity-ui/table'; -import type {ColumnDef, Row} from '@gravity-ui/table/tanstack'; -import {UnipikaFlattenTreeItem, SearchInfo} from '../utils/flattenUnipika'; -import {CollapseIconType, UnipikaSettings} from '../StructuredYson/types'; -import {asModifier, Cell} from './Cell'; -import {cn} from '../utils/classname'; - -import './Table.scss'; - -const block = cn('g-ru-table'); - -export interface TableProps { - data: UnipikaFlattenTreeItem[]; - searchIndex: Record; - unipikaSettings: UnipikaSettings; - yson: boolean; - filter: string; - onToggleCollapse: (path: string) => void; - onShowFullText: (index: number) => void; - scrollToRef: React.RefObject; - collapseIconType?: CollapseIconType; - showContainerSize?: boolean; -} - -export const Table: React.FC = ({ - data, - searchIndex, - unipikaSettings, - yson, - filter, - onToggleCollapse, - onShowFullText, - scrollToRef, - collapseIconType, - showContainerSize, -}) => { - const renderCell: ColumnDef['cell'] = ({row}) => { - const {original, index} = row; - return ( - - ); - }; - - const columns: Array> = [ - {accessorKey: '', cell: renderCell, id: 'content'}, - ]; - - const table = useTable({ - columns, - data, - }); - - const bodyRef = React.useRef(null); - - const rowVirtulization = useWindowRowVirtualizer({ - count: table.getRowModel().rows.length, - estimateSize: () => 20, - overscan: 5, - scrollMargin: bodyRef.current?.offsetTop ?? 0, - }); - - React.useEffect(() => { - scrollToRef.current = { - scrollToIndex: (index: number) => - rowVirtulization.scrollToIndex(index, {align: 'center'}), - }; - }, [scrollToRef, rowVirtulization]); - - return ( -
- -
- ); -}; - -function rowClassName(row?: Row) { - const {key} = row?.original ?? {}; - const k = key?.$decoded_value ?? ''; - return block('row', {key: asModifier(k)}); -} diff --git a/src/StructuredYson/Table.scss b/src/StructuredYson/Table/Table.scss similarity index 100% rename from src/StructuredYson/Table.scss rename to src/StructuredYson/Table/Table.scss diff --git a/src/StructuredYson/Table/TableContainerScroll.tsx b/src/StructuredYson/Table/TableContainerScroll.tsx new file mode 100644 index 0000000..11abe9b --- /dev/null +++ b/src/StructuredYson/Table/TableContainerScroll.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import {Table as GravityTable, useRowVirtualizer} from '@gravity-ui/table'; + +import {TablePropsWithScrollContainer} from './types'; +import './Table.scss'; +import {useGetTable, useScrollToIndex, block, rowClassName} from './utils'; + +export const Table: React.FC = ({ + scrollToRef, + scrollContainerRef, + ...props +}) => { + const {table, bodyRef} = useGetTable(props); + + const rowVirtualizer = useRowVirtualizer({ + count: table.getRowModel().rows.length, + estimateSize: () => 20, + overscan: 5, + getScrollElement: () => scrollContainerRef?.current || null, + }); + + useScrollToIndex({scrollToRef, rowVirtualizer}); + + return ( +
+ +
+ ); +}; diff --git a/src/StructuredYson/Table/TableWindowScroll.tsx b/src/StructuredYson/Table/TableWindowScroll.tsx new file mode 100644 index 0000000..f6fe49e --- /dev/null +++ b/src/StructuredYson/Table/TableWindowScroll.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import {Table as GravityTable, useWindowRowVirtualizer} from '@gravity-ui/table'; + +import {TableProps} from './types'; +import './Table.scss'; +import {useGetTable, useScrollToIndex, block, rowClassName} from './utils'; + +export const Table: React.FC = ({scrollToRef, ...props}) => { + const {table, bodyRef} = useGetTable(props); + + const rowVirtualizer = useWindowRowVirtualizer({ + count: table.getRowModel().rows.length, + estimateSize: () => 20, + overscan: 5, + scrollMargin: bodyRef?.current?.offsetTop ?? 0, + }); + + useScrollToIndex({scrollToRef, rowVirtualizer}); + + return ( +
+ +
+ ); +}; diff --git a/src/StructuredYson/Table/types.ts b/src/StructuredYson/Table/types.ts new file mode 100644 index 0000000..2742bf9 --- /dev/null +++ b/src/StructuredYson/Table/types.ts @@ -0,0 +1,19 @@ +import {UnipikaFlattenTreeItem, SearchInfo} from '../../utils/flattenUnipika'; +import {UnipikaSettings, CollapseIconType} from '../types'; + +export interface TableProps { + data: UnipikaFlattenTreeItem[]; + searchIndex: Record; + unipikaSettings: UnipikaSettings; + yson: boolean; + filter: string; + onToggleCollapse: (path: string) => void; + onShowFullText: (index: number) => void; + scrollToRef: React.RefObject; + collapseIconType?: CollapseIconType; + showContainerSize?: boolean; +} + +export interface TablePropsWithScrollContainer extends TableProps { + scrollContainerRef: React.RefObject; +} diff --git a/src/StructuredYson/Table/utils.tsx b/src/StructuredYson/Table/utils.tsx new file mode 100644 index 0000000..360ccdc --- /dev/null +++ b/src/StructuredYson/Table/utils.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import {useRowVirtualizer, useTable, useWindowRowVirtualizer} from '@gravity-ui/table'; +import type {ColumnDef, Row} from '@gravity-ui/table/tanstack'; +import {UnipikaFlattenTreeItem} from '../../utils/flattenUnipika'; + +import {asModifier, Cell} from '../Cell'; +import {cn} from '../../utils/classname'; +import {TableProps} from './types'; + +export const block = cn('g-ru-table'); + +export function rowClassName(row?: Row) { + const {key} = row?.original ?? {}; + const k = key?.$decoded_value ?? ''; + return block('row', {key: asModifier(k)}); +} + +export function useScrollToIndex({ + scrollToRef, + rowVirtualizer, +}: Pick & { + rowVirtualizer: + | ReturnType + | ReturnType; +}) { + React.useEffect(() => { + scrollToRef.current = { + scrollToIndex: (index: number) => + rowVirtualizer.scrollToIndex(index, {align: 'center'}), + }; + }, [scrollToRef, rowVirtualizer]); +} + +export function useGetTable({ + data, + searchIndex, + unipikaSettings, + yson, + filter, + onToggleCollapse, + onShowFullText, + collapseIconType, + showContainerSize, +}: Omit) { + const bodyRef = React.useRef(null); + + const renderCell: ColumnDef['cell'] = ({row}) => { + const {original, index} = row; + return ( + + ); + }; + + const columns: Array> = [ + {accessorKey: '', cell: renderCell, id: 'content'}, + ]; + + const table = useTable({ + columns, + data, + }); + + return {table, bodyRef}; +} diff --git a/src/container-scroll.ts b/src/container-scroll.ts new file mode 100644 index 0000000..0ea5093 --- /dev/null +++ b/src/container-scroll.ts @@ -0,0 +1,2 @@ +export {ReactUnipikaContainerScroll as ReactUnipika} from './ReactUnipika/ReactUnipikaContainerScroll'; +export type {ReactUnipikaWithScrollContainer as ReactUnipikaProps} from './ReactUnipika/types'; diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 8095b3e..0000000 --- a/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ReactUnipika'; diff --git a/src/window-scroll.ts b/src/window-scroll.ts new file mode 100644 index 0000000..e816bef --- /dev/null +++ b/src/window-scroll.ts @@ -0,0 +1,2 @@ +export {ReactUnipikaWindowScroll as ReactUnipika} from './ReactUnipika/ReactUnipikaWindowScroll'; +export type {ReactUnipikaCommonProps as ReactUnipikaProps} from './ReactUnipika/types';