handsontable
Version:
Handsontable is a JavaScript Data Grid available for React, Angular and Vue.
57 lines (53 loc) • 1.87 kB
JavaScript
;
exports.__esModule = true;
exports.getCheckboxElement = getCheckboxElement;
exports.getValuesIntersection = getValuesIntersection;
exports.includesValue = includesValue;
exports.parseStringifiedValue = parseStringifiedValue;
var _array = require("../../../helpers/array");
var _object = require("../../../helpers/object");
var _string = require("../../../helpers/string");
/**
* Retrieves checkbox element from the item element.
*
* @param {HTMLLIElement} itemElement Parent element.
* @returns {HTMLInputElement|null}
*/
function getCheckboxElement(itemElement) {
return itemElement.querySelector('input[type="checkbox"]');
}
/**
* Parses a stringified value and returns a JavaScript value when possible.
*
* @param {string} value Value originating from the textarea or dataset.
* @returns {*}
*/
function parseStringifiedValue(value) {
return (0, _string.isJSON)(value) ? JSON.parse(value) : value;
}
/**
* Returns an array containing only values present in both provided arrays.
*
* @param {Array} valuesArray Values currently selected in the editor.
* @param {Array} source Array of available source items.
* @returns {Array}
*/
function getValuesIntersection(valuesArray, source) {
return (0, _array.getIntersectionOfArrays)(valuesArray, source, (a, b) => JSON.stringify(a) === JSON.stringify(b));
}
/**
* Checks if an array contains a value using JSON.stringify for comparison.
*
* @param {Array} array Array of values.
* @param {string|object} element Value to check.
* @returns {boolean}
*/
function includesValue(array, element) {
if ((0, _object.isKeyValueObject)(element)) {
return Array.isArray(array) && array.some(value => {
return (0, _object.isKeyValueObject)(value) ? (0, _object.isObjectEqual)(value, element) : value === element;
});
} else {
return array.includes(element);
}
}