@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
96 lines (84 loc) • 5.27 kB
JavaScript
import _get from "lodash/get";
import _map from "lodash/map";
var _excluded = ["className", "style", "children", "readonly", "values", "siblingCount", "onChange"],
_excluded2 = ["children"];
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; }
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; }
import { View } from "@vnxjs/components";
import classNames from "classnames";
import * as React from "react";
import { useContext, useMemo } from "react";
import { prefixClassname } from "../styles";
import { HAIRLINE_BORDER_UNSET_TOP_BOTTOM } from "../styles/hairline";
import { preventDefault } from "../utils/dom/event";
import { addUnitPx } from "../utils/format/unit";
import { useRendered } from "../utils/state";
import PickerColumn from "./picker-column";
import PickerContext from "./picker.context";
import { getPickerOptionKey } from "./picker.shared";
import usePickerOptions from "./use-picker-options";
function PickerColumnsRender(props) {
var {
className,
style,
children,
readonly,
values,
siblingCount,
onChange: _onChange
} = props,
restProps = _objectWithoutProperties(props, _excluded);
var {
setColumnRefs,
clearColumnRefs
} = useContext(PickerContext);
var columns = usePickerOptions(children);
var visibleCount = siblingCount * 2;
var itemHeight = 44;
var wrapHeight = useMemo(() => itemHeight * visibleCount, [visibleCount]);
var rootStyle = useMemo(() => _objectSpread(_objectSpread({}, style), {}, {
height: addUnitPx(wrapHeight)
}), [style, wrapHeight]);
var maskStyle = useMemo(() => ({
backgroundSize: "100% ".concat(addUnitPx((wrapHeight - itemHeight) / 2))
}), [wrapHeight]);
var frameStyle = useMemo(() => ({
height: addUnitPx(itemHeight)
}), []);
var columnsRender = useRendered(() => _map(columns, (column, columnIndex) => {
var _getPickerOptionKey;
var {
children: options
} = column,
restColumnProps = _objectWithoutProperties(column, _excluded2);
clearColumnRefs === null || clearColumnRefs === void 0 ? void 0 : clearColumnRefs();
return /*#__PURE__*/React.createElement(PickerColumn, _objectSpread(_objectSpread({
ref: setColumnRefs === null || setColumnRefs === void 0 ? void 0 : setColumnRefs(columnIndex),
key: (_getPickerOptionKey = getPickerOptionKey(column)) !== null && _getPickerOptionKey !== void 0 ? _getPickerOptionKey : columnIndex,
children: options,
readonly: readonly
}, restColumnProps), {}, {
value: _get(values, columnIndex),
onChange: (option, emitChange) => _onChange === null || _onChange === void 0 ? void 0 : _onChange(option, _objectSpread(_objectSpread({}, column), {}, {
index: columnIndex
}), emitChange)
}));
}));
return /*#__PURE__*/React.createElement(View, _objectSpread({
className: classNames(prefixClassname("picker__columns"), className),
style: rootStyle,
catchMove: true,
onTouchMove: preventDefault
}, restProps), columnsRender, /*#__PURE__*/React.createElement(View, {
className: prefixClassname("picker__mask"),
style: maskStyle
}), /*#__PURE__*/React.createElement(View, {
className: classNames([HAIRLINE_BORDER_UNSET_TOP_BOTTOM, prefixClassname("picker__frame")]),
style: frameStyle
}));
}
export default PickerColumnsRender;
//# sourceMappingURL=picker-columns-render.js.map