UNPKG

yanzhen-design-vue

Version:

97 lines (96 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const core = require("@yanzhen-lowcode/core"); const lodashEs = require("lodash-es"); const utilsVue = require("@yanzhen-libs/utils-vue"); const utils = require("@yanzhen-libs/utils"); const core$1 = require("@vueuse/core"); const formProvider = require("./form-provider.cjs"); const useFormProviderSchema = require("./hooks/use-form-provider-schema.cjs"); function useFormProvider(props, emit) { const modelValue = utilsVue.useModelValue(props, "value", emit); const modelRef = vue.computed(() => { var _a; return utilsVue.unref(modelValue) || props.model || ((_a = props.form) == null ? void 0 : _a.model); }); const rulesRef = vue.computed(() => { var _a; const rules = props.rules ?? ((_a = props.form) == null ? void 0 : _a.rules); return utils.isObject(rules) ? rules : {}; }); const formRef = vue.ref(null); const $slots = vue.useSlots(); const type = "form"; const _schema = vue.ref({ type }); const _schemaRef = vue.computed(() => { return { ...props.schema ?? {}, type }; }); const options = { form: vue.computed(() => props.form), row: vue.computed(() => props.row), model: modelRef, rules: rulesRef, slots: $slots }; const { formSchema, bodySchema, rowSchema, bodySchemaConfig, handleFormProviderItemProps } = useFormProviderSchema.useFormProviderSchema(_schemaRef, options, formRef); const updatePropsKey = utilsVue.useDynamicProps({ update: true }); const pageProviderProps = utilsVue.useProxyProps(props, formProvider.formProviderEmits, { emit, include: Object.keys(core.pageProviderProps), exclude: ["value", "schema"], filter: (key) => { if (key === "onUpdate:value") { const handleUpdateValue = lodashEs.flattenDeep([props["onUpdate:value"]]).find(lodashEs.isFunction); return updatePropsKey.includes("value") && lodashEs.isFunction(handleUpdateValue); } return true; } }); const schemaRef = vue.computed(() => { const row = utilsVue.unref(rowSchema); const body = utilsVue.unref(bodySchema); const schema = { type: "page", body }; if (row) { schema.body = { ...row, body: schema.body }; } return schema; }); const [DefinePageProviderItem, ReusablePageProviderItem] = core$1.createReusableTemplate(); const ctx = { pageProviderProps, modelRef, rulesRef, schemaRef, rowSchema, formSchema, formRef, bodySchema, bodySchemaConfig }; const methods = { handleFormProviderItemProps }; const templates = { DefinePageProviderItem, ReusablePageProviderItem }; vue.onUnmounted(() => { _schema.value = { type }; }); return { ctx, methods, templates }; } exports.useFormProvider = useFormProvider;