47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { warn } from 'vue';
 | 
						|
import { fromPairs } from 'lodash-unified';
 | 
						|
import { isObject, hasOwn } from '@vue/shared';
 | 
						|
 | 
						|
const epPropKey = "__epPropKey";
 | 
						|
const definePropType = (val) => val;
 | 
						|
const isEpProp = (val) => isObject(val) && !!val[epPropKey];
 | 
						|
const buildProp = (prop, key) => {
 | 
						|
  if (!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 (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 epProp = {
 | 
						|
    type,
 | 
						|
    required: !!required,
 | 
						|
    validator: _validator,
 | 
						|
    [epPropKey]: true
 | 
						|
  };
 | 
						|
  if (hasOwn(prop, "default"))
 | 
						|
    epProp.default = defaultValue;
 | 
						|
  return epProp;
 | 
						|
};
 | 
						|
const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [
 | 
						|
  key,
 | 
						|
  buildProp(option, key)
 | 
						|
]));
 | 
						|
 | 
						|
export { buildProp, buildProps, definePropType, epPropKey, isEpProp };
 | 
						|
//# sourceMappingURL=runtime.mjs.map
 |