@chakra-ui/utils
Advanced tools
| "use strict"; | ||
| exports.__esModule = true; | ||
| exports.focus = focus; | ||
| var _dom = require("./dom"); | ||
| var _tabbable = require("./tabbable"); | ||
| function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); } | ||
| function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
| function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
| function isInputElement(element) { | ||
| return (0, _tabbable.isHTMLElement)(element) && element.tagName.toLowerCase() === "input" && "select" in element; | ||
| } | ||
| function getActiveElement(element) { | ||
| var doc = element instanceof HTMLElement ? (0, _dom.getOwnerDocument)(element) : document; | ||
| return doc.activeElement === element; | ||
| } | ||
| function focus(element, options) { | ||
| if (options === void 0) { | ||
| options = {}; | ||
| } | ||
| var _options = options, | ||
| _options$isActive = _options.isActive, | ||
| isActive = _options$isActive === void 0 ? getActiveElement : _options$isActive, | ||
| _options$nextTick = _options.nextTick, | ||
| nextTick = _options$nextTick === void 0 ? true : _options$nextTick, | ||
| preventScroll = _options.preventScroll; | ||
| if (isActive(element)) return -1; | ||
| function triggerFocus() { | ||
| if (supportsPreventScroll()) { | ||
| element.focus({ | ||
| preventScroll: preventScroll | ||
| }); | ||
| } else { | ||
| element.focus(); | ||
| if (preventScroll) { | ||
| var scrollableElements = getScrollableElements(element); | ||
| restoreScrollPosition(scrollableElements); | ||
| } | ||
| } | ||
| if (isInputElement(element)) { | ||
| element.select(); | ||
| } | ||
| } | ||
| if (nextTick) { | ||
| return requestAnimationFrame(triggerFocus); | ||
| } | ||
| triggerFocus(); | ||
| return -1; | ||
| } | ||
| var supportsPreventScrollCached = null; | ||
| function supportsPreventScroll() { | ||
| if (supportsPreventScrollCached == null) { | ||
| supportsPreventScrollCached = false; | ||
| try { | ||
| var div = document.createElement("div"); | ||
| div.focus({ | ||
| get preventScroll() { | ||
| supportsPreventScrollCached = true; | ||
| return true; | ||
| } | ||
| }); | ||
| } catch (e) {// Ignore | ||
| } | ||
| } | ||
| return supportsPreventScrollCached; | ||
| } | ||
| function getScrollableElements(element) { | ||
| var doc = (0, _dom.getOwnerDocument)(element); | ||
| var parent = element.parentNode; | ||
| var scrollableElements = []; | ||
| var rootScrollingElement = doc.scrollingElement || doc.documentElement; | ||
| while (parent instanceof HTMLElement && parent !== rootScrollingElement) { | ||
| if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) { | ||
| scrollableElements.push({ | ||
| element: parent, | ||
| scrollTop: parent.scrollTop, | ||
| scrollLeft: parent.scrollLeft | ||
| }); | ||
| } | ||
| parent = parent.parentNode; | ||
| } | ||
| if (rootScrollingElement instanceof HTMLElement) { | ||
| scrollableElements.push({ | ||
| element: rootScrollingElement, | ||
| scrollTop: rootScrollingElement.scrollTop, | ||
| scrollLeft: rootScrollingElement.scrollLeft | ||
| }); | ||
| } | ||
| return scrollableElements; | ||
| } | ||
| function restoreScrollPosition(scrollableElements) { | ||
| for (var _iterator = _createForOfIteratorHelperLoose(scrollableElements), _step; !(_step = _iterator()).done;) { | ||
| var _step$value = _step.value, | ||
| element = _step$value.element, | ||
| scrollTop = _step$value.scrollTop, | ||
| scrollLeft = _step$value.scrollLeft; | ||
| element.scrollTop = scrollTop; | ||
| element.scrollLeft = scrollLeft; | ||
| } | ||
| } | ||
| //# sourceMappingURL=focus.js.map |
| {"version":3,"sources":["../../src/focus.ts"],"names":["isInputElement","element","tagName","toLowerCase","getActiveElement","doc","HTMLElement","document","activeElement","focus","options","isActive","nextTick","preventScroll","triggerFocus","supportsPreventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","select","requestAnimationFrame","supportsPreventScrollCached","div","createElement","e","parent","parentNode","rootScrollingElement","scrollingElement","documentElement","offsetHeight","scrollHeight","offsetWidth","scrollWidth","push","scrollTop","scrollLeft"],"mappings":"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","sourcesContent":["// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n// See https://github.com/adobe/react-spectrum\n\nimport { getOwnerDocument } from \"./dom\"\nimport { isHTMLElement } from \"./tabbable\"\n\nexport interface FocusableElement {\n focus(options?: FocusOptions): void\n}\n\nfunction isInputElement(\n element: FocusableElement,\n): element is HTMLInputElement {\n return (\n isHTMLElement(element) &&\n element.tagName.toLowerCase() === \"input\" &&\n \"select\" in element\n )\n}\n\nfunction getActiveElement(element: FocusableElement) {\n const doc =\n element instanceof HTMLElement ? getOwnerDocument(element) : document\n return doc.activeElement === (element as HTMLElement)\n}\n\ninterface FocusProps extends FocusOptions {\n /**\n * Function that determines if the element is the active element\n */\n isActive?: typeof getActiveElement\n /**\n * If true, the element will be focused in the next tick\n */\n nextTick?: boolean\n}\n\nexport function focus(element: FocusableElement, options: FocusProps = {}) {\n const {\n isActive = getActiveElement,\n nextTick = true,\n preventScroll,\n } = options\n\n if (isActive(element)) return -1\n\n function triggerFocus() {\n if (supportsPreventScroll()) {\n element.focus({ preventScroll })\n } else {\n element.focus()\n if (preventScroll) {\n const scrollableElements = getScrollableElements(element as HTMLElement)\n restoreScrollPosition(scrollableElements)\n }\n }\n\n if (isInputElement(element)) {\n element.select()\n }\n }\n\n if (nextTick) {\n return requestAnimationFrame(triggerFocus)\n }\n\n triggerFocus()\n return -1\n}\n\nlet supportsPreventScrollCached: boolean | null = null\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false\n try {\n const div = document.createElement(\"div\")\n div.focus({\n get preventScroll() {\n supportsPreventScrollCached = true\n return true\n },\n })\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached\n}\n\ninterface ScrollableElement {\n element: HTMLElement\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getScrollableElements(element: HTMLElement): ScrollableElement[] {\n const doc = getOwnerDocument(element)\n let parent = element.parentNode\n const scrollableElements: ScrollableElement[] = []\n const rootScrollingElement = doc.scrollingElement || doc.documentElement\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft,\n })\n }\n parent = parent.parentNode\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft,\n })\n }\n\n return scrollableElements\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (const { element, scrollTop, scrollLeft } of scrollableElements) {\n element.scrollTop = scrollTop\n element.scrollLeft = scrollLeft\n }\n}\n"],"file":"focus.js"} |
| // Original licensing for the following methods can be found in the | ||
| // NOTICE file in the root directory of this source tree. | ||
| // See https://github.com/calvellido/focus-options-polyfill | ||
| // See https://github.com/adobe/react-spectrum | ||
| import { getOwnerDocument } from "./dom"; | ||
| import { isHTMLElement } from "./tabbable"; | ||
| function isInputElement(element) { | ||
| return isHTMLElement(element) && element.tagName.toLowerCase() === "input" && "select" in element; | ||
| } | ||
| function getActiveElement(element) { | ||
| var doc = element instanceof HTMLElement ? getOwnerDocument(element) : document; | ||
| return doc.activeElement === element; | ||
| } | ||
| export function focus(element, options) { | ||
| if (options === void 0) { | ||
| options = {}; | ||
| } | ||
| var { | ||
| isActive = getActiveElement, | ||
| nextTick = true, | ||
| preventScroll | ||
| } = options; | ||
| if (isActive(element)) return -1; | ||
| function triggerFocus() { | ||
| if (supportsPreventScroll()) { | ||
| element.focus({ | ||
| preventScroll | ||
| }); | ||
| } else { | ||
| element.focus(); | ||
| if (preventScroll) { | ||
| var scrollableElements = getScrollableElements(element); | ||
| restoreScrollPosition(scrollableElements); | ||
| } | ||
| } | ||
| if (isInputElement(element)) { | ||
| element.select(); | ||
| } | ||
| } | ||
| if (nextTick) { | ||
| return requestAnimationFrame(triggerFocus); | ||
| } | ||
| triggerFocus(); | ||
| return -1; | ||
| } | ||
| var supportsPreventScrollCached = null; | ||
| function supportsPreventScroll() { | ||
| if (supportsPreventScrollCached == null) { | ||
| supportsPreventScrollCached = false; | ||
| try { | ||
| var div = document.createElement("div"); | ||
| div.focus({ | ||
| get preventScroll() { | ||
| supportsPreventScrollCached = true; | ||
| return true; | ||
| } | ||
| }); | ||
| } catch (e) {// Ignore | ||
| } | ||
| } | ||
| return supportsPreventScrollCached; | ||
| } | ||
| function getScrollableElements(element) { | ||
| var doc = getOwnerDocument(element); | ||
| var parent = element.parentNode; | ||
| var scrollableElements = []; | ||
| var rootScrollingElement = doc.scrollingElement || doc.documentElement; | ||
| while (parent instanceof HTMLElement && parent !== rootScrollingElement) { | ||
| if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) { | ||
| scrollableElements.push({ | ||
| element: parent, | ||
| scrollTop: parent.scrollTop, | ||
| scrollLeft: parent.scrollLeft | ||
| }); | ||
| } | ||
| parent = parent.parentNode; | ||
| } | ||
| if (rootScrollingElement instanceof HTMLElement) { | ||
| scrollableElements.push({ | ||
| element: rootScrollingElement, | ||
| scrollTop: rootScrollingElement.scrollTop, | ||
| scrollLeft: rootScrollingElement.scrollLeft | ||
| }); | ||
| } | ||
| return scrollableElements; | ||
| } | ||
| function restoreScrollPosition(scrollableElements) { | ||
| for (var { | ||
| element, | ||
| scrollTop, | ||
| scrollLeft | ||
| } of scrollableElements) { | ||
| element.scrollTop = scrollTop; | ||
| element.scrollLeft = scrollLeft; | ||
| } | ||
| } | ||
| //# sourceMappingURL=focus.js.map |
| {"version":3,"sources":["../../src/focus.ts"],"names":["getOwnerDocument","isHTMLElement","isInputElement","element","tagName","toLowerCase","getActiveElement","doc","HTMLElement","document","activeElement","focus","options","isActive","nextTick","preventScroll","triggerFocus","supportsPreventScroll","scrollableElements","getScrollableElements","restoreScrollPosition","select","requestAnimationFrame","supportsPreventScrollCached","div","createElement","e","parent","parentNode","rootScrollingElement","scrollingElement","documentElement","offsetHeight","scrollHeight","offsetWidth","scrollWidth","push","scrollTop","scrollLeft"],"mappings":"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","sourcesContent":["// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n// See https://github.com/adobe/react-spectrum\n\nimport { getOwnerDocument } from \"./dom\"\nimport { isHTMLElement } from \"./tabbable\"\n\nexport interface FocusableElement {\n focus(options?: FocusOptions): void\n}\n\nfunction isInputElement(\n element: FocusableElement,\n): element is HTMLInputElement {\n return (\n isHTMLElement(element) &&\n element.tagName.toLowerCase() === \"input\" &&\n \"select\" in element\n )\n}\n\nfunction getActiveElement(element: FocusableElement) {\n const doc =\n element instanceof HTMLElement ? getOwnerDocument(element) : document\n return doc.activeElement === (element as HTMLElement)\n}\n\ninterface FocusProps extends FocusOptions {\n /**\n * Function that determines if the element is the active element\n */\n isActive?: typeof getActiveElement\n /**\n * If true, the element will be focused in the next tick\n */\n nextTick?: boolean\n}\n\nexport function focus(element: FocusableElement, options: FocusProps = {}) {\n const {\n isActive = getActiveElement,\n nextTick = true,\n preventScroll,\n } = options\n\n if (isActive(element)) return -1\n\n function triggerFocus() {\n if (supportsPreventScroll()) {\n element.focus({ preventScroll })\n } else {\n element.focus()\n if (preventScroll) {\n const scrollableElements = getScrollableElements(element as HTMLElement)\n restoreScrollPosition(scrollableElements)\n }\n }\n\n if (isInputElement(element)) {\n element.select()\n }\n }\n\n if (nextTick) {\n return requestAnimationFrame(triggerFocus)\n }\n\n triggerFocus()\n return -1\n}\n\nlet supportsPreventScrollCached: boolean | null = null\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false\n try {\n const div = document.createElement(\"div\")\n div.focus({\n get preventScroll() {\n supportsPreventScrollCached = true\n return true\n },\n })\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached\n}\n\ninterface ScrollableElement {\n element: HTMLElement\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getScrollableElements(element: HTMLElement): ScrollableElement[] {\n const doc = getOwnerDocument(element)\n let parent = element.parentNode\n const scrollableElements: ScrollableElement[] = []\n const rootScrollingElement = doc.scrollingElement || doc.documentElement\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft,\n })\n }\n parent = parent.parentNode\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft,\n })\n }\n\n return scrollableElements\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (const { element, scrollTop, scrollLeft } of scrollableElements) {\n element.scrollTop = scrollTop\n element.scrollLeft = scrollLeft\n }\n}\n"],"file":"focus.js"} |
| export interface FocusableElement { | ||
| focus(options?: FocusOptions): void; | ||
| } | ||
| declare function getActiveElement(element: FocusableElement): boolean; | ||
| interface FocusProps extends FocusOptions { | ||
| /** | ||
| * Function that determines if the element is the active element | ||
| */ | ||
| isActive?: typeof getActiveElement; | ||
| /** | ||
| * If true, the element will be focused in the next tick | ||
| */ | ||
| nextTick?: boolean; | ||
| } | ||
| export declare function focus(element: FocusableElement, options?: FocusProps): number; | ||
| export {}; |
+26
-0
| # Change Log | ||
| ## 1.2.0 | ||
| ### Minor Changes | ||
| - [`61962345c`](https://github.com/chakra-ui/chakra-ui/commit/61962345c5b1c862445c16c586e304b28c376c9a) | ||
| [#3291](https://github.com/chakra-ui/chakra-ui/pull/3291) Thanks | ||
| [@dominictwlee](https://github.com/dominictwlee)! - Support negative scale | ||
| values for css variables. | ||
| ### Patch Changes | ||
| - [`ff4a36bca`](https://github.com/chakra-ui/chakra-ui/commit/ff4a36bca11cc177830f6f1da13700acd1e3a087) | ||
| [#3245](https://github.com/chakra-ui/chakra-ui/pull/3245) Thanks | ||
| [@segunadebayo](https://github.com/segunadebayo)! - Removed `objectAssign` | ||
| function in favor of using native `Object.assign` method. It is | ||
| [now supported in most browsers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#browser_compatibility) | ||
| This function is only used once in the `system` package as well. This PR | ||
| simply removes it to cut bundle size of utils. Less is more 😃. | ||
| * [`483687237`](https://github.com/chakra-ui/chakra-ui/commit/483687237f2c4fed05dc6a79693f307c601c1285) | ||
| [#3283](https://github.com/chakra-ui/chakra-ui/pull/3283) Thanks | ||
| [@segunadebayo](https://github.com/segunadebayo)! - Update focus util to | ||
| handle unsupported browsers (Safari), and ability to opt out of | ||
| `requestAnimationFrame` | ||
| ## 1.1.0 | ||
@@ -4,0 +30,0 @@ |
@@ -10,2 +10,3 @@ "use strict"; | ||
| exports.isString = isString; | ||
| exports.isCssVar = isCssVar; | ||
| exports.isInputEvent = isInputEvent; | ||
@@ -85,2 +86,6 @@ exports.__DEV__ = exports.isEmpty = exports.isNull = exports.isEmptyObject = exports.isObject = exports.isUndefined = exports.isDefined = exports.isEmptyArray = exports.isNotNumber = void 0; | ||
| return Object.prototype.toString.call(value) === "[object String]"; | ||
| } | ||
| function isCssVar(value) { | ||
| return /^var\(--.+\)$/.test(value); | ||
| } // Event assertions | ||
@@ -87,0 +92,0 @@ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/assertion.ts"],"names":["isNumber","value","isNotNumber","Number","isNaN","isFinite","isNumeric","parseFloat","isArray","Array","isEmptyArray","length","isFunction","isDefined","undefined","isUndefined","isObject","type","isEmptyObject","Object","keys","isNotEmptyObject","isNull","isString","prototype","toString","call","isInputEvent","target","isEmpty","__DEV__","process","env","NODE_ENV"],"mappings":"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","sourcesContent":["import { ChangeEvent } from \"react\"\nimport { Dict } from \"./types\"\n\n// Number assertions\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport const isNotNumber = (value: any) =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport function isNumeric(value: any) {\n return value != null && value - parseFloat(value) + 1 >= 0\n}\n\n// Array assertions\nexport function isArray<T>(value: any): value is Array<T> {\n return Array.isArray(value)\n}\n\nexport const isEmptyArray = (value: any) => isArray(value) && value.length === 0\n\n// Function assertions\nexport function isFunction(value: any): value is Function {\n return typeof value === \"function\"\n}\n\n// Generic assertions\nexport const isDefined = (value: any) =>\n typeof value !== \"undefined\" && value !== undefined\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" || value === undefined\n\n// Object assertions\nexport const isObject = (value: any): value is Dict => {\n const type = typeof value\n return (\n value != null &&\n (type === \"object\" || type === \"function\") &&\n !isArray(value)\n )\n}\n\nexport const isEmptyObject = (value: any) =>\n isObject(value) && Object.keys(value).length === 0\n\nexport function isNotEmptyObject(value: any): value is object {\n return value && !isEmptyObject(value)\n}\n\nexport const isNull = (value: any): value is null => value == null\n\n// String assertions\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\n// Event assertions\nexport function isInputEvent(value: any): value is ChangeEvent {\n return value && isObject(value) && isObject(value.target)\n}\n\n// Empty assertions\nexport const isEmpty = (value: any) => {\n if (isArray(value)) return isEmptyArray(value)\n if (isObject(value)) return isEmptyObject(value)\n if (value == null || value === \"\") return true\n return false\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const __DEV__ = process.env.NODE_ENV !== \"production\"\n"],"file":"assertion.js"} | ||
| {"version":3,"sources":["../../src/assertion.ts"],"names":["isNumber","value","isNotNumber","Number","isNaN","isFinite","isNumeric","parseFloat","isArray","Array","isEmptyArray","length","isFunction","isDefined","undefined","isUndefined","isObject","type","isEmptyObject","Object","keys","isNotEmptyObject","isNull","isString","prototype","toString","call","isCssVar","test","isInputEvent","target","isEmpty","__DEV__","process","env","NODE_ENV"],"mappings":"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","sourcesContent":["import { ChangeEvent } from \"react\"\nimport { Dict } from \"./types\"\n\n// Number assertions\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport const isNotNumber = (value: any) =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport function isNumeric(value: any) {\n return value != null && value - parseFloat(value) + 1 >= 0\n}\n\n// Array assertions\nexport function isArray<T>(value: any): value is Array<T> {\n return Array.isArray(value)\n}\n\nexport const isEmptyArray = (value: any) => isArray(value) && value.length === 0\n\n// Function assertions\nexport function isFunction(value: any): value is Function {\n return typeof value === \"function\"\n}\n\n// Generic assertions\nexport const isDefined = (value: any) =>\n typeof value !== \"undefined\" && value !== undefined\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" || value === undefined\n\n// Object assertions\nexport const isObject = (value: any): value is Dict => {\n const type = typeof value\n return (\n value != null &&\n (type === \"object\" || type === \"function\") &&\n !isArray(value)\n )\n}\n\nexport const isEmptyObject = (value: any) =>\n isObject(value) && Object.keys(value).length === 0\n\nexport function isNotEmptyObject(value: any): value is object {\n return value && !isEmptyObject(value)\n}\n\nexport const isNull = (value: any): value is null => value == null\n\n// String assertions\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isCssVar(value: string) {\n return /^var\\(--.+\\)$/.test(value)\n}\n\n// Event assertions\nexport function isInputEvent(value: any): value is ChangeEvent {\n return value && isObject(value) && isObject(value.target)\n}\n\n// Empty assertions\nexport const isEmpty = (value: any) => {\n if (isArray(value)) return isEmptyArray(value)\n if (isObject(value)) return isEmptyObject(value)\n if (value == null || value === \"\") return true\n return false\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const __DEV__ = process.env.NODE_ENV !== \"production\"\n"],"file":"assertion.js"} |
@@ -100,2 +100,10 @@ "use strict"; | ||
| }); | ||
| var _focus = require("./focus"); | ||
| Object.keys(_focus).forEach(function (key) { | ||
| if (key === "default" || key === "__esModule") return; | ||
| if (key in exports && exports[key] === _focus[key]) return; | ||
| exports[key] = _focus[key]; | ||
| }); | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./function\"\nexport * from \"./types\"\nexport * from \"./dom\"\nexport * from \"./array\"\nexport * from \"./object\"\nexport * from \"./number\"\nexport * from \"./dom-query\"\nexport * from \"./tabbable\"\nexport * from \"./assertion\"\nexport * from \"./react-helpers\"\nexport * from \"css-box-model\"\nexport * from \"./responsive\"\n"],"file":"index.js"} | ||
| {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./function\"\nexport * from \"./types\"\nexport * from \"./dom\"\nexport * from \"./array\"\nexport * from \"./object\"\nexport * from \"./number\"\nexport * from \"./dom-query\"\nexport * from \"./tabbable\"\nexport * from \"./assertion\"\nexport * from \"./react-helpers\"\nexport * from \"css-box-model\"\nexport * from \"./responsive\"\nexport * from \"./focus\"\n"],"file":"index.js"} |
@@ -10,3 +10,3 @@ "use strict"; | ||
| exports.objectFilter = objectFilter; | ||
| exports.fromEntries = exports.objectKeys = exports.filterUndefined = exports.memoizedGet = exports.memoize = exports.objectAssign = exports.mergeWith = void 0; | ||
| exports.fromEntries = exports.objectKeys = exports.filterUndefined = exports.memoizedGet = exports.memoize = exports.mergeWith = void 0; | ||
@@ -17,6 +17,2 @@ var _lodash = _interopRequireDefault(require("lodash.mergewith")); | ||
| var _objectAssign = _interopRequireDefault(require("object-assign")); | ||
| exports.objectAssign = _objectAssign["default"]; | ||
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
@@ -23,0 +19,0 @@ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/object.ts"],"names":["omit","object","keys","result","Object","forEach","key","includes","pick","split","picked","omitted","get","obj","path","fallback","index","length","undefined","memoize","fn","cache","WeakMap","memoizedFn","has","set","Map","map","value","memoizedGet","getWithDefault","scale","objectFilter","shouldPass","filterUndefined","val","objectKeys","fromEntries","entries","reduce","carry"],"mappings":"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","sourcesContent":["import type { Dict, Omit } from \"./types\"\n\nexport { default as mergeWith } from \"lodash.mergewith\"\nexport { default as objectAssign } from \"object-assign\"\n\nexport function omit<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as K)) return\n result[key] = object[key]\n })\n\n return result as Omit<T, K>\n}\n\nexport function pick<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result = {} as { [P in K]: T[P] }\n\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key]\n }\n })\n\n return result\n}\n\nexport function split<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as T[K])) {\n picked[key] = object[key]\n } else {\n omitted[key] = object[key]\n }\n })\n\n return [picked, omitted] as [{ [P in K]: T[P] }, Omit<T, K>]\n}\n\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def - the fallback value\n */\nexport function get(\n obj: object,\n path: string | number,\n fallback?: any,\n index?: number,\n) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path]\n\n for (index = 0; index < key.length; index += 1) {\n if (!obj) break\n obj = obj[key[index]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\ntype Get = (\n obj: Readonly<object>,\n path: string | number,\n fallback?: any,\n index?: number,\n) => any\n\nexport const memoize = (fn: Get) => {\n const cache = new WeakMap()\n\n const memoizedFn: Get = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback)\n }\n\n if (!cache.has(obj)) {\n cache.set(obj, new Map())\n }\n\n const map = cache.get(obj)\n\n if (map.has(path)) {\n return map.get(path)\n }\n\n const value = fn(obj, path, fallback, index)\n\n map.set(path, value)\n\n return value\n }\n\n return memoizedFn\n}\n\nexport const memoizedGet = memoize(get)\n\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\nexport function getWithDefault(path: any, scale: any) {\n return memoizedGet(scale, path, path)\n}\n\ntype FilterFn<T> = (value: any, key: string, object: T) => boolean\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nexport function objectFilter<T extends Dict>(object: T, fn: FilterFn<T>) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n const value = object[key]\n const shouldPass = fn(value, key, object)\n if (shouldPass) {\n result[key] = value\n }\n })\n\n return result\n}\n\nexport const filterUndefined = (object: Dict) =>\n objectFilter(object, (val) => val !== null && val !== undefined)\n\nexport const objectKeys = <T extends Dict>(obj: T) =>\n (Object.keys(obj) as unknown) as (keyof T)[]\n\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\nexport const fromEntries = <T extends unknown>(entries: [string, any][]) =>\n entries.reduce((carry, [key, value]) => {\n carry[key] = value\n return carry\n }, {}) as T\n"],"file":"object.js"} | ||
| {"version":3,"sources":["../../src/object.ts"],"names":["omit","object","keys","result","Object","forEach","key","includes","pick","split","picked","omitted","get","obj","path","fallback","index","length","undefined","memoize","fn","cache","WeakMap","memoizedFn","has","set","Map","map","value","memoizedGet","getWithDefault","scale","objectFilter","shouldPass","filterUndefined","val","objectKeys","fromEntries","entries","reduce","carry"],"mappings":"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","sourcesContent":["import type { Dict, Omit } from \"./types\"\n\nexport { default as mergeWith } from \"lodash.mergewith\"\n\nexport function omit<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as K)) return\n result[key] = object[key]\n })\n\n return result as Omit<T, K>\n}\n\nexport function pick<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result = {} as { [P in K]: T[P] }\n\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key]\n }\n })\n\n return result\n}\n\nexport function split<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as T[K])) {\n picked[key] = object[key]\n } else {\n omitted[key] = object[key]\n }\n })\n\n return [picked, omitted] as [{ [P in K]: T[P] }, Omit<T, K>]\n}\n\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def - the fallback value\n */\nexport function get(\n obj: object,\n path: string | number,\n fallback?: any,\n index?: number,\n) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path]\n\n for (index = 0; index < key.length; index += 1) {\n if (!obj) break\n obj = obj[key[index]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\ntype Get = (\n obj: Readonly<object>,\n path: string | number,\n fallback?: any,\n index?: number,\n) => any\n\nexport const memoize = (fn: Get) => {\n const cache = new WeakMap()\n\n const memoizedFn: Get = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback)\n }\n\n if (!cache.has(obj)) {\n cache.set(obj, new Map())\n }\n\n const map = cache.get(obj)\n\n if (map.has(path)) {\n return map.get(path)\n }\n\n const value = fn(obj, path, fallback, index)\n\n map.set(path, value)\n\n return value\n }\n\n return memoizedFn\n}\n\nexport const memoizedGet = memoize(get)\n\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\nexport function getWithDefault(path: any, scale: any) {\n return memoizedGet(scale, path, path)\n}\n\ntype FilterFn<T> = (value: any, key: string, object: T) => boolean\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nexport function objectFilter<T extends Dict>(object: T, fn: FilterFn<T>) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n const value = object[key]\n const shouldPass = fn(value, key, object)\n if (shouldPass) {\n result[key] = value\n }\n })\n\n return result\n}\n\nexport const filterUndefined = (object: Dict) =>\n objectFilter(object, (val) => val !== null && val !== undefined)\n\nexport const objectKeys = <T extends Dict>(obj: T) =>\n (Object.keys(obj) as unknown) as (keyof T)[]\n\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\nexport const fromEntries = <T extends unknown>(entries: [string, any][]) =>\n entries.reduce((carry, [key, value]) => {\n carry[key] = value\n return carry\n }, {}) as T\n"],"file":"object.js"} |
+0
-30
@@ -11,3 +11,2 @@ "use strict"; | ||
| exports.isTabbable = isTabbable; | ||
| exports.focus = focus; | ||
| exports.hasNegativeTabIndex = exports.hasTabIndex = exports.hasDisplayNone = void 0; | ||
@@ -90,31 +89,2 @@ | ||
| } | ||
| var isActiveElement = function isActiveElement(element) { | ||
| return document.activeElement === element; | ||
| }; | ||
| function isInputElement(element) { | ||
| return isHTMLElement(element) && element.tagName.toLowerCase() === "input" && "select" in element; | ||
| } | ||
| function focus(element, options) { | ||
| if (options === void 0) { | ||
| options = {}; | ||
| } | ||
| var _options = options, | ||
| _options$isActive = _options.isActive, | ||
| isActive = _options$isActive === void 0 ? isActiveElement : _options$isActive, | ||
| preventScroll = _options.preventScroll; | ||
| if (isActive(element)) return -1; | ||
| return requestAnimationFrame(function () { | ||
| element.focus({ | ||
| preventScroll: preventScroll | ||
| }); | ||
| if (isInputElement(element)) { | ||
| element.select(); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=tabbable.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/tabbable.ts"],"names":["hasDisplayNone","element","window","getComputedStyle","display","hasTabIndex","hasAttribute","hasNegativeTabIndex","tabIndex","isDisabled","Boolean","getAttribute","hasFocusWithin","document","activeElement","contains","isHTMLElement","HTMLElement","isHidden","parentElement","hidden","isContentEditable","value","isFocusable","localName","focusableTags","indexOf","others","a","audio","video","isTabbable","isActiveElement","isInputElement","tagName","toLowerCase","focus","options","isActive","preventScroll","requestAnimationFrame","select"],"mappings":"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","sourcesContent":["// Really great work done by Diego Haz on this one\n// https://github.com/reakit/reakit/blob/master/packages/reakit-utils/src/tabbable.ts\n\nexport const hasDisplayNone = (element: HTMLElement) =>\n window.getComputedStyle(element).display === \"none\"\n\nexport const hasTabIndex = (element: HTMLElement) =>\n element.hasAttribute(\"tabindex\")\n\nexport const hasNegativeTabIndex = (element: HTMLElement) =>\n hasTabIndex(element) && element.tabIndex === -1\n\nexport function isDisabled(element: HTMLElement) {\n return (\n Boolean(element.getAttribute(\"disabled\")) === true ||\n Boolean(element.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nexport function hasFocusWithin(element: HTMLElement) {\n if (!document.activeElement) return false\n return element.contains(document.activeElement)\n}\n\nexport function isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement\n}\n\nexport function isHidden(element: HTMLElement) {\n if (element.parentElement && isHidden(element.parentElement)) return true\n return element.hidden\n}\n\nexport function isContentEditable(element: HTMLElement) {\n const value = element.getAttribute(\"contenteditable\")\n return value !== \"false\" && value != null\n}\n\nexport function isFocusable(element: HTMLElement) {\n if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n return false\n }\n\n const { localName } = element\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => element.hasAttribute(\"href\"),\n audio: () => element.hasAttribute(\"controls\"),\n video: () => element.hasAttribute(\"controls\"),\n }\n\n if (localName in others) {\n return others[localName as keyof typeof others]()\n }\n\n if (isContentEditable(element)) return true\n\n return hasTabIndex(element)\n}\n\nexport function isTabbable(element?: HTMLElement | null) {\n if (!element) return false\n return (\n isHTMLElement(element) &&\n isFocusable(element) &&\n !hasNegativeTabIndex(element)\n )\n}\n\nconst isActiveElement = (element: FocusableElement) =>\n document.activeElement === (element as HTMLElement)\n\nfunction isInputElement(\n element: FocusableElement,\n): element is HTMLInputElement {\n return (\n isHTMLElement(element) &&\n element.tagName.toLowerCase() === \"input\" &&\n \"select\" in element\n )\n}\n\nexport interface FocusableElement {\n focus(options?: FocusOptions): void\n}\n\ninterface FocusProps extends FocusOptions {\n isActive?: typeof isActiveElement\n}\n\nexport function focus(element: FocusableElement, options: FocusProps = {}) {\n const { isActive = isActiveElement, preventScroll } = options\n\n if (isActive(element)) return -1\n\n return requestAnimationFrame(() => {\n element.focus({ preventScroll })\n\n if (isInputElement(element)) {\n element.select()\n }\n })\n}\n"],"file":"tabbable.js"} | ||
| {"version":3,"sources":["../../src/tabbable.ts"],"names":["hasDisplayNone","element","window","getComputedStyle","display","hasTabIndex","hasAttribute","hasNegativeTabIndex","tabIndex","isDisabled","Boolean","getAttribute","hasFocusWithin","document","activeElement","contains","isHTMLElement","HTMLElement","isHidden","parentElement","hidden","isContentEditable","value","isFocusable","localName","focusableTags","indexOf","others","a","audio","video","isTabbable"],"mappings":"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","sourcesContent":["// Really great work done by Diego Haz on this one\n// https://github.com/reakit/reakit/blob/master/packages/reakit-utils/src/tabbable.ts\n\nexport const hasDisplayNone = (element: HTMLElement) =>\n window.getComputedStyle(element).display === \"none\"\n\nexport const hasTabIndex = (element: HTMLElement) =>\n element.hasAttribute(\"tabindex\")\n\nexport const hasNegativeTabIndex = (element: HTMLElement) =>\n hasTabIndex(element) && element.tabIndex === -1\n\nexport function isDisabled(element: HTMLElement) {\n return (\n Boolean(element.getAttribute(\"disabled\")) === true ||\n Boolean(element.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nexport function hasFocusWithin(element: HTMLElement) {\n if (!document.activeElement) return false\n return element.contains(document.activeElement)\n}\n\nexport function isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement\n}\n\nexport function isHidden(element: HTMLElement) {\n if (element.parentElement && isHidden(element.parentElement)) return true\n return element.hidden\n}\n\nexport function isContentEditable(element: HTMLElement) {\n const value = element.getAttribute(\"contenteditable\")\n return value !== \"false\" && value != null\n}\n\nexport function isFocusable(element: HTMLElement) {\n if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n return false\n }\n\n const { localName } = element\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => element.hasAttribute(\"href\"),\n audio: () => element.hasAttribute(\"controls\"),\n video: () => element.hasAttribute(\"controls\"),\n }\n\n if (localName in others) {\n return others[localName as keyof typeof others]()\n }\n\n if (isContentEditable(element)) return true\n\n return hasTabIndex(element)\n}\n\nexport function isTabbable(element?: HTMLElement | null) {\n if (!element) return false\n return (\n isHTMLElement(element) &&\n isFocusable(element) &&\n !hasNegativeTabIndex(element)\n )\n}\n"],"file":"tabbable.js"} |
@@ -34,2 +34,5 @@ // Number assertions | ||
| return Object.prototype.toString.call(value) === "[object String]"; | ||
| } | ||
| export function isCssVar(value) { | ||
| return /^var\(--.+\)$/.test(value); | ||
| } // Event assertions | ||
@@ -36,0 +39,0 @@ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/assertion.ts"],"names":["isNumber","value","isNotNumber","Number","isNaN","isFinite","isNumeric","parseFloat","isArray","Array","isEmptyArray","length","isFunction","isDefined","undefined","isUndefined","isObject","type","isEmptyObject","Object","keys","isNotEmptyObject","isNull","isString","prototype","toString","call","isInputEvent","target","isEmpty","__DEV__","process","env","NODE_ENV"],"mappings":"AAGA;AACA,OAAO,SAASA,QAAT,CAAkBC,KAAlB,EAA+C;AACpD,SAAO,OAAOA,KAAP,KAAiB,QAAxB;AACD;AAED,OAAO,IAAMC,WAAW,GAAID,KAAD,IACzB,OAAOA,KAAP,KAAiB,QAAjB,IAA6BE,MAAM,CAACC,KAAP,CAAaH,KAAb,CAA7B,IAAoD,CAACE,MAAM,CAACE,QAAP,CAAgBJ,KAAhB,CADhD;AAGP,OAAO,SAASK,SAAT,CAAmBL,KAAnB,EAA+B;AACpC,SAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,GAAGM,UAAU,CAACN,KAAD,CAAlB,GAA4B,CAA5B,IAAiC,CAAzD;AACD,C,CAED;;AACA,OAAO,SAASO,OAAT,CAAoBP,KAApB,EAAmD;AACxD,SAAOQ,KAAK,CAACD,OAAN,CAAcP,KAAd,CAAP;AACD;AAED,OAAO,IAAMS,YAAY,GAAIT,KAAD,IAAgBO,OAAO,CAACP,KAAD,CAAP,IAAkBA,KAAK,CAACU,MAAN,KAAiB,CAAxE,C,CAEP;;AACA,OAAO,SAASC,UAAT,CAAoBX,KAApB,EAAmD;AACxD,SAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD,C,CAED;;AACA,OAAO,IAAMY,SAAS,GAAIZ,KAAD,IACvB,OAAOA,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAKa,SADrC;AAGP,OAAO,IAAMC,WAAW,GAAId,KAAD,IACzB,OAAOA,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAKa,SADrC,C,CAGP;;AACA,OAAO,IAAME,QAAQ,GAAIf,KAAD,IAA+B;AACrD,MAAMgB,IAAI,GAAG,OAAOhB,KAApB;AACA,SACEA,KAAK,IAAI,IAAT,KACCgB,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,UAD/B,KAEA,CAACT,OAAO,CAACP,KAAD,CAHV;AAKD,CAPM;AASP,OAAO,IAAMiB,aAAa,GAAIjB,KAAD,IAC3Be,QAAQ,CAACf,KAAD,CAAR,IAAmBkB,MAAM,CAACC,IAAP,CAAYnB,KAAZ,EAAmBU,MAAnB,KAA8B,CAD5C;AAGP,OAAO,SAASU,gBAAT,CAA0BpB,KAA1B,EAAuD;AAC5D,SAAOA,KAAK,IAAI,CAACiB,aAAa,CAACjB,KAAD,CAA9B;AACD;AAED,OAAO,IAAMqB,MAAM,GAAIrB,KAAD,IAA+BA,KAAK,IAAI,IAAvD,C,CAEP;;AACA,OAAO,SAASsB,QAAT,CAAkBtB,KAAlB,EAA+C;AACpD,SAAOkB,MAAM,CAACK,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BzB,KAA/B,MAA0C,iBAAjD;AACD,C,CAED;;AACA,OAAO,SAAS0B,YAAT,CAAsB1B,KAAtB,EAAwD;AAC7D,SAAOA,KAAK,IAAIe,QAAQ,CAACf,KAAD,CAAjB,IAA4Be,QAAQ,CAACf,KAAK,CAAC2B,MAAP,CAA3C;AACD,C,CAED;;AACA,OAAO,IAAMC,OAAO,GAAI5B,KAAD,IAAgB;AACrC,MAAIO,OAAO,CAACP,KAAD,CAAX,EAAoB,OAAOS,YAAY,CAACT,KAAD,CAAnB;AACpB,MAAIe,QAAQ,CAACf,KAAD,CAAZ,EAAqB,OAAOiB,aAAa,CAACjB,KAAD,CAApB;AACrB,MAAIA,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA/B,EAAmC,OAAO,IAAP;AACnC,SAAO,KAAP;AACD,CALM,C,CAOP;;AACA,OAAO,IAAM6B,OAAO,GAAGC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzC","sourcesContent":["import { ChangeEvent } from \"react\"\nimport { Dict } from \"./types\"\n\n// Number assertions\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport const isNotNumber = (value: any) =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport function isNumeric(value: any) {\n return value != null && value - parseFloat(value) + 1 >= 0\n}\n\n// Array assertions\nexport function isArray<T>(value: any): value is Array<T> {\n return Array.isArray(value)\n}\n\nexport const isEmptyArray = (value: any) => isArray(value) && value.length === 0\n\n// Function assertions\nexport function isFunction(value: any): value is Function {\n return typeof value === \"function\"\n}\n\n// Generic assertions\nexport const isDefined = (value: any) =>\n typeof value !== \"undefined\" && value !== undefined\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" || value === undefined\n\n// Object assertions\nexport const isObject = (value: any): value is Dict => {\n const type = typeof value\n return (\n value != null &&\n (type === \"object\" || type === \"function\") &&\n !isArray(value)\n )\n}\n\nexport const isEmptyObject = (value: any) =>\n isObject(value) && Object.keys(value).length === 0\n\nexport function isNotEmptyObject(value: any): value is object {\n return value && !isEmptyObject(value)\n}\n\nexport const isNull = (value: any): value is null => value == null\n\n// String assertions\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\n// Event assertions\nexport function isInputEvent(value: any): value is ChangeEvent {\n return value && isObject(value) && isObject(value.target)\n}\n\n// Empty assertions\nexport const isEmpty = (value: any) => {\n if (isArray(value)) return isEmptyArray(value)\n if (isObject(value)) return isEmptyObject(value)\n if (value == null || value === \"\") return true\n return false\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const __DEV__ = process.env.NODE_ENV !== \"production\"\n"],"file":"assertion.js"} | ||
| {"version":3,"sources":["../../src/assertion.ts"],"names":["isNumber","value","isNotNumber","Number","isNaN","isFinite","isNumeric","parseFloat","isArray","Array","isEmptyArray","length","isFunction","isDefined","undefined","isUndefined","isObject","type","isEmptyObject","Object","keys","isNotEmptyObject","isNull","isString","prototype","toString","call","isCssVar","test","isInputEvent","target","isEmpty","__DEV__","process","env","NODE_ENV"],"mappings":"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","sourcesContent":["import { ChangeEvent } from \"react\"\nimport { Dict } from \"./types\"\n\n// Number assertions\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport const isNotNumber = (value: any) =>\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n\nexport function isNumeric(value: any) {\n return value != null && value - parseFloat(value) + 1 >= 0\n}\n\n// Array assertions\nexport function isArray<T>(value: any): value is Array<T> {\n return Array.isArray(value)\n}\n\nexport const isEmptyArray = (value: any) => isArray(value) && value.length === 0\n\n// Function assertions\nexport function isFunction(value: any): value is Function {\n return typeof value === \"function\"\n}\n\n// Generic assertions\nexport const isDefined = (value: any) =>\n typeof value !== \"undefined\" && value !== undefined\n\nexport const isUndefined = (value: any): value is undefined =>\n typeof value === \"undefined\" || value === undefined\n\n// Object assertions\nexport const isObject = (value: any): value is Dict => {\n const type = typeof value\n return (\n value != null &&\n (type === \"object\" || type === \"function\") &&\n !isArray(value)\n )\n}\n\nexport const isEmptyObject = (value: any) =>\n isObject(value) && Object.keys(value).length === 0\n\nexport function isNotEmptyObject(value: any): value is object {\n return value && !isEmptyObject(value)\n}\n\nexport const isNull = (value: any): value is null => value == null\n\n// String assertions\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isCssVar(value: string) {\n return /^var\\(--.+\\)$/.test(value)\n}\n\n// Event assertions\nexport function isInputEvent(value: any): value is ChangeEvent {\n return value && isObject(value) && isObject(value.target)\n}\n\n// Empty assertions\nexport const isEmpty = (value: any) => {\n if (isArray(value)) return isEmptyArray(value)\n if (isObject(value)) return isEmptyObject(value)\n if (value == null || value === \"\") return true\n return false\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const __DEV__ = process.env.NODE_ENV !== \"production\"\n"],"file":"assertion.js"} |
@@ -13,2 +13,3 @@ export * from "./function"; | ||
| export * from "./responsive"; | ||
| export * from "./focus"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAd;AACA,cAAc,SAAd;AACA,cAAc,OAAd;AACA,cAAc,SAAd;AACA,cAAc,UAAd;AACA,cAAc,UAAd;AACA,cAAc,aAAd;AACA,cAAc,YAAd;AACA,cAAc,aAAd;AACA,cAAc,iBAAd;AACA,cAAc,eAAd;AACA,cAAc,cAAd","sourcesContent":["export * from \"./function\"\nexport * from \"./types\"\nexport * from \"./dom\"\nexport * from \"./array\"\nexport * from \"./object\"\nexport * from \"./number\"\nexport * from \"./dom-query\"\nexport * from \"./tabbable\"\nexport * from \"./assertion\"\nexport * from \"./react-helpers\"\nexport * from \"css-box-model\"\nexport * from \"./responsive\"\n"],"file":"index.js"} | ||
| {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAd;AACA,cAAc,SAAd;AACA,cAAc,OAAd;AACA,cAAc,SAAd;AACA,cAAc,UAAd;AACA,cAAc,UAAd;AACA,cAAc,aAAd;AACA,cAAc,YAAd;AACA,cAAc,aAAd;AACA,cAAc,iBAAd;AACA,cAAc,eAAd;AACA,cAAc,cAAd;AACA,cAAc,SAAd","sourcesContent":["export * from \"./function\"\nexport * from \"./types\"\nexport * from \"./dom\"\nexport * from \"./array\"\nexport * from \"./object\"\nexport * from \"./number\"\nexport * from \"./dom-query\"\nexport * from \"./tabbable\"\nexport * from \"./assertion\"\nexport * from \"./react-helpers\"\nexport * from \"css-box-model\"\nexport * from \"./responsive\"\nexport * from \"./focus\"\n"],"file":"index.js"} |
| export { default as mergeWith } from "lodash.mergewith"; | ||
| export { default as objectAssign } from "object-assign"; | ||
| export function omit(object, keys) { | ||
@@ -4,0 +3,0 @@ var result = {}; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/object.ts"],"names":["default","mergeWith","objectAssign","omit","object","keys","result","Object","forEach","key","includes","pick","split","picked","omitted","get","obj","path","fallback","index","length","undefined","memoize","fn","cache","WeakMap","memoizedFn","has","set","Map","map","value","memoizedGet","getWithDefault","scale","objectFilter","shouldPass","filterUndefined","val","objectKeys","fromEntries","entries","reduce","carry"],"mappings":"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","sourcesContent":["import type { Dict, Omit } from \"./types\"\n\nexport { default as mergeWith } from \"lodash.mergewith\"\nexport { default as objectAssign } from \"object-assign\"\n\nexport function omit<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as K)) return\n result[key] = object[key]\n })\n\n return result as Omit<T, K>\n}\n\nexport function pick<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result = {} as { [P in K]: T[P] }\n\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key]\n }\n })\n\n return result\n}\n\nexport function split<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as T[K])) {\n picked[key] = object[key]\n } else {\n omitted[key] = object[key]\n }\n })\n\n return [picked, omitted] as [{ [P in K]: T[P] }, Omit<T, K>]\n}\n\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def - the fallback value\n */\nexport function get(\n obj: object,\n path: string | number,\n fallback?: any,\n index?: number,\n) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path]\n\n for (index = 0; index < key.length; index += 1) {\n if (!obj) break\n obj = obj[key[index]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\ntype Get = (\n obj: Readonly<object>,\n path: string | number,\n fallback?: any,\n index?: number,\n) => any\n\nexport const memoize = (fn: Get) => {\n const cache = new WeakMap()\n\n const memoizedFn: Get = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback)\n }\n\n if (!cache.has(obj)) {\n cache.set(obj, new Map())\n }\n\n const map = cache.get(obj)\n\n if (map.has(path)) {\n return map.get(path)\n }\n\n const value = fn(obj, path, fallback, index)\n\n map.set(path, value)\n\n return value\n }\n\n return memoizedFn\n}\n\nexport const memoizedGet = memoize(get)\n\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\nexport function getWithDefault(path: any, scale: any) {\n return memoizedGet(scale, path, path)\n}\n\ntype FilterFn<T> = (value: any, key: string, object: T) => boolean\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nexport function objectFilter<T extends Dict>(object: T, fn: FilterFn<T>) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n const value = object[key]\n const shouldPass = fn(value, key, object)\n if (shouldPass) {\n result[key] = value\n }\n })\n\n return result\n}\n\nexport const filterUndefined = (object: Dict) =>\n objectFilter(object, (val) => val !== null && val !== undefined)\n\nexport const objectKeys = <T extends Dict>(obj: T) =>\n (Object.keys(obj) as unknown) as (keyof T)[]\n\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\nexport const fromEntries = <T extends unknown>(entries: [string, any][]) =>\n entries.reduce((carry, [key, value]) => {\n carry[key] = value\n return carry\n }, {}) as T\n"],"file":"object.js"} | ||
| {"version":3,"sources":["../../src/object.ts"],"names":["default","mergeWith","omit","object","keys","result","Object","forEach","key","includes","pick","split","picked","omitted","get","obj","path","fallback","index","length","undefined","memoize","fn","cache","WeakMap","memoizedFn","has","set","Map","map","value","memoizedGet","getWithDefault","scale","objectFilter","shouldPass","filterUndefined","val","objectKeys","fromEntries","entries","reduce","carry"],"mappings":"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","sourcesContent":["import type { Dict, Omit } from \"./types\"\n\nexport { default as mergeWith } from \"lodash.mergewith\"\n\nexport function omit<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as K)) return\n result[key] = object[key]\n })\n\n return result as Omit<T, K>\n}\n\nexport function pick<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const result = {} as { [P in K]: T[P] }\n\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key]\n }\n })\n\n return result\n}\n\nexport function split<T extends Dict, K extends keyof T>(object: T, keys: K[]) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n Object.keys(object).forEach((key) => {\n if (keys.includes(key as T[K])) {\n picked[key] = object[key]\n } else {\n omitted[key] = object[key]\n }\n })\n\n return [picked, omitted] as [{ [P in K]: T[P] }, Omit<T, K>]\n}\n\n/**\n * Get value from a deeply nested object using a string path.\n * Memoizes the value.\n * @param obj - the object\n * @param path - the string path\n * @param def - the fallback value\n */\nexport function get(\n obj: object,\n path: string | number,\n fallback?: any,\n index?: number,\n) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path]\n\n for (index = 0; index < key.length; index += 1) {\n if (!obj) break\n obj = obj[key[index]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\ntype Get = (\n obj: Readonly<object>,\n path: string | number,\n fallback?: any,\n index?: number,\n) => any\n\nexport const memoize = (fn: Get) => {\n const cache = new WeakMap()\n\n const memoizedFn: Get = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback)\n }\n\n if (!cache.has(obj)) {\n cache.set(obj, new Map())\n }\n\n const map = cache.get(obj)\n\n if (map.has(path)) {\n return map.get(path)\n }\n\n const value = fn(obj, path, fallback, index)\n\n map.set(path, value)\n\n return value\n }\n\n return memoizedFn\n}\n\nexport const memoizedGet = memoize(get)\n\n/**\n * Get value from deeply nested object, based on path\n * It returns the path value if not found in object\n *\n * @param path - the string path or value\n * @param scale - the string path or value\n */\nexport function getWithDefault(path: any, scale: any) {\n return memoizedGet(scale, path, path)\n}\n\ntype FilterFn<T> = (value: any, key: string, object: T) => boolean\n\n/**\n * Returns the items of an object that meet the condition specified in a callback function.\n *\n * @param object the object to loop through\n * @param fn The filter function\n */\nexport function objectFilter<T extends Dict>(object: T, fn: FilterFn<T>) {\n const result: Dict = {}\n\n Object.keys(object).forEach((key) => {\n const value = object[key]\n const shouldPass = fn(value, key, object)\n if (shouldPass) {\n result[key] = value\n }\n })\n\n return result\n}\n\nexport const filterUndefined = (object: Dict) =>\n objectFilter(object, (val) => val !== null && val !== undefined)\n\nexport const objectKeys = <T extends Dict>(obj: T) =>\n (Object.keys(obj) as unknown) as (keyof T)[]\n\n/**\n * Object.entries polyfill for Nodev10 compatibility\n */\nexport const fromEntries = <T extends unknown>(entries: [string, any][]) =>\n entries.reduce((carry, [key, value]) => {\n carry[key] = value\n return carry\n }, {}) as T\n"],"file":"object.js"} |
+0
-27
@@ -51,29 +51,2 @@ // Really great work done by Diego Haz on this one | ||
| } | ||
| var isActiveElement = element => document.activeElement === element; | ||
| function isInputElement(element) { | ||
| return isHTMLElement(element) && element.tagName.toLowerCase() === "input" && "select" in element; | ||
| } | ||
| export function focus(element, options) { | ||
| if (options === void 0) { | ||
| options = {}; | ||
| } | ||
| var { | ||
| isActive = isActiveElement, | ||
| preventScroll | ||
| } = options; | ||
| if (isActive(element)) return -1; | ||
| return requestAnimationFrame(() => { | ||
| element.focus({ | ||
| preventScroll | ||
| }); | ||
| if (isInputElement(element)) { | ||
| element.select(); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=tabbable.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../src/tabbable.ts"],"names":["hasDisplayNone","element","window","getComputedStyle","display","hasTabIndex","hasAttribute","hasNegativeTabIndex","tabIndex","isDisabled","Boolean","getAttribute","hasFocusWithin","document","activeElement","contains","isHTMLElement","HTMLElement","isHidden","parentElement","hidden","isContentEditable","value","isFocusable","localName","focusableTags","indexOf","others","a","audio","video","isTabbable","isActiveElement","isInputElement","tagName","toLowerCase","focus","options","isActive","preventScroll","requestAnimationFrame","select"],"mappings":"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","sourcesContent":["// Really great work done by Diego Haz on this one\n// https://github.com/reakit/reakit/blob/master/packages/reakit-utils/src/tabbable.ts\n\nexport const hasDisplayNone = (element: HTMLElement) =>\n window.getComputedStyle(element).display === \"none\"\n\nexport const hasTabIndex = (element: HTMLElement) =>\n element.hasAttribute(\"tabindex\")\n\nexport const hasNegativeTabIndex = (element: HTMLElement) =>\n hasTabIndex(element) && element.tabIndex === -1\n\nexport function isDisabled(element: HTMLElement) {\n return (\n Boolean(element.getAttribute(\"disabled\")) === true ||\n Boolean(element.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nexport function hasFocusWithin(element: HTMLElement) {\n if (!document.activeElement) return false\n return element.contains(document.activeElement)\n}\n\nexport function isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement\n}\n\nexport function isHidden(element: HTMLElement) {\n if (element.parentElement && isHidden(element.parentElement)) return true\n return element.hidden\n}\n\nexport function isContentEditable(element: HTMLElement) {\n const value = element.getAttribute(\"contenteditable\")\n return value !== \"false\" && value != null\n}\n\nexport function isFocusable(element: HTMLElement) {\n if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n return false\n }\n\n const { localName } = element\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => element.hasAttribute(\"href\"),\n audio: () => element.hasAttribute(\"controls\"),\n video: () => element.hasAttribute(\"controls\"),\n }\n\n if (localName in others) {\n return others[localName as keyof typeof others]()\n }\n\n if (isContentEditable(element)) return true\n\n return hasTabIndex(element)\n}\n\nexport function isTabbable(element?: HTMLElement | null) {\n if (!element) return false\n return (\n isHTMLElement(element) &&\n isFocusable(element) &&\n !hasNegativeTabIndex(element)\n )\n}\n\nconst isActiveElement = (element: FocusableElement) =>\n document.activeElement === (element as HTMLElement)\n\nfunction isInputElement(\n element: FocusableElement,\n): element is HTMLInputElement {\n return (\n isHTMLElement(element) &&\n element.tagName.toLowerCase() === \"input\" &&\n \"select\" in element\n )\n}\n\nexport interface FocusableElement {\n focus(options?: FocusOptions): void\n}\n\ninterface FocusProps extends FocusOptions {\n isActive?: typeof isActiveElement\n}\n\nexport function focus(element: FocusableElement, options: FocusProps = {}) {\n const { isActive = isActiveElement, preventScroll } = options\n\n if (isActive(element)) return -1\n\n return requestAnimationFrame(() => {\n element.focus({ preventScroll })\n\n if (isInputElement(element)) {\n element.select()\n }\n })\n}\n"],"file":"tabbable.js"} | ||
| {"version":3,"sources":["../../src/tabbable.ts"],"names":["hasDisplayNone","element","window","getComputedStyle","display","hasTabIndex","hasAttribute","hasNegativeTabIndex","tabIndex","isDisabled","Boolean","getAttribute","hasFocusWithin","document","activeElement","contains","isHTMLElement","HTMLElement","isHidden","parentElement","hidden","isContentEditable","value","isFocusable","localName","focusableTags","indexOf","others","a","audio","video","isTabbable"],"mappings":"AAAA;AACA;AAEA,OAAO,IAAMA,cAAc,GAAIC,OAAD,IAC5BC,MAAM,CAACC,gBAAP,CAAwBF,OAAxB,EAAiCG,OAAjC,KAA6C,MADxC;AAGP,OAAO,IAAMC,WAAW,GAAIJ,OAAD,IACzBA,OAAO,CAACK,YAAR,CAAqB,UAArB,CADK;AAGP,OAAO,IAAMC,mBAAmB,GAAIN,OAAD,IACjCI,WAAW,CAACJ,OAAD,CAAX,IAAwBA,OAAO,CAACO,QAAR,KAAqB,CAAC,CADzC;AAGP,OAAO,SAASC,UAAT,CAAoBR,OAApB,EAA0C;AAC/C,SACES,OAAO,CAACT,OAAO,CAACU,YAAR,CAAqB,UAArB,CAAD,CAAP,KAA8C,IAA9C,IACAD,OAAO,CAACT,OAAO,CAACU,YAAR,CAAqB,eAArB,CAAD,CAAP,KAAmD,IAFrD;AAID;AAED,OAAO,SAASC,cAAT,CAAwBX,OAAxB,EAA8C;AACnD,MAAI,CAACY,QAAQ,CAACC,aAAd,EAA6B,OAAO,KAAP;AAC7B,SAAOb,OAAO,CAACc,QAAR,CAAiBF,QAAQ,CAACC,aAA1B,CAAP;AACD;AAED,OAAO,SAASE,aAAT,CAAuBf,OAAvB,EAA6D;AAClE,SAAOA,OAAO,YAAYgB,WAA1B;AACD;AAED,OAAO,SAASC,QAAT,CAAkBjB,OAAlB,EAAwC;AAC7C,MAAIA,OAAO,CAACkB,aAAR,IAAyBD,QAAQ,CAACjB,OAAO,CAACkB,aAAT,CAArC,EAA8D,OAAO,IAAP;AAC9D,SAAOlB,OAAO,CAACmB,MAAf;AACD;AAED,OAAO,SAASC,iBAAT,CAA2BpB,OAA3B,EAAiD;AACtD,MAAMqB,KAAK,GAAGrB,OAAO,CAACU,YAAR,CAAqB,iBAArB,CAAd;AACA,SAAOW,KAAK,KAAK,OAAV,IAAqBA,KAAK,IAAI,IAArC;AACD;AAED,OAAO,SAASC,WAAT,CAAqBtB,OAArB,EAA2C;AAChD,MAAI,CAACe,aAAa,CAACf,OAAD,CAAd,IAA2BiB,QAAQ,CAACjB,OAAD,CAAnC,IAAgDQ,UAAU,CAACR,OAAD,CAA9D,EAAyE;AACvE,WAAO,KAAP;AACD;;AAED,MAAM;AAAEuB,IAAAA;AAAF,MAAgBvB,OAAtB;AACA,MAAMwB,aAAa,GAAG,CAAC,OAAD,EAAU,QAAV,EAAoB,UAApB,EAAgC,QAAhC,CAAtB;AACA,MAAIA,aAAa,CAACC,OAAd,CAAsBF,SAAtB,KAAoC,CAAxC,EAA2C,OAAO,IAAP;AAE3C,MAAMG,MAAM,GAAG;AACbC,IAAAA,CAAC,EAAE,MAAM3B,OAAO,CAACK,YAAR,CAAqB,MAArB,CADI;AAEbuB,IAAAA,KAAK,EAAE,MAAM5B,OAAO,CAACK,YAAR,CAAqB,UAArB,CAFA;AAGbwB,IAAAA,KAAK,EAAE,MAAM7B,OAAO,CAACK,YAAR,CAAqB,UAArB;AAHA,GAAf;;AAMA,MAAIkB,SAAS,IAAIG,MAAjB,EAAyB;AACvB,WAAOA,MAAM,CAACH,SAAD,CAAN,EAAP;AACD;;AAED,MAAIH,iBAAiB,CAACpB,OAAD,CAArB,EAAgC,OAAO,IAAP;AAEhC,SAAOI,WAAW,CAACJ,OAAD,CAAlB;AACD;AAED,OAAO,SAAS8B,UAAT,CAAoB9B,OAApB,EAAkD;AACvD,MAAI,CAACA,OAAL,EAAc,OAAO,KAAP;AACd,SACEe,aAAa,CAACf,OAAD,CAAb,IACAsB,WAAW,CAACtB,OAAD,CADX,IAEA,CAACM,mBAAmB,CAACN,OAAD,CAHtB;AAKD","sourcesContent":["// Really great work done by Diego Haz on this one\n// https://github.com/reakit/reakit/blob/master/packages/reakit-utils/src/tabbable.ts\n\nexport const hasDisplayNone = (element: HTMLElement) =>\n window.getComputedStyle(element).display === \"none\"\n\nexport const hasTabIndex = (element: HTMLElement) =>\n element.hasAttribute(\"tabindex\")\n\nexport const hasNegativeTabIndex = (element: HTMLElement) =>\n hasTabIndex(element) && element.tabIndex === -1\n\nexport function isDisabled(element: HTMLElement) {\n return (\n Boolean(element.getAttribute(\"disabled\")) === true ||\n Boolean(element.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nexport function hasFocusWithin(element: HTMLElement) {\n if (!document.activeElement) return false\n return element.contains(document.activeElement)\n}\n\nexport function isHTMLElement(element: any): element is HTMLElement {\n return element instanceof HTMLElement\n}\n\nexport function isHidden(element: HTMLElement) {\n if (element.parentElement && isHidden(element.parentElement)) return true\n return element.hidden\n}\n\nexport function isContentEditable(element: HTMLElement) {\n const value = element.getAttribute(\"contenteditable\")\n return value !== \"false\" && value != null\n}\n\nexport function isFocusable(element: HTMLElement) {\n if (!isHTMLElement(element) || isHidden(element) || isDisabled(element)) {\n return false\n }\n\n const { localName } = element\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => element.hasAttribute(\"href\"),\n audio: () => element.hasAttribute(\"controls\"),\n video: () => element.hasAttribute(\"controls\"),\n }\n\n if (localName in others) {\n return others[localName as keyof typeof others]()\n }\n\n if (isContentEditable(element)) return true\n\n return hasTabIndex(element)\n}\n\nexport function isTabbable(element?: HTMLElement | null) {\n if (!element) return false\n return (\n isHTMLElement(element) &&\n isFocusable(element) &&\n !hasNegativeTabIndex(element)\n )\n}\n"],"file":"tabbable.js"} |
@@ -15,4 +15,5 @@ import { ChangeEvent } from "react"; | ||
| export declare function isString(value: any): value is string; | ||
| export declare function isCssVar(value: string): boolean; | ||
| export declare function isInputEvent(value: any): value is ChangeEvent; | ||
| export declare const isEmpty: (value: any) => boolean; | ||
| export declare const __DEV__: boolean; |
@@ -13,1 +13,2 @@ export * from "./function"; | ||
| export * from "./responsive"; | ||
| export * from "./focus"; |
| import type { Dict } from "./types"; | ||
| export { default as mergeWith } from "lodash.mergewith"; | ||
| export { default as objectAssign } from "object-assign"; | ||
| export declare function omit<T extends Dict, K extends keyof T>(object: T, keys: K[]): Pick<T, Exclude<keyof T, K>>; | ||
@@ -5,0 +4,0 @@ export declare function pick<T extends Dict, K extends keyof T>(object: T, keys: K[]): { [P in K]: T[P]; }; |
@@ -11,10 +11,1 @@ export declare const hasDisplayNone: (element: HTMLElement) => boolean; | ||
| export declare function isTabbable(element?: HTMLElement | null): boolean; | ||
| declare const isActiveElement: (element: FocusableElement) => boolean; | ||
| export interface FocusableElement { | ||
| focus(options?: FocusOptions): void; | ||
| } | ||
| interface FocusProps extends FocusOptions { | ||
| isActive?: typeof isActiveElement; | ||
| } | ||
| export declare function focus(element: FocusableElement, options?: FocusProps): number; | ||
| export {}; |
+2
-3
| { | ||
| "name": "@chakra-ui/utils", | ||
| "version": "1.1.0", | ||
| "version": "1.2.0", | ||
| "description": "Common utilties and types for Chakra UI", | ||
@@ -49,4 +49,3 @@ "author": "Segun Adebayo <sage@adebayosegun.com>", | ||
| "css-box-model": "1.2.1", | ||
| "lodash.mergewith": "4.6.2", | ||
| "object-assign": "4.1.1" | ||
| "lodash.mergewith": "4.6.2" | ||
| }, | ||
@@ -53,0 +52,0 @@ "peerDependencies": { |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
217026
9.13%5
-16.67%68
7.94%2195
8.4%- Removed
- Removed