@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
55 lines (54 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Count = Count;
exports.count = count;
exports.useCount = useCount;
var _react = require("react");
var _jsonPointer = _interopRequireDefault(require("../../utils/json-pointer"));
var _Form = require("../../Form");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function Count(props) {
const {
data
} = (0, _Form.useData)(props.id);
return countData(data, props);
}
function countData(data, _ref) {
let {
path,
filter
} = _ref;
if (_jsonPointer.default.has(data, path)) {
const value = _jsonPointer.default.get(data, path);
if (Array.isArray(value)) {
return filter ? value.filter(filter).length : value.length;
} else if (typeof value === 'object' && value) {
return filter ? Object.entries(value).filter(filter).length : Object.keys(value).length;
}
}
return NaN;
}
function count(props) {
const {
data
} = (0, _Form.getData)(props.id);
return countData(data, props);
}
function useCount() {
let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
const {
data
} = (0, _Form.useData)(id);
const count = (0, _react.useCallback)((path, filter) => {
return countData(data, {
path,
filter
});
}, [data]);
return {
count
};
}
//# sourceMappingURL=Count.js.map