@storybook/addon-ondevice-controls
Version:
Display storybook controls on your device.
32 lines (31 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const useResyncValue_1 = require("./useResyncValue");
const common_1 = require("./common");
function formatArray(value, separator) {
if (value === '') {
return [];
}
return value.split(separator);
}
const ArrayType = ({ arg: { name, value, separator = ',' }, onChange = () => null, isPristine, }) => {
const { setCurrentValue, key } = (0, useResyncValue_1.useResyncValue)(value, isPristine);
const [focused, setFocused] = (0, react_1.useState)(false);
return ((0, jsx_runtime_1.jsx)(common_1.Input, { testID: name, underlineColorAndroid: "transparent", autoCapitalize: "none", defaultValue: value?.join(separator), onChangeText: (text) => {
const formatted = formatArray(text, separator);
onChange(formatted);
setCurrentValue(formatted);
}, onFocus: () => setFocused(true), onBlur: () => setFocused(false), focused: focused }, key));
};
ArrayType.serialize = (value) => value;
ArrayType.deserialize = (value) => {
if (Array.isArray(value)) {
return value;
}
return Object.keys(value)
.sort()
.reduce((array, key) => [...array, value[key]], []);
};
exports.default = ArrayType;