UNPKG

react-windowed-list

Version:

A fast, versatile virtual-render list component for React

187 lines (160 loc) 3.24 kB
// external dependencies import React from 'react'; /** * @constant {boolean} ADD_EVENT_LISTENER_OPTIONS * @default */ export var ADD_EVENT_LISTENER_OPTIONS = function () { if (typeof window === 'undefined') { return false; } var hasSupport = false; try { document.createElement('div').addEventListener('test', function () {}, { get passive() { hasSupport = true; return false; } }); /* eslint-disable no-empty */ } catch (e) {} /* eslint-enable */ return hasSupport; }() ? { passive: true } : false; /** * @constant {Object} CLIENT_SIZE_KEYS */ export var CLIENT_SIZE_KEYS = { x: 'clientWidth', y: 'clientHeight' }; /** * @constant {Object} CLIENT_START_KEYS */ export var CLIENT_START_KEYS = { x: 'clientTop', y: 'clientLeft' }; /** * @constant {Object} INNER_SIZE_KEYS */ export var INNER_SIZE_KEYS = { x: 'innerWidth', y: 'innerHeight' }; /** * @constant {Object} OFFSET_SIZE_KEYS */ export var OFFSET_SIZE_KEYS = { x: 'offsetWidth', y: 'offsetHeight' }; /** * @constant {Object} OFFSET_START_KEYS */ export var OFFSET_START_KEYS = { x: 'offsetLeft', y: 'offsetTop' }; /** * @constant {Object} OVERFLOW_KEYS */ export var OVERFLOW_KEYS = { x: 'overflowX', y: 'overflowY' }; /** * @constant {Array<string>} OVERFLOW_VALUES */ export var OVERFLOW_VALUES = ['auto', 'scroll', 'overlay']; /** * @constant {Object} SCROLL_SIZE_KEYS */ export var SCROLL_SIZE_KEYS = { x: 'scrollWidth', y: 'scrollHeight' }; /** * @constant {Object} SCROLL_START_KEYS */ export var SCROLL_START_KEYS = { x: 'scrollLeft', y: 'scrollTop' }; /** * @constant {Object} SIZE_KEYS */ export var SIZE_KEYS = { x: 'width', y: 'height' }; /** * @constant {string} UNSTABLE_MESSAGE * @default */ export var UNSTABLE_MESSAGE = 'WindowedList failed to reach a stable state.'; /** * @constant {number} MAX_SYNC_UPDATES * @default */ export var MAX_SYNC_UPDATES = 100; /** * @constant {Object} VALID_AXES */ export var VALID_AXES = { X: 'x', Y: 'y' }; /** * @constant {Array<string>} VALID_AXIS_VALUES */ export var VALID_AXIS_VALUES = Object.keys(VALID_AXES).map(function (key) { return VALID_AXES[key]; }); /** * @constant {Object} VALID_TYPES */ export var VALID_TYPES = { SIMPLE: 'simple', UNIFORM: 'uniform', VARIABLE: 'variable' }; /** * @constant {Array<string>} VALID_TYPE_VALUES */ export var VALID_TYPE_VALUES = Object.keys(VALID_TYPES).map(function (key) { return VALID_TYPES[key]; }); /** * @constant {string} DEFAULT_AXIS * @default */ export var DEFAULT_AXIS = VALID_AXES.Y; /** * @constant {Object} OUTER_CONTAINER_STYLE */ export var OUTER_CONTAINER_STYLE = { height: '100%', maxHeight: 'inherit', width: '100%' }; /** * @constant {Object} DEFAULT_CONTAINER_STYLE */ export var DEFAULT_CONTAINER_STYLE = { position: 'relative' }; /** * @constant {number} UNSTABLE_TIMEOUT */ export var UNSTABLE_TIMEOUT = 250; /** * @constant {number} REACT_MINOR_VERSION */ export var REACT_MINOR_VERSION = +React.version.split('.').slice(0, 2).join('.'); /** * @constant {boolean} HAS_NEW_LIFECYCLE_METHODS */ export var HAS_NEW_LIFECYCLE_METHODS = REACT_MINOR_VERSION >= 16.3;