ConfigProvider.mjs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { createVNode as _createVNode } from "vue";
  2. import { provide, computed, watchEffect, defineComponent } from "vue";
  3. import { kebabCase, makeStringProp, createNamespace } from "../utils/index.mjs";
  4. import { setGlobalZIndex } from "../composables/use-global-z-index.mjs";
  5. const [name, bem] = createNamespace("config-provider");
  6. const CONFIG_PROVIDER_KEY = Symbol(name);
  7. const configProviderProps = {
  8. tag: makeStringProp("div"),
  9. zIndex: Number,
  10. themeVars: Object,
  11. iconPrefix: String
  12. };
  13. function mapThemeVarsToCSSVars(themeVars) {
  14. const cssVars = {};
  15. Object.keys(themeVars).forEach((key) => {
  16. cssVars[`--van-${kebabCase(key)}`] = themeVars[key];
  17. });
  18. return cssVars;
  19. }
  20. var stdin_default = defineComponent({
  21. name,
  22. props: configProviderProps,
  23. setup(props, {
  24. slots
  25. }) {
  26. const style = computed(() => {
  27. if (props.themeVars) {
  28. return mapThemeVarsToCSSVars(props.themeVars);
  29. }
  30. });
  31. provide(CONFIG_PROVIDER_KEY, props);
  32. watchEffect(() => {
  33. if (props.zIndex !== void 0) {
  34. setGlobalZIndex(props.zIndex);
  35. }
  36. });
  37. return () => _createVNode(props.tag, {
  38. "class": bem(),
  39. "style": style.value
  40. }, {
  41. default: () => {
  42. var _a;
  43. return [(_a = slots.default) == null ? void 0 : _a.call(slots)];
  44. }
  45. });
  46. }
  47. });
  48. export {
  49. CONFIG_PROVIDER_KEY,
  50. stdin_default as default
  51. };