You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
57 lines
1.8 KiB
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
var vue = require('vue');
|
|
var lodashUnified = require('lodash-unified');
|
|
require('../../types.js');
|
|
require('../../objects.js');
|
|
var shared = require('@vue/shared');
|
|
|
|
const epPropKey = "__epPropKey";
|
|
const definePropType = (val) => val;
|
|
const isEpProp = (val) => shared.isObject(val) && !!val[epPropKey];
|
|
const buildProp = (prop, key) => {
|
|
if (!shared.isObject(prop) || isEpProp(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 (shared.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(", ");
|
|
vue.warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`);
|
|
}
|
|
return valid;
|
|
} : void 0;
|
|
const epProp = {
|
|
type,
|
|
required: !!required,
|
|
validator: _validator,
|
|
[epPropKey]: true
|
|
};
|
|
if (shared.hasOwn(prop, "default"))
|
|
epProp.default = defaultValue;
|
|
return epProp;
|
|
};
|
|
const buildProps = (props) => lodashUnified.fromPairs(Object.entries(props).map(([key, option]) => [
|
|
key,
|
|
buildProp(option, key)
|
|
]));
|
|
|
|
exports.buildProp = buildProp;
|
|
exports.buildProps = buildProps;
|
|
exports.definePropType = definePropType;
|
|
exports.epPropKey = epPropKey;
|
|
exports.isEpProp = isEpProp;
|
|
//# sourceMappingURL=runtime.js.map
|