/*
Copyright (c) 2018-2020 Uber Technologies, Inc.
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
// @flow
import * as React from 'react';
import ResizeObserver from 'resize-observer-polyfill';
import {
Button,
SHAPE as BUTTON_SHAPES,
SIZE as BUTTON_SIZES,
KIND as BUTTON_KINDS,
} from '../button/index.js';
import Search from '../icon/search.js';
import {Input, SIZE as INPUT_SIZES} from '../input/index.js';
import {Popover} from '../popover/index.js';
import {useStyletron} from '../styles/index.js';
import {Tag} from '../tag/index.js';
import FilterMenu from './filter-menu.js';
import {Unstable_DataTable} from './data-table.js';
import {Unstable_StatefulContainer} from './stateful-container.js';
import type {StatefulDataTablePropsT} from './types.js';
function useResizeObserver(
ref: {current: HTMLElement | null},
callback: (ResizeObserverEntry[], ResizeObserver) => mixed,
) {
React.useLayoutEffect(() => {
if (__BROWSER__) {
if (ref.current) {
//$FlowFixMe
const observer = new ResizeObserver(callback);
observer.observe(ref.current);
return () => observer.disconnect();
}
}
}, [ref]);
}
function QueryInput(props) {
const [css, theme] = useStyletron();
const [value, setValue] = React.useState('');
React.useEffect(() => {
const timeout = setTimeout(() => props.onChange(value), 250);
return () => clearTimeout(timeout);
}, [value]);
return (