get-variant-context.mjs 891 B

12345678910111213141516171819202122232425262728
  1. import { isVariantLabel } from './is-variant-label.mjs';
  2. import { variantProps } from './variant-props.mjs';
  3. const numVariantProps = variantProps.length;
  4. function getVariantContext(visualElement) {
  5. if (!visualElement)
  6. return undefined;
  7. if (!visualElement.isControllingVariants) {
  8. const context = visualElement.parent
  9. ? getVariantContext(visualElement.parent) || {}
  10. : {};
  11. if (visualElement.props.initial !== undefined) {
  12. context.initial = visualElement.props.initial;
  13. }
  14. return context;
  15. }
  16. const context = {};
  17. for (let i = 0; i < numVariantProps; i++) {
  18. const name = variantProps[i];
  19. const prop = visualElement.props[name];
  20. if (isVariantLabel(prop) || prop === false) {
  21. context[name] = prop;
  22. }
  23. }
  24. return context;
  25. }
  26. export { getVariantContext };