UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

56 lines (55 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.replaceItemNo = replaceItemNo; var _react = _interopRequireWildcard(require("react")); var _index = require("../hooks/index.js"); var _componentHelper = require("../../../../shared/component-helper.js"); var _withComponentMarkers = _interopRequireDefault(require("../../../../shared/helpers/withComponentMarkers.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } function ItemNo({ children }) { const { index } = (0, _index.useItem)(); const processedChildren = (0, _react.useMemo)(() => replaceItemNo(children, index), [children, index]); return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: processedChildren }); } function replaceItemNo(node, index) { if (node == null || node === false) { return node; } if (typeof node === 'string' && node.includes('{itemNo}')) { return node.replace('{itemNo}', String(index + 1)); } if (Array.isArray(node)) { return node.map((n, i) => (0, _jsxRuntime.jsx)(_react.default.Fragment, { children: replaceItemNo(n, index) }, i)); } if ((0, _react.isValidElement)(node)) { const { children: childProps, ...rest } = node.props || {}; const nextChildren = replaceItemNo(childProps, index); return nextChildren === childProps ? node : _react.default.createElement(node.type, rest, nextChildren); } const text = (0, _componentHelper.convertJsxToString)(node); if (text && text.includes('{itemNo}')) { return replaceItemNo(text, index); } return node; } (0, _withComponentMarkers.default)(ItemNo, { _supportsSpacingProps: false }); var _default = exports.default = ItemNo; //# sourceMappingURL=ItemNo.js.map