UNPKG

@vuesax-alpha/nightly

Version:
55 lines (52 loc) 1.67 kB
import { warn } from 'vue'; import { fromPairs } from 'lodash-unified'; import '../../types.mjs'; import '../../objects.mjs'; import { isObject, hasOwn } from '@vue/shared'; const vsPropKey = "__vsPropKey"; const definePropType = (val) => val; const isVsProp = (val) => isObject(val) && !!val[vsPropKey]; const buildProp = (prop, key) => { if (!isObject(prop) || isVsProp(prop)) return prop; const { values, required, default: defaultValue, type, validator } = prop; const _validator = values || validator ? (val) => { let valid = false; let allowedValues = []; if (values) { allowedValues = Array.from(values); if (hasOwn(prop, "default")) { allowedValues.push(defaultValue); } valid || (valid = allowedValues.includes(val)); } if (validator) valid || (valid = validator(val)); if (!valid && allowedValues.length > 0) { const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", "); warn( `Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify( val )}.` ); } return valid; } : void 0; const vsProp = { type, required: !!required, validator: _validator, [vsPropKey]: true }; if (hasOwn(prop, "default")) vsProp.default = defaultValue; return vsProp; }; const buildProps = (props) => fromPairs( Object.entries(props).map(([key, option]) => [ key, buildProp(option, key) ]) ); export { buildProp, buildProps, definePropType, isVsProp, vsPropKey }; //# sourceMappingURL=runtime.mjs.map