UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

55 lines (54 loc) 1.42 kB
"use strict"; 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