runtime.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var lodashUnified = require('lodash-unified');
  5. var shared = require('@vue/shared');
  6. const epPropKey = "__epPropKey";
  7. const definePropType = (val) => val;
  8. const isEpProp = (val) => shared.isObject(val) && !!val[epPropKey];
  9. const buildProp = (prop, key) => {
  10. if (!shared.isObject(prop) || isEpProp(prop))
  11. return prop;
  12. const { values, required, default: defaultValue, type, validator } = prop;
  13. const _validator = values || validator ? (val) => {
  14. let valid = false;
  15. let allowedValues = [];
  16. if (values) {
  17. allowedValues = Array.from(values);
  18. if (shared.hasOwn(prop, "default")) {
  19. allowedValues.push(defaultValue);
  20. }
  21. valid || (valid = allowedValues.includes(val));
  22. }
  23. if (validator)
  24. valid || (valid = validator(val));
  25. if (!valid && allowedValues.length > 0) {
  26. const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", ");
  27. vue.warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`);
  28. }
  29. return valid;
  30. } : void 0;
  31. const epProp = {
  32. type,
  33. required: !!required,
  34. validator: _validator,
  35. [epPropKey]: true
  36. };
  37. if (shared.hasOwn(prop, "default"))
  38. epProp.default = defaultValue;
  39. return epProp;
  40. };
  41. const buildProps = (props) => lodashUnified.fromPairs(Object.entries(props).map(([key, option]) => [
  42. key,
  43. buildProp(option, key)
  44. ]));
  45. exports.buildProp = buildProp;
  46. exports.buildProps = buildProps;
  47. exports.definePropType = definePropType;
  48. exports.epPropKey = epPropKey;
  49. exports.isEpProp = isEpProp;
  50. //# sourceMappingURL=runtime.js.map