{"version":3,"file":"index.mjs","sources":["../../../../../packages/formily/form-layout/index.ts"],"sourcesContent":["import { defineComponent, inject, provide, ref, watch } from 'vue'\nimport { h } from '@formily/vue'\nimport { stylePrefix } from '../__builtins__'\nimport { useResponsiveFormLayout } from './useResponsiveFormLayout'\nimport type { InjectionKey, Ref, SetupContext } from 'vue'\n\nexport type FormLayoutProps = {\n  className?: string\n  colon?: boolean\n  labelAlign?: 'right' | 'left' | ('right' | 'left')[]\n  wrapperAlign?: 'right' | 'left' | ('right' | 'left')[]\n  labelWrap?: boolean\n  labelWidth?: number\n  wrapperWidth?: number\n  wrapperWrap?: boolean\n  labelCol?: number | number[]\n  wrapperCol?: number | number[]\n  fullness?: boolean\n  size?: 'small' | 'default' | 'large'\n  layout?:\n    | 'vertical'\n    | 'horizontal'\n    | 'inline'\n    | ('vertical' | 'horizontal' | 'inline')[]\n  direction?: 'rtl' | 'ltr'\n  shallow?: boolean\n  feedbackLayout?: 'loose' | 'terse' | 'popover'\n  tooltipLayout?: 'icon' | 'text'\n  bordered?: boolean\n  breakpoints?: number[]\n  inset?: boolean\n  spaceGap?: number\n  gridColumnGap?: number\n  gridRowGap?: number\n}\n\nexport const FormLayoutDeepContext: InjectionKey<Ref<FormLayoutProps>> = Symbol(\n  'FormLayoutDeepContext'\n)\n\nexport const FormLayoutShallowContext: InjectionKey<Ref<FormLayoutProps>> =\n  Symbol('FormLayoutShallowContext')\n\nexport const useFormDeepLayout = (): Ref<FormLayoutProps> =>\n  inject(FormLayoutDeepContext, ref({}))\n\nexport const useFormShallowLayout = (): Ref<FormLayoutProps> =>\n  inject(FormLayoutShallowContext, ref({}))\n\nexport const useFormLayout = (): Ref<FormLayoutProps> => {\n  const shallowLayout = useFormShallowLayout()\n  const deepLayout = useFormDeepLayout()\n  const formLayout = ref({\n    ...deepLayout.value,\n    ...shallowLayout.value,\n  })\n\n  watch(\n    [shallowLayout, deepLayout],\n    () => {\n      formLayout.value = {\n        ...deepLayout.value,\n        ...shallowLayout.value,\n      }\n    },\n    {\n      deep: true,\n    }\n  )\n  return formLayout\n}\n\nexport const FormLayout = defineComponent<FormLayoutProps>({\n  name: 'FFormLayout',\n  props: {\n    className: {},\n    colon: { default: true },\n    labelAlign: {},\n    wrapperAlign: {},\n    labelWrap: { default: false },\n    labelWidth: {},\n    wrapperWidth: {},\n    wrapperWrap: { default: false },\n    labelCol: {},\n    wrapperCol: {},\n    fullness: { default: false },\n    size: { default: 'default' },\n    layout: { default: 'horizontal' },\n    direction: { default: 'ltr' },\n    shallow: { default: true },\n    feedbackLayout: {},\n    tooltipLayout: {},\n    bordered: { default: true },\n    inset: { default: false },\n    breakpoints: {},\n    spaceGap: {},\n    gridColumnGap: {},\n    gridRowGap: {},\n  },\n  setup(customProps, { slots }: SetupContext) {\n    const root = ref()\n    const { props } = useResponsiveFormLayout(customProps, root)\n\n    const deepLayout = useFormDeepLayout()\n    const newDeepLayout = ref({\n      ...deepLayout.value,\n    })\n    const shallowProps = ref({})\n    watch(\n      [props, deepLayout],\n      () => {\n        // shallowProps.value = props.value.shallow ? props.value : undefined\n        shallowProps.value = props.value.shallow ? props.value : {}\n        if (!props.value.shallow) {\n          Object.assign(newDeepLayout.value, props.value)\n        } else {\n          if (props.value.size) {\n            newDeepLayout.value.size = props.value.size\n          }\n          if (props.value.colon) {\n            newDeepLayout.value.colon = props.value.colon\n          }\n        }\n      },\n      { deep: true, immediate: true }\n    )\n\n    provide(FormLayoutDeepContext, newDeepLayout)\n    provide(FormLayoutShallowContext, shallowProps)\n\n    const formPrefixCls = `${stylePrefix}-form`\n    return () => {\n      const classNames = {\n        [`${formPrefixCls}-${props?.value.layout}`]: true,\n        [`${formPrefixCls}-rtl`]: props?.value.direction === 'rtl',\n        [`${formPrefixCls}-${props?.value.size}`]:\n          props?.value.size !== undefined,\n        [`${props?.value.className}`]: props?.value.className !== undefined,\n      }\n      return h(\n        'div',\n        {\n          ref: root,\n          class: classNames,\n        },\n        slots\n      )\n    }\n  },\n})\n\nexport default FormLayout\n"],"names":[],"mappings":"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"}