{"version":3,"file":"index.mjs","sources":["../../../../../packages/formily/form-grid/index.ts"],"sourcesContent":["import {\n  computed,\n  defineComponent,\n  h,\n  inject,\n  onMounted,\n  provide,\n  ref,\n  watchEffect,\n} from 'vue'\nimport { observer } from '@formily/reactive-vue'\nimport { markRaw } from '@formily/reactive'\nimport { Grid, IGridOptions } from '@formily/grid'\nimport { composeExport, stylePrefix } from '../__builtins__'\nimport { useFormLayout } from '../form-layout'\nimport type {\n  CSSProperties,\n  InjectionKey,\n  PropType,\n  Ref,\n  SetupContext,\n} from 'vue'\n\nexport interface IFormGridProps extends IGridOptions {\n  grid?: Grid<HTMLElement>\n  prefixCls?: string\n  className?: string\n  style?: CSSProperties\n  [prop: string]: any\n}\n\nconst FormGridSymbol: InjectionKey<Ref<Grid<HTMLElement>>> =\n  Symbol('FormGridContext')\n\ninterface GridColumnProps {\n  gridSpan: number\n}\n\nexport const createFormGrid = (props: IFormGridProps): Grid<HTMLElement> => {\n  return markRaw(new Grid(props))\n}\n\nexport const useFormGrid = (): Ref<Grid<HTMLElement>> =>\n  inject(FormGridSymbol) as Ref<Grid<HTMLElement>>\n\n/**\n * @deprecated\n */\nconst useGridSpan = (gridSpan: number) => {\n  return gridSpan\n}\n\n/**\n * @deprecated\n */\nexport const useGridColumn = (gridSpan = 1) => {\n  return gridSpan\n}\n\nconst FormGridInner = observer(\n  defineComponent({\n    name: 'FFormGrid',\n    props: {\n      columnGap: {\n        type: Number,\n      },\n      rowGap: {\n        type: Number,\n      },\n      minColumns: {\n        type: [Number, Array],\n      },\n      minWidth: {\n        type: [Number, Array],\n      },\n      maxColumns: {\n        type: [Number, Array],\n      },\n      maxWidth: {\n        type: [Number, Array],\n      },\n      breakpoints: {\n        type: Array,\n      },\n      colWrap: {\n        type: Boolean,\n        default: true,\n      },\n      strictAutoFit: {\n        type: Boolean,\n        default: false,\n      },\n      shouldVisible: {\n        type: Function as PropType<IGridOptions['shouldVisible']>,\n        default() {\n          return () => true\n        },\n      },\n      grid: {\n        type: Object as PropType<Grid<HTMLElement>>,\n      },\n    },\n    setup(props: IFormGridProps, { slots }) {\n      const layout = useFormLayout()\n\n      const gridInstance = computed(() => {\n        const newProps: IFormGridProps = {}\n        Object.keys(props).forEach((key) => {\n          if (typeof props[key] !== 'undefined') {\n            newProps[key as keyof IFormGridProps] = props[key]\n          }\n        })\n        const options = {\n          columnGap: layout.value?.gridColumnGap ?? 8,\n          rowGap: layout.value?.gridRowGap ?? 4,\n          ...newProps,\n        }\n        return markRaw(options?.grid ? options.grid : new Grid(options))\n      })\n      const prefixCls = `${stylePrefix}-form-grid`\n      const root = ref<HTMLElement>()\n\n      provide(FormGridSymbol, gridInstance)\n\n      onMounted(() => {\n        watchEffect((onInvalidate) => {\n          const dispose = gridInstance.value.connect(root.value as HTMLElement)\n          onInvalidate(() => {\n            dispose()\n          })\n        })\n      })\n\n      return () => {\n        return h(\n          'div',\n          {\n            class: `${prefixCls}`,\n            style: {\n              gridTemplateColumns: gridInstance.value.templateColumns,\n              gap: gridInstance.value.gap,\n            },\n            ref: root,\n          },\n          slots\n        )\n      }\n    },\n  })\n)\n\nconst FormGridColumn = observer({\n  name: 'FFormGridColumn',\n  props: {\n    gridSpan: {\n      type: Number,\n      default: 1,\n    },\n  },\n  setup(props: GridColumnProps, { slots }: SetupContext) {\n    return () => {\n      return h(\n        'div',\n        {\n          'data-grid-span': props.gridSpan,\n        },\n        slots\n      )\n    }\n  },\n})\n\nexport const FormGrid = composeExport(FormGridInner, {\n  GridColumn: FormGridColumn,\n  useGridSpan,\n  useFormGrid,\n  createFormGrid,\n})\n\nexport default FormGrid\n"],"names":[],"mappings":"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"}