@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
118 lines (97 loc) • 5.35 kB
JavaScript
import _isObject from "lodash/isObject";
var _excluded = ["className", "dot", "children"];
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import classNames from "classnames";
import * as React from "react";
import { Children, isValidElement, useContext } from "react";
import { prefixClassname } from "../styles";
import { isElementOf } from "../utils/validate";
import TimelineConnector from "./timeline-connector";
import TimelineContent from "./timeline-content";
import TimelineDot from "./timeline-dot";
import TimelineItemBase from "./timeline-item-base";
import TimelineSeparator from "./timeline-separator";
import TimelineContext from "./timeline.context";
function useTimelineItemChildren(children, options) {
var {
position,
dot
} = options;
var separator = [false, undefined];
var leftContent = [false, undefined];
var rightContent = [false, undefined];
Children.forEach(children, child => {
if (isElementOf(child, TimelineSeparator)) {
separator[0] = true;
separator[1] = child;
}
if (leftContent[0] && isElementOf(child, TimelineContent)) {
rightContent[0] = true;
rightContent[1] = child;
}
if (!leftContent[0] && isElementOf(child, TimelineContent)) {
leftContent[0] = true;
leftContent[1] = child;
}
});
if (!leftContent[0] && !rightContent[0]) {
leftContent[0] = true;
leftContent[1] = /*#__PURE__*/React.createElement(TimelineContent, {
children: children
});
}
if (!separator[0]) {
separator[0] = true;
separator[1] = /*#__PURE__*/React.createElement(TimelineSeparator, null, dot, /*#__PURE__*/React.createElement(TimelineConnector, null));
}
if (position === "left") {
return /*#__PURE__*/React.createElement(React.Fragment, null, leftContent[1], separator[1]);
}
if (position === "right") {
return /*#__PURE__*/React.createElement(React.Fragment, null, separator[1], leftContent[1]);
}
if (!rightContent[0]) {
rightContent[0] = true;
rightContent[1] = /*#__PURE__*/React.createElement(TimelineContent, null);
}
return /*#__PURE__*/React.createElement(React.Fragment, null, leftContent[1], separator[1], rightContent[1]);
}
function useTimelineDot(dot) {
if ( /*#__PURE__*/isValidElement(dot)) {
return dot;
}
if (_isObject(dot)) {
var dotProps = dot;
return /*#__PURE__*/React.createElement(TimelineDot, _objectSpread({}, dotProps));
}
}
function TimelineItem(props) {
var {
className,
dot: dotProp = /*#__PURE__*/React.createElement(TimelineDot, null),
children: childrenProp
} = props,
restProps = _objectWithoutProperties(props, _excluded);
var {
position
} = useContext(TimelineContext);
var dot = useTimelineDot(dotProp);
var children = useTimelineItemChildren(childrenProp, {
position,
dot
});
return /*#__PURE__*/React.createElement(TimelineItemBase, _objectSpread({
className: classNames(className, {
[prefixClassname("timeline-item--right")]: position === "right",
[prefixClassname("timeline-item--left")]: position === "left",
[prefixClassname("timeline-item--alternate")]: position === "alternate",
[prefixClassname("timeline-item--alternate-reverse")]: position === "alternate-reverse"
})
}, restProps), children);
}
export default TimelineItem;
//# sourceMappingURL=timeline-item.js.map