@redocly/theme
Version:
Shared UI components lib
68 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findDeepFirst = findDeepFirst;
exports.toStringIfDefined = toStringIfDefined;
exports.isBrowser = isBrowser;
exports.isPlainObject = isPlainObject;
exports.getAdjacentValues = getAdjacentValues;
function findDeepFirst(list, cb) {
for (const item of list) {
if (cb(item) === true) {
return item;
}
if (item.items) {
const nestedRes = findDeepFirst(item.items, cb);
if (nestedRes !== undefined)
return nestedRes;
}
}
}
function toStringIfDefined(value) {
return value == undefined ? undefined : String(value);
}
/**
* Returns true when the function executed in browser.
*/
function isBrowser() {
return typeof window !== 'undefined' && 'HTMLElement' in window;
}
function isPlainObject(obj) {
return (typeof obj === 'object' &&
obj !== null &&
!Array.isArray(obj) &&
Object.prototype.toString.call(obj) === '[object Object]');
}
/**
* Returns the previous and next values in an array for a given index.
*
* Edge cases:
* - If the index is `0`, `prev` will be `null`.
* - If the index is the last position in the array, `next` will be `null`.
* - If the index is out of bounds (negative or greater than the last index), both `prev` and `next` will be `null`.
*
* @example
* const array = [10, 20, 30, 40];
* getAdjacentValues(array, 2);
* // returns: { prev: 20, next: 40 }
*
* getAdjacentValues(array, 0);
* // returns: { prev: null, next: 20 }
*
* getAdjacentValues(array, 3);
* // returns: { prev: 30, next: null }
*
* getAdjacentValues(array, -1);
* // returns: { prev: null, next: null }
*
* getAdjacentValues(array, 4);
* // returns: { prev: null, next: null }
*/
function getAdjacentValues(array, index) {
if (index < 0 || index >= array.length) {
return { prev: null, next: null };
}
const prevValue = index > 0 ? array[index - 1] : null;
const nextValue = index < array.length - 1 ? array[index + 1] : null;
return { prev: prevValue, next: nextValue };
}
//# sourceMappingURL=js-utils.js.map