icarys-fc-vant 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.min.js","sources":["../src/vant/src/components/calendar.jsx","../src/vant/src/core/utils.js","../src/vant/src/components/cascader.jsx","../src/vant/src/components/checkbox.jsx","../src/vant/src/components/select.jsx","../src/vant/src/components/uploader.jsx","../src/vant/src/components/radio.jsx","../src/vant/src/components/datePicker.jsx","../src/vant/src/components/timePicker.jsx","../src/vant/src/components/group.jsx","../src/vant/src/components/icon/IconWarning.vue","../src/vant/src/components/icon/IconWarning.vue?vue&type=template&id=78ef5f99&lang.js","../src/vant/src/components/index.js","../src/vant/src/parsers/index.js","../src/vant/src/parsers/hidden.js","../src/vant/src/parsers/row.js","../src/vant/src/core/alias.js","../src/vant/src/core/manager.js","../src/vant/src/core/config.js","../src/vant/src/core/api.js","../node_modules/style-inject/dist/style-inject.es.js","../src/vant/src/core/provider.js","../src/vant/src/core/index.js","../src/vant/src/index.js","../src/core/src/frame/attrs.js","../src/core/src/frame/util.js","../src/core/src/components/formCreate.js","../src/core/src/factory/creator.js","../src/core/src/factory/maker.js","../src/core/src/frame/fetch.js","../src/core/src/frame/api.js","../src/core/src/render/index.js","../src/core/src/render/cache.js","../src/core/src/render/render.js","../src/core/src/handler/page.js","../src/core/src/factory/context.js","../src/core/src/handler/loader.js","../src/core/src/handler/input.js","../src/core/src/factory/parser.js","../src/core/src/handler/context.js","../src/core/src/handler/index.js","../src/core/src/handler/inject.js","../src/core/src/handler/render.js","../src/core/src/handler/lifecycle.js","../src/core/src/handler/effect.js","../src/core/src/components/fragment.js","../src/core/src/factory/node.js","../src/core/src/factory/manager.js","../src/core/src/frame/provider.js","../src/core/src/parser/html.js","../src/core/src/frame/dataDriver.js","../src/core/src/frame/language.js","../src/core/src/frame/index.js","../src/utils/lib/type.js","../src/utils/lib/modify.js","../src/utils/lib/deepextend.js","../src/utils/lib/extend.js","../src/utils/lib/console.js","../src/utils/lib/json.js","../src/utils/lib/unique.js","../src/utils/lib/debounce.js","../src/utils/lib/deepset.js","../src/utils/lib/slot.js","../src/utils/lib/toarray.js","../src/utils/lib/todate.js","../src/utils/lib/toline.js","../src/utils/lib/topromise.js","../src/utils/lib/tostring.js"],"sourcesContent":["import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcCalendar';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n formCreateInject: Object,\n disabled: Boolean,\n clearable: Boolean,\n type: String,\n modelValue: [String, Array],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'change', 'fc.el'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const formCreateInject = toRef(props, 'formCreateInject');\n const inputValue = ref(modelValue.value);\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = n;\n })\n\n const formatter = (date) => {\n return dayjs(date).format('YYYY-MM-DD');\n }\n const toDate = (str) => {\n return dayjs(str).toDate();\n }\n\n const defaultDate = computed(() => {\n const value = modelValue.value;\n if (Array.isArray(value)) {\n return value.map(toDate);\n } else if (value) {\n return toDate(value);\n } else {\n return null;\n }\n })\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const formatValue = (value) => {\n if (Array.isArray(value)) {\n inputValue.value = value.map(formatter);\n } else if (value) {\n inputValue.value = formatter(value);\n } else {\n inputValue.value = value;\n }\n }\n const onInput = () => {\n _.emit('update:modelValue', inputValue.value);\n _.emit('change', inputValue.value);\n }\n const strValue = {\n range() {\n return inputValue.value.length ? inputValue.value.join(' - ') : '';\n },\n multiple() {\n return inputValue.value.length ? (formCreateInject.value.t('selectedData', {length: inputValue.value.length}) ||`选择了 ${inputValue.value.length} 个日期`) : '';\n }\n }\n\n return {\n show,\n inputValue,\n defaultDate,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm(value) {\n formatValue(value);\n show.value = false;\n onInput();\n },\n getStrValue() {\n if (inputValue.value) {\n return hasProperty(strValue, props.type) ? strValue[props.type]() : (inputValue.value || '');\n }\n return '';\n },\n clear(e) {\n e.stopPropagation();\n const value = Array.isArray(inputValue.value) ? [] : '';\n formatValue(value);\n onInput();\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && !is.empty(this.inputValue) ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-calendar\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.getStrValue()} isLink border={false} v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-calendar {...{...this.$attrs, ...this.dateRange}} show={this.show} onUpdate:show={v => (this.show = v)}\n type={this.type}\n onConfirm={this.confirm} defaultDate={this.defaultDate}/>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","export const normalizeOptions = (options) => {\n if (!options || !Array.isArray(options)) {\n return [];\n }\n return options.map(item => {\n const normalized = {...item};\n if (normalized.label !== undefined && normalized.text === undefined) {\n normalized.text = normalized.label;\n }\n if (normalized.children && Array.isArray(normalized.children)) {\n normalized.children = normalizeOptions(normalized.children);\n }\n return normalized;\n })\n};\n","import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcCascader';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n fieldNames: Object,\n modelValue: [String, Number],\n options: Array,\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'fieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const findOptions = (options, value, path) => {\n for (let i = 0; i < options.length; i++) {\n if (options[i][fieldNames.value.value || 'value'] === value) {\n return [...path, options[i]];\n } else if (options[i][fieldNames.value.children || 'children']) {\n const find = findOptions(options[i][fieldNames.value.children || 'children'], value, [...path, options[i]]);\n if (find) {\n return find;\n }\n }\n }\n }\n\n const updateInputValue = (n) => {\n if (n == null || n === '') {\n return '';\n }\n const path = findOptions(options.value, n, []);\n return path ? path.map((option) => option[fieldNames.value.text || 'text']).join(' / ') : n;\n }\n\n const inputValue = ref(updateInputValue(modelValue.value));\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = updateInputValue(n);\n });\n\n watch(() => options.value, () => {\n if (modelValue.value != null && modelValue.value !== '') {\n inputValue.value = updateInputValue(modelValue.value);\n }\n }, {deep: true});\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedOptions, value}) {\n inputValue.value = selectedOptions.map((option) => option[fieldNames.value.text || 'text']).join(' / ');\n show.value = false;\n onInput(value);\n },\n clear(e) {\n e.stopPropagation();\n inputValue.value = '';\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.inputValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n\n return <div class=\"_fc-cascader\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.inputValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-cascader\n {...this.$attrs}\n modelValue={this.modelValue}\n fieldNames={this.fieldNames}\n options={this.options}\n onClose={() => this.show = false}\n onFinish={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcCheckbox';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: Array,\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-checkbox-group direction=\"horizontal\" {...this.$attrs} modelValue={Array.isArray(this.modelValue) ? this.modelValue : []}\n onUpdate:modelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-checkbox name={value} shape=\"square\" {...tmp}>{text || opt.label || value}</van-checkbox>\n })}\n </van-checkbox-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcSelect';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n placeholder: String,\n columnsFieldNames: Object,\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'columnsFieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const inputValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return '';\n }\n for (let i = 0; i < (options.value || []).length; i++) {\n if (options.value[i][fieldNames.value.value || 'value'] === modelValue.value) {\n return options.value[i][fieldNames.value.text || 'text'];\n }\n }\n return modelValue.value;\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues[0]);\n show.value = false;\n },\n }\n },\n render() {\n return <div class=\"_fc-select\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled} onClick={this.open}\n model-value={this.inputValue} isLink/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-picker\n {...this.$attrs}\n modelValue={[this.modelValue]}\n columnsFieldNames={this.columnsFieldNames}\n columns={this.options}\n onCancel={() => this.show = false}\n onConfirm={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, ref, toRef, watch} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'fcUploader';\n\nfunction parseFile(file, i) {\n if (typeof file === 'object') {\n return file;\n }\n return {\n url: file,\n is_string: true,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction parseUpload(file) {\n return {...file, file, value: file};\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n formCreateInject: Object,\n modelValue: [Array, String, Object],\n afterRead: Function,\n action: String,\n headers: Object,\n method: String,\n data: Object,\n uploadName: String,\n onSuccess: Function,\n onError: Function,\n maxCount: Number,\n },\n emits: ['update:modelValue', 'delete'],\n setup(props, _) {\n\n const afterRead = toRef(props, 'afterRead');\n const modelValue = toRef(props, 'modelValue', []);\n\n const fileList = ref(toArray(modelValue.value).map(parseFile).map(parseUpload));\n\n watch(() => modelValue.value, (n) => {\n fileList.value = toArray(n).map(parseFile).map(parseUpload);\n })\n\n const uploadValue = () => {\n let files = fileList.value.map((v) => v.is_string ? v.url : (v.value || v.url)).filter((url) => url !== undefined);\n _.emit('update:modelValue', props.maxCount === 1 ? (files[0] || '') : files);\n };\n\n return {\n fileList,\n modelValue,\n onDelete(file) {\n uploadValue();\n _.emit('delete', file);\n },\n uploadFile(file) {\n file.status = 'uploading';\n if (afterRead.value) {\n return afterRead.value(file);\n } else {\n const data = props.data || {};\n data[props.uploadName || 'file'] = file.file;\n props.formCreateInject.api.fetch({\n action: props.action,\n dataType: 'formData',\n source: 'upload',\n headers: props.headers || {},\n method: props.method || 'post',\n data\n }).then(res => {\n file.status = 'success';\n props.onSuccess && props.onSuccess(res, file);\n uploadValue();\n }).catch(e => {\n file.status = 'failed';\n file.message = this.formCreateInject.t('uploadFail') || '上传失败';\n props.onError && props.onError(e, file);\n });\n }\n }\n }\n },\n render() {\n return <van-uploader {...this.$attrs} model-value={this.fileList} maxCount={this.maxCount}\n onUpdate:model-value={(v) => this.fileList = v}\n afterRead={this.uploadFile} onDelete={this.onDelete} v-slots={this.$slots}/>\n }\n\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcRadio';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-radio-group direction=\"horizontal\" {...this.$attrs} modelValue={this.modelValue}\n onUpdate:modelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-radio name={value} {...tmp}>{text || opt.label || value}</van-radio>\n })}\n </van-radio-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcDatePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split('-');\n });\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join('-'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-date-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-date-picker\n columnsType={['year', 'month', 'day']}\n {...{...this.$attrs, ...this.dateRange}}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\n\nconst NAME = 'fcTimePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split(':');\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join(':'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-time-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-time-picker\n columnsType={['hour', 'minute']}\n {...this.$attrs}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport {defineComponent, markRaw, nextTick, watch} from 'vue';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport {toPromise} from '@form-create/utils';\n\nconst NAME = 'fcGroup';\n\n\nexport default defineComponent({\n name: NAME,\n props: {\n field: String,\n rule: Array,\n expand: Number,\n options: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n sortBtn: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n title: {\n type: [String, Function],\n default: null\n },\n type: {\n type: String,\n default: 'default'\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n formCreateInject: Object,\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n form: markRaw(this.formCreateInject.form.$form())\n }\n },\n emits: ['update:modelValue', 'change', 'itemMounted', 'remove', 'add'],\n watch: {\n rule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n expand(n) {\n let d = n - this.modelValue.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n modelValue: {\n handler(n) {\n n = n || [];\n let keys = this.sort, total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i, true);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n },\n deep: true,\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = this.sort;\n if (keys.filter(k => cacheRule[k] && cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cacheRule[key].$f && this.cacheRule[key].$f.coverValue(value);\n this.cache(key, value);\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.rule || []);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\n this.cacheRule[++this.len] = {rule, options};\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n nextTick(() => {\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n delete this.cacheRule[key];\n delete this.cacheValue[key];\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {\n return;\n }\n const value = [...this.modelValue];\n value.push(this.defaultValue ? deepCopy(this.defaultValue) : (this.field ? null : {}));\n this.input(value);\n },\n del(index, key) {\n if (this.disabled) {\n return;\n }\n const del = () => {\n this.removeRule(key, true);\n const value = [...this.modelValue];\n value.splice(index, 1);\n this.input(value);\n }\n toPromise(this.onBeforeRemove(this.modelValue, index)).then(res => {\n if (false !== res) {\n del();\n }\n })\n },\n addIcon(key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus\" onClick={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus _fc-m-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.sort[index] = this.sort[index + sort];\n this.sort[index + sort] = a;\n this.formCreateInject.subForm(this.sort.map(k=>{\n return this.cacheRule[k].$f;\n }));\n this.formData(0);\n },\n sortIcon(index, total) {\n const canMoveUp = index > 0;\n const canMoveDown = index < total - 1;\n\n if (!canMoveUp && !canMoveDown) {\n return null;\n }\n\n if (canMoveUp && canMoveDown) {\n // 显示合并的上下箭头按钮\n return <div class=\"_fc-m-group-btn _fc-m-group-sort\">\n <div class=\"_fc-m-group-sort-up\" onClick={() => this.changeSort(index, -1)}></div>\n <div class=\"_fc-m-group-sort-down\" onClick={() => this.changeSort(index, 1)}></div>\n </div>;\n }\n\n if (canMoveUp) {\n return this.sortUpIcon(index);\n }\n\n if (canMoveDown) {\n return this.sortDownIcon(index);\n }\n },\n makeIcon(total, index, key) {\n if (this.$slots.button) {\n return this.$slots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn) {\n const sortBtn = this.sortIcon(index, total);\n if (sortBtn) {\n btn.push(sortBtn);\n }\n }\n return btn;\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.modelValue.push(this.field ? null : {});\n }\n this.input([...this.modelValue]);\n },\n getTitle(index, key) {\n if (typeof this.title === 'function') {\n return this.title(index, this.modelValue[index], key);\n }\n if (typeof this.title === 'string') {\n return this.title.replace('{index}', index + 1);\n }\n return false;\n }\n },\n created() {\n const d = (this.expand || 0) - this.modelValue.length;\n for (let i = 0; i < this.modelValue.length; i++) {\n this.addRule(i);\n }\n if (d > 0) {\n this.expandRule(d);\n }\n },\n render() {\n const keys = this.sort;\n const button = this.button;\n const Type = this.form;\n const disabled = this.disabled;\n const isCardType = this.type === 'card';\n\n const children = keys.length === 0 ?\n (this.$slots.default ? (this.$slots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-m-group-plus-minus _fc-m-group-add fc-clock\"\n onClick={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n const title = this.getTitle(index, key);\n\n if (isCardType) {\n return <div class=\"_fc-m-group-container\" key={key}>\n <div class=\"_fc-m-group-header\">\n {title === false ? <div class=\"_fc-m-group-idx\">{index + 1}</div> : null}\n {title !== false ? <div class=\"_fc-m-group-title\">{title}</div> : null}\n <div class=\"_fc-m-group-handle fc-clock\">\n {(btn.length) ? btn : null}\n </div>\n </div>\n <div class=\"_fc-m-group-content\">\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n </div>\n </div>\n } else {\n return <div class=\"_fc-m-group-container\" key={key}>\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-m-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-m-group-handle fc-clock\">{btn}</div> : null}\n </div>\n }\n });\n return <div key={'con'} class={'_fc-m-group ' + (disabled ? '_fc-m-group-disabled' : '') + (isCardType ? ' _fc-m-group-card' : '')}>{children}</div>\n }\n});\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","import subForm from '@form-create/component-subform/src/index';\nimport Calendar from './calendar';\nimport Cascader from './cascader';\nimport Checkbox from './checkbox';\nimport Select from './select';\nimport Uploader from './uploader';\nimport Radio from './radio';\nimport DatePicker from './datePicker';\nimport TimePicker from './timePicker';\nimport Group from './group';\nimport IconWarning from './icon/IconWarning.vue';\n\n\nexport default [\n subForm,\n IconWarning,\n Calendar,\n Cascader,\n Checkbox,\n Radio,\n Select,\n DatePicker,\n TimePicker,\n Group,\n Uploader,\n]\n","import hidden from './hidden';\nimport row from './row';\nimport {hasProperty} from '@form-create/utils/lib/type';\n\n\nconst checkbox = {\n name: 'checkbox',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst radio = {\n name: 'radio',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst select = {\n name: 'select',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst cascader = {\n name: 'cascader',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst textarea = {\n name: 'textarea',\n mergeProp(ctx) {\n let {props} = ctx.prop;\n props.type = 'textarea';\n }\n}\n\n\nexport default [\n hidden,\n row,\n cascader,\n checkbox,\n radio,\n select,\n textarea,\n]\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, {\n default:()=>[\n ctx.vNode.row(ctx.prop, _)\n ]\n })\n }\n}\n","const PRE = 'van';\nexport default {\n button: PRE + '-button',\n icon: PRE + '-icon',\n slider: PRE + '-slider',\n stepper: PRE + '-stepper',\n inputNumber: PRE + '-stepper',\n rate: PRE + '-rate',\n uploader: 'fc-uploader',\n upload: 'fc-uploader',\n cell: PRE + '-cell',\n timePicker: 'fc-time-picker',\n datePicker: 'fc-date-picker',\n 'switch': PRE + '-switch',\n select: 'fc-select',\n cascader: 'fc-cascader',\n calendar: 'fc-calendar',\n checkbox: 'fc-checkbox',\n radio: 'fc-radio',\n input: PRE + '-field',\n textarea: PRE + '-field',\n field: PRE + '-field',\n formItem: PRE + '-field',\n form: PRE + '-form',\n col: PRE + '-col',\n row: PRE + '-row',\n group: 'fc-group',\n array: 'fc-group',\n object: 'fc-sub-form',\n subForm: 'fc-sub-form',\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {showNotify} from 'vant';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nfunction tidyRule(rule) {\n const _rule = {...rule};\n delete _rule.children;\n return _rule;\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n } else {\n return new Promise(v => v());\n }\n },\n validateField(field) {\n return new Promise((resolve, reject) => {\n const form = this.form();\n if (form) {\n form.validate(field).then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n clearValidateState(ctx) {\n const form = this.form();\n if (form) {\n return form.resetValidation(ctx.id);\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n prop.validate && prop.validate.forEach(item => {\n if (is.String(item.pattern)) {\n item.pattern = new RegExp(item.pattern);\n }\n });\n return prop;\n },\n mergeProp(ctx) {\n const def = {\n info: {\n icon: true,\n },\n title: {},\n col: {span: 24},\n wrap: {},\n };\n ['info', 'wrap', 'col', 'title'].forEach(name => {\n ctx.prop[name] = mergeProps([this.options[name] || {}, ctx.prop[name] || {}], def[name]);\n });\n },\n getDefaultOptions() {\n return getConfig();\n },\n adapterValidate(validate, validator) {\n if (validate.trigger === 'change') {\n validate.trigger = 'onChange';\n } else if (validate.trigger === 'blur') {\n validate.trigger = 'onBlur';\n }\n validate.validator = (value) => {\n return new Promise((resolve) => {\n const callback = (err) => {\n validate.message = err;\n if (err) {\n resolve(false);\n } else {\n resolve();\n }\n }\n return validator(value, callback);\n })\n }\n return validate;\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n on: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref} = this;\n const form = this.options.form;\n extend(this.rule, {key, ref, class: [form.className, form.class, 'form-create-m', this.$handle.preview ? 'is-preview' : '']});\n },\n render(children) {\n if (children.slotLen() && !this.$handle.preview) {\n children.setSlot(undefined, () => this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children.getSlots() : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule) && rule.wrap.title !== false;\n const {col: _col} = this.rule.props;\n const cls = rule.wrap.class;\n delete rule.wrap.class;\n delete rule.wrap.title;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n modelValue: ctx.rule.value,\n label: isTitle ? rule.title.title : undefined,\n ...tidyRule(rule.wrap || {}),\n name: ctx.id,\n rules: ctx.injectValidate(),\n },\n class: this.$render.mergeClass(cls || rule.className, 'fc-form-item'),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), {input: () => children, ...(isTitle ? {label: () => this.makeInfo(rule, uni, ctx)} : {})});\n return (isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = {...rule.title};\n const infoProp = {...rule.info};\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({\n title: ctx.refRule?.__$title?.value,\n rule: ctx.rule,\n options: this.options\n }) : ctx.refRule?.__$title?.value];\n const flag = !isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon);\n if (flag) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: infoProp.icon === true ? 'icon-warning' : infoProp.icon,\n style: 'width:1em;',\n }));\n }\n\n const _prop = mergeProps([titleProp, {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span',\n on: {\n click: (...args) => {\n if (flag && infoProp.info) {\n showNotify({type: 'warning', message: ctx.refRule?.__$info?.value, duration: 1000});\n }\n this.$handle.targetHook(ctx, 'titleClick', {args});\n }\n }\n }]);\n\n delete _prop.props.show;\n delete _prop.props.title;\n delete _prop.props.native;\n\n return this.$r(_prop, children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n return this.$r({\n type: 'cell',\n class: 'fc-form-cell fc-form-footer',\n key: `${this.key}fb`\n }, vn);\n },\n\n makeResetBtn() {\n const resetBtn = {...this.options.resetBtn};\n const innerText = resetBtn.innerText || this.$handle.api.t('reset') || '重置';\n delete resetBtn.innerText;\n delete resetBtn.click;\n delete resetBtn.col;\n delete resetBtn.show;\n return this.$r({\n type: 'button',\n props: resetBtn,\n class: 'fc-reset-btn',\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.resetBtn.click\n ? this.options.resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = {...this.options.submitBtn};\n const innerText = submitBtn.innerText || this.$handle.api.t('submit') || '提交';\n delete submitBtn.innerText;\n delete submitBtn.click;\n delete submitBtn.col;\n delete submitBtn.show;\n return this.$r({\n type: 'button',\n props: submitBtn,\n class: 'fc-submit-btn',\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.submitBtn.click\n ? this.options.submitBtn.click(fApi)\n : fApi.submit().catch(() => {\n });\n }\n },\n key: `${this.key}b1`,\n }, [innerText]);\n }\n}\n","export default function getConfig() {\n return {\n form: {\n required: 'auto',\n labelAlign: 'right',\n inputAlign: 'right',\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n return {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-fail', e, {api});\n h.emitEvent('validate-fail', e, {api});\n })\n });\n },\n validateField(field, callback) {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n return new Promise((resolve, reject) => {\n const promise = h.options.validateOnSubmit === false ? Promise.resolve() : api.validate();\n promise.then(() => {\n let formData = api.formData();\n h.beforeSubmit(formData).then(() => {\n is.Function(successFn) && invoke(() => successFn(formData, api));\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, api));\n h.vm.emit('submit', formData, api);\n resolve(formData);\n }).catch((e) => {})\n }).catch((...args) => {\n is.Function(failFn) && invoke(() => failFn(api, ...args));\n reject(...args)\n })\n });\n },\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import is from '@form-create/utils/lib/type';\n\nconst required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n let _title = undefined;\n if (val.required === false) {\n inject.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n const validate = {\n required: true,\n validator(v) {\n updateMessage();\n return !is.empty(v);\n },\n trigger: ['onChange', 'onSubmit'],\n ...val,\n };\n const updateMessage = () => {\n const title = rule.__fc__.refRule.__$title?.value;\n if (_title === title) {\n return;\n }\n _title = title;\n if (!val.message) {\n validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));\n } else {\n const match = val.message.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n validate.message = api.t(match[1], {title});\n }\n }\n }\n updateMessage();\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\n\nexport default required\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport '../style/index.css';\nimport extendApi from './api';\nimport required from './provider';\nimport {Field} from 'vant';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n FormCreate.register(required);\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n if (Field.props) {\n Field.props.modelValue = {\n type: [String, Number, Array, Object, Boolean, Function],\n default: '',\n };\n }\n}\n\nexport default function VantFormCreate() {\n return FormCreateFactory({\n ui: 'process.env.UI',\n version: 'process.env.VERSION',\n manager,\n extendApi,\n install,\n isMobile: true,\n attrs: {\n normal: ['col', 'wrap'],\n key: ['title', 'info'],\n }\n });\n}\n","import VantFormCreate from './core/index';\n\nconst FormCreateMobile = VantFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreateMobile = FormCreateMobile;\n}\n\nconst maker = FormCreateMobile.maker;\n\nexport {maker}\n\nexport default FormCreateMobile;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep', 'renderSlots'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {isVNode} from 'vue';\nimport {upper} from '@form-create/utils/lib/toline';\nimport toCase from '@form-create/utils/lib/tocase';\n\nexport {parseJson, parseFn, toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n\nexport function makeSlotBag() {\n const slotBag = {};\n const slotName = (n) => n || 'default';\n\n return {\n setSlot(slot, vnFn) {\n slot = slotName(slot);\n if (!vnFn || (Array.isArray(vnFn) && vnFn.length))\n return;\n if (!slotBag[slot]) slotBag[slot] = [];\n slotBag[slot].push(vnFn);\n },\n getSlot(slot, val) {\n slot = slotName(slot);\n const children = [];\n (slotBag[slot] || []).forEach(fn => {\n if (Array.isArray(fn)) {\n children.push(...fn);\n } else if (is.Function(fn)) {\n const res = fn(...(val || []));\n if (Array.isArray(res)) {\n children.push(...res);\n } else {\n children.push(res);\n }\n } else if (!is.Undef(fn)) {\n children.push(fn);\n }\n })\n return children;\n },\n getSlots() {\n const slots = {};\n Object.keys(slotBag).forEach(k => {\n slots[k] = (...args) => {\n return this.getSlot(k, args);\n }\n })\n return slots\n },\n slotLen(slot) {\n slot = slotName(slot);\n return slotBag[slot] ? slotBag[slot].length : 0;\n },\n mergeBag(bag) {\n if (!bag) return this;\n const slots = is.Function(bag.getSlots) ? bag.getSlots() : bag;\n if (Array.isArray(bag) || isVNode(bag)) {\n this.setSlot(undefined, () => bag);\n } else {\n Object.keys(slots).forEach(k => {\n this.setSlot(k, slots[k]);\n });\n }\n\n return this;\n }\n };\n}\n\nexport function toProps(rule) {\n const prop = {...(rule.props || {})};\n\n Object.keys(rule.on || {}).forEach(k => {\n if (k.indexOf('-') > 0) {\n k = toCase(k);\n }\n const name = `on${upper(k)}`;\n if (Array.isArray(prop[name])) {\n prop[name] = [...prop[name], rule.on[k]];\n } else if (prop[name]) {\n prop[name] = [prop[name], rule.on[k]];\n } else {\n prop[name] = rule.on[k];\n }\n })\n prop.key = rule.key;\n prop.ref = rule.ref;\n prop.class = rule.class;\n prop.id = rule.id;\n prop.style = rule.style;\n if (prop.slot) delete prop.slot;\n\n return prop;\n}\n\nexport function setPrototypeOf(o, proto) {\n Object.setPrototypeOf(o, proto);\n return o;\n}\n\n\nconst changeType = (a, b) => {\n if (typeof a === 'string') {\n return String(b);\n } else if (typeof a === 'number') {\n return Number(b);\n }\n return b;\n}\n\nexport const condition = {\n '==': (a, b) => {\n return JSON.stringify(a) === JSON.stringify(changeType(a, b));\n },\n '!=': (a, b) => {\n return !condition['=='](a, b);\n },\n '>': (a, b) => {\n return a > b;\n },\n '>=': (a, b) => {\n return a >= b;\n },\n '<': (a, b) => {\n return a < b;\n },\n '<=': (a, b) => {\n return a <= b;\n },\n on(a, b) {\n return a && a.indexOf && a.indexOf(changeType(a[0], b)) > -1;\n },\n notOn(a, b) {\n return !condition.on(a, b);\n },\n in(a, b) {\n return b && b.indexOf && b.indexOf(a) > -1;\n },\n notIn(a, b) {\n return !condition.in(a, b);\n },\n between(a, b) {\n return a > b[0] && a < b[1];\n },\n notBetween(a, b) {\n return a < b[0] || a > b[1];\n },\n empty(a) {\n return is.empty(a);\n },\n notEmpty(a) {\n return !is.empty(a);\n },\n pattern(a, b) {\n return new RegExp(b, 'g').test(a);\n }\n};\n\nexport function deepGet(val, split) {\n (Array.isArray(split) ? split : (split || '').split('.')).forEach(k => {\n if (val != null) {\n val = val[k];\n }\n });\n return val;\n}\n\nexport function extractVar(str) {\n const regex = /{{\\s*(.*?)\\s*}}/g;\n let match;\n const matches = {};\n while ((match = regex.exec(str)) !== null) {\n if (match[1]) {\n matches[match[1]] = true;\n }\n }\n return Object.keys(matches);\n}\n\nexport function convertFieldToConditions(field) {\n let parts = field.split('.');\n let conditions = [];\n let currentCondition = '';\n\n parts.forEach((part, index) => {\n if (index === 0) {\n currentCondition = part;\n } else {\n currentCondition += '.' + part;\n }\n conditions.push(currentCondition);\n });\n\n return conditions.join(' && ');\n}\n\nexport function parseTemplateToTree(template) {\n const tokens = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < template.length; i++) {\n const char = template[i];\n\n if (char === '[') {\n if (depth === 0 && current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n depth++;\n current += char;\n } else if (char === ']') {\n depth--;\n current += char;\n\n if (depth === 0) {\n tokens.push({\n type: 'bracket',\n value: parseTemplateToTree(current.slice(1, -1))\n });\n current = '';\n }\n } else if (char === '.' && depth === 0) {\n if (current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push({type: 'key', value: current});\n }\n\n return tokens.map(token => {\n if (token.type === 'key') {\n return {key: token.value};\n } else {\n return {children: token.value};\n }\n });\n}\n","import {\n defineComponent,\n getCurrentInstance,\n inject,\n markRaw,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n onUpdated,\n provide,\n reactive,\n toRefs,\n watch, watchEffect\n} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport toLine from '@form-create/utils/lib/toline';\nimport {toJson} from '../frame/util';\n\nconst getGroupInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.props.formCreateInject) {\n return vm.props.formCreateInject\n }\n if (vm.parent) {\n return getGroupInject(vm.parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate, components, directives) {\n return defineComponent({\n name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),\n components,\n directives,\n props: {\n rule: {\n type: Array,\n required: true,\n default: () => []\n },\n option: {\n type: Object,\n default: () => ({})\n },\n extendOption: Boolean,\n driver: [String, Object],\n modelValue: Object,\n disabled: {\n type: Boolean,\n default: undefined,\n },\n preview: {\n type: Boolean,\n default: undefined,\n },\n index: [String, Number],\n api: Object,\n locale: [String, Object],\n t: Function,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],\n render() {\n return this.fc.render();\n },\n setup(props) {\n const vm = getCurrentInstance();\n provide('parentFC', vm);\n const parent = inject('parentFC', null);\n let top = parent;\n\n if (parent) {\n while (top.setupState.parent) {\n top = top.setupState.parent;\n }\n } else {\n top = vm;\n }\n\n const {rule, modelValue, subForm, inFor} = toRefs(props);\n\n const data = reactive({\n ctxInject: {},\n destroyed: false,\n isShow: true,\n unique: 1,\n renderRule: [...rule.value || []],\n updateValue: JSON.stringify(modelValue.value || {}),\n });\n\n const fc = new FormCreate(vm);\n const fapi = fc.api();\n\n const isMore = inFor.value;\n\n const addSubForm = () => {\n if (parent) {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n let sub;\n if (isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n if (isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n let styleEl = null;\n\n onBeforeMount(() => {\n watchEffect(() => {\n let content = '';\n const globalClass = (props.option && props.option.globalClass) || {};\n Object.keys(globalClass).forEach(k => {\n let subCss = '';\n globalClass[k].style && Object.keys(globalClass[k].style).forEach(key => {\n subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';\n });\n if (globalClass[k].content) {\n subCss += globalClass[k].content + ';';\n }\n if (subCss) {\n content += `.${k}{${subCss}}`;\n }\n });\n if (props.option && props.option.style) {\n content += props.option.style;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.type = 'text/css';\n document.head.appendChild(styleEl);\n }\n styleEl.innerHTML = content || '';\n })\n });\n\n const emit$topForm = debounce(() => {\n fc.bus.$emit('$loadData.$topForm');\n }, 100);\n\n const emit$scopeForm = debounce(function () {\n fc.bus.$emit('$loadData.$scopeForm');\n }, 100);\n\n const emit$form = debounce(() => {\n fc.bus.$emit('$loadData.$form');\n }, 100);\n\n const emit$change = (field) => {\n fc.bus.$emit('change-$form.' + field);\n };\n\n onMounted(() => {\n if (parent) {\n fapi.top.bus.$on('$loadData.$form', emit$topForm);\n fapi.top.bus.$on('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);\n }\n fc.mounted();\n });\n\n onBeforeUnmount(() => {\n if (parent) {\n fapi.top.bus.$off('$loadData.$form', emit$topForm);\n fapi.top.bus.$off('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);\n }\n rmSubForm();\n data.destroyed = true;\n fc.unmount();\n styleEl && (styleEl.parentNode || styleEl.parentElement) && document.head.removeChild(styleEl);\n })\n\n onUpdated(() => {\n fc.updated();\n });\n\n addSubForm();\n\n watch(() => props.option, () => {\n fc.initOptions();\n fapi.refresh();\n }, {deep: true, flush: 'sync'});\n\n watch(() => [...rule.value], (n) => {\n if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(v => data.renderRule.indexOf(v) > -1)) return;\n fc.$handle.updateAppendData();\n fc.$handle.reloadRule(rule.value);\n vm.setupState.renderRule();\n })\n\n watch(() => [props.disabled, props.preview], () => {\n fapi.refresh();\n });\n\n watch(modelValue, (n) => {\n if (toJson(n || {}) === data.updateValue) return;\n if (fapi.config.forceCoverValue) {\n fapi.coverValue(n || {});\n } else {\n fapi.setValue(n || {});\n }\n }, {deep: true, flush: 'post'});\n\n watch(() => props.index, () => {\n fapi.coverValue({});\n fc.$handle.updateAppendData();\n nextTick(() => {\n nextTick(() => {\n fapi.clearValidateState();\n });\n });\n }, {flush: 'sync'});\n\n return {\n fc: markRaw(fc),\n parent: parent ? markRaw(parent) : parent,\n top: markRaw(top),\n fapi: markRaw(fapi),\n ...toRefs(data),\n getGroupInject: () => getGroupInject(vm, parent),\n refresh() {\n ++data.unique;\n },\n renderRule() {\n data.renderRule = [...rule.value || []];\n },\n updateValue(value) {\n if (data.destroyed) return;\n const json = toJson(value);\n if (data.updateValue === json) {\n return;\n }\n data.updateValue = json;\n vm.emit('update:modelValue', value);\n nextTick(() => {\n emit$form();\n if (!parent) {\n emit$topForm();\n emit$scopeForm();\n } else if (!subForm.value) {\n emit$scopeForm();\n }\n });\n }\n }\n },\n created() {\n const vm = getCurrentInstance();\n vm.emit('update:api', vm.setupState.fapi);\n vm.setupState.fc.init();\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n modelField(field) {\n this._data.modelField = field;\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n factory: creatorFactory\n };\n}\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nimport is from '@form-create/utils/lib/type';\nimport {parseFn} from '@form-create/utils/lib/json';\nimport {deepGet} from './util';\nimport {toPromise} from '@form-create/utils';\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n let action = option.action || '';\n\n if (xhr.upload && option.onProgress) {\n xhr.upload.addEventListener('progress', (evt) => {\n evt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n option.onProgress(evt)\n })\n }\n\n if (option.query) {\n const query = is.String(option.query) ? option.query : Object.keys(option.query).reduce((acc, key) => {\n acc[key] = (option.query[key] === null || option.query[key] === undefined) ? '' : option.query[key];\n return acc;\n }, {});\n const queryString = new URLSearchParams(query).toString();\n if (queryString) {\n if (action.includes('?')) {\n action += `&${queryString}`;\n } else {\n action += `?${queryString}`;\n }\n }\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data || option.file) {\n if (option.file || (option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data || {}).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data || {});\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n if(option.file){\n formData.append(option.filename, option.file, option.file.name)\n }\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] != null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n\n\nexport function asyncFetch(config, _fetch, api) {\n return new Promise((resolve, reject) => {\n (_fetch || fetch)({\n ...config,\n onSuccess(res) {\n let fn = (v) => v;\n const parse = parseFn(config.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(res, config.targetRule, api)).then(res => {\n resolve(res);\n });\n },\n onError(err) {\n reject(err);\n }\n })\n });\n}","import {byCtx, invoke, mergeRule, parseFn, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\nimport {asyncFetch} from './fetch';\nimport {nextTick} from 'vue';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n if (is.Undef(fields)) {\n fields = Object.keys({...h.fieldCtx, ...h.nameCtx});\n } else if (!Array.isArray(fields)) {\n fields = [fields];\n }\n fields.forEach(field => {\n const ctxs = h.fieldCtx[field] || h.nameCtx[field];\n ctxs && ctxs.forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get isScope() {\n return h.vm.props.subForm === false;\n },\n get isPreview() {\n return h.preview;\n },\n get config() {\n return h.options\n },\n set config(val) {\n h.fc.options.value = val;\n },\n get options() {\n return h.options\n },\n set options(val) {\n h.fc.options.value = val;\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.setupState.parent && h.vm.setupState.parent.setupState.fapi\n },\n get top() {\n if (api.parent) {\n return api.parent.top;\n }\n return api;\n },\n get scope() {\n let parent = h.vm;\n while (parent && parent.setupState.fapi) {\n if (!parent.props.subForm) {\n return parent.setupState.fapi;\n } else {\n parent = parent.setupState.parent;\n }\n }\n return api.top;\n },\n get children() {\n return allSubForm();\n },\n get siblings() {\n const inject = h.vm.setupState.getGroupInject();\n if (inject) {\n const subForm = inject.getSubForm();\n if (Array.isArray(subForm)) {\n return [...subForm];\n }\n }\n return undefined;\n },\n get index() {\n const siblings = api.siblings;\n if (siblings) {\n const idx = siblings.indexOf(api);\n return idx > -1 ? idx : undefined;\n }\n return undefined;\n },\n get formulas() {\n return {...h.fc.formulas};\n },\n formData(fields) {\n if (fields == null || typeof fields === 'boolean') {\n const data = {};\n Object.keys(h.form).forEach(k => {\n if (fields === true || h.ignoreFields.indexOf(k) === -1) {\n data[k] = copy(h.form[k]);\n }\n });\n return data;\n } else {\n return tidyFields(fields).reduce((initial, id) => {\n initial[id] = api.getValue(id);\n return initial;\n }, {});\n }\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) {\n if (h.options.appendValue !== false && hasProperty(h.appendData, field)) {\n return copy(h.appendData[field]);\n }\n return undefined;\n }\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n h.appendData = {};\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n }, true)\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n }, true)\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n h.vm.setupState.isShow = !hide;\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n findType(type, origin) {\n let rule = undefined;\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rule = origin ? ctx.origin : ctx.rule;\n }\n });\n return rule;\n },\n findTypes(type, origin) {\n let rules = [];\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rules.push(origin ? ctx.origin : ctx.rule);\n }\n });\n return rules;\n },\n getRenderRule: (id) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return ctx.prop;\n }\n },\n getRefRule: (id) => {\n const ctxs = h.getCtxs(id);\n if (ctxs) {\n const rules = ctxs.map(ctx => {\n return ctx.rule;\n })\n return rules.length === 1 ? rules[0] : rules;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n ctx.rule.effect = {};\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n api.clearValidateState(fields);\n });\n });\n });\n if (fields == null) {\n is.Function(h.options.onReset) && invoke(() => h.options.onReset(api));\n h.vm.emit('reset', api);\n }\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name} 方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.refs[ctx.ref];\n },\n closeModal: (id) => {\n h.bus.$emit('fc:closeModal:' + id);\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n getChildrenRuleList(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n const rule = ctx ? ctx.rule : (flag ? id : api.getRule(id));\n if (!rule) {\n return [];\n }\n const rules = [];\n const findRules = children => {\n children && children.forEach(item => {\n if (typeof item !== 'object') {\n return;\n }\n if (item.field) {\n rules.push(item);\n }\n rules.push(...api.getChildrenRuleList(item));\n });\n }\n findRules(ctx ? ctx.loadChildrenPending() : rule.children);\n return rules;\n },\n getParentRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx.parent.rule;\n },\n getParentSubRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n if (ctx) {\n const group = ctx.getParentGroup();\n if (group) {\n return group.rule;\n }\n }\n },\n getChildrenFormData(id, flag) {\n const rules = api.getChildrenRuleList(id);\n return rules.reduce((formData, rule) => {\n if (rule.ignore !== true || flag === true) {\n formData[rule.field] = copy(rule.value);\n }\n return formData;\n }, {});\n },\n setChildrenFormData(id, formData, cover) {\n const rules = api.getChildrenRuleList(id);\n h.deferSyncValue(() => {\n rules.forEach(rule => {\n if (hasProperty(formData, rule.field)) {\n rule.value = formData[rule.field];\n } else if (cover) {\n rule.value = undefined;\n }\n });\n });\n },\n getGlobalEvent(name) {\n let event = api.options.globalEvent[name];\n if (event) {\n if (typeof event === 'object') {\n event = event.handle;\n }\n return parseFn(event);\n }\n return undefined;\n },\n getGlobalData(name) {\n return new Promise((resolve, inject) => {\n let config = api.options.globalData[name];\n if (!config) {\n resolve(h.fc.loadData[name]);\n } else if (config.type === 'fetch') {\n api.fetch(config).then(res => {\n resolve(res);\n }).catch(inject);\n } else {\n resolve(config.data);\n }\n });\n },\n emitGlobalEvent(name, ...args) {\n const fn = api.getGlobalEvent(name);\n if(fn) {\n const data = h.getInjectData({}, undefined);\n data.args = [...args];\n args.unshift(data);\n return fn.apply(null, args);\n }\n },\n setGlobalData(name, value) {\n api.setData('$globalData.' + name, value);\n },\n setGlobalVar(name, value) {\n api.setData('$var.' + name, value);\n },\n renderRule(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createRuleVnode(ctx, onInput, force) : undefined;\n },\n renderChildren(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createChildrenVnodes(ctx, onInput, force) : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n deferSyncValue(fn, sync) {\n h.deferSyncValue(fn, sync);\n },\n emit(name, ...args) {\n if (h.vm.emitsOptions && !h.vm.emitsOptions[name]) {\n h.vm.emitsOptions[name] = null;\n }\n h.vm.emit(name, ...args);\n },\n bus: h.bus,\n getCurrentFormRule() {\n return h.vm.setupState.getGroupInject()?.rule;\n },\n fetch(opt) {\n return new Promise((resolve, reject) => {\n opt = deepCopy(opt);\n opt = h.loadFetchVar(opt);\n const fail = (e) => {\n invoke(() => opt.onError && opt.onError(e));\n reject(e);\n }\n h.beforeFetch(opt).then(() => {\n return asyncFetch(opt, h.fc.create.fetch, api).then((res) => {\n invoke(() => opt.onSuccess && opt.onSuccess(res));\n resolve(res);\n }).catch((e) => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n });\n },\n watchFetch(opt, callback, error, beforeFetch) {\n return h.fc.watchLoadData((get, change) => {\n let _opt = deepCopy(opt);\n _opt = h.loadFetchVar(_opt, get);\n if (beforeFetch && beforeFetch(_opt, change) === false) {\n return;\n }\n const fail = (e) => {\n invoke(() => _opt.onError && _opt.onError(e));\n error && error(e);\n }\n h.beforeFetch(_opt).then(() => {\n return asyncFetch(_opt, h.fc.create.fetch, api).then(res => {\n invoke(() => _opt.onSuccess && _opt.onSuccess(res));\n callback && callback(res, change);\n }).catch(e => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n }, opt.wait == null ? 1000 : opt.wait);\n },\n getData(id, def) {\n if (h.fc.get) {\n return h.fc.get(id, def);\n } else {\n return h.fc.getLoadData(id, def);\n }\n },\n watchData(fn) {\n return h.fc.watchLoadData((get, change) => {\n invoke(() => fn(get, change));\n })\n },\n setData(id, data, isGlobal) {\n return h.fc.setData(id, data, isGlobal);\n },\n refreshData(id) {\n return h.fc.refreshData(id);\n },\n t(id, params) {\n return h.fc.t(id, params);\n },\n getLocale() {\n return h.fc.getLocale();\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off'].forEach(n => {\n api[n] = function (...args) {\n h.bus[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nlet id = 1;\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle),\n force: false,\n tmpInput: null,\n id: id++\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (ctx.rule.cache) {\n return;\n }\n if (!this.cache[ctx.id]) {\n if (ctx.parent) {\n this.clearCache(ctx.parent);\n }\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n if (this.cache[ctx.id].parent) {\n this.clearCache(this.cache[ctx.id].parent);\n }\n this.cache[ctx.id] = null;\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend, {copy} from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, makeSlotBag, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {deepSet, toLine} from '@form-create/utils';\nimport {computed, nextTick} from 'vue';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.cacheConfig = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.slots['field-' + toLine(ctx.rule.field)] || vm.slots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.slots['type-' + toLine(ctx.type)] || vm.slots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n }\n return _fn(this.vm);\n },\n render() {\n // console.warn('renderrrrr', this.id);\n if (!this.vm.setupState.isShow) {\n return;\n }\n this.$manager.beforeRender();\n const slotBag = makeSlotBag();\n this.sort.forEach((k) => {\n this.renderSlot(slotBag, this.$handle.ctxs[k]);\n });\n\n return this.$manager.render(slotBag);\n },\n renderSlot(slotBag, ctx, parent) {\n if (this.isFragment(ctx)) {\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n const slots = this.renderChildren(ctx.loadChildrenPending(), ctx);\n const def = slots.default;\n def && slotBag.setSlot(ctx.rule.slot, () => def());\n delete slots.default;\n slotBag.mergeBag(slots);\n } else {\n slotBag.setSlot(ctx.rule.slot, this.renderCtx(ctx, parent));\n }\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n if (!this.cacheConfig[ctx.trueType]) {\n this.cacheConfig[ctx.trueType] = computed(() => {\n const g = this.$handle.options.global;\n return mergeRule({}, [g['*'] || g.default || {}, g[ctx.originType] || g[ctx.type] || g[ctx.type] || {}]);\n });\n }\n ctx.prop = mergeRule({}, [this.cacheConfig[ctx.trueType].value, ctx.prop]);\n },\n setOptions(ctx) {\n const opt = ctx.loadPending({key: 'options', origin: ctx.prop.options, def: []});\n ctx.prop.options = opt;\n if (ctx.prop.optionsTo && opt) {\n deepSet(ctx.prop, ctx.prop.optionsTo, opt);\n }\n },\n deepSet(ctx) {\n const deep = ctx.prop.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n try {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if (this.force || (!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(prop.preview != null ? prop.preview : this.$handle.preview);\n prop.props.formCreateInject = this.injectProp(ctx);\n let cacheFlag = prop.cache !== false;\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n vn = (...slotValue) => {\n const inject = {\n rule,\n prop,\n preview,\n api: this.$handle.api,\n model: prop.model || {},\n slotValue\n }\n if (slotValue.length && rule.slotUpdate) {\n invoke(() => rule.slotUpdate(inject))\n }\n let children = {};\n const _load = ctx.loadChildrenPending();\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(_load, ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(_load, ctx);\n }\n Object.keys(prop.renderSlots || {}).forEach(key => {\n children[key] = (...args) => {\n if (is.Function(prop.renderSlots[key])) {\n return invoke(() => prop.renderSlots[key](...args));\n }\n const rule = this.parseSide(prop.renderSlots[key], ctx);\n return this.renderRule(rule);\n }\n })\n const slot = this.getTypeSlot(ctx);\n let _vn;\n if (slot) {\n inject.children = children;\n _vn = slot(inject)\n } else {\n _vn = preview ? ctx.parser.preview(copy(children), ctx) : ctx.parser.render(copy(children), ctx);\n }\n _vn = this.renderSides(_vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n this.fc.targetFormDriver('updateWrap', ctx)\n _vn = this.$manager.makeWrap(ctx, _vn);\n }\n if (ctx.none) {\n if (Array.isArray(_vn)) {\n _vn = _vn.map(v => {\n if (!v || !v.__v_isVNode) {\n return v;\n }\n return this.none(v);\n });\n } else {\n _vn = this.none(_vn);\n }\n }\n cacheFlag && this.setCache(ctx, () => {\n return this.stable(_vn);\n }, parent);\n return _vn\n };\n this.setCache(ctx, vn, parent);\n }\n return (...args) => {\n const cache = this.getCache(ctx);\n if (cache) {\n return cache(...args);\n } else if (this.cache[ctx.id]) {\n return;\n }\n const _vn = this.renderCtx(ctx, ctx.parent);\n if (_vn) {\n return _vn();\n }\n };\n } catch (e) {\n console.error(e);\n return;\n }\n },\n none(vn) {\n if (vn) {\n vn.props.class = this.mergeClass(vn.props.class, 'fc-none')\n return vn;\n }\n },\n mergeClass(target, value) {\n if (Array.isArray(target)) {\n target.push(value);\n } else {\n return target ? [target, value] : value;\n }\n return target;\n },\n stable(vn) {\n const list = Array.isArray(vn) ? vn : [vn];\n list.forEach(v => {\n if (v && v.__v_isVNode && v.children && typeof v.children === 'object') {\n v.children.$stable = true;\n this.stable(v.children);\n }\n });\n return vn;\n },\n getModelField(ctx) {\n return ctx.prop.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';\n },\n isFragment(ctx) {\n return ctx.type === 'fragment' || ctx.type === 'template';\n },\n injectProp(ctx) {\n const state = this.vm.setupState;\n if (!state.ctxInject[ctx.id]) {\n state.ctxInject[ctx.id] = {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n slots: () => {\n return this.vm.setupState.top.slots;\n },\n getWrap: () => {\n return this.vm.refs[ctx.wrapRef];\n },\n options: [],\n children: [],\n preview: false,\n id: ctx.id,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n t: (...args) => {\n return this.$handle.api.t(...args);\n },\n updateValue: (data) => {\n this.$handle.onUpdateValue(ctx, data);\n }\n }\n }\n const inject = state.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.loadChildrenPending()\n });\n return inject;\n },\n ctxProp(ctx) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx);\n ctx.parser.mergeProp(ctx);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n vnodeMounted: (vn) => {\n vn.el.__rule__ = ctx.rule;\n this.onMounted(ctx, vn.el);\n },\n 'fc.updateValue': (data) => {\n this.$handle.onUpdateValue(ctx, data);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n }\n }\n ]\n\n if (ctx.input) {\n const tmpInput = this.tmpInput;\n if (this.vm.props.disabled === true) {\n ctx.prop.props.disabled = true;\n }\n const field = this.getModelField(ctx);\n const model = {\n callback: (value) => {\n tmpInput && tmpInput(ctx.field, value, ctx.rule);\n this.onInput(ctx, value);\n },\n modelField: field,\n value: this.$handle.getFormData(ctx)\n };\n props.push({\n on: {\n [`update:${field}`]: model.callback,\n ...(ctx.prop.modelEmit ? {\n [ctx.prop.modelEmit]: () => this.onEmitInput(ctx)\n } : {}),\n },\n props: {\n [field]: model.value\n }\n })\n ctx.prop.model = model;\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx, el) {\n ctx.el = this.vm.refs[ctx.ref] || el;\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n this.$handle.targetHook(ctx, 'mounted');\n },\n onInput(ctx, value) {\n if (ctx.prop.modelEmit) {\n this.$handle.onBaseInput(ctx, value);\n return;\n }\n this.$handle.onInput(ctx, value);\n },\n onEmitInput(ctx) {\n this.$handle.setValue(ctx, ctx.parser.toValue(ctx.modelValue, ctx), ctx.modelValue);\n },\n renderChildren(children, ctx) {\n if (!is.trueArray(children)) return {};\n const slotBag = makeSlotBag()\n children.map(child => {\n if (!child) return;\n if (is.String(child) || is.Number(child)) return slotBag.setSlot(null, `${child}`);\n if (child.__fc__) {\n return this.renderSlot(slotBag, child.__fc__, ctx);\n }\n if (child.type) {\n nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n return slotBag.getSlots();\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (prop.component) {\n if (typeof prop.component === 'string') {\n return this.vNode.make(prop.component, prop, children);\n } else {\n return this.vNode.makeComponent(prop.component, prop, children);\n }\n }\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(prop.type), prop, children);\n },\n createChildrenVnodes(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const res = this.renderChildren(ctx.rule.children, ctx);\n this.force = false;\n this.tmpInput = null;\n return res;\n },\n createRuleVnode(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const slotBag = makeSlotBag();\n this.renderSlot(slotBag, ctx, ctx.parent);\n this.force = false;\n this.tmpInput = null;\n return slotBag.getSlots();\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule) || is.Number(rule)) return `${rule}`;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n\n const slotBag = makeSlotBag();\n if (is.trueArray(rule.children)) {\n rule.children.forEach(v => {\n v && slotBag.setSlot(v?.slot, () => this.renderRule(v));\n });\n }\n const props = {...rule};\n delete props.type;\n delete props.is;\n return this.vNode.make(type, props, slotBag.mergeBag(children).getSlots());\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.bus.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.bus.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, invoke, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport {markRaw, reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n if(ctx.rule !== ctx.origin) {\n Object.defineProperties(ctx.rule, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n }\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n const isInput = !!rule.field;\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n pending: {},\n none: false,\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n children: [],\n parent: null,\n group: rule.subRule ? this : null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n refRule: {},\n input: isInput,\n el: undefined,\n exportEl: undefined,\n defaultValue: isInput ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined\n })\n\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n getParentGroup() {\n let ctx = this.parent;\n while (ctx) {\n if (ctx.group) {\n return ctx;\n }\n ctx = ctx.parent;\n }\n },\n loadChildrenPending() {\n const children = this.rule.children || [];\n if (Array.isArray(children))\n return children;\n return this.loadPending({\n key: 'children', origin: children, def: [],\n onLoad: (data) => {\n this.$handle && this.$handle.loadChildren(data, this);\n }, onUpdate: (value, oldValue) => {\n if (this.$handle) {\n value === oldValue ? this.$handle.loadChildren(value, this) : this.$handle.updateChildren(this, value, oldValue);\n }\n }, onReload: (value) => {\n if (this.$handle) {\n this.$handle.updateChildren(this, [], value);\n } else {\n delete this.pending.children;\n }\n }\n });\n },\n loadPending(config) {\n const {key, origin, def, onLoad, onReload, onUpdate} = config;\n\n if (this.pending[key] && this.pending[key].origin === origin) {\n return this.getPending(key, def);\n }\n\n delete this.pending[key];\n\n let value = origin;\n if (is.Function(origin)) {\n let source = invoke(() => origin({\n rule: this.rule, api: this.$api, update: (data) => {\n const value = data || def;\n const oldValue = this.getPending(key, def);\n this.setPending(key, origin, value);\n onUpdate && onUpdate(value, oldValue);\n }, reload: () => {\n const oldValue = this.getPending(key, def);\n delete this.pending[key];\n onReload && onReload(oldValue);\n this.$api && this.$api.sync(this.rule);\n }\n }));\n if (source && is.Function(source.then)) {\n source.then((data) => {\n const value = data || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n this.$api && this.$api.sync(this.rule);\n }).catch(e => {\n console.error(e);\n })\n value = def;\n this.setPending(key, origin, value);\n } else {\n value = source || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n }\n }\n return value;\n },\n getPending(key, def) {\n return (this.pending[key] && this.pending[key].value) || def;\n },\n setPending(key, origin, value) {\n this.pending[key] = {\n origin,\n value: reactive(value)\n };\n },\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n this.trueType = this.$handle.getType(this.originType);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n delete rule.validate;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n this.prop.validate = [...this.refRule?.__$validate?.value || [], ...this.prop.validate || []]\n },\n initNone() {\n this.none = !(is.Undef(this.prop.display) || !!this.prop.display)\n },\n hasHidden() {\n return (!!this.rule.hidden) || (this.parent ? this.parent.hasHidden() : false);\n },\n injectValidate() {\n return this.prop.validate;\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n Object.keys(this.refRule).forEach(key => {\n if (key.indexOf('__$') !== 0) {\n delete this.refRule[key];\n }\n })\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);\n }\n extend(this, {\n deleted: true,\n computed: {},\n parent: null,\n children: [],\n cacheConfig: null,\n none: false,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n this.updateType();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, condition, copyRule, enumerable, getRule, invoke, parseFn, parseJson, toJson} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {nextTick} from 'vue';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[(typeof prop === 'object' && prop.event) || `update:${prop}`] = (val) => {\n rule.props[(typeof prop === 'object' && prop.prop) || prop] = val;\n this.vm.emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n this.syncForm();\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm.setupState.renderRule();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.syncForm();\n this.bus.$emit('load-end');\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n const ctxs = rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.loadChildrenPending(), _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.fc.targetFormDriver('loadRule', {rule, api: this.api}, this.fc);\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n if (ctx.deleted) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n } else {\n if (!ctx.check(this)) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : parseJson(toJson(_rule));\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, defaultValue);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n }\n this.bindParser(ctx);\n this.appendValue(ctx.rule);\n if (ctx.parent && ctx.parent !== parent) {\n this.rmSubRuleData(ctx);\n }\n }\n this.parseEmit(ctx);\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n if (!isCopy && !isInit) {\n this.effect(ctx, 'load');\n this.targetHook(ctx, 'load');\n }\n\n this.effect(ctx, 'created');\n\n const _load = ctx.loadChildrenPending()\n ctx.parser.loadChildren === false || loadChildren(_load, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n // if (ctx.input)\n // Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n }).filter(v => !!v);\n if (parent) {\n parent.children = ctxs;\n }\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || function (val) {\n return ((condition[control.condition || '=='] || condition['=='])(val, control.value));\n };\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : (ctrl && ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl) >>> 0, 1));\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled' || method === 'enabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display' || method === 'show') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if (!valid) {\n this.api.clearValidateState(rule);\n }\n } else if (method === 'if') {\n this.api.hidden(!valid, rule);\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n if (hideLst.length) {\n if (this.loading) {\n hideLst.length && this.bus.$once('load-end', () => {\n hideLst.forEach(v => v());\n });\n } else {\n hideLst.length && nextTick(() => {\n hideLst.forEach(v => v());\n });\n }\n }\n this.vm.emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.bus.$emit('reloading', this.api);\n });\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.bus.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm.setupState.refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport {nextTick, reactive, toRef} from 'vue';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.rule.value = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n this.targetHook(ctx, 'value', {value});\n this.emitEvent('change', ctx.field, value, {\n rule: ctx.origin,\n api: this.api,\n setFlag: setFlag || false\n })\n if (setFlag) {\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n this.api.clearValidateState(ctx.id);\n });\n });\n });\n }\n this.$manager.fieldChange(ctx, value, formValue, setFlag);\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, value))) {\n this.setValue(ctx, val, value);\n }\n },\n onUpdateValue(ctx, data) {\n this.deferSyncValue(() => {\n const group = ctx.getParentGroup();\n const subForm = group ? this.subRuleData[group.id] : null;\n const subData = {};\n Object.keys(data || {}).forEach(k => {\n if (subForm && hasProperty(subForm, k)) {\n subData[k] = data[k];\n } else if (hasProperty(this.api.form, k)) {\n this.api.form[k] = data[k];\n } else if (this.api.top !== this.api && hasProperty(this.api.top.form, k)) {\n this.api.top.form[k] = data[k];\n }\n });\n if (Object.keys(subData).length) {\n this.api.setChildrenFormData(group.rule, subData);\n }\n })\n },\n onBaseInput(ctx, value) {\n this.setFormData(ctx, value);\n ctx.modelValue = value;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n },\n setFormData(ctx, value) {\n ctx.modelValue = value;\n const group = ctx.getParentGroup();\n if (group) {\n if (!this.subRuleData[group.id]) {\n this.subRuleData[group.id] = {};\n }\n this.subRuleData[group.id][ctx.field] = ctx.rule.value;\n }\n $set(this.formData, ctx.id, value);\n },\n rmSubRuleData(ctx) {\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n delete this.subRuleData[group.id][ctx.field];\n }\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n syncForm() {\n const data = reactive({});\n const fields = this.fields();\n const ignoreFields = [];\n if (this.options.appendValue !== false) {\n Object.keys(this.appendData).reduce((initial, field) => {\n if (fields.indexOf(field) === -1) {\n initial[field] = toRef(this.appendData, field);\n }\n return initial;\n }, data);\n }\n fields.reduce((initial, field) => {\n let ctx = (this.fieldCtx[field] || []).filter(ctx => !this.isIgnore(ctx))[0];\n if (!ctx) {\n ctx = this.fieldCtx[field][0];\n ignoreFields.push(field);\n }\n initial[field] = toRef(ctx.rule, 'value');\n return initial;\n }, data);\n this.form = data;\n this.ignoreFields = ignoreFields;\n this.syncValue();\n },\n isIgnore(ctx) {\n return ctx.rule.ignore === true || ((ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields) && ctx.hasHidden());\n },\n appendValue(rule) {\n if ((!rule.field || !hasProperty(this.appendData, rule.field)) && (!is.Undef(rule.value) || !this.options.forceCoverValue)) {\n return;\n }\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncForm();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n const data = {};\n Object.keys(this.form).forEach(k => {\n if (this.ignoreFields.indexOf(k) === -1) {\n data[k] = this.form[k];\n }\n });\n this.vm.setupState.updateValue(data);\n },\n isChange(ctx, value) {\n return JSON.stringify(this.getFormData(ctx), strFn) !== JSON.stringify(value, strFn);\n },\n isQuote(ctx, value) {\n return (value instanceof Function || is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin, field) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {\n origin: origin || 'change',\n linkField: field\n }));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin, field) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.bus.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin, field);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link', field);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultRender){\n return ctx.$handle.fc.renderDriver.defaultRender(ctx, children);\n }\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultPreview){\n return ctx.$handle.fc.renderDriver.defaultPreview(ctx, children);\n }\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {condition, deepGet, invoke, convertFieldToConditions} from '../frame/util';\nimport {computed, nextTick, toRef, watch} from 'vue';\nimport {attrs} from '../frame/attrs';\nimport {deepSet} from '@form-create/utils';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'slotUpdate', 'computed', 'component', 'cache'];\nconst oldValueTag = Symbol('oldValue');\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.emit('change', ctx.field, rule.value, ctx.origin, this.api, false, true);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n const renderDriver = this.fc.renderDriver;\n if (renderDriver) {\n const parsers = renderDriver.parsers || {};\n const parser = parsers[ctx.originType] || parsers[toCase(ctx.type)] || parsers[ctx.trueType];\n if (parser) {\n return parser;\n }\n }\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const all = attrs();\n all.filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const ref = toRef(ctx.rule, key);\n const flag = key === 'children';\n ctx.refRule[key] = ref;\n ctx.watch.push(watch(flag ? () => is.Function(ref.value) ? ref.value : [...(ref.value || [])] : () => ref.value, (_, o) => {\n let n = ref.value;\n if (this.isBreakWatch()) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n nextTick(() => {\n this.targetHook(ctx, 'watch', {key, oldValue: o, newValue: n});\n });\n if (key === 'hidden' && Boolean(n) !== Boolean(o)) {\n this.$render.clearCacheAll();\n nextTick(() => {\n this.targetHook(ctx, 'hidden', {value: n});\n });\n }\n if ((key === 'ignore' && ctx.input) || (key === 'hidden' && (ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields))) {\n this.syncForm();\n } else if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (key === 'emit') {\n this.parseEmit(ctx);\n } else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (flag) {\n if (is.Function(o)) {\n o = ctx.getPending('children', []);\n }\n if (is.Function(n)) {\n n = ctx.loadChildrenPending();\n }\n this.updateChildren(ctx, n, o);\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n ctx.refRule['__$title'] = computed(() => {\n let title = (typeof ctx.rule.title === 'object' ? ctx.rule.title.title : ctx.rule.title) || '';\n if (title) {\n const match = title.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n title = this.api.t(match[1]);\n }\n }\n return title;\n });\n ctx.refRule['__$info'] = computed(() => {\n let info = (typeof ctx.rule.info === 'object' ? ctx.rule.info.info : ctx.rule.info) || '';\n if (info) {\n const match = info.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n info = this.api.t(match[1]);\n }\n }\n return info;\n });\n ctx.refRule['__$validate'] = computed(() => {\n const t = (msg) => {\n const match = msg.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n return this.api.t(match[1], {title: ctx.refRule?.__$title?.value});\n }\n return msg;\n }\n return toArray(ctx.rule.validate).map(item => {\n const temp = {...item};\n if (temp.message) {\n temp.message = t(temp.message);\n }\n if (is.Function(temp.validator)) {\n const that = ctx;\n temp.validator = function (...args) {\n return item.validator.call({\n that: this,\n id: that.id,\n field: that.field,\n rule: that.rule,\n api: that.$handle.api,\n }, ...args)\n }\n }\n if (temp.adapter) {\n if (typeof temp.error === 'object') {\n const msg = {...temp.error};\n Object.keys(msg).forEach((key) => {\n msg[key] = t(msg[key]);\n })\n temp.error = msg;\n }\n return this.adapterValidate(temp, ctx);\n }\n return temp;\n });\n });\n if (ctx.input) {\n const val = toRef(ctx.rule, 'value');\n ctx.watch.push(watch(() => val.value, () => {\n let formValue = ctx.parser.toFormValue(val.value, ctx);\n if (this.isChange(ctx, formValue)) {\n this.setValue(ctx, val.value, formValue, true);\n }\n }));\n }\n this.bus.$once('load-end', () => {\n let computedRule = ctx.rule.computed;\n if (!computedRule) {\n return;\n }\n if (typeof computedRule !== 'object') {\n computedRule = {value: computedRule}\n }\n Object.keys(computedRule).forEach(k => {\n const computedValue = computed(() => {\n const item = computedRule[k];\n if (!item) return undefined;\n const value = this.compute(ctx, item);\n if ((item.linkage || item.linkageVariable) && value === oldValueTag) {\n return oldValueTag;\n }\n return value;\n });\n const callback = (n) => {\n if (k === 'value') {\n this.onInput(ctx, n);\n } else if (k[0] === '$') {\n this.api.setEffect(ctx.id, k, n);\n } else {\n deepSet(ctx.rule, k, n);\n }\n };\n if (k === 'value' ? [undefined, null, ''].indexOf(ctx.rule.value) > -1 : computedValue.value !== deepGet(ctx.rule, k)) {\n callback(computedValue.value);\n }\n ctx.watch.push(watch(computedValue, (n) => {\n if(n === oldValueTag) {\n return ;\n }\n setTimeout(() => {\n callback(n);\n });\n }, {deep: true}));\n });\n\n });\n this.watchEffect(ctx);\n },\n adapterValidate(validate, ctx) {\n const validator = (value, callback) => {\n const before = validate.beforeValidate && invoke(() => validate.beforeValidate({\n value,\n api: this.api,\n validate,\n rule: ctx.rule\n }));\n if (before === false) {\n callback();\n } else {\n const key = this.validator(ctx, value, validate);\n if (!key) {\n if (validate.validator) {\n const res = validate.validator && invoke(() => validate.validator(value, callback));\n if (res && is.Function(res.then)) {\n res.then(() => callback()).catch((e) => callback(e));\n }\n } else {\n callback();\n }\n } else {\n let message = '';\n if (typeof validate.error === 'object') {\n message = validate.error[key] || validate.error.default;\n }\n if (!message && typeof validate.message === 'string') {\n message = validate.message;\n }\n if (!message) {\n message = this.getValidateMessage(ctx, {key, rule: validate[key]});\n }\n callback(message);\n }\n }\n }\n return this.$manager.adapterValidate({\n required: validate.required,\n message: validate.message,\n trigger: validate.trigger,\n }, validator);\n },\n getValidateMessage(ctx, invalid) {\n const formatRule = Array.isArray(invalid.rule) ? invalid.rule.join(',') : ('' + invalid.rule);\n return this.api.t(invalid.key === 'required' ? invalid.key : ('validate.' + invalid.key), {\n [invalid.key]: formatRule,\n title: ctx.refRule?.__$title?.value\n });\n },\n validator(ctx, value, validate) {\n const isEmpty = is.empty(value);\n if (isEmpty) {\n if (validate.required) {\n return 'required'\n }\n return;\n }\n for (const [key, rule] of Object.entries(validate)) {\n switch (key) {\n case 'len':\n case 'maxLen':\n case 'minLen':\n const check = (val) => {\n if (key === 'len') {\n return val === rule;\n } else if (key === 'maxLen') {\n return val <= rule;\n } else {\n return val >= rule;\n }\n }\n if (Array.isArray(value)) {\n if (!check(value.length)) {\n return key;\n }\n } else if (typeof value === 'object') {\n return key;\n } else if (!check(('' + value).length)) {\n return key;\n }\n break;\n case 'pattern':\n const reg = typeof rule === 'string' ? new RegExp(rule) : rule;\n if (!reg.test('' + value)) {\n return key;\n }\n break;\n case 'uppercase':\n if (rule && (typeof value !== 'string' || !/^[A-Z]*$/.test(value))) {\n return key;\n }\n break;\n case 'lowercase':\n if (rule && (typeof value !== 'string' || !/^[a-z]*$/.test(value))) {\n return key;\n }\n break;\n case 'min':\n case 'max':\n case 'positive':\n case 'negative':\n case 'integer':\n case 'number':\n const num = Number(value);\n if (Number.isNaN(num)) {\n return key;\n }\n if (key === 'min' && num < rule) {\n return key;\n }\n if (key === 'max' && num > rule) {\n return key;\n }\n if (key === 'positive' && num <= 0) {\n return key;\n }\n if (key === 'negative' && num >= 0) {\n return key;\n }\n if (key === 'integer' && !Number.isInteger(num)) {\n return key;\n }\n break;\n case 'equal':\n if (value !== rule) {\n return key;\n }\n break;\n case 'enum':\n if (Array.isArray(rule) && !rule.includes(value)) {\n return key;\n }\n break;\n case 'hasKeys':\n if (typeof value !== 'object' || Array.isArray(rule) && rule.some(key => !(key in value))) {\n return key;\n }\n break;\n case 'email':\n const regexEmail = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!regexEmail.test('' + value)) {\n return key;\n }\n break;\n case 'url':\n const regexUrl = new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i'\n );\n if (!regexUrl.test('' + value)) {\n return key;\n }\n break;\n case 'ip':\n const regexIp =\n /^(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}$/;\n if (!regexIp.test('' + value)) {\n return key;\n }\n break;\n case 'phone':\n const regexPhone = /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/;\n if (!regexPhone.test('' + value)) {\n return key;\n }\n break;\n case 'computed':\n if (!this.compute(ctx, rule)) {\n return key;\n }\n break;\n default:\n break;\n }\n }\n },\n compute(ctx, item) {\n let fn;\n if (typeof item === 'object') {\n const group = ctx.getParentGroup();\n const checkCondition = (item) => {\n item = Array.isArray(item) ? {mode: 'AND', group: item} : item;\n if (!is.trueArray(item.group)) {\n return true;\n }\n const or = item.mode === 'OR';\n let valid = true;\n for (let i = 0; i < item.group.length; i++) {\n const one = item.group[i];\n let flag;\n let field = null;\n let variableVal = null;\n if (one.variable) {\n variableVal = this.fc.getLoadData(one.variable);\n } else if (one.field) {\n field = convertFieldToConditions(one.field || '');\n } else if (!one.mode) {\n return true;\n }\n let compare = one.compare;\n if (compare) {\n compare = convertFieldToConditions(compare || '');\n }\n if (one.mode) {\n flag = checkCondition(one);\n } else if (!condition[one.condition]) {\n flag = false;\n } else if (is.Function(one.handler)) {\n flag = invoke(() => one.handler(this.api, ctx.rule));\n } else {\n flag = invoke(() => (new Function('$condition', '$variableVal', '$val', '$form', '$scope', '$group', '$rule', `with($form){with($scope){with(this){with($group){ return $condition['${one.condition}'](${one.variable ? '$variableVal' : field}, ${compare ? compare : '$val'}); }}}}`)).call(this.api.form, condition, variableVal, one.value, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule));\n }\n if (or && flag) {\n return true;\n }\n if (!or) {\n valid = valid && flag;\n }\n }\n return or ? false : valid;\n }\n let val = checkCondition(item);\n val = item.invert === true ? !val : val;\n if (item.linkage) {\n return val ? invoke(() => this.computeValue(item.linkage, ctx, group), undefined) : oldValueTag;\n } else if(item.linkageVariable) {\n return val ? invoke(() => this.fc.getLoadData(item.linkageVariable), undefined) : oldValueTag;\n }\n return val;\n } else if (is.Function(item)) {\n fn = () => item(this.api.form, this.api, ctx.rule);\n } else {\n const group = ctx.getParentGroup();\n fn = () => this.computeValue(item, ctx, group);\n }\n return invoke(fn, undefined);\n },\n computeValue(str, ctx, group) {\n const that = this;\n const formulas = Object.keys(this.fc.formulas).reduce((obj, k) => {\n obj[k] = function (...args) {\n return that.fc.formulas[k].call({\n that: this,\n rule: ctx.rule,\n api: that.api,\n fc: that.fc\n }, ...args);\n }\n return obj;\n }, {})\n return invoke(() => (new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', `with($form){with($scope){with(this){with($group){with($formulas){ return ${str} }}}}}`)).call(this.api.form, formulas, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule, this.api), undefined);\n },\n updateChildren(ctx, n, o) {\n this.deferSyncValue(() => {\n o && o.forEach((child) => {\n if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx) {\n this.rmCtx(child.__fc__);\n }\n });\n if (is.trueArray(n)) {\n this.loadChildren(n, ctx);\n this.bus.$emit('update', this.api);\n }\n });\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n\n $del(this.ctxs, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(this.vm.setupState.ctxInject, id);\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n $del(this.subRuleData[group.id], field);\n }\n if (ctx.group) {\n $del(this.subRuleData, id);\n }\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n const children = ctx.getPending('children', ctx.rule.children);\n if (is.trueArray(children)) {\n children.forEach(h => h && h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm.setupState.renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n this.targetHook(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.emit('remove-field', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.emit('remove-rule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy, invoke} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\nimport {reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\n\nexport default function Handler(fc) {\n funcProxy(this, {\n options() {\n return fc.options.value || {};\n },\n bus() {\n return fc.bus;\n },\n preview() {\n if (fc.vm.props.preview != null) {\n return fc.vm.props.preview;\n } else if (fc.vm.setupState.parent && fc.vm.setupState.parent.props.preview != null) {\n return fc.vm.setupState.parent.props.preview;\n }\n return fc.options.value.preview || false;\n }\n })\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: reactive({}),\n subRuleData: reactive({}),\n subForm: {},\n form: reactive({}),\n appendData: {},\n ignoreFields: [],\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApiFn.reduce((api, fn) => {\n const extendApi = invoke(() => fn(api, this));\n if (extendApi && extendApi !== api) {\n extend(api, extendApi);\n }\n return api;\n }, Api(this));\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.updateAppendData();\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.lifecycle('created');\n },\n updateAppendData() {\n this.appendData = {...deepCopy(this.options.formData || {}), ...(this.fc.vm.props.modelValue || {}), ...this.appendData};\n },\n isBreakWatch() {\n return this.loading || this.noWatchFn || this.reloading;\n },\n globalBeforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const source = this.options.beforeFetch && invoke(() => this.options.beforeFetch(opt, {api: this.api}));\n if (source && is.Function(source.then)) {\n source.then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n beforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const res = opt && opt.beforeFetch && invoke(() => opt.beforeFetch(opt, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n }).then(() => {\n return this.globalBeforeFetch(opt);\n });\n },\n beforeSubmit(formData) {\n return new Promise((resolve, reject) => {\n const res = this.options.beforeSubmit && invoke(() => this.options.beforeSubmit(formData, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n });\n }\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {deepGet, extractVar, invoke, parseFn, parseTemplateToTree} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule.emit || [];\n if (is.trueArray(emit)) {\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n let emitKey = emitPrefix || field || name;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n emitKey = eventName.prefix || emitKey;\n }\n if (emitKey) {\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n if (this.vm.emitsOptions && !this.vm.emitsOptions[fieldKey]) {\n this.vm.emitsOptions[fieldKey] = null;\n }\n this.vm.emit(fieldKey, ...arg);\n this.vm.emit('emit-event', fieldKey, ...arg);\n this.bus.$emit(fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[toCase(eventName)] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[toCase(eventName)] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n }\n\n });\n }\n ctx.computed.on = event;\n return event;\n },\n getInjectData(self, inject) {\n const $api = self.__fc__ && self.__fc__.$api;\n const vm = (self.__fc__ && self.__fc__.$handle.vm) || this.vm;\n const {option, rule} = vm.props;\n return {\n $f: $api || this.api,\n api: $api || this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n loadStrVar(str, get, group) {\n if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {\n const tmp = str;\n const vars = extractVar(str);\n\n const getValue = (field) => {\n let flag = false;\n let val;\n if (group && field.indexOf('$form.') === 0) {\n const _split = field.split('.');\n _split.shift();\n if (hasProperty(group.value, _split[0])) {\n flag = true;\n val = get ? get({\n id: '$form.' + _split[0] + '_' + group.rule.__fc__.id,\n getValue: () => {\n return deepGet(group.value, _split);\n }\n }) : deepGet(group.value, _split);\n }\n }\n if (!flag) {\n val = get ? get(field) : this.fc.getLoadData(field)\n }\n return val;\n }\n\n const treeToVal = (tree) => {\n const fields = [];\n tree.forEach(item => {\n if (item.key) {\n fields.push(item.key);\n } else if (item.children) {\n fields.push(treeToVal(item.children));\n }\n })\n let flag = false;\n fields.forEach((field, idx) => {\n if (field != null && (field.indexOf('\\'') === 0 || field.indexOf('\"') === 0)) {\n fields[idx] = field.slice(1, -1)\n flag = true;\n }\n })\n if (fields.length === 1 && (flag || !isNaN(Number(fields[0])))) {\n return fields[0];\n }\n return getValue(fields.join('.'));\n }\n\n let lastVal;\n vars.forEach(v => {\n const split = v.split('||');\n const field = split[0].trim();\n if (field) {\n const def = (split[1] || '').trim();\n const tree = parseTemplateToTree(field);\n let val = invoke(() => treeToVal(tree));\n if ((val == null || val === '') && split.length > 1) {\n val = def;\n }\n lastVal = val;\n str = str.replaceAll(`{{${v}}}`, val == null ? '' : val);\n }\n })\n if (vars.length === 1 && tmp === `{{${vars[0]}}}`) {\n return lastVal;\n }\n }\n return str;\n },\n loadFetchVar(options, get, rule) {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n const loadVal = str => {\n return this.loadStrVar(str, get, group ? {rule, value: (this.subRuleData[group.id] || {})} : null);\n }\n\n options.action = loadVal(options.action || '');\n\n ['headers', 'data', 'query'].forEach(key => {\n if (options[key]) {\n const data = Array.isArray(options[key]) ? [] : {};\n Object.keys(options[key]).forEach(k => {\n data[loadVal(k)] = loadVal(options[key][k]);\n });\n options[key] = data;\n }\n });\n\n return options;\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.setupState.unique > 0)\n return this.$render.render();\n else {\n this.vm.setupState.unique = 1;\n return [];\n }\n },\n });\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, parseFn} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\nimport {upper} from '@form-create/utils/lib/toline';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n this.fc.targetFormDriver(name, this.api, this.fc);\n this.vm.emit(name, this.api);\n this.emitEvent(name, this.api);\n },\n emitEvent(name, ...args) {\n const _fn = this.options[name] || this.options[toCase('on-' + name)];\n if (_fn) {\n const fn = parseFn(_fn);\n is.Function(fn) && invoke(() => fn(...args));\n }\n this.bus.$emit(name, ...args);\n },\n targetHook(ctx, name, args) {\n let hook = ctx.prop?.hook?.[name];\n\n let run = (on, p) => {\n if (on) {\n on = Array.isArray(on) ? on : [on];\n on.forEach(fn => {\n invoke(() => fn({args: Object.values(args || {}), ...args || {}, self: ctx.rule, rule: ctx.rule, parent: p?.rule, $f: this.api, api: this.api, option: this.vm.props.option}));\n });\n }\n }\n run(hook);\n let deepName = 'deep' + upper(name);\n let parent = ctx.parent;\n while (parent) {\n let deepHook = parent.prop?.hook?.[deepName];\n run(deepHook, parent);\n parent = parent.parent;\n }\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\nimport {watch} from 'vue';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop, k);\n this.providers[k] = prop;\n });\n },\n onEffect(provider, key) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${key || provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect).forEach(k => {\n ctx.watch.push(watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || ['fcFragment', 'fragment'].indexOf(type) > -1) return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","import {defineComponent} from 'vue';\n\nconst NAME = 'fcFragment';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: ['vnode'],\n render() {\n return this.vnode;\n }\n})\n","import toLine from '@form-create/utils/lib/toline';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport {toProps} from '../frame/util';\nimport {createVNode, getCurrentInstance, resolveComponent, resolveDirective, withDirectives} from 'vue';\n\n\nfunction tidyDirectives(directives) {\n return Object.keys(directives).map(n => {\n const data = directives[n];\n const directive = resolveDirective(n);\n if (!directive) return;\n return [\n directive, data.value, data.arg, data.modifiers\n ]\n }).filter(v => !!v);\n}\n\nfunction makeDirective(data, vn) {\n let directives = data.directives;\n if (!directives) return vn;\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n return withDirectives(vn, directives.reduce((lst, v) => {\n return lst.concat(tidyDirectives(v));\n }, []))\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(handle) {\n this.vm = handle.vm;\n this.handle = handle;\n }\n\n extend(CreateNode.prototype, {\n make(tag, data, children) {\n return makeDirective(data, this.h(tag, toProps(data), children));\n },\n makeComponent(type, data, children) {\n try {\n return makeDirective(data, createVNode(type, toProps(data), children));\n } catch (e) {\n console.error(e);\n return createVNode('');\n }\n },\n h(tag, data, children) {\n const vm = this.vm || getCurrentInstance();\n const isNativeTag = vm.appContext.config.isNativeTag(tag);\n const component = this.handle.fc.prop.components[tag];\n if (!component && isNativeTag) {\n delete data.formCreateInject;\n }\n try{\n return createVNode(component || (isNativeTag ? tag : resolveComponent(tag)), data, children);\n }catch (e){\n console.error(e);\n return createVNode('');\n }\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n CreateNode.alias(k, v);\n [k, line, lower].forEach(n => {\n CreateNode.prototype[n] = function (data, children) {\n return this.make(aliasMap[k] || n, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\nimport {invoke} from '../frame/util';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.refs[this.ref];\n },\n adapterValidate(validate, validator) {\n validate.validator = (rule, value, callback) => {\n return validator(value, callback);\n }\n return validate;\n },\n getSlot(name) {\n const _fn = (vm) => {\n if (vm) {\n let slot = vm.slots[name];\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n return undefined;\n }\n return _fn(this.vm);\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.$handle.fc.targetFormDriver('updateOptions', options, {handle: this.$handle, api: this.$handle.api})\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n fieldChange(ctx, value, formValue, setFlag) {\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, deepGet, invoke, parseFn} from './util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {nextTick} from 'vue';\nimport {toPromise} from '@form-create/utils';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n nextTick(() => {\n let attrs = toArray(inject.getValue());\n const unwatchs = [];\n attrs.forEach(attr => {\n if (attr && (attr.attr || attr.template)) {\n let fn = (get) => {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n let value;\n if (attr.template) {\n value = fc.$handle.loadStrVar(attr.template, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n } else if (attr.handler && is.Function(attr.handler)) {\n value = attr.handler(get, rule, api);\n } else {\n value = fc.$handle.loadStrVar(`{{${attr.attr}}}`, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n }\n if ((value == null || value === '') && attr.default != null) {\n value = attr.default;\n }\n if (attr.copy !== false) {\n value = deepCopy(value)\n }\n const _rule = (attr.modify ? rule : inject.getProp());\n if (attr.to === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, attr.to || 'options', value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n });\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.loaded;\n return loadData;\n}\n\nconst t = function (fc) {\n const t = {\n name: 't',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n let attrs = inject.getValue() || {};\n const unwatchs = [];\n Object.keys(attrs).forEach(key => {\n const attr = attrs[key];\n if (attr) {\n const isObj = typeof attr === 'object';\n let fn = (get) => {\n let value = fc.t(isObj ? attr.attr : attr, isObj ? attr.params : null, get);\n const _rule = ((isObj && attr.modify) ? rule : inject.getProp());\n if (key === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, key, value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n t.watch = t.loaded;\n return t;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n let options = attr.getValue();\n if (!options || options.method === false) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n if (!is.Object(options)) {\n options = {method: options};\n }\n const method = options.method;\n const validate = {\n ...options,\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, is.String(method) ? method : 'formCreateValidate', ...args, {\n attr,\n rule,\n api\n });\n }\n }\n };\n delete validate.method;\n attr.getProp().validate = [validate];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n fetchAttr.deleted(inject);\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n if (val != null && option && option.key && fc.$handle.options.globalData[option.key]) {\n fc.fetchCache.set(fc.$handle.options.globalData[option.key], {status: true, data: val});\n }\n api.sync(rule);\n }\n\n if (!option || (!option.action && !option.key)) {\n set(undefined);\n return;\n }\n option = deepCopy(option);\n if (!option.to) {\n option.to = 'options';\n }\n\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n fetchAttr._fn[inject.id] = fc.watchLoadData(debounce((get, change) => {\n if (change && option.watch === false) {\n return fetchAttr._fn[inject.id]();\n }\n if(option.key) {\n fc.targetRule = rule;\n const res = get('$globalData.' + option.key);\n delete fc.targetRule;\n if (res) {\n if (check()) return;\n set(res);\n }\n return ;\n }\n const _option = fc.$handle.loadFetchVar(deepCopy(option), get, rule);\n const config = {\n headers: {},\n ..._option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : (hasProperty(v, 'data') ? v.data : v);\n const parse = parseFn(_option.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(body, rule, api)).then(res => {\n set(res);\n })\n },\n onError(e) {\n set(undefined);\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + _option.action)))(e, rule, api);\n }\n };\n fc.$handle.beforeFetch(config, {rule, api}).then(() => {\n if (is.Function(_option.action)) {\n toPromise(_option.action(rule, api)).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }).catch(e => {});\n }, option.wait || 600));\n }\n\n const fetchAttr = {\n name: 'fetch',\n _fn: [],\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id]();\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n\n return fetchAttr;\n}\n\n\nexport default {\n fetch,\n loadData,\n t,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n ctx.prop.props.innerHTML = children.default();\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(children) {\n return {\n default: () => children.filter(v => is.String(v)).join('')\n }\n }\n}\n","import {deepGet} from './util';\n\nfunction getCookie(name) {\n name = name + '=';\n\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(';');\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i];\n while (cookie.charAt(0) === ' ') {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n cookie = cookie.substring(name.length, cookie.length);\n try {\n return JSON.parse(cookie);\n } catch (e) {\n return cookie;\n }\n }\n }\n return null;\n}\n\nfunction getLocalStorage(name) {\n const value = localStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nfunction getSessionStorage(name) {\n const value = sessionStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nexport function baseDriver(driver, name) {\n if (!name) {\n return null;\n }\n const split = name.split('.');\n let value = driver(split.shift());\n\n if (!split.length) {\n return value;\n }\n if (value == null) {\n return null;\n }\n return deepGet(value, split);\n}\n\nexport function cookieDriver(name) {\n return baseDriver(getCookie, name);\n}\n\nexport function localStorageDriver(name) {\n return baseDriver(getLocalStorage, name);\n}\n\nexport function sessionStorageDriver(name) {\n return baseDriver(getSessionStorage, name);\n}","export default {\n en: {\n required: '{title} is required',\n validate: {\n url: '{title} is not a valid url',\n email: '{title} is not a valid email',\n ip: '{title} {title} is not a valid ip',\n phone: '{title} {title} is not a valid phone',\n pattern: '{title} does not match pattern {pattern}',\n uppercase: '{title} must be all uppercase',\n lowercase: '{title} must be all lowercased',\n positive: '{title} is not a positive number',\n negative: '{title} is not a negative number',\n equal: '{title} is not equal to {equal}',\n min: '{title} cannot be less than {min}',\n max: '{title} cannot be greater than {max}',\n enum: '{title} must be one of {enum}',\n hasKeys: '{title} does not contain required fields {hasKeys}',\n minLen: '{title} must be at least {minLen}',\n maxLen: '{title} cannot be longer than {maxLen}',\n len: '{title} must be exactly {len}',\n integer: '{title} is not an integer',\n number: '{title} is not an number',\n }\n },\n 'zh-cn': {\n required: '{title}不能为空',\n validate: {\n url: '{title}不是有效的 url 地址',\n email: '{title}不是有效的邮箱地址',\n ip: '{title}不是有效的 IP 地址',\n phone: '{title}不是正确的手机号',\n pattern: '{title}必须匹配 {pattern}',\n uppercase: '{title}必须全大写',\n lowercase: '{title}必须全小写',\n positive: '{title}不是正数',\n negative: '{title}不是负数',\n equal: '{title}必须等于 {equal}',\n min: '{title}必须大于等于 {min}',\n max: '{title}必须小于等于 {max}',\n enum: '{title}必须是 {enum} 之一',\n hasKeys: '{title}必须包含 {hasKeys} 字段',\n minLen: '{title}长度必须大于 {minLen}',\n maxLen: '{title}长度必须小于 {maxLen}',\n len: '{title}长度必须为 {len}',\n integer: '{title}必须为整数',\n number: '{title}必须为数字',\n },\n }\n}","import $FormCreate from '../components/formCreate';\nimport {computed, createApp, h, nextTick, reactive, ref, watch} from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory, mergeRule} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, deepGet, invoke, mergeGlobal, parseFn, parseJson, setPrototypeOf, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend, {copy} from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport Mitt from '@form-create/utils/lib/mitt';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\nimport {cookieDriver, localStorageDriver, sessionStorageDriver} from './dataDriver';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {deepSet} from '@form-create/utils';\nimport baseLanguage from './language';\n\nfunction parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return parseProp('name', ...arguments);\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\nconst defValueTag = Symbol('defValue');\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const modelFields = {};\n const drivers = {};\n const useApps = [];\n const listener = [];\n const extendApiFn = [\n config.extendApi\n ];\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const isMobile = config.isMobile === true;\n const loadData = reactive({\n $mobile: isMobile,\n });\n const CreateNode = CreateNodeFactory();\n const formulas = {};\n const prototype = {};\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\n\n function useApp(fn) {\n useApps.push(fn);\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = is.Function(data.prop) ? data.prop : {\n ...data.prop,\n name: data.id\n };\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser(key) {\n if (arguments.length === 0) {\n return BaseParser;\n } else if (typeof key === 'string' && arguments.length === 1) {\n return parsers[toCase(key)];\n }\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return BaseParser;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = setPrototypeOf(parser, base || BaseParser);\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = id;\n if (component === undefined) {\n return components[name];\n }\n } else {\n name = id.displayName || id.name;\n component = id;\n }\n if (!name || !component) return;\n const nameAlias = toCase(name);\n components[name] = component;\n components[nameAlias] = component;\n delete CreateNode.aliasMap[name];\n delete CreateNode.aliasMap[nameAlias];\n delete parsers[name];\n delete parsers[nameAlias];\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return $FormCreate(FormCreate, components, directives);\n }\n\n function createFormApp(rule, option) {\n const Type = $form();\n return createApp({\n data() {\n return reactive({\n rule, option\n });\n },\n render() {\n return h(Type, {ref: 'fc', ...this.$data});\n }\n });\n }\n\n function $vnode() {\n return fragment;\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, option) {\n let app = createFormApp(rules, option || {});\n useApps.forEach(v => {\n invoke(() => v(create, app));\n })\n const div = document.createElement('div');\n (option?.el || document.body).appendChild(div);\n const vm = app.mount(div);\n return vm.$refs.fc.fapi;\n }\n\n setPrototypeOf(create, prototype);\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n modelFields,\n providers,\n useApps,\n maker,\n formulas,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function setModelField(name, field) {\n modelFields[name] = field;\n }\n\n function setFormula(name, fn) {\n formulas[name] = fn;\n }\n\n function setDriver(name, driver) {\n const parent = drivers[name] || {};\n const parsers = parent.parsers || {};\n if (driver.parsers) {\n Object.keys(driver.parsers).forEach(k => {\n parsers[k] = setPrototypeOf(driver.parsers[k], BaseParser);\n });\n }\n driver.name = name;\n drivers[name] = {...parent, ...driver, parsers};\n }\n\n function refreshData(id) {\n if (id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('$loadData.' + id);\n })\n })\n }\n }\n\n function setData(id, data) {\n deepSet(loadData, id, data);\n refreshData(id);\n }\n\n function setDataDriver(id, data) {\n const callback = (...args) => {\n return invoke(() => data(...args));\n }\n callback._driver = true;\n setData(id, callback);\n }\n\n function getData(id, def) {\n const split = (id || '').split('.');\n id = split.shift();\n const field = split.join('.');\n if (!hasProperty(loadData, id)) {\n loadData[id] = defValueTag;\n }\n if (loadData[id] !== defValueTag) {\n let val = loadData[id];\n if (val && val._driver) {\n val = val(field);\n } else if (split.length) {\n val = deepGet(val, split);\n }\n return (val == null || val === '') ? def : val;\n } else {\n return def;\n }\n }\n\n function extendApi(fn) {\n extendApiFn.push(fn);\n }\n\n function removeData(id) {\n delete loadData[id];\n refreshData(id);\n }\n\n function on(name, callback) {\n listener.push({name, callback});\n }\n\n function FormCreate(vm) {\n extend(this, {\n id: id++,\n create,\n vm,\n manager: createManager(config.manager),\n parsers,\n providers,\n modelFields,\n formulas,\n isMobile,\n rules: vm.props.rule,\n name: vm.props.name || uniqueId(),\n inFor: vm.props.inFor,\n prop: {\n components,\n directives,\n },\n get: null,\n drivers,\n renderDriver: null,\n refreshData,\n loadData,\n CreateNode,\n bus: new Mitt(),\n unwatch: [],\n options: ref({}),\n extendApiFn,\n fetchCache: new WeakMap(),\n tmpData: reactive({}),\n })\n listener.forEach(item => {\n this.bus.$on(item.name, item.callback);\n });\n nextTick(() => {\n watch(this.options, () => {\n this.$handle.$manager.updateOptions(this.options.value);\n this.api().refresh();\n }, {deep: true})\n });\n extend(vm.appContext.components, components);\n extend(vm.appContext.directives, directives);\n this.$handle = new Handle(this)\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\n }\n\n FormCreate.isMobile = isMobile;\n\n extend(FormCreate.prototype, {\n init() {\n if (this.isSub()) {\n this.unwatch.push(watch(() => this.vm.setupState.parent.setupState.fc.options.value, () => {\n this.initOptions();\n this.$handle.api.refresh();\n }, {deep: true, flush: 'sync'}));\n }\n if (this.vm.props.driver) {\n this.renderDriver = typeof this.vm.props.driver === 'object' ? this.vm.props.driver : this.drivers[this.vm.props.driver];\n }\n if (!this.renderDriver && this.vm.setupState.parent) {\n this.renderDriver = this.vm.setupState.parent.setupState.fc.renderDriver;\n }\n if (!this.renderDriver) {\n this.renderDriver = this.drivers.default;\n }\n this.initOptions();\n this.$handle.init();\n },\n targetFormDriver(method, ...args) {\n this.bus.$emit(method, ...args);\n if (this.renderDriver && this.renderDriver[method]) {\n return invoke(() => this.renderDriver[method](...args));\n }\n },\n t(id, params, get) {\n let value = get ? get('$t.' + id) : this.globalLanguageDriver(id);\n if (value == null) {\n value = '';\n }\n if (value && params) {\n Object.keys(params).forEach(param => {\n const regex = new RegExp(`{${param}}`, 'g');\n value = value.replace(regex, params[param]);\n });\n }\n return value;\n },\n globalDataDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalData && this.options.value.globalData[key];\n if (option) {\n if (option.type === 'static') {\n return deepGet(option.data, split);\n } else {\n let val;\n const res = this.fetchCache.get(option);\n if (res) {\n if (res.status) {\n val = deepGet(res.data, split);\n }\n if (!res.loading) {\n return val;\n }\n res.loading = false;\n this.fetchCache.set(option, res);\n } else {\n this.fetchCache.set(option, {status: false});\n }\n const reload = debounce(() => {\n unwatch();\n const res = this.fetchCache.get(option);\n if ((this.options.value.globalData && Object.values(this.options.value.globalData).indexOf(option) !== -1)) {\n if (res) {\n res.loading = true;\n this.fetchCache.set(option, res);\n }\n this.bus.$emit('$loadData.$globalData.' + key);\n } else {\n this.fetchCache.delete(option);\n }\n }, option.wait || 600)\n\n const _emit = (data) => {\n this.fetchCache.set(option, {status: true, data});\n this.bus.$emit('$loadData.$globalData.' + key);\n };\n\n const callback = (get, change) => {\n if (change && option.watch === false) {\n return unwatch();\n }\n if (change) {\n reload();\n return;\n }\n const options = this.$handle.loadFetchVar(copy(option), get);\n options.targetRule = this.targetRule;\n this.$handle.api.fetch(options).then(res => {\n _emit(res);\n }).catch(e => {\n _emit(null);\n });\n };\n const unwatch = this.watchLoadData(callback);\n if(option.watch === false) {\n unwatch();\n }\n this.unwatch.push(unwatch);\n return val;\n }\n }\n },\n getLocale() {\n let locale = this.vm.setupState.top.props.locale;\n if (locale && typeof locale === 'object') {\n return locale.name;\n }\n if (typeof locale === 'string') {\n return locale;\n }\n return 'zh-cn';\n },\n globalLanguageDriver(id) {\n let t = this.vm.setupState.top.props.t;\n let locale = this.vm.setupState.top.props.locale;\n let value = undefined;\n if (t) {\n value = invoke(() => t(id));\n }\n if (value == null && locale && typeof locale === 'object') {\n value = deepGet(locale, id);\n }\n if (value == null) {\n const language = this.options.value.language || {};\n const locale = this.getLocale();\n value = deepGet(language[locale] || {}, id);\n if (value == null) {\n value = deepGet(baseLanguage[locale] || {}, id);\n }\n }\n return value;\n },\n globalVarDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalVariable && this.options.value.globalVariable[key];\n if (option) {\n const handle = is.Function(option) ? option : parseFn(option.handle);\n if (handle) {\n let val = handle((...args) => this.$handle.api.getData(...args), this.$handle.api);\n return deepGet(val, split);\n }\n }\n },\n setData(id, data, isGlobal) {\n if (!isGlobal) {\n deepSet(this.vm.setupState.top.setupState.fc.tmpData, id, data);\n this.bus.$emit('$loadData.' + id);\n } else {\n setData(id, data);\n }\n },\n getLoadData(id, def) {\n let val = null;\n if (id != null) {\n let split = id.split('.');\n const key = split.shift();\n val = deepGet(this.vm.setupState.top.setupState.fc.tmpData, id);\n if (val != null) {\n return val;\n } else if (key === '$topForm') {\n val = this.$handle.api.top.formData(true);\n } else if (key === '$scopeForm') {\n val = this.$handle.api.scope.formData(true);\n } else if (key === '$form') {\n val = this.$handle.api.formData(true);\n } else if (key === '$options') {\n val = this.options.value;\n } else if (key === '$globalData') {\n val = this.globalDataDriver(split.join('.'));\n split = [];\n } else if (key === '$var') {\n val = this.globalVarDriver(split.join('.'));\n split = [];\n } else if (key === '$locale') {\n val = this.getLocale();\n split = [];\n } else if (key === '$t') {\n val = this.globalLanguageDriver(split.join('.'));\n split = [];\n } else if (key === '$preview') {\n return this.$handle.preview;\n } else {\n val = getData(id);\n split = [];\n }\n if (val && split.length) {\n val = deepGet(val, split);\n }\n }\n return (val == null || val === '') ? def : val;\n },\n watchLoadData(fn, wait) {\n let unwatch = {};\n\n const run = (flag) => {\n if (!this.get) {\n this.get = get;\n }\n invoke(() => {\n fn(get, flag);\n });\n if (this.get === get) {\n this.get = undefined;\n }\n };\n\n const get = (id, def) => {\n let getValue;\n if (typeof id === 'object') {\n getValue = id.getValue;\n id = id.id;\n }\n if (unwatch[id]) {\n return unwatch[id].val;\n }\n const data = computed(() => {\n return getValue ? getValue() : this.getLoadData(id, def);\n })\n const split = id.split('.');\n const key = split.shift();\n const key2 = split.shift() || '';\n const callback = debounce(() => {\n const temp = getValue ? getValue() : this.getLoadData(id, def);\n if (!unwatch[id]) {\n return;\n } else if (((temp instanceof Function || is.Object(temp) || Array.isArray(temp)) && temp === unwatch[id].val) || JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {\n unwatch[id].val = temp;\n run(true);\n }\n }, wait || 0);\n const un = watch(data, (n) => {\n callback();\n });\n this.bus.$on('$loadData.' + key, callback);\n if (key2) {\n this.bus.$on('$loadData.' + key + '.' + key2, callback);\n }\n unwatch[id] = {\n fn: (() => {\n this.bus.$off('$loadData.' + key, callback);\n if (key2) {\n this.bus.$off('$loadData.' + key + '.' + key2, callback);\n }\n un();\n }),\n val: data.value,\n }\n return data.value;\n }\n run(false);\n const un = () => {\n Object.keys(unwatch).forEach(k => unwatch[k].fn());\n unwatch = {};\n }\n this.unwatch.push(un);\n return un;\n },\n isSub() {\n return this.vm.setupState.parent && this.vm.props.extendOption;\n },\n initOptions() {\n this.options.value = {};\n let options = {\n formData: {},\n submitBtn: {},\n resetBtn: {},\n globalEvent: {},\n globalData: {}, ...deepCopy(globalConfig)\n };\n const isSubForm = this.isSub();\n if (isSubForm) {\n options = this.mergeOptions(options, this.vm.setupState.parent.setupState.fc.options.value || {}, true);\n }\n options = this.mergeOptions(options, this.vm.props.option);\n const api = this.api();\n this.targetFormDriver('initOptions', options, {api, isSubForm});\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = {...opt || {}};\n parent && ['page', 'onSubmit', 'onReset', 'onCreated', 'onChange', 'onMounted', 'mounted', 'onReload', 'reload', 'formData', 'el', 'globalClass', 'style'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.options.value = this.mergeOptions(this.options.value, options);\n this.$handle.$manager.updateOptions(this.options.value);\n this.bus.$emit('$loadData.$options');\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n unmount() {\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n listener.forEach(item => {\n this.bus.$off(item.name, item.callback);\n });\n this.tmpData = {};\n this.unwatch.forEach(fn => fn());\n this.unwatch = [];\n this.$handle.reloadRule([]);\n },\n updated() {\n this.$handle.bindNextTick(() => this.bus.$emit('next-tick', this.$handle.api));\n }\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n isMobile,\n extendApi,\n getData,\n setDataDriver,\n setData,\n removeData,\n refreshData,\n maker,\n component,\n directive,\n setModelField,\n setFormula,\n setDriver,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n mergeRule,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n useApp,\n getApi,\n on,\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(app, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n const key = `_installedFormCreate${isMobile ? 'Mobile' : ''}_${config.ui}`;\n if (app[key] === true) return;\n app[key] = true;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n app.config.globalProperties.$formCreate = $formCreate;\n const $component = $form();\n app.component($component.name, $component);\n useApps.forEach(v => {\n invoke(() => v(formCreate, app));\n })\n }\n })\n }\n\n useAttr(prototype);\n useStatic(prototype);\n\n setDataDriver('$cookie', cookieDriver);\n setDataDriver('$localStorage', localStorageDriver);\n setDataDriver('$sessionStorage', sessionStorageDriver);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n config.install && create.use(config);\n\n useApp((_, app) => {\n app.mixin({\n props: ['formCreateInject'],\n })\n })\n\n parser(html);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.modelFields && extend(modelFields, inherit.modelFields);\n inherit.providers && extend(providers, inherit.providers);\n inherit.useApps && extend(useApps, inherit.useApps);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n inherit.formulas && extend(formulas, inherit.formulas);\n }\n\n const FcComponent = $form();\n setPrototypeOf(FcComponent, prototype);\n Object.defineProperties(FcComponent, {\n fetch: {\n get() {\n return prototype.fetch;\n },\n set(val) {\n prototype.fetch = val;\n }\n }\n })\n\n FcComponent.util = prototype;\n\n return FcComponent;\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","\nexport function $set(target, field, value) {\n target[field] = value;\n}\n\nexport function $del(target, field) {\n delete target[field];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== 'function') {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf('$FN:') === 0) {\n v = v.substring(4);\n flag = true;\n } else if (v.indexOf('$EXEC:') === 0) {\n v = v.substring(6);\n flag = true;\n } else if (v.indexOf('$GLOBAL:') === 0) {\n const name = v.substring(8);\n v = function (...args) {\n const callback = args[0].api.getGlobalEvent(name);\n if (callback) {\n return callback.call(this, ...args);\n }\n return undefined;\n }\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (v.indexOf('$FNX:') === 0) {\n v = makeFn('function($inject){\\n' + v.substring(5) + '\\n}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf('function ') === 0 && v !== 'function ') {\n flag = true;\n } else if (!mode && v.indexOf('function(') === 0 && v !== 'function(') {\n flag = true;\n }\n if (!flag) return fn;\n let val;\n try{\n val = makeFn(v);\n }catch (e){\n val = makeFn('function ' + v);\n }\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","let id = 0;\n\nexport default function uniqueId() {\n const num = 370 + (++id);\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}`).toString(36) + num.toString(36) + 'c';\n}\n","export default function debounce(fn, wait) {\n var timeout = null;\n return function (...arg) {\n if (timeout !== null)\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.call(this, ...arg), wait);\n }\n}\n\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst[name] = slots[name]\n }\n return lst;\n }, {})\n}","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","import is from './type';\n\nexport default function toDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n\nexport function upper(str) {\n return str.replace(str[0], str[0].toLocaleUpperCase());\n}","function isPromise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\n\nexport default function toPromise(value) {\n if (isPromise(value)) {\n return value;\n }\n return Promise.resolve(value);\n}","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n"],"names":["Calendar","defineComponent","name","inheritAttrs","props","placeholder","String","formCreateInject","Object","disabled","Boolean","clearable","type","modelValue","Array","minDate","Date","maxDate","emits","setup","_","show","ref","toRef","inputValue","value","watch","n","formatter","date","dayjs","format","toDate","str","defaultDate","computed","isArray","map","dateRange","undefined","formatValue","onInput","emit","strValue","range","length","join","multiple","t","open","confirm","getStrValue","hasProperty","clear","e","stopPropagation","render","h","class","this","readonly","$props","onClick","model-value","isLink","border","v-slots","right-icon","clearIcon","is","empty","_extends","$attrs","onUpdate:show","v","onConfirm","mounted","$emit","$refs","el","normalizeOptions","options","item","normalized","label","text","children","Cascader","fieldNames","Number","_fieldNames$value","findOptions","path","i","find","updateInputValue","option","deep","val","selectedOptions","round","position","onClose","onFinish","Checkbox","direction","onUpdate:modelValue","opt","tmp","shape","Select","columnsFieldNames","selectedValues","columns","onCancel","parseFile","file","url","is_string","getFileName","uid","parseUpload","split","pop","Uploader","afterRead","Function","action","headers","method","data","uploadName","onSuccess","onError","maxCount","fileList","toArray","uploadValue","files","filter","onDelete","uploadFile","status","api","fetch","dataType","source","then","res","catch","message","onUpdate:model-value","$slots","Radio","DatePicker","formValue","columnsType","TimePicker","Group","field","rule","expand","button","default","max","min","defaultValue","sortBtn","title","onBeforeRemove","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","form","markRaw","$form","handler","o","keys","forEach","$f","formData","deferSyncValue","deepExtend","setValue","once","deepCopy","d","expandRule","total","addRule","removeRule","methods","_value","cache","k","JSON","stringify","input","key","[object Object]","coverValue","copyRules","submitBtn","resetBtn","defVal","extend","index","nextTick","add$f","indexOf","add","push","del","splice","toPromise","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","a","subForm","sortIcon","canMoveUp","canMoveDown","makeIcon","vm","btn","getTitle","replace","created","Type","isCardType","onUpdate:api","inFor","extendOption","script","viewBox","xmlns","_openBlock","openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","fill","components","IconWarning","parsers","maker","hidden","creatorFactory","ctx","vNode","col","span","row","prop","mergeProp","alias","PRE","icon","slider","stepper","inputNumber","rate","uploader","upload","cell","timePicker","datePicker","switch","select","cascader","calendar","checkbox","radio","textarea","formItem","group","array","object","tidy","isFalse","tidyRule","_rule","manager","validate","Promise","validateField","resolve","reject","clearValidateState","resetValidation","id","tidyOptions","tidyBool","pattern","RegExp","def","info","wrap","mergeProps","getDefaultOptions","required","labelAlign","inputAlign","gutter","loading","block","innerText","size","click","adapterValidate","validator","trigger","err","update","on","submit","preventDefault","style","beforeRender","className","$handle","preview","slotLen","setSlot","makeFormBtn","$r","getSlots","makeRow","makeWrap","uni","isTitle","_col","cls","rules","injectValidate","$render","mergeClass","wrapRef","makeInfo","makeCol","native","_ctx$refRule","_ctx$refRule2","titleProp","infoProp","titleSlot","getSlot","refRule","__$title","flag","align","_prop","args","_ctx$refRule3","showNotify","__$info","duration","targetHook","vn","makeSubmitBtn","makeResetBtn","width","fApi","resetFields","tidyBtnProp","Undef","extendApi","formEl","$manager","wrapEl","getFieldCtx","refs","callback","forms","all","isScope","emitEvent","sub","fields","clearSub","helper","tidyFields","clearSubValidateState","getCtxs","submitBtnProps","isShow","resetBtnProps","refreshOptions","successFn","failFn","validateOnSubmit","beforeSubmit","invoke","onSubmit","css","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","load","inject","parseVal","getValue","_title","clearProp","updateMessage","_rule$__fc__$refRule$","__fc__","match","getLocale","getProp","sync","install","FormCreate","componentAlias","component","register","parser","Field","FormCreateMobile","FormCreateFactory","ui","version","isMobile","attrs","normal","window","formCreateMobile","keyAttrs","arrayAttrs","normalAttrs","normalMerge","toArrayMerge","functionalMerge","enumerable","writable","configurable","copyRule","mode","mergeRule","merge","getRule","r","funcProxy","that","proxy","defineProperties","reduce","initial","get","byCtx","__origin__","fn","logError","makeSlotBag","slotBag","slotName","slot","vnFn","slots","mergeBag","bag","isVNode","toProps","toCase","upper","setPrototypeOf","proto","changeType","b","condition","==","!=",">",">=","<","<=","notOn","in","notIn","between","notBetween","notEmpty","test","deepGet","convertFieldToConditions","parts","conditions","currentCondition","part","getGroupInject","parent","$FormCreate","directives","driver","locale","fc","getCurrentInstance","provide","top","setupState","toRefs","reactive","ctxInject","destroyed","unique","renderRule","updateValue","fapi","isMore","styleEl","onBeforeMount","watchEffect","content","globalClass","subCss","toLine","innerHTML","emit$topForm","debounce","bus","emit$scopeForm","emit$form","emit$change","onMounted","$on","scope","onBeforeUnmount","$off","rmSubForm","getSubForm","idx","unmount","parentNode","parentElement","removeChild","onUpdated","updated","addSubForm","initOptions","refresh","flush","isBreakWatch","every","updateAppendData","reloadRule","toJson","config","forceCoverValue","json","init","Creator","_data","display","event","appendProto","prototype","arguments","setProp","$set","modelField","_clone","clone","constructor","commonMaker","create","make","makerFactory","factory","getBody","xhr","responseText","response","XMLHttpRequest","onProgress","addEventListener","evt","percent","loaded","query","acc","queryString","URLSearchParams","toString","includes","onerror","onload","msg","Error","getError","toLowerCase","FormData","append","setRequestHeader","filename","withCredentials","send","asyncFetch","_fetch","parseFn","targetRule","copy","Render","handle","CreateNode","force","tmpInput","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","cacheConfig","getTypeSlot","_fn","renderSlot","ctxs","isFragment","initProp","mergeGlobal","initNone","renderChildren","loadChildrenPending","renderCtx","global","trueType","g","originType","setOptions","loadPending","origin","optionsTo","deepSet","parseSide","side","renderSides","temp","prefix","suffix","renderId","ctxProp","injectProp","cacheFlag","slotValue","model","slotUpdate","_load","loadChildren","renderSlots","_vn","targetFormDriver","none","__v_isVNode","stable","console","error","target","$stable","getModelField","modelFields","aliasMap","state","getWrap","onUpdateValue","vnodeMounted","__rule__","fc.updateValue","fc.el","exportEl","$el","getFormData","modelEmit","onEmitInput","effect","onBaseInput","toValue","trueArray","child","defaultRender","makeComponent","lower","createChildrenVnodes","createRuleVnode","useRender$1","EVENT","RuleContext","isInput","pending","linkOn","root","ctrlRule","subRule","payload","updateKey","findCtrl","ctrl","isCtrl","__ctrl","strFn","getParentGroup","onLoad","onUpdate","oldValue","updateChildren","onReload","getPending","$api","setPending","reload","effectData","clearEffectData","updateType","getType","setParser","_this$refRule","__$validate","hasHidden","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","delete","rmCtrl","deleted","rm","_rm","noWatch","rmCtx","BaseParser","toFormValue","renderDriver","defaultPreview","noneKey","oldValueTag","Symbol","Handler","watching","reloading","noWatchFn","deferSyncFn","isMounted","subRuleData","appendData","ignoreFields","providers","cycleLoad","loadedId","changeStatus","pageEnd","nextReload","lifecycle","initData","extendApiFn","fieldCtx","nameCtx","allSubForm","subs","isPreview","siblings","formulas","appendValue","removeField","getCtx","after","prepend","hiddenStatus","displayStatus","bind","updateOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","findType","findTypes","getRenderRule","getRefRule","setEffect","attr","substr","updateValidate","updateValidates","validates","refreshValidate","onReset","exec","space","closeModal","getChildrenRuleList","getParentRule","getParentSubRule","getChildrenFormData","ignore","setChildrenFormData","cover","getGlobalEvent","globalEvent","getGlobalData","globalData","loadData","emitGlobalEvent","getInjectData","unshift","apply","setGlobalData","setData","setGlobalVar","$once","nextRefresh","emitsOptions","getCurrentFormRule","_h$vm$setupState$getG","loadFetchVar","fail","beforeFetch","watchFetch","watchLoadData","change","_opt","wait","getData","getLoadData","watchData","isGlobal","refreshData","params","changeValue","changeField","Api","useProvider","usePage","loadRule","__init","globalBeforeFetch","parseInjectEvent","injectEvent","parseEventLst","parseEvent","__inject","parseEmit","emitPrefix","eventName","eventInject","emitKey","fieldKey","arg","__emit","_inject","self","__origin","__json","loadStrVar","vars","regex","matches","extractVar","_split","shift","treeToVal","tree","slice","isNaN","lastVal","trim","parseTemplateToTree","template","tokens","current","depth","char","token","replaceAll","loadVal","useInject","page","first","limit","Math","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","useRender","parseRule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","preIndex","isRepeat","ruleEffect","repeat","isCopy","isInit","parseJson","bindParser","rmSubRuleData","setCtx","_preIndex","refreshUpdate","refreshControl","useCtrl","controls","getCtrl","handleFn","valid","isHidden","hideLst","reverse","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","fieldChange","isQuote","isChange","subData","isIgnore","ignoreHiddenFields","linkField","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","lst","getParser","list","newValue","call","adapter","computedRule","computedValue","compute","linkage","linkageVariable","beforeValidate","getValidateMessage","invalid","formatRule","entries","num","isInteger","some","checkCondition","or","one","variableVal","variable","compare","invert","computeValue","obj","rmSub","$del","useContext","_mounted","_ctx$prop","run","p","values","hook","deepName","_parent$prop","useLifecycle","ps","_c","c","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","emitEffect","custom","getEffect","_type","useEffect","fragment","makeDirective","withDirectives","concat","directive","resolveDirective","modifiers","tidyDirectives","createManager","CustomManager","Manager","assign","mergeOptionsRule","mergeOptions","componentValidate","$provider","fetchAttr","to","parseOpt","set","fetchCache","_option","body","unwatchs","modify","isObj","html","tag","getCookie","cookieArray","decodeURIComponent","cookie","charAt","substring","getLocalStorage","localStorage","getItem","getSessionStorage","sessionStorage","baseDriver","cookieDriver","localStorageDriver","sessionStorageDriver","baseLanguage","en","email","ip","phone","uppercase","lowercase","positive","negative","equal","enum","hasKeys","minLen","maxLen","integer","number","zh-cn","parseProp","nameProp","instance","defValueTag","Element","nodeType","isArr","hasOwnProperty","nst","PREFIX","SUFFIX","makeFn","timeout","drivers","useApps","listener","globalConfig","$mobile","createVNode","isNativeTag","appContext","resolveComponent","nodes","line","toLocaleLowerCase","CreateNodeFactory","getApi","useApp","base","displayName","nameAlias","formCreateParser","$vnode","app","createApp","$data","createFormApp","div","mount","inherit","_config","setModelField","setFormula","setDriver","setDataDriver","_driver","removeData","uniqueId","Mitt","WeakMap","tmpData","Handle","useAttr","formCreate","exportAttrs","isSub","globalLanguageDriver","param","globalDataDriver","_emit","language","globalVarDriver","globalVariable","key2","isSubForm","$formCreate","globalProperties","$component","mixin","FcComponent","util","exclude","timeStamp","_isVue","isPromise","random","now"],"mappings":"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"}
1
+ {"version":3,"file":"index.min.js","sources":["../src/vant/src/components/calendar.jsx","../src/vant/src/core/utils.js","../src/vant/src/components/cascader.jsx","../src/vant/src/components/checkbox.jsx","../src/vant/src/components/select.jsx","../src/vant/src/components/uploader.jsx","../src/vant/src/components/radio.jsx","../src/vant/src/components/datePicker.jsx","../src/vant/src/components/timePicker.jsx","../src/vant/src/components/group.jsx","../src/vant/src/components/icon/IconWarning.vue","../src/vant/src/components/icon/IconWarning.vue?vue&type=template&id=78ef5f99&lang.js","../src/vant/src/components/index.js","../src/vant/src/parsers/index.js","../src/vant/src/parsers/hidden.js","../src/vant/src/parsers/row.js","../src/vant/src/core/alias.js","../src/vant/src/core/manager.js","../src/vant/src/core/config.js","../src/vant/src/core/api.js","../node_modules/style-inject/dist/style-inject.es.js","../src/vant/src/core/provider.js","../src/vant/src/core/index.js","../src/vant/src/index.js","../src/core/src/frame/attrs.js","../src/core/src/frame/util.js","../src/core/src/components/formCreate.js","../src/core/src/factory/creator.js","../src/core/src/factory/maker.js","../src/core/src/frame/fetch.js","../src/core/src/frame/api.js","../src/core/src/render/index.js","../src/core/src/render/cache.js","../src/core/src/render/render.js","../src/core/src/handler/page.js","../src/core/src/factory/context.js","../src/core/src/handler/loader.js","../src/core/src/handler/input.js","../src/core/src/factory/parser.js","../src/core/src/handler/context.js","../src/core/src/handler/index.js","../src/core/src/handler/inject.js","../src/core/src/handler/render.js","../src/core/src/handler/lifecycle.js","../src/core/src/handler/effect.js","../src/core/src/components/fragment.js","../src/core/src/factory/node.js","../src/core/src/factory/manager.js","../src/core/src/frame/provider.js","../src/core/src/parser/html.js","../src/core/src/frame/dataDriver.js","../src/core/src/frame/language.js","../src/core/src/frame/index.js","../src/utils/lib/type.js","../src/utils/lib/modify.js","../src/utils/lib/deepextend.js","../src/utils/lib/extend.js","../src/utils/lib/console.js","../src/utils/lib/json.js","../src/utils/lib/unique.js","../src/utils/lib/debounce.js","../src/utils/lib/deepset.js","../src/utils/lib/slot.js","../src/utils/lib/toarray.js","../src/utils/lib/todate.js","../src/utils/lib/toline.js","../src/utils/lib/topromise.js","../src/utils/lib/tostring.js"],"sourcesContent":["import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcCalendar';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n formCreateInject: Object,\n disabled: Boolean,\n clearable: Boolean,\n type: String,\n modelValue: [String, Array],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'change', 'fc.el'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const formCreateInject = toRef(props, 'formCreateInject');\n const inputValue = ref(modelValue.value);\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = n;\n })\n\n const formatter = (date) => {\n return dayjs(date).format('YYYY-MM-DD');\n }\n const toDate = (str) => {\n return dayjs(str).toDate();\n }\n\n const defaultDate = computed(() => {\n const value = modelValue.value;\n if (Array.isArray(value)) {\n return value.map(toDate);\n } else if (value) {\n return toDate(value);\n } else {\n return null;\n }\n })\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const formatValue = (value) => {\n if (Array.isArray(value)) {\n inputValue.value = value.map(formatter);\n } else if (value) {\n inputValue.value = formatter(value);\n } else {\n inputValue.value = value;\n }\n }\n const onInput = () => {\n _.emit('update:modelValue', inputValue.value);\n _.emit('change', inputValue.value);\n }\n const strValue = {\n range() {\n return inputValue.value.length ? inputValue.value.join(' - ') : '';\n },\n multiple() {\n return inputValue.value.length ? (formCreateInject.value.t('selectedData', {length: inputValue.value.length}) ||`选择了 ${inputValue.value.length} 个日期`) : '';\n }\n }\n\n return {\n show,\n inputValue,\n defaultDate,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm(value) {\n formatValue(value);\n show.value = false;\n onInput();\n },\n getStrValue() {\n if (inputValue.value) {\n return hasProperty(strValue, props.type) ? strValue[props.type]() : (inputValue.value || '');\n }\n return '';\n },\n clear(e) {\n e.stopPropagation();\n const value = Array.isArray(inputValue.value) ? [] : '';\n formatValue(value);\n onInput();\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && !is.empty(this.inputValue) ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-calendar\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.getStrValue()} isLink border={false} v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-calendar {...{...this.$attrs, ...this.dateRange}} show={this.show} onUpdate:show={v => (this.show = v)}\n type={this.type}\n onConfirm={this.confirm} defaultDate={this.defaultDate}/>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","export const normalizeOptions = (options) => {\n if (!options || !Array.isArray(options)) {\n return [];\n }\n return options.map(item => {\n const normalized = {...item};\n if (normalized.label !== undefined && normalized.text === undefined) {\n normalized.text = normalized.label;\n }\n if (normalized.children && Array.isArray(normalized.children)) {\n normalized.children = normalizeOptions(normalized.children);\n }\n return normalized;\n })\n};\n","import {computed, defineComponent, ref, toRef, watch} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcCascader';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n fieldNames: Object,\n modelValue: [String, Number],\n options: Array,\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'fieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const findOptions = (options, value, path) => {\n for (let i = 0; i < options.length; i++) {\n if (options[i][fieldNames.value.value || 'value'] === value) {\n return [...path, options[i]];\n } else if (options[i][fieldNames.value.children || 'children']) {\n const find = findOptions(options[i][fieldNames.value.children || 'children'], value, [...path, options[i]]);\n if (find) {\n return find;\n }\n }\n }\n }\n\n const updateInputValue = (n) => {\n if (n == null || n === '') {\n return '';\n }\n const path = findOptions(options.value, n, []);\n return path ? path.map((option) => option[fieldNames.value.text || 'text']).join(' / ') : n;\n }\n\n const inputValue = ref(updateInputValue(modelValue.value));\n\n watch(() => modelValue.value, (n) => {\n inputValue.value = updateInputValue(n);\n });\n\n watch(() => options.value, () => {\n if (modelValue.value != null && modelValue.value !== '') {\n inputValue.value = updateInputValue(modelValue.value);\n }\n }, {deep: true});\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedOptions, value}) {\n inputValue.value = selectedOptions.map((option) => option[fieldNames.value.text || 'text']).join(' / ');\n show.value = false;\n onInput(value);\n },\n clear(e) {\n e.stopPropagation();\n inputValue.value = '';\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.inputValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n\n return <div class=\"_fc-cascader\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.inputValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-cascader\n {...this.$attrs}\n modelValue={this.modelValue}\n fieldNames={this.fieldNames}\n options={this.options}\n onClose={() => this.show = false}\n onFinish={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcCheckbox';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: Array,\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-checkbox-group direction=\"horizontal\" {...this.$attrs} modelValue={Array.isArray(this.modelValue) ? this.modelValue : []}\n onUpdate:modelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-checkbox name={value} shape=\"square\" {...tmp}>{text || opt.label || value}</van-checkbox>\n })}\n </van-checkbox-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport {normalizeOptions} from '../core/utils';\n\nconst NAME = 'fcSelect';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n placeholder: String,\n columnsFieldNames: Object,\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n const fieldNames = toRef(props, 'columnsFieldNames', {});\n const options = computed(() => {\n if (fieldNames?.value?.text) {\n return props.options || [];\n } else {\n return normalizeOptions(props.options || []);\n }\n })\n\n const inputValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return '';\n }\n for (let i = 0; i < (options.value || []).length; i++) {\n if (options.value[i][fieldNames.value.value || 'value'] === modelValue.value) {\n return options.value[i][fieldNames.value.text || 'text'];\n }\n }\n return modelValue.value;\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n inputValue,\n options,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues[0]);\n show.value = false;\n },\n }\n },\n render() {\n return <div class=\"_fc-select\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled} onClick={this.open}\n model-value={this.inputValue} isLink/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-picker\n {...this.$attrs}\n modelValue={[this.modelValue]}\n columnsFieldNames={this.columnsFieldNames}\n columns={this.options}\n onCancel={() => this.show = false}\n onConfirm={this.confirm}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {defineComponent, ref, toRef, watch} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'fcUploader';\n\nfunction parseFile(file, i) {\n if (typeof file === 'object') {\n return file;\n }\n return {\n url: file,\n is_string: true,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction parseUpload(file) {\n return {...file, file, value: file};\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n formCreateInject: Object,\n modelValue: [Array, String, Object],\n afterRead: Function,\n action: String,\n headers: Object,\n method: String,\n data: Object,\n uploadName: String,\n onSuccess: Function,\n onError: Function,\n maxCount: Number,\n },\n emits: ['update:modelValue', 'delete'],\n setup(props, _) {\n\n const afterRead = toRef(props, 'afterRead');\n const modelValue = toRef(props, 'modelValue', []);\n\n const fileList = ref(toArray(modelValue.value).map(parseFile).map(parseUpload));\n\n watch(() => modelValue.value, (n) => {\n fileList.value = toArray(n).map(parseFile).map(parseUpload);\n })\n\n const uploadValue = () => {\n let files = fileList.value.map((v) => v.is_string ? v.url : (v.value || v.url)).filter((url) => url !== undefined);\n _.emit('update:modelValue', props.maxCount === 1 ? (files[0] || '') : files);\n };\n\n return {\n fileList,\n modelValue,\n onDelete(file) {\n uploadValue();\n _.emit('delete', file);\n },\n uploadFile(file) {\n file.status = 'uploading';\n if (afterRead.value) {\n return afterRead.value(file);\n } else {\n const data = props.data || {};\n data[props.uploadName || 'file'] = file.file;\n props.formCreateInject.api.fetch({\n action: props.action,\n dataType: 'formData',\n source: 'upload',\n headers: props.headers || {},\n method: props.method || 'post',\n data\n }).then(res => {\n file.status = 'success';\n props.onSuccess && props.onSuccess(res, file);\n uploadValue();\n }).catch(e => {\n file.status = 'failed';\n file.message = this.formCreateInject.t('uploadFail') || '上传失败';\n props.onError && props.onError(e, file);\n });\n }\n }\n }\n },\n render() {\n return <van-uploader {...this.$attrs} model-value={this.fileList} maxCount={this.maxCount}\n onUpdate:model-value={(v) => this.fileList = v}\n afterRead={this.uploadFile} onDelete={this.onDelete} v-slots={this.$slots}/>\n }\n\n});\n","import {defineComponent, toRef} from 'vue';\n\nconst NAME = 'fcRadio';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n modelValue: [String, Number, Boolean],\n options: Array,\n },\n emits: ['update:modelValue', 'change'],\n setup(props, _) {\n const modelValue = toRef(props, 'modelValue', []);\n const options = toRef(props, 'options');\n\n return {\n options,\n modelValue,\n onInput(val) {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n },\n }\n },\n render() {\n return <van-radio-group direction=\"horizontal\" {...this.$attrs} modelValue={this.modelValue}\n onUpdate:modelValue={this.onInput}>\n {(this.options || []).map(opt => {\n const tmp = {...opt};\n const {text, value} = opt;\n delete tmp.text;\n delete tmp.value;\n return <van-radio name={value} {...tmp}>{text || opt.label || value}</van-radio>\n })}\n </van-radio-group>\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\nimport dayjs from 'dayjs';\n\nconst NAME = 'fcDatePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n minDate: [String, Date],\n maxDate: [String, Date],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split('-');\n });\n\n const dateRange = computed(() => {\n return {\n minDate: props.minDate ? dayjs(props.minDate).toDate() : undefined,\n maxDate: props.maxDate ? dayjs(props.maxDate).toDate() : undefined,\n }\n })\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n dateRange,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join('-'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-date-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-date-picker\n columnsType={['year', 'month', 'day']}\n {...{...this.$attrs, ...this.dateRange}}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {computed, defineComponent, ref, toRef} from 'vue';\n\nconst NAME = 'fcTimePicker';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n clearable: Boolean,\n placeholder: String,\n modelValue: [String, Number],\n },\n emits: ['update:modelValue', 'fc.el', 'change'],\n setup(props, _) {\n const show = ref(false);\n const modelValue = toRef(props, 'modelValue');\n\n const formValue = computed(() => {\n if (modelValue.value == null || modelValue.value === '') {\n return [];\n }\n return modelValue.value.split(':');\n });\n\n const onInput = (val) => {\n _.emit('update:modelValue', val);\n _.emit('change', val);\n }\n\n return {\n show,\n formValue,\n open() {\n if (props.disabled) {\n return;\n }\n show.value = true;\n },\n confirm({selectedValues}) {\n onInput(selectedValues.join(':'));\n show.value = false;\n },\n clear(e) {\n e.stopPropagation();\n onInput('');\n }\n }\n },\n render() {\n const clearIcon = () => {\n return this.$props.clearable && this.modelValue ?\n <i class=\"van-badge__wrapper van-icon van-icon-clear van-field__clear\"\n onClick={this.clear}></i> : undefined;\n }\n return <div class=\"_fc-time-picker\">\n <van-field ref=\"el\" placeholder={this.placeholder} readonly disabled={this.$props.disabled}\n onClick={this.open}\n model-value={this.modelValue} border={false} isLink v-slots={{\n 'right-icon': clearIcon\n }}/>\n <van-popup show={this.show} onUpdate:show={(v) => this.show = v} round position=\"bottom\">\n <van-time-picker\n columnsType={['hour', 'minute']}\n {...this.$attrs}\n modelValue={this.formValue}\n onConfirm={this.confirm}\n onCancel={() => this.show = false}\n />\n </van-popup>\n </div>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\n }\n});\n","import {hasProperty} from '@form-create/utils/lib/type';\nimport {defineComponent, markRaw, nextTick, watch} from 'vue';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport {toPromise} from '@form-create/utils';\n\nconst NAME = 'fcGroup';\n\n\nexport default defineComponent({\n name: NAME,\n props: {\n field: String,\n rule: Array,\n expand: Number,\n options: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n defaultValue: Object,\n sortBtn: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n title: {\n type: [String, Function],\n default: null\n },\n type: {\n type: String,\n default: 'default'\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n formCreateInject: Object,\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n form: markRaw(this.formCreateInject.form.$form())\n }\n },\n emits: ['update:modelValue', 'change', 'itemMounted', 'remove', 'add'],\n watch: {\n rule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n expand(n) {\n let d = n - this.modelValue.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n modelValue: {\n handler(n) {\n n = n || [];\n let keys = this.sort, total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i, true);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n },\n deep: true,\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('update:modelValue', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = this.sort;\n if (keys.filter(k => cacheRule[k] && cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cacheRule[key].$f && this.cacheRule[key].$f.coverValue(value);\n this.cache(key, value);\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.rule || []);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\n this.cacheRule[++this.len] = {rule, options};\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n nextTick(() => {\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n delete this.cacheRule[key];\n delete this.cacheValue[key];\n this.sort = Object.keys(this.cacheRule);\n if (emit) {\n nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.modelValue)) {\n return;\n }\n const value = [...this.modelValue];\n value.push(this.defaultValue ? deepCopy(this.defaultValue) : (this.field ? null : {}));\n this.input(value);\n },\n del(index, key) {\n if (this.disabled) {\n return;\n }\n const del = () => {\n this.removeRule(key, true);\n const value = [...this.modelValue];\n value.splice(index, 1);\n this.input(value);\n }\n toPromise(this.onBeforeRemove(this.modelValue, index)).then(res => {\n if (false !== res) {\n del();\n }\n })\n },\n addIcon(key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus\" onClick={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-m-group-btn _fc-m-group-plus-minus _fc-m-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-m-group-btn _fc-m-group-arrow _fc-m-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.sort[index] = this.sort[index + sort];\n this.sort[index + sort] = a;\n this.formCreateInject.subForm(this.sort.map(k=>{\n return this.cacheRule[k].$f;\n }));\n this.formData(0);\n },\n sortIcon(index, total) {\n const canMoveUp = index > 0;\n const canMoveDown = index < total - 1;\n\n if (!canMoveUp && !canMoveDown) {\n return null;\n }\n\n if (canMoveUp && canMoveDown) {\n // 显示合并的上下箭头按钮\n return <div class=\"_fc-m-group-btn _fc-m-group-sort\">\n <div class=\"_fc-m-group-sort-up\" onClick={() => this.changeSort(index, -1)}></div>\n <div class=\"_fc-m-group-sort-down\" onClick={() => this.changeSort(index, 1)}></div>\n </div>;\n }\n\n if (canMoveUp) {\n return this.sortUpIcon(index);\n }\n\n if (canMoveDown) {\n return this.sortDownIcon(index);\n }\n },\n makeIcon(total, index, key) {\n if (this.$slots.button) {\n return this.$slots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn) {\n const sortBtn = this.sortIcon(index, total);\n if (sortBtn) {\n btn.push(sortBtn);\n }\n }\n return btn;\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.modelValue.push(this.field ? null : {});\n }\n this.input([...this.modelValue]);\n },\n getTitle(index, key) {\n if (typeof this.title === 'function') {\n return this.title(index, this.modelValue[index], key);\n }\n if (typeof this.title === 'string') {\n return this.title.replace('{index}', index + 1);\n }\n return false;\n }\n },\n created() {\n const d = (this.expand || 0) - this.modelValue.length;\n for (let i = 0; i < this.modelValue.length; i++) {\n this.addRule(i);\n }\n if (d > 0) {\n this.expandRule(d);\n }\n },\n render() {\n const keys = this.sort;\n const button = this.button;\n const Type = this.form;\n const disabled = this.disabled;\n const isCardType = this.type === 'card';\n\n const children = keys.length === 0 ?\n (this.$slots.default ? (this.$slots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-m-group-plus-minus _fc-m-group-add fc-clock\"\n onClick={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n const title = this.getTitle(index, key);\n\n if (isCardType) {\n return <div class=\"_fc-m-group-container\" key={key}>\n <div class=\"_fc-m-group-header\">\n {title === false ? <div class=\"_fc-m-group-idx\">{index + 1}</div> : null}\n {title !== false ? <div class=\"_fc-m-group-title\">{title}</div> : null}\n <div class=\"_fc-m-group-handle fc-clock\">\n {(btn.length) ? btn : null}\n </div>\n </div>\n <div class=\"_fc-m-group-content\">\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n </div>\n </div>\n } else {\n return <div class=\"_fc-m-group-container\" key={key}>\n <Type\n key={key}\n {...{\n disabled,\n 'onUpdate:modelValue': (formData) => this.formData(key, formData),\n 'onUpdate:api': ($f) => this.add$f(index, key, $f),\n inFor: true,\n modelValue: this.field ? {[this.field]: this._value(this.modelValue[index])} : this.modelValue[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-m-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-m-group-handle fc-clock\">{btn}</div> : null}\n </div>\n }\n });\n return <div key={'con'} class={'_fc-m-group ' + (disabled ? '_fc-m-group-disabled' : '') + (isCardType ? ' _fc-m-group-card' : '')}>{children}</div>\n }\n});\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","<template>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\"\n d=\"M512 64a448 448 0 110 896 448 448 0 010-896zm0 832a384 384 0 000-768 384 384 0 000 768zm48-176a48 48 0 11-96 0 48 48 0 0196 0zm-48-464a32 32 0 0132 32v288a32 32 0 01-64 0V288a32 32 0 0132-32z\"></path>\n </svg>\n</template>\n\n<script>\nexport default {\n name: 'IconWarning'\n}\n</script>\n","import subForm from '@form-create/component-subform/src/index';\nimport Calendar from './calendar';\nimport Cascader from './cascader';\nimport Checkbox from './checkbox';\nimport Select from './select';\nimport Uploader from './uploader';\nimport Radio from './radio';\nimport DatePicker from './datePicker';\nimport TimePicker from './timePicker';\nimport Group from './group';\nimport IconWarning from './icon/IconWarning.vue';\n\n\nexport default [\n subForm,\n IconWarning,\n Calendar,\n Cascader,\n Checkbox,\n Radio,\n Select,\n DatePicker,\n TimePicker,\n Group,\n Uploader,\n]\n","import hidden from './hidden';\nimport row from './row';\nimport {hasProperty} from '@form-create/utils/lib/type';\n\n\nconst checkbox = {\n name: 'checkbox',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst radio = {\n name: 'radio',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst select = {\n name: 'select',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst cascader = {\n name: 'cascader',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n}\n\nconst textarea = {\n name: 'textarea',\n mergeProp(ctx) {\n let {props} = ctx.prop;\n props.type = 'textarea';\n }\n}\n\n\nexport default [\n hidden,\n row,\n cascader,\n checkbox,\n radio,\n select,\n textarea,\n]\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, {\n default:()=>[\n ctx.vNode.row(ctx.prop, _)\n ]\n })\n }\n}\n","const PRE = 'van';\nexport default {\n button: PRE + '-button',\n icon: PRE + '-icon',\n slider: PRE + '-slider',\n stepper: PRE + '-stepper',\n inputNumber: PRE + '-stepper',\n rate: PRE + '-rate',\n uploader: 'fc-uploader',\n upload: 'fc-uploader',\n cell: PRE + '-cell',\n timePicker: 'fc-time-picker',\n datePicker: 'fc-date-picker',\n 'switch': PRE + '-switch',\n select: 'fc-select',\n cascader: 'fc-cascader',\n calendar: 'fc-calendar',\n checkbox: 'fc-checkbox',\n radio: 'fc-radio',\n input: PRE + '-field',\n textarea: PRE + '-field',\n field: PRE + '-field',\n formItem: PRE + '-field',\n form: PRE + '-form',\n col: PRE + '-col',\n row: PRE + '-row',\n group: 'fc-group',\n array: 'fc-group',\n object: 'fc-sub-form',\n subForm: 'fc-sub-form',\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {showNotify} from 'vant';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nfunction tidyRule(rule) {\n const _rule = {...rule};\n delete _rule.children;\n return _rule;\n}\n\nexport default {\n validate() {\n const form = this.form();\n if (form) {\n return form.validate();\n } else {\n return new Promise(v => v());\n }\n },\n validateField(field) {\n return new Promise((resolve, reject) => {\n const form = this.form();\n if (form) {\n form.validate(field).then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n clearValidateState(ctx) {\n const form = this.form();\n if (form) {\n return form.resetValidation(ctx.id);\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n prop.validate && prop.validate.forEach(item => {\n if (is.String(item.pattern)) {\n item.pattern = new RegExp(item.pattern);\n }\n });\n return prop;\n },\n mergeProp(ctx) {\n const def = {\n info: {\n icon: true,\n },\n title: {},\n col: {span: 24},\n wrap: {},\n };\n ['info', 'wrap', 'col', 'title'].forEach(name => {\n ctx.prop[name] = mergeProps([this.options[name] || {}, ctx.prop[name] || {}], def[name]);\n });\n },\n getDefaultOptions() {\n return getConfig();\n },\n adapterValidate(validate, validator) {\n if (validate.trigger === 'change') {\n validate.trigger = 'onChange';\n } else if (validate.trigger === 'blur') {\n validate.trigger = 'onBlur';\n }\n validate.validator = (value) => {\n return new Promise((resolve) => {\n const callback = (err) => {\n validate.message = err;\n if (err) {\n resolve(false);\n } else {\n resolve();\n }\n }\n return validator(value, callback);\n })\n }\n return validate;\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n on: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref} = this;\n const form = this.options.form;\n extend(this.rule, {key, ref, class: [form.className, form.class, 'form-create-m', this.$handle.preview ? 'is-preview' : '']});\n },\n render(children) {\n if (children.slotLen() && !this.$handle.preview) {\n children.setSlot(undefined, () => this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children.getSlots() : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule) && rule.wrap.title !== false;\n const {col: _col} = this.rule.props;\n const cls = rule.wrap.class;\n delete rule.wrap.class;\n delete rule.wrap.title;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n modelValue: ctx.rule.value,\n label: isTitle ? rule.title.title : undefined,\n ...tidyRule(rule.wrap || {}),\n name: ctx.id,\n rules: ctx.injectValidate(),\n },\n class: this.$render.mergeClass(cls || rule.className, 'fc-form-item'),\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), {input: () => children, ...(isTitle ? {label: () => this.makeInfo(rule, uni, ctx)} : {})});\n return (isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = {...rule.title};\n const infoProp = {...rule.info};\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({\n title: ctx.refRule?.__$title?.value,\n rule: ctx.rule,\n options: this.options\n }) : ctx.refRule?.__$title?.value];\n const flag = !isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon);\n if (flag) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: infoProp.icon === true ? 'icon-warning' : infoProp.icon,\n style: 'width:1em;',\n }));\n }\n\n const _prop = mergeProps([titleProp, {\n props: tidyRule(titleProp),\n key: `${uni}tit`,\n class: 'fc-form-title',\n type: titleProp.type || 'span',\n on: {\n click: (...args) => {\n if (flag && infoProp.info) {\n showNotify({type: 'warning', message: ctx.refRule?.__$info?.value, duration: 1000});\n }\n this.$handle.targetHook(ctx, 'titleClick', {args});\n }\n }\n }]);\n\n delete _prop.props.show;\n delete _prop.props.title;\n delete _prop.props.native;\n\n return this.$r(_prop, children);\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: this.$render.mergeClass(col.class, 'fc-form-col'),\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: this.$render.mergeClass(row.class, 'fc-form-row'),\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n return this.$r({\n type: 'cell',\n class: 'fc-form-cell fc-form-footer',\n key: `${this.key}fb`\n }, vn);\n },\n\n makeResetBtn() {\n const resetBtn = {...this.options.resetBtn};\n const innerText = resetBtn.innerText || this.$handle.api.t('reset') || '重置';\n delete resetBtn.innerText;\n delete resetBtn.click;\n delete resetBtn.col;\n delete resetBtn.show;\n return this.$r({\n type: 'button',\n props: resetBtn,\n class: 'fc-reset-btn',\n style: {width: resetBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.resetBtn.click\n ? this.options.resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = {...this.options.submitBtn};\n const innerText = submitBtn.innerText || this.$handle.api.t('submit') || '提交';\n delete submitBtn.innerText;\n delete submitBtn.click;\n delete submitBtn.col;\n delete submitBtn.show;\n return this.$r({\n type: 'button',\n props: submitBtn,\n class: 'fc-submit-btn',\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n this.options.submitBtn.click\n ? this.options.submitBtn.click(fApi)\n : fApi.submit().catch(() => {\n });\n }\n },\n key: `${this.key}b1`,\n }, [innerText]);\n }\n}\n","export default function getConfig() {\n return {\n form: {\n required: 'auto',\n labelAlign: 'right',\n inputAlign: 'right',\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n block: true,\n innerText: '',\n size: 'small',\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n return {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-fail', e, {api});\n h.emitEvent('validate-fail', e, {api});\n })\n });\n },\n validateField(field, callback) {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).filter(v=>!v.isScope).forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n return new Promise((resolve, reject) => {\n const promise = h.options.validateOnSubmit === false ? Promise.resolve() : api.validate();\n promise.then(() => {\n let formData = api.formData();\n h.beforeSubmit(formData).then(() => {\n is.Function(successFn) && invoke(() => successFn(formData, api));\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, api));\n h.vm.emit('submit', formData, api);\n resolve(formData);\n }).catch((e) => {})\n }).catch((...args) => {\n is.Function(failFn) && invoke(() => failFn(api, ...args));\n reject(...args)\n })\n });\n },\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import is from '@form-create/utils/lib/type';\n\nconst required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n let _title = undefined;\n if (val.required === false) {\n inject.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n const validate = {\n required: true,\n validator(v) {\n updateMessage();\n return !is.empty(v);\n },\n trigger: ['onChange', 'onSubmit'],\n ...val,\n };\n const updateMessage = () => {\n const title = rule.__fc__.refRule.__$title?.value;\n if (_title === title) {\n return;\n }\n _title = title;\n if (!val.message) {\n validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));\n } else {\n const match = val.message.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n validate.message = api.t(match[1], {title});\n }\n }\n }\n updateMessage();\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\n\nexport default required\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport '../style/index.css';\nimport extendApi from './api';\nimport required from './provider';\nimport {Field} from 'vant';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n FormCreate.register(required);\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n if (Field.props) {\n Field.props.modelValue = {\n type: [String, Number, Array, Object, Boolean, Function],\n default: '',\n };\n }\n}\n\nexport default function VantFormCreate() {\n return FormCreateFactory({\n ui: 'process.env.UI',\n version: 'process.env.VERSION',\n manager,\n extendApi,\n install,\n isMobile: true,\n attrs: {\n normal: ['col', 'wrap'],\n key: ['title', 'info'],\n }\n });\n}\n","import VantFormCreate from './core/index';\n\nconst FormCreateMobile = VantFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreateMobile = FormCreateMobile;\n}\n\nconst maker = FormCreateMobile.maker;\n\nexport {maker}\n\nexport default FormCreateMobile;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'ignore', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'slotUpdate', 'computed', 'preview', 'component', 'cache', 'modelEmit'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep', 'renderSlots'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {isVNode} from 'vue';\nimport {upper} from '@form-create/utils/lib/toline';\nimport toCase from '@form-create/utils/lib/tocase';\n\nexport {parseJson, parseFn, toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n\nexport function makeSlotBag() {\n const slotBag = {};\n const slotName = (n) => n || 'default';\n\n return {\n setSlot(slot, vnFn) {\n slot = slotName(slot);\n if (!vnFn || (Array.isArray(vnFn) && vnFn.length))\n return;\n if (!slotBag[slot]) slotBag[slot] = [];\n slotBag[slot].push(vnFn);\n },\n getSlot(slot, val) {\n slot = slotName(slot);\n const children = [];\n (slotBag[slot] || []).forEach(fn => {\n if (Array.isArray(fn)) {\n children.push(...fn);\n } else if (is.Function(fn)) {\n const res = fn(...(val || []));\n if (Array.isArray(res)) {\n children.push(...res);\n } else {\n children.push(res);\n }\n } else if (!is.Undef(fn)) {\n children.push(fn);\n }\n })\n return children;\n },\n getSlots() {\n const slots = {};\n Object.keys(slotBag).forEach(k => {\n slots[k] = (...args) => {\n return this.getSlot(k, args);\n }\n })\n return slots\n },\n slotLen(slot) {\n slot = slotName(slot);\n return slotBag[slot] ? slotBag[slot].length : 0;\n },\n mergeBag(bag) {\n if (!bag) return this;\n const slots = is.Function(bag.getSlots) ? bag.getSlots() : bag;\n if (Array.isArray(bag) || isVNode(bag)) {\n this.setSlot(undefined, () => bag);\n } else {\n Object.keys(slots).forEach(k => {\n this.setSlot(k, slots[k]);\n });\n }\n\n return this;\n }\n };\n}\n\nexport function toProps(rule) {\n const prop = {...(rule.props || {})};\n\n Object.keys(rule.on || {}).forEach(k => {\n if (k.indexOf('-') > 0) {\n k = toCase(k);\n }\n const name = `on${upper(k)}`;\n if (Array.isArray(prop[name])) {\n prop[name] = [...prop[name], rule.on[k]];\n } else if (prop[name]) {\n prop[name] = [prop[name], rule.on[k]];\n } else {\n prop[name] = rule.on[k];\n }\n })\n prop.key = rule.key;\n prop.ref = rule.ref;\n prop.class = rule.class;\n prop.id = rule.id;\n prop.style = rule.style;\n if (prop.slot) delete prop.slot;\n\n return prop;\n}\n\nexport function setPrototypeOf(o, proto) {\n Object.setPrototypeOf(o, proto);\n return o;\n}\n\n\nconst changeType = (a, b) => {\n if (typeof a === 'string') {\n return String(b);\n } else if (typeof a === 'number') {\n return Number(b);\n }\n return b;\n}\n\nexport const condition = {\n '==': (a, b) => {\n return JSON.stringify(a) === JSON.stringify(changeType(a, b));\n },\n '!=': (a, b) => {\n return !condition['=='](a, b);\n },\n '>': (a, b) => {\n return a > b;\n },\n '>=': (a, b) => {\n return a >= b;\n },\n '<': (a, b) => {\n return a < b;\n },\n '<=': (a, b) => {\n return a <= b;\n },\n on(a, b) {\n return a && a.indexOf && a.indexOf(changeType(a[0], b)) > -1;\n },\n notOn(a, b) {\n return !condition.on(a, b);\n },\n in(a, b) {\n return b && b.indexOf && b.indexOf(a) > -1;\n },\n notIn(a, b) {\n return !condition.in(a, b);\n },\n between(a, b) {\n return a > b[0] && a < b[1];\n },\n notBetween(a, b) {\n return a < b[0] || a > b[1];\n },\n empty(a) {\n return is.empty(a);\n },\n notEmpty(a) {\n return !is.empty(a);\n },\n pattern(a, b) {\n return new RegExp(b, 'g').test(a);\n }\n};\n\nexport function deepGet(val, split) {\n (Array.isArray(split) ? split : (split || '').split('.')).forEach(k => {\n if (val != null) {\n val = val[k];\n }\n });\n return val;\n}\n\nexport function extractVar(str) {\n const regex = /{{\\s*(.*?)\\s*}}/g;\n let match;\n const matches = {};\n while ((match = regex.exec(str)) !== null) {\n if (match[1]) {\n matches[match[1]] = true;\n }\n }\n return Object.keys(matches);\n}\n\nexport function convertFieldToConditions(field) {\n let parts = field.split('.');\n let conditions = [];\n let currentCondition = '';\n\n parts.forEach((part, index) => {\n if (index === 0) {\n currentCondition = part;\n } else {\n currentCondition += '.' + part;\n }\n conditions.push(currentCondition);\n });\n\n return conditions.join(' && ');\n}\n\nexport function parseTemplateToTree(template) {\n const tokens = [];\n let current = '';\n let depth = 0;\n\n for (let i = 0; i < template.length; i++) {\n const char = template[i];\n\n if (char === '[') {\n if (depth === 0 && current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n depth++;\n current += char;\n } else if (char === ']') {\n depth--;\n current += char;\n\n if (depth === 0) {\n tokens.push({\n type: 'bracket',\n value: parseTemplateToTree(current.slice(1, -1))\n });\n current = '';\n }\n } else if (char === '.' && depth === 0) {\n if (current) {\n tokens.push({type: 'key', value: current});\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push({type: 'key', value: current});\n }\n\n return tokens.map(token => {\n if (token.type === 'key') {\n return {key: token.value};\n } else {\n return {children: token.value};\n }\n });\n}\n","import {\n defineComponent,\n getCurrentInstance,\n inject,\n markRaw,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n onUpdated,\n provide,\n reactive,\n toRefs,\n watch, watchEffect\n} from 'vue';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport toLine from '@form-create/utils/lib/toline';\nimport {toJson} from '../frame/util';\n\nconst getGroupInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.props.formCreateInject) {\n return vm.props.formCreateInject\n }\n if (vm.parent) {\n return getGroupInject(vm.parent, parent);\n }\n}\n\nexport default function $FormCreate(FormCreate, components, directives) {\n return defineComponent({\n name: 'FormCreate' + (FormCreate.isMobile ? 'Mobile' : ''),\n components,\n directives,\n props: {\n rule: {\n type: Array,\n required: true,\n default: () => []\n },\n option: {\n type: Object,\n default: () => ({})\n },\n extendOption: Boolean,\n driver: [String, Object],\n modelValue: Object,\n disabled: {\n type: Boolean,\n default: undefined,\n },\n preview: {\n type: Boolean,\n default: undefined,\n },\n index: [String, Number],\n api: Object,\n locale: [String, Object],\n t: Function,\n name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n emits: ['update:api', 'update:modelValue', 'mounted', 'submit', 'reset', 'change', 'emit-event', 'control', 'remove-rule', 'remove-field', 'sync', 'reload', 'repeat-field', 'update', 'validate-field-fail', 'validate-fail', 'created'],\n render() {\n return this.fc.render();\n },\n setup(props) {\n const vm = getCurrentInstance();\n provide('parentFC', vm);\n const parent = inject('parentFC', null);\n let top = parent;\n\n if (parent) {\n while (top.setupState.parent) {\n top = top.setupState.parent;\n }\n } else {\n top = vm;\n }\n\n const {rule, modelValue, subForm, inFor} = toRefs(props);\n\n const data = reactive({\n ctxInject: {},\n destroyed: false,\n isShow: true,\n unique: 1,\n renderRule: [...rule.value || []],\n updateValue: JSON.stringify(modelValue.value || {}),\n });\n\n const fc = new FormCreate(vm);\n const fapi = fc.api();\n\n const isMore = inFor.value;\n\n const addSubForm = () => {\n if (parent) {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n let sub;\n if (isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getGroupInject(vm, parent);\n if (inject) {\n if (isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n let styleEl = null;\n\n onBeforeMount(() => {\n watchEffect(() => {\n let content = '';\n const globalClass = (props.option && props.option.globalClass) || {};\n Object.keys(globalClass).forEach(k => {\n let subCss = '';\n globalClass[k].style && Object.keys(globalClass[k].style).forEach(key => {\n subCss += toLine(key) + ':' + globalClass[k].style[key] + ';';\n });\n if (globalClass[k].content) {\n subCss += globalClass[k].content + ';';\n }\n if (subCss) {\n content += `.${k}{${subCss}}`;\n }\n });\n if (props.option && props.option.style) {\n content += props.option.style;\n }\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.type = 'text/css';\n document.head.appendChild(styleEl);\n }\n styleEl.innerHTML = content || '';\n })\n });\n\n const emit$topForm = debounce(() => {\n fc.bus.$emit('$loadData.$topForm');\n }, 100);\n\n const emit$scopeForm = debounce(function () {\n fc.bus.$emit('$loadData.$scopeForm');\n }, 100);\n\n const emit$form = debounce(() => {\n fc.bus.$emit('$loadData.$form');\n }, 100);\n\n const emit$change = (field) => {\n fc.bus.$emit('change-$form.' + field);\n };\n\n onMounted(() => {\n if (parent) {\n fapi.top.bus.$on('$loadData.$form', emit$topForm);\n fapi.top.bus.$on('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$on('$loadData.$scopeForm', emit$scopeForm);\n }\n fc.mounted();\n });\n\n onBeforeUnmount(() => {\n if (parent) {\n fapi.top.bus.$off('$loadData.$form', emit$topForm);\n fapi.top.bus.$off('change', emit$change);\n }\n if (fapi !== fapi.scope) {\n fapi.scope.bus.$off('$loadData.$scopeForm', emit$scopeForm);\n }\n rmSubForm();\n data.destroyed = true;\n fc.unmount();\n styleEl && (styleEl.parentNode || styleEl.parentElement) && document.head.removeChild(styleEl);\n })\n\n onUpdated(() => {\n fc.updated();\n });\n\n addSubForm();\n\n watch(() => props.option, () => {\n fc.initOptions();\n fapi.refresh();\n }, {deep: true, flush: 'sync'});\n\n watch(() => [...rule.value], (n) => {\n if (fc.$handle.isBreakWatch() || n.length === data.renderRule.length && n.every(v => data.renderRule.indexOf(v) > -1)) return;\n fc.$handle.updateAppendData();\n fc.$handle.reloadRule(rule.value);\n vm.setupState.renderRule();\n })\n\n watch(() => [props.disabled, props.preview], () => {\n fapi.refresh();\n });\n\n watch(modelValue, (n) => {\n if (toJson(n || {}) === data.updateValue) return;\n if (fapi.config.forceCoverValue) {\n fapi.coverValue(n || {});\n } else {\n fapi.setValue(n || {});\n }\n }, {deep: true, flush: 'post'});\n\n watch(() => props.index, () => {\n fapi.coverValue({});\n fc.$handle.updateAppendData();\n nextTick(() => {\n nextTick(() => {\n fapi.clearValidateState();\n });\n });\n }, {flush: 'sync'});\n\n return {\n fc: markRaw(fc),\n parent: parent ? markRaw(parent) : parent,\n top: markRaw(top),\n fapi: markRaw(fapi),\n ...toRefs(data),\n getGroupInject: () => getGroupInject(vm, parent),\n refresh() {\n ++data.unique;\n },\n renderRule() {\n data.renderRule = [...rule.value || []];\n },\n updateValue(value) {\n if (data.destroyed) return;\n const json = toJson(value);\n if (data.updateValue === json) {\n return;\n }\n data.updateValue = json;\n vm.emit('update:modelValue', value);\n nextTick(() => {\n emit$form();\n if (!parent) {\n emit$topForm();\n emit$scopeForm();\n } else if (!subForm.value) {\n emit$scopeForm();\n }\n });\n }\n }\n },\n created() {\n const vm = getCurrentInstance();\n vm.emit('update:api', vm.setupState.fapi);\n vm.setupState.fc.init();\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n modelField(field) {\n this._data.modelField = field;\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n factory: creatorFactory\n };\n}\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nimport is from '@form-create/utils/lib/type';\nimport {parseFn} from '@form-create/utils/lib/json';\nimport {deepGet} from './util';\nimport {toPromise} from '@form-create/utils';\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n let action = option.action || '';\n\n if (xhr.upload && option.onProgress) {\n xhr.upload.addEventListener('progress', (evt) => {\n evt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n option.onProgress(evt)\n })\n }\n\n if (option.query) {\n const query = is.String(option.query) ? option.query : Object.keys(option.query).reduce((acc, key) => {\n acc[key] = (option.query[key] === null || option.query[key] === undefined) ? '' : option.query[key];\n return acc;\n }, {});\n const queryString = new URLSearchParams(query).toString();\n if (queryString) {\n if (action.includes('?')) {\n action += `&${queryString}`;\n } else {\n action += `?${queryString}`;\n }\n }\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data || option.file) {\n if (option.file || (option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data || {}).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data || {});\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n if(option.file){\n formData.append(option.filename, option.file, option.file.name)\n }\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] != null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n\n\nexport function asyncFetch(config, _fetch, api) {\n return new Promise((resolve, reject) => {\n (_fetch || fetch)({\n ...config,\n onSuccess(res) {\n let fn = (v) => v;\n const parse = parseFn(config.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(res, config.targetRule, api)).then(res => {\n resolve(res);\n });\n },\n onError(err) {\n reject(err);\n }\n })\n });\n}","import {byCtx, invoke, mergeRule, parseFn, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\nimport {asyncFetch} from './fetch';\nimport {nextTick} from 'vue';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n if (is.Undef(fields)) {\n fields = Object.keys({...h.fieldCtx, ...h.nameCtx});\n } else if (!Array.isArray(fields)) {\n fields = [fields];\n }\n fields.forEach(field => {\n const ctxs = h.fieldCtx[field] || h.nameCtx[field];\n ctxs && ctxs.forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get isScope() {\n return h.vm.props.subForm === false;\n },\n get isPreview() {\n return h.preview;\n },\n get config() {\n return h.options\n },\n set config(val) {\n h.fc.options.value = val;\n },\n get options() {\n return h.options\n },\n set options(val) {\n h.fc.options.value = val;\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.setupState.parent && h.vm.setupState.parent.setupState.fapi\n },\n get top() {\n if (api.parent) {\n return api.parent.top;\n }\n return api;\n },\n get scope() {\n let parent = h.vm;\n while (parent && parent.setupState.fapi) {\n if (!parent.props.subForm) {\n return parent.setupState.fapi;\n } else {\n parent = parent.setupState.parent;\n }\n }\n return api.top;\n },\n get children() {\n return allSubForm();\n },\n get siblings() {\n const inject = h.vm.setupState.getGroupInject();\n if (inject) {\n const subForm = inject.getSubForm();\n if (Array.isArray(subForm)) {\n return [...subForm];\n }\n }\n return undefined;\n },\n get index() {\n const siblings = api.siblings;\n if (siblings) {\n const idx = siblings.indexOf(api);\n return idx > -1 ? idx : undefined;\n }\n return undefined;\n },\n get formulas() {\n return {...h.fc.formulas};\n },\n formData(fields) {\n if (fields == null || typeof fields === 'boolean') {\n const data = {};\n Object.keys(h.form).forEach(k => {\n if (fields === true || h.ignoreFields.indexOf(k) === -1) {\n data[k] = copy(h.form[k]);\n }\n });\n return data;\n } else {\n return tidyFields(fields).reduce((initial, id) => {\n initial[id] = api.getValue(id);\n return initial;\n }, {});\n }\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) {\n if (h.options.appendValue !== false && hasProperty(h.appendData, field)) {\n return copy(h.appendData[field]);\n }\n return undefined;\n }\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n h.appendData = {};\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n }, true)\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n }, true)\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.getPending('children', ctx.rule.children);\n if (!Array.isArray(rules)) return;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n h.vm.setupState.isShow = !hide;\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n findType(type, origin) {\n let rule = undefined;\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rule = origin ? ctx.origin : ctx.rule;\n }\n });\n return rule;\n },\n findTypes(type, origin) {\n let rules = [];\n Object.keys(h.ctxs).forEach(k => {\n const ctx = h.ctxs[k];\n if (ctx.rule.type === type) {\n rules.push(origin ? ctx.origin : ctx.rule);\n }\n });\n return rules;\n },\n getRenderRule: (id) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return ctx.prop;\n }\n },\n getRefRule: (id) => {\n const ctxs = h.getCtxs(id);\n if (ctxs) {\n const rules = ctxs.map(ctx => {\n return ctx.rule;\n })\n return rules.length === 1 ? rules[0] : rules;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n ctx.rule.effect = {};\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\n });\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n api.clearValidateState(fields);\n });\n });\n });\n if (fields == null) {\n is.Function(h.options.onReset) && invoke(() => h.options.onReset(api));\n h.vm.emit('reset', api);\n }\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name} 方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.refs[ctx.ref];\n },\n closeModal: (id) => {\n h.bus.$emit('fc:closeModal:' + id);\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n getChildrenRuleList(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n const rule = ctx ? ctx.rule : (flag ? id : api.getRule(id));\n if (!rule) {\n return [];\n }\n const rules = [];\n const findRules = children => {\n children && children.forEach(item => {\n if (typeof item !== 'object') {\n return;\n }\n if (item.field) {\n rules.push(item);\n }\n rules.push(...api.getChildrenRuleList(item));\n });\n }\n findRules(ctx ? ctx.loadChildrenPending() : rule.children);\n return rules;\n },\n getParentRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx.parent.rule;\n },\n getParentSubRule(id) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n if (ctx) {\n const group = ctx.getParentGroup();\n if (group) {\n return group.rule;\n }\n }\n },\n getChildrenFormData(id, flag) {\n const rules = api.getChildrenRuleList(id);\n return rules.reduce((formData, rule) => {\n if (rule.ignore !== true || flag === true) {\n formData[rule.field] = copy(rule.value);\n }\n return formData;\n }, {});\n },\n setChildrenFormData(id, formData, cover) {\n const rules = api.getChildrenRuleList(id);\n h.deferSyncValue(() => {\n rules.forEach(rule => {\n if (hasProperty(formData, rule.field)) {\n rule.value = formData[rule.field];\n } else if (cover) {\n rule.value = undefined;\n }\n });\n });\n },\n getGlobalEvent(name) {\n let event = api.options.globalEvent[name];\n if (event) {\n if (typeof event === 'object') {\n event = event.handle;\n }\n return parseFn(event);\n }\n return undefined;\n },\n getGlobalData(name) {\n return new Promise((resolve, inject) => {\n let config = api.options.globalData[name];\n if (!config) {\n resolve(h.fc.loadData[name]);\n } else if (config.type === 'fetch') {\n api.fetch(config).then(res => {\n resolve(res);\n }).catch(inject);\n } else {\n resolve(config.data);\n }\n });\n },\n emitGlobalEvent(name, ...args) {\n const fn = api.getGlobalEvent(name);\n if(fn) {\n const data = h.getInjectData({}, undefined);\n data.args = [...args];\n args.unshift(data);\n return fn.apply(null, args);\n }\n },\n setGlobalData(name, value) {\n api.setData('$globalData.' + name, value);\n },\n setGlobalVar(name, value) {\n api.setData('$var.' + name, value);\n },\n renderRule(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createRuleVnode(ctx, onInput, force) : undefined;\n },\n renderChildren(id, onInput, force) {\n const flag = typeof id === 'object';\n const ctx = flag ? byCtx(id) : h.getCtx(id);\n return ctx ? h.$render.createChildrenVnodes(ctx, onInput, force) : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n deferSyncValue(fn, sync) {\n h.deferSyncValue(fn, sync);\n },\n emit(name, ...args) {\n if (h.vm.emitsOptions && !h.vm.emitsOptions[name]) {\n h.vm.emitsOptions[name] = null;\n }\n h.vm.emit(name, ...args);\n },\n bus: h.bus,\n getCurrentFormRule() {\n return h.vm.setupState.getGroupInject()?.rule;\n },\n fetch(opt) {\n return new Promise((resolve, reject) => {\n opt = deepCopy(opt);\n opt = h.loadFetchVar(opt);\n const fail = (e) => {\n invoke(() => opt.onError && opt.onError(e));\n reject(e);\n }\n h.beforeFetch(opt).then(() => {\n return asyncFetch(opt, h.fc.create.fetch, api).then((res) => {\n invoke(() => opt.onSuccess && opt.onSuccess(res));\n resolve(res);\n }).catch((e) => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n });\n },\n watchFetch(opt, callback, error, beforeFetch) {\n return h.fc.watchLoadData((get, change) => {\n let _opt = deepCopy(opt);\n _opt = h.loadFetchVar(_opt, get);\n if (beforeFetch && beforeFetch(_opt, change) === false) {\n return;\n }\n const fail = (e) => {\n invoke(() => _opt.onError && _opt.onError(e));\n error && error(e);\n }\n h.beforeFetch(_opt).then(() => {\n return asyncFetch(_opt, h.fc.create.fetch, api).then(res => {\n invoke(() => _opt.onSuccess && _opt.onSuccess(res));\n callback && callback(res, change);\n }).catch(e => {\n fail(e);\n });\n }).catch(e => {\n fail(e);\n });\n }, opt.wait == null ? 1000 : opt.wait);\n },\n getData(id, def) {\n if (h.fc.get) {\n return h.fc.get(id, def);\n } else {\n return h.fc.getLoadData(id, def);\n }\n },\n watchData(fn) {\n return h.fc.watchLoadData((get, change) => {\n invoke(() => fn(get, change));\n })\n },\n setData(id, data, isGlobal) {\n return h.fc.setData(id, data, isGlobal);\n },\n refreshData(id) {\n return h.fc.refreshData(id);\n },\n t(id, params) {\n return h.fc.t(id, params);\n },\n getLocale() {\n return h.fc.getLocale();\n },\n helper: {\n tidyFields, props\n }\n };\n\n ['on', 'once', 'off'].forEach(n => {\n api[n] = function (...args) {\n h.bus[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nlet id = 1;\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle),\n force: false,\n tmpInput: null,\n id: id++\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (ctx.rule.cache) {\n return;\n }\n if (!this.cache[ctx.id]) {\n if (ctx.parent) {\n this.clearCache(ctx.parent);\n }\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n if (this.cache[ctx.id].parent) {\n this.clearCache(this.cache[ctx.id].parent);\n }\n this.cache[ctx.id] = null;\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend, {copy} from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, makeSlotBag, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {deepSet, toLine} from '@form-create/utils';\nimport {computed, nextTick} from 'vue';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.cacheConfig = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.slots['field-' + toLine(ctx.rule.field)] || vm.slots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.slots['type-' + toLine(ctx.type)] || vm.slots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n }\n return _fn(this.vm);\n },\n render() {\n // console.warn('renderrrrr', this.id);\n if (!this.vm.setupState.isShow) {\n return;\n }\n this.$manager.beforeRender();\n const slotBag = makeSlotBag();\n this.sort.forEach((k) => {\n this.renderSlot(slotBag, this.$handle.ctxs[k]);\n });\n\n return this.$manager.render(slotBag);\n },\n renderSlot(slotBag, ctx, parent) {\n if (this.isFragment(ctx)) {\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n const slots = this.renderChildren(ctx.loadChildrenPending(), ctx);\n const def = slots.default;\n def && slotBag.setSlot(ctx.rule.slot, () => def());\n delete slots.default;\n slotBag.mergeBag(slots);\n } else {\n slotBag.setSlot(ctx.rule.slot, this.renderCtx(ctx, parent));\n }\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n if (!this.cacheConfig[ctx.trueType]) {\n this.cacheConfig[ctx.trueType] = computed(() => {\n const g = this.$handle.options.global;\n return mergeRule({}, [g['*'] || g.default || {}, g[ctx.originType] || g[ctx.type] || g[ctx.type] || {}]);\n });\n }\n ctx.prop = mergeRule({}, [this.cacheConfig[ctx.trueType].value, ctx.prop]);\n },\n setOptions(ctx) {\n const opt = ctx.loadPending({key: 'options', origin: ctx.prop.options, def: []});\n ctx.prop.options = opt;\n if (ctx.prop.optionsTo && opt) {\n deepSet(ctx.prop, ctx.prop.optionsTo, opt);\n }\n },\n deepSet(ctx) {\n const deep = ctx.prop.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n try {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if (this.force || (!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n ctx.initProp();\n this.mergeGlobal(ctx);\n ctx.initNone();\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(prop.preview != null ? prop.preview : this.$handle.preview);\n prop.props.formCreateInject = this.injectProp(ctx);\n let cacheFlag = prop.cache !== false;\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n vn = (...slotValue) => {\n const inject = {\n rule,\n prop,\n preview,\n api: this.$handle.api,\n model: prop.model || {},\n slotValue\n }\n if (slotValue.length && rule.slotUpdate) {\n invoke(() => rule.slotUpdate(inject))\n }\n let children = {};\n const _load = ctx.loadChildrenPending();\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(_load, ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(_load, ctx);\n }\n Object.keys(prop.renderSlots || {}).forEach(key => {\n children[key] = (...args) => {\n if (is.Function(prop.renderSlots[key])) {\n return invoke(() => prop.renderSlots[key](...args));\n }\n const rule = this.parseSide(prop.renderSlots[key], ctx);\n return this.renderRule(rule);\n }\n })\n const slot = this.getTypeSlot(ctx);\n let _vn;\n if (slot) {\n inject.children = children;\n _vn = slot(inject)\n } else {\n _vn = preview ? ctx.parser.preview(copy(children), ctx) : ctx.parser.render(copy(children), ctx);\n }\n _vn = this.renderSides(_vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n this.fc.targetFormDriver('updateWrap', ctx)\n _vn = this.$manager.makeWrap(ctx, _vn);\n }\n if (ctx.none) {\n if (Array.isArray(_vn)) {\n _vn = _vn.map(v => {\n if (!v || !v.__v_isVNode) {\n return v;\n }\n return this.none(v);\n });\n } else {\n _vn = this.none(_vn);\n }\n }\n cacheFlag && this.setCache(ctx, () => {\n return this.stable(_vn);\n }, parent);\n return _vn\n };\n this.setCache(ctx, vn, parent);\n }\n return (...args) => {\n const cache = this.getCache(ctx);\n if (cache) {\n return cache(...args);\n } else if (this.cache[ctx.id]) {\n return;\n }\n const _vn = this.renderCtx(ctx, ctx.parent);\n if (_vn) {\n return _vn();\n }\n };\n } catch (e) {\n console.error(e);\n return;\n }\n },\n none(vn) {\n if (vn) {\n vn.props.class = this.mergeClass(vn.props.class, 'fc-none')\n return vn;\n }\n },\n mergeClass(target, value) {\n if (Array.isArray(target)) {\n target.push(value);\n } else {\n return target ? [target, value] : value;\n }\n return target;\n },\n stable(vn) {\n const list = Array.isArray(vn) ? vn : [vn];\n list.forEach(v => {\n if (v && v.__v_isVNode && v.children && typeof v.children === 'object') {\n v.children.$stable = true;\n this.stable(v.children);\n }\n });\n return vn;\n },\n getModelField(ctx) {\n return ctx.prop.modelField || ctx.parser.modelField || this.fc.modelFields[this.vNode.aliasMap[ctx.type]] || this.fc.modelFields[ctx.type] || this.fc.modelFields[ctx.originType] || 'modelValue';\n },\n isFragment(ctx) {\n return ctx.type === 'fragment' || ctx.type === 'template';\n },\n injectProp(ctx) {\n const state = this.vm.setupState;\n if (!state.ctxInject[ctx.id]) {\n state.ctxInject[ctx.id] = {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n slots: () => {\n return this.vm.setupState.top.slots;\n },\n getWrap: () => {\n return this.vm.refs[ctx.wrapRef];\n },\n options: [],\n children: [],\n preview: false,\n id: ctx.id,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n t: (...args) => {\n return this.$handle.api.t(...args);\n },\n updateValue: (data) => {\n this.$handle.onUpdateValue(ctx, data);\n }\n }\n }\n const inject = state.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.loadChildrenPending()\n });\n return inject;\n },\n ctxProp(ctx) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx);\n ctx.parser.mergeProp(ctx);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n vnodeMounted: (vn) => {\n vn.el.__rule__ = ctx.rule;\n this.onMounted(ctx, vn.el);\n },\n 'fc.updateValue': (data) => {\n this.$handle.onUpdateValue(ctx, data);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n }\n }\n ]\n\n if (ctx.input) {\n const tmpInput = this.tmpInput;\n if (this.vm.props.disabled === true) {\n ctx.prop.props.disabled = true;\n }\n const field = this.getModelField(ctx);\n const model = {\n callback: (value) => {\n tmpInput && tmpInput(ctx.field, value, ctx.rule);\n this.onInput(ctx, value);\n },\n modelField: field,\n value: this.$handle.getFormData(ctx)\n };\n props.push({\n on: {\n [`update:${field}`]: model.callback,\n ...(ctx.prop.modelEmit ? {\n [ctx.prop.modelEmit]: () => this.onEmitInput(ctx)\n } : {}),\n },\n props: {\n [field]: model.value\n }\n })\n ctx.prop.model = model;\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx, el) {\n ctx.el = this.vm.refs[ctx.ref] || el;\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n this.$handle.targetHook(ctx, 'mounted');\n },\n onInput(ctx, value) {\n if (ctx.prop.modelEmit) {\n this.$handle.onBaseInput(ctx, value);\n return;\n }\n this.$handle.onInput(ctx, value);\n },\n onEmitInput(ctx) {\n this.$handle.setValue(ctx, ctx.parser.toValue(ctx.modelValue, ctx), ctx.modelValue);\n },\n renderChildren(children, ctx) {\n if (!is.trueArray(children)) return {};\n const slotBag = makeSlotBag()\n children.map(child => {\n if (!child) return;\n if (is.String(child) || is.Number(child)) return slotBag.setSlot(null, `${child}`);\n if (child.__fc__) {\n return this.renderSlot(slotBag, child.__fc__, ctx);\n }\n if (child.type) {\n nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n return slotBag.getSlots();\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (prop.component) {\n if (typeof prop.component === 'string') {\n return this.vNode.make(prop.component, prop, children);\n } else {\n return this.vNode.makeComponent(prop.component, prop, children);\n }\n }\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(prop.type), prop, children);\n },\n createChildrenVnodes(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const res = this.renderChildren(ctx.rule.children, ctx);\n this.force = false;\n this.tmpInput = null;\n return res;\n },\n createRuleVnode(ctx, onInput, force) {\n this.force = force !== false;\n this.tmpInput = onInput;\n const slotBag = makeSlotBag();\n this.renderSlot(slotBag, ctx, ctx.parent);\n this.force = false;\n this.tmpInput = null;\n return slotBag.getSlots();\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule) || is.Number(rule)) return `${rule}`;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n\n const slotBag = makeSlotBag();\n if (is.trueArray(rule.children)) {\n rule.children.forEach(v => {\n v && slotBag.setSlot(v?.slot, () => this.renderRule(v));\n });\n }\n const props = {...rule};\n delete props.type;\n delete props.is;\n return this.vNode.make(type, props, slotBag.mergeBag(children).getSlots());\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.bus.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.bus.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, invoke, mergeRule} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport {markRaw, reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n if(ctx.rule !== ctx.origin) {\n Object.defineProperties(ctx.rule, {\n __fc__: enumerable(markRaw(ctx), true)\n });\n }\n}\n\nexport default function RuleContext(handle, rule, defaultValue) {\n const id = unique();\n const isInput = !!rule.field;\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n pending: {},\n none: false,\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n children: [],\n parent: null,\n group: rule.subRule ? this : null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n refRule: {},\n input: isInput,\n el: undefined,\n exportEl: undefined,\n defaultValue: isInput ? deepCopy(defaultValue) : undefined,\n field: rule.field || undefined\n })\n\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n getParentGroup() {\n let ctx = this.parent;\n while (ctx) {\n if (ctx.group) {\n return ctx;\n }\n ctx = ctx.parent;\n }\n },\n loadChildrenPending() {\n const children = this.rule.children || [];\n if (Array.isArray(children))\n return children;\n return this.loadPending({\n key: 'children', origin: children, def: [],\n onLoad: (data) => {\n this.$handle && this.$handle.loadChildren(data, this);\n }, onUpdate: (value, oldValue) => {\n if (this.$handle) {\n value === oldValue ? this.$handle.loadChildren(value, this) : this.$handle.updateChildren(this, value, oldValue);\n }\n }, onReload: (value) => {\n if (this.$handle) {\n this.$handle.updateChildren(this, [], value);\n } else {\n delete this.pending.children;\n }\n }\n });\n },\n loadPending(config) {\n const {key, origin, def, onLoad, onReload, onUpdate} = config;\n\n if (this.pending[key] && this.pending[key].origin === origin) {\n return this.getPending(key, def);\n }\n\n delete this.pending[key];\n\n let value = origin;\n if (is.Function(origin)) {\n let source = invoke(() => origin({\n rule: this.rule, api: this.$api, update: (data) => {\n const value = data || def;\n const oldValue = this.getPending(key, def);\n this.setPending(key, origin, value);\n onUpdate && onUpdate(value, oldValue);\n }, reload: () => {\n const oldValue = this.getPending(key, def);\n delete this.pending[key];\n onReload && onReload(oldValue);\n this.$api && this.$api.sync(this.rule);\n }\n }));\n if (source && is.Function(source.then)) {\n source.then((data) => {\n const value = data || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n this.$api && this.$api.sync(this.rule);\n }).catch(e => {\n console.error(e);\n })\n value = def;\n this.setPending(key, origin, value);\n } else {\n value = source || def;\n this.setPending(key, origin, value);\n onLoad && onLoad(value);\n }\n }\n return value;\n },\n getPending(key, def) {\n return (this.pending[key] && this.pending[key].value) || def;\n },\n setPending(key, origin, value) {\n this.pending[key] = {\n origin,\n value: reactive(value)\n };\n },\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n this.trueType = this.$handle.getType(this.originType);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n delete rule.validate;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n this.prop.validate = [...this.refRule?.__$validate?.value || [], ...this.prop.validate || []]\n },\n initNone() {\n this.none = !(is.Undef(this.prop.display) || !!this.prop.display)\n },\n hasHidden() {\n return (!!this.rule.hidden) || (this.parent ? this.parent.hasHidden() : false);\n },\n injectValidate() {\n return this.prop.validate;\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n Object.keys(this.refRule).forEach(key => {\n if (key.indexOf('__$') !== 0) {\n delete this.refRule[key];\n }\n })\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);\n }\n extend(this, {\n deleted: true,\n computed: {},\n parent: null,\n children: [],\n cacheConfig: null,\n none: false,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n this.updateType();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, condition, copyRule, enumerable, getRule, invoke, parseFn, parseJson, toJson} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {nextTick} from 'vue';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[(typeof prop === 'object' && prop.event) || `update:${prop}`] = (val) => {\n rule.props[(typeof prop === 'object' && prop.prop) || prop] = val;\n this.vm.emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n this.syncForm();\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm.setupState.renderRule();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.syncForm();\n this.bus.$emit('load-end');\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n const ctxs = rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.loadChildrenPending(), _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.fc.targetFormDriver('loadRule', {rule, api: this.api}, this.fc);\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n if (ctx.deleted) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n } else {\n if (!ctx.check(this)) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : parseJson(toJson(_rule));\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, defaultValue);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n }\n this.bindParser(ctx);\n this.appendValue(ctx.rule);\n if (ctx.parent && ctx.parent !== parent) {\n this.rmSubRuleData(ctx);\n }\n }\n this.parseEmit(ctx);\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n if (!isCopy && !isInit) {\n this.effect(ctx, 'load');\n this.targetHook(ctx, 'load');\n }\n\n this.effect(ctx, 'created');\n\n const _load = ctx.loadChildrenPending()\n ctx.parser.loadChildren === false || loadChildren(_load, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n // if (ctx.input)\n // Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n }).filter(v => !!v);\n if (parent) {\n parent.children = ctxs;\n }\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || function (val) {\n return ((condition[control.condition || '=='] || condition['=='])(val, control.value));\n };\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : (ctrl && ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl) >>> 0, 1));\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled' || method === 'enabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display' || method === 'show') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if (!valid) {\n this.api.clearValidateState(rule);\n }\n } else if (method === 'if') {\n this.api.hidden(!valid, rule);\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n if (hideLst.length) {\n if (this.loading) {\n hideLst.length && this.bus.$once('load-end', () => {\n hideLst.forEach(v => v());\n });\n } else {\n hideLst.length && nextTick(() => {\n hideLst.forEach(v => v());\n });\n }\n }\n this.vm.emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.deferSyncValue(() => {\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n this.bus.$emit('reloading', this.api);\n });\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.bus.$emit('update', this.api);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm.setupState.refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport {nextTick, reactive, toRef} from 'vue';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.rule.value = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.emit('change', ctx.field, value, ctx.origin, this.api, setFlag || false);\n this.effect(ctx, 'value');\n this.targetHook(ctx, 'value', {value});\n this.emitEvent('change', ctx.field, value, {\n rule: ctx.origin,\n api: this.api,\n setFlag: setFlag || false\n })\n if (setFlag) {\n nextTick(() => {\n nextTick(() => {\n nextTick(() => {\n this.api.clearValidateState(ctx.id);\n });\n });\n });\n }\n this.$manager.fieldChange(ctx, value, formValue, setFlag);\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, value))) {\n this.setValue(ctx, val, value);\n }\n },\n onUpdateValue(ctx, data) {\n this.deferSyncValue(() => {\n const group = ctx.getParentGroup();\n const subForm = group ? this.subRuleData[group.id] : null;\n const subData = {};\n Object.keys(data || {}).forEach(k => {\n if (subForm && hasProperty(subForm, k)) {\n subData[k] = data[k];\n } else if (hasProperty(this.api.form, k)) {\n this.api.form[k] = data[k];\n } else if (this.api.top !== this.api && hasProperty(this.api.top.form, k)) {\n this.api.top.form[k] = data[k];\n }\n });\n if (Object.keys(subData).length) {\n this.api.setChildrenFormData(group.rule, subData);\n }\n })\n },\n onBaseInput(ctx, value) {\n this.setFormData(ctx, value);\n ctx.modelValue = value;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n },\n setFormData(ctx, value) {\n ctx.modelValue = value;\n const group = ctx.getParentGroup();\n if (group) {\n if (!this.subRuleData[group.id]) {\n this.subRuleData[group.id] = {};\n }\n this.subRuleData[group.id][ctx.field] = ctx.rule.value;\n }\n $set(this.formData, ctx.id, value);\n },\n rmSubRuleData(ctx) {\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n delete this.subRuleData[group.id][ctx.field];\n }\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n syncForm() {\n const data = reactive({});\n const fields = this.fields();\n const ignoreFields = [];\n if (this.options.appendValue !== false) {\n Object.keys(this.appendData).reduce((initial, field) => {\n if (fields.indexOf(field) === -1) {\n initial[field] = toRef(this.appendData, field);\n }\n return initial;\n }, data);\n }\n fields.reduce((initial, field) => {\n let ctx = (this.fieldCtx[field] || []).filter(ctx => !this.isIgnore(ctx))[0];\n if (!ctx) {\n ctx = this.fieldCtx[field][0];\n ignoreFields.push(field);\n }\n initial[field] = toRef(ctx.rule, 'value');\n return initial;\n }, data);\n this.form = data;\n this.ignoreFields = ignoreFields;\n this.syncValue();\n },\n isIgnore(ctx) {\n return ctx.rule.ignore === true || ((ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields) && ctx.hasHidden());\n },\n appendValue(rule) {\n if ((!rule.field || !hasProperty(this.appendData, rule.field)) && (!is.Undef(rule.value) || !this.options.forceCoverValue)) {\n return;\n }\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncForm();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n const data = {};\n Object.keys(this.form).forEach(k => {\n if (this.ignoreFields.indexOf(k) === -1) {\n data[k] = this.form[k];\n }\n });\n this.vm.setupState.updateValue(data);\n },\n isChange(ctx, value) {\n return JSON.stringify(this.getFormData(ctx), strFn) !== JSON.stringify(value, strFn);\n },\n isQuote(ctx, value) {\n return (value instanceof Function || is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin, field) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {\n origin: origin || 'change',\n linkField: field\n }));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val, origin, field) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.bus.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin, field);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value, 'link', field);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultRender){\n return ctx.$handle.fc.renderDriver.defaultRender(ctx, children);\n }\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultPreview){\n return ctx.$handle.fc.renderDriver.defaultPreview(ctx, children);\n }\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {condition, deepGet, invoke, convertFieldToConditions} from '../frame/util';\nimport {computed, nextTick, toRef, watch} from 'vue';\nimport {attrs} from '../frame/attrs';\nimport {deepSet} from '@form-create/utils';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'slotUpdate', 'computed', 'component', 'cache'];\nconst oldValueTag = Symbol('oldValue');\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.emit('change', ctx.field, rule.value, ctx.origin, this.api, false, true);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n const renderDriver = this.fc.renderDriver;\n if (renderDriver) {\n const parsers = renderDriver.parsers || {};\n const parser = parsers[ctx.originType] || parsers[toCase(ctx.type)] || parsers[ctx.trueType];\n if (parser) {\n return parser;\n }\n }\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const all = attrs();\n all.filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const ref = toRef(ctx.rule, key);\n const flag = key === 'children';\n ctx.refRule[key] = ref;\n ctx.watch.push(watch(flag ? () => is.Function(ref.value) ? ref.value : [...(ref.value || [])] : () => ref.value, (_, o) => {\n let n = ref.value;\n if (this.isBreakWatch()) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n nextTick(() => {\n this.targetHook(ctx, 'watch', {key, oldValue: o, newValue: n});\n });\n if (key === 'hidden' && Boolean(n) !== Boolean(o)) {\n this.$render.clearCacheAll();\n nextTick(() => {\n this.targetHook(ctx, 'hidden', {value: n});\n });\n }\n if ((key === 'ignore' && ctx.input) || (key === 'hidden' && (ctx.rule.ignore === 'hidden' || this.options.ignoreHiddenFields))) {\n this.syncForm();\n } else if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (key === 'emit') {\n this.parseEmit(ctx);\n } else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (flag) {\n if (is.Function(o)) {\n o = ctx.getPending('children', []);\n }\n if (is.Function(n)) {\n n = ctx.loadChildrenPending();\n }\n this.updateChildren(ctx, n, o);\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n ctx.refRule['__$title'] = computed(() => {\n let title = (typeof ctx.rule.title === 'object' ? ctx.rule.title.title : ctx.rule.title) || '';\n if (title) {\n const match = title.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n title = this.api.t(match[1]);\n }\n }\n return title;\n });\n ctx.refRule['__$info'] = computed(() => {\n let info = (typeof ctx.rule.info === 'object' ? ctx.rule.info.info : ctx.rule.info) || '';\n if (info) {\n const match = info.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n info = this.api.t(match[1]);\n }\n }\n return info;\n });\n ctx.refRule['__$validate'] = computed(() => {\n const t = (msg) => {\n const match = msg.match(/^\\{\\{\\s*\\$t\\.(.+)\\s*\\}\\}$/);\n if (match) {\n return this.api.t(match[1], {title: ctx.refRule?.__$title?.value});\n }\n return msg;\n }\n return toArray(ctx.rule.validate).map(item => {\n const temp = {...item};\n if (temp.message) {\n temp.message = t(temp.message);\n }\n if (is.Function(temp.validator)) {\n const that = ctx;\n temp.validator = function (...args) {\n return item.validator.call({\n that: this,\n id: that.id,\n field: that.field,\n rule: that.rule,\n api: that.$handle.api,\n }, ...args)\n }\n }\n if (temp.adapter) {\n if (typeof temp.error === 'object') {\n const msg = {...temp.error};\n Object.keys(msg).forEach((key) => {\n msg[key] = t(msg[key]);\n })\n temp.error = msg;\n }\n return this.adapterValidate(temp, ctx);\n }\n return temp;\n });\n });\n if (ctx.input) {\n const val = toRef(ctx.rule, 'value');\n ctx.watch.push(watch(() => val.value, () => {\n let formValue = ctx.parser.toFormValue(val.value, ctx);\n if (this.isChange(ctx, formValue)) {\n this.setValue(ctx, val.value, formValue, true);\n }\n }));\n }\n this.bus.$once('load-end', () => {\n let computedRule = ctx.rule.computed;\n if (!computedRule) {\n return;\n }\n if (typeof computedRule !== 'object') {\n computedRule = {value: computedRule}\n }\n Object.keys(computedRule).forEach(k => {\n const computedValue = computed(() => {\n const item = computedRule[k];\n if (!item) return undefined;\n const value = this.compute(ctx, item);\n if ((item.linkage || item.linkageVariable) && value === oldValueTag) {\n return oldValueTag;\n }\n return value;\n });\n const callback = (n) => {\n if (k === 'value') {\n this.onInput(ctx, n);\n } else if (k[0] === '$') {\n this.api.setEffect(ctx.id, k, n);\n } else {\n deepSet(ctx.rule, k, n);\n }\n };\n if (k === 'value' ? [undefined, null, ''].indexOf(ctx.rule.value) > -1 : computedValue.value !== deepGet(ctx.rule, k)) {\n callback(computedValue.value);\n }\n ctx.watch.push(watch(computedValue, (n) => {\n if(n === oldValueTag) {\n return ;\n }\n setTimeout(() => {\n callback(n);\n });\n }, {deep: true}));\n });\n\n });\n this.watchEffect(ctx);\n },\n adapterValidate(validate, ctx) {\n const validator = (value, callback) => {\n const before = validate.beforeValidate && invoke(() => validate.beforeValidate({\n value,\n api: this.api,\n validate,\n rule: ctx.rule\n }));\n if (before === false) {\n callback();\n } else {\n const key = this.validator(ctx, value, validate);\n if (!key) {\n if (validate.validator) {\n const res = validate.validator && invoke(() => validate.validator(value, callback));\n if (res && is.Function(res.then)) {\n res.then(() => callback()).catch((e) => callback(e));\n }\n } else {\n callback();\n }\n } else {\n let message = '';\n if (typeof validate.error === 'object') {\n message = validate.error[key] || validate.error.default;\n }\n if (!message && typeof validate.message === 'string') {\n message = validate.message;\n }\n if (!message) {\n message = this.getValidateMessage(ctx, {key, rule: validate[key]});\n }\n callback(message);\n }\n }\n }\n return this.$manager.adapterValidate({\n required: validate.required,\n message: validate.message,\n trigger: validate.trigger,\n }, validator);\n },\n getValidateMessage(ctx, invalid) {\n const formatRule = Array.isArray(invalid.rule) ? invalid.rule.join(',') : ('' + invalid.rule);\n return this.api.t(invalid.key === 'required' ? invalid.key : ('validate.' + invalid.key), {\n [invalid.key]: formatRule,\n title: ctx.refRule?.__$title?.value\n });\n },\n validator(ctx, value, validate) {\n const isEmpty = is.empty(value);\n if (isEmpty) {\n if (validate.required) {\n return 'required'\n }\n return;\n }\n for (const [key, rule] of Object.entries(validate)) {\n switch (key) {\n case 'len':\n case 'maxLen':\n case 'minLen':\n const check = (val) => {\n if (key === 'len') {\n return val === rule;\n } else if (key === 'maxLen') {\n return val <= rule;\n } else {\n return val >= rule;\n }\n }\n if (Array.isArray(value)) {\n if (!check(value.length)) {\n return key;\n }\n } else if (typeof value === 'object') {\n return key;\n } else if (!check(('' + value).length)) {\n return key;\n }\n break;\n case 'pattern':\n const reg = typeof rule === 'string' ? new RegExp(rule) : rule;\n if (!reg.test('' + value)) {\n return key;\n }\n break;\n case 'uppercase':\n if (rule && (typeof value !== 'string' || !/^[A-Z]*$/.test(value))) {\n return key;\n }\n break;\n case 'lowercase':\n if (rule && (typeof value !== 'string' || !/^[a-z]*$/.test(value))) {\n return key;\n }\n break;\n case 'min':\n case 'max':\n case 'positive':\n case 'negative':\n case 'integer':\n case 'number':\n const num = Number(value);\n if (Number.isNaN(num)) {\n return key;\n }\n if (key === 'min' && num < rule) {\n return key;\n }\n if (key === 'max' && num > rule) {\n return key;\n }\n if (key === 'positive' && num <= 0) {\n return key;\n }\n if (key === 'negative' && num >= 0) {\n return key;\n }\n if (key === 'integer' && !Number.isInteger(num)) {\n return key;\n }\n break;\n case 'equal':\n if (value !== rule) {\n return key;\n }\n break;\n case 'enum':\n if (Array.isArray(rule) && !rule.includes(value)) {\n return key;\n }\n break;\n case 'hasKeys':\n if (typeof value !== 'object' || Array.isArray(rule) && rule.some(key => !(key in value))) {\n return key;\n }\n break;\n case 'email':\n const regexEmail = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n if (!regexEmail.test('' + value)) {\n return key;\n }\n break;\n case 'url':\n const regexUrl = new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i'\n );\n if (!regexUrl.test('' + value)) {\n return key;\n }\n break;\n case 'ip':\n const regexIp =\n /^(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}$/;\n if (!regexIp.test('' + value)) {\n return key;\n }\n break;\n case 'phone':\n const regexPhone = /^(?:(?:\\+|00)86)?1[3-9]\\d{9}$/;\n if (!regexPhone.test('' + value)) {\n return key;\n }\n break;\n case 'computed':\n if (!this.compute(ctx, rule)) {\n return key;\n }\n break;\n default:\n break;\n }\n }\n },\n compute(ctx, item) {\n let fn;\n if (typeof item === 'object') {\n const group = ctx.getParentGroup();\n const checkCondition = (item) => {\n item = Array.isArray(item) ? {mode: 'AND', group: item} : item;\n if (!is.trueArray(item.group)) {\n return true;\n }\n const or = item.mode === 'OR';\n let valid = true;\n for (let i = 0; i < item.group.length; i++) {\n const one = item.group[i];\n let flag;\n let field = null;\n let variableVal = null;\n if (one.variable) {\n variableVal = this.fc.getLoadData(one.variable);\n } else if (one.field) {\n field = convertFieldToConditions(one.field || '');\n } else if (!one.mode) {\n return true;\n }\n let compare = one.compare;\n if (compare) {\n compare = convertFieldToConditions(compare || '');\n }\n if (one.mode) {\n flag = checkCondition(one);\n } else if (!condition[one.condition]) {\n flag = false;\n } else if (is.Function(one.handler)) {\n flag = invoke(() => one.handler(this.api, ctx.rule));\n } else {\n flag = invoke(() => (new Function('$condition', '$variableVal', '$val', '$form', '$scope', '$group', '$rule', `with($form){with($scope){with(this){with($group){ return $condition['${one.condition}'](${one.variable ? '$variableVal' : field}, ${compare ? compare : '$val'}); }}}}`)).call(this.api.form, condition, variableVal, one.value, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule));\n }\n if (or && flag) {\n return true;\n }\n if (!or) {\n valid = valid && flag;\n }\n }\n return or ? false : valid;\n }\n let val = checkCondition(item);\n val = item.invert === true ? !val : val;\n if (item.linkage) {\n return val ? invoke(() => this.computeValue(item.linkage, ctx, group), undefined) : oldValueTag;\n } else if(item.linkageVariable) {\n return val ? invoke(() => this.fc.getLoadData(item.linkageVariable), undefined) : oldValueTag;\n }\n return val;\n } else if (is.Function(item)) {\n fn = () => item(this.api.form, this.api, ctx.rule);\n } else {\n const group = ctx.getParentGroup();\n fn = () => this.computeValue(item, ctx, group);\n }\n return invoke(fn, undefined);\n },\n computeValue(str, ctx, group) {\n const that = this;\n const formulas = Object.keys(this.fc.formulas).reduce((obj, k) => {\n obj[k] = function (...args) {\n return that.fc.formulas[k].call({\n that: this,\n rule: ctx.rule,\n api: that.api,\n fc: that.fc\n }, ...args);\n }\n return obj;\n }, {})\n return invoke(() => (new Function('$formulas', '$form', '$scope', '$group', '$rule', '$api', `with($form){with($scope){with(this){with($group){with($formulas){ return ${str} }}}}}`)).call(this.api.form, formulas, this.api.top.form, this.api.top === this.api.scope ? {} : this.api.scope.form, group ? (this.subRuleData[group.id] || {}) : {}, ctx.rule, this.api), undefined);\n },\n updateChildren(ctx, n, o) {\n this.deferSyncValue(() => {\n o && o.forEach((child) => {\n if ((n || []).indexOf(child) === -1 && child && !is.String(child) && child.__fc__ && child.__fc__.parent === ctx) {\n this.rmCtx(child.__fc__);\n }\n });\n if (is.trueArray(n)) {\n this.loadChildren(n, ctx);\n this.bus.$emit('update', this.api);\n }\n });\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n\n $del(this.ctxs, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(this.vm.setupState.ctxInject, id);\n const group = ctx.getParentGroup();\n if (group && this.subRuleData[group.id]) {\n $del(this.subRuleData[group.id], field);\n }\n if (ctx.group) {\n $del(this.subRuleData, id);\n }\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n const children = ctx.getPending('children', ctx.rule.children);\n if (is.trueArray(children)) {\n children.forEach(h => h && h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm.setupState.renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n this.targetHook(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.emit('remove-field', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.emit('remove-rule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy, invoke} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\nimport {reactive} from 'vue';\nimport is from '@form-create/utils/lib/type';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\n\nexport default function Handler(fc) {\n funcProxy(this, {\n options() {\n return fc.options.value || {};\n },\n bus() {\n return fc.bus;\n },\n preview() {\n if (fc.vm.props.preview != null) {\n return fc.vm.props.preview;\n } else if (fc.vm.setupState.parent && fc.vm.setupState.parent.props.preview != null) {\n return fc.vm.setupState.parent.props.preview;\n }\n return fc.options.value.preview || false;\n }\n })\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: reactive({}),\n subRuleData: reactive({}),\n subForm: {},\n form: reactive({}),\n appendData: {},\n ignoreFields: [],\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApiFn.reduce((api, fn) => {\n const extendApi = invoke(() => fn(api, this));\n if (extendApi && extendApi !== api) {\n extend(api, extendApi);\n }\n return api;\n }, Api(this));\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.updateAppendData();\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.lifecycle('created');\n },\n updateAppendData() {\n this.appendData = {...deepCopy(this.options.formData || {}), ...(this.fc.vm.props.modelValue || {}), ...this.appendData};\n },\n isBreakWatch() {\n return this.loading || this.noWatchFn || this.reloading;\n },\n globalBeforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const source = this.options.beforeFetch && invoke(() => this.options.beforeFetch(opt, {api: this.api}));\n if (source && is.Function(source.then)) {\n source.then(resolve).catch(reject);\n } else {\n resolve();\n }\n });\n },\n beforeFetch(opt) {\n return new Promise((resolve, reject) => {\n const res = opt && opt.beforeFetch && invoke(() => opt.beforeFetch(opt, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n }).then(() => {\n return this.globalBeforeFetch(opt);\n });\n },\n beforeSubmit(formData) {\n return new Promise((resolve, reject) => {\n const res = this.options.beforeSubmit && invoke(() => this.options.beforeSubmit(formData, {api: this.api}));\n if (res && is.Function(res.then)) {\n res.then(resolve).catch(reject);\n } else if (res === false) {\n reject();\n } else {\n resolve();\n }\n });\n }\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {deepGet, extractVar, invoke, parseFn, parseTemplateToTree} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule.emit || [];\n if (is.trueArray(emit)) {\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n let emitKey = emitPrefix || field || name;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n emitKey = eventName.prefix || emitKey;\n }\n if (emitKey) {\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n if (this.vm.emitsOptions && !this.vm.emitsOptions[fieldKey]) {\n this.vm.emitsOptions[fieldKey] = null;\n }\n this.vm.emit(fieldKey, ...arg);\n this.vm.emit('emit-event', fieldKey, ...arg);\n this.bus.$emit(fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[toCase(eventName)] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[toCase(eventName)] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n }\n\n });\n }\n ctx.computed.on = event;\n return event;\n },\n getInjectData(self, inject) {\n const $api = self.__fc__ && self.__fc__.$api;\n const vm = (self.__fc__ && self.__fc__.$handle.vm) || this.vm;\n const {option, rule} = vm.props;\n return {\n $f: $api || this.api,\n api: $api || this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n loadStrVar(str, get, group) {\n if (str && typeof str === 'string' && str.indexOf('{{') > -1 && str.indexOf('}}') > -1) {\n const tmp = str;\n const vars = extractVar(str);\n\n const getValue = (field) => {\n let flag = false;\n let val;\n if (group && field.indexOf('$form.') === 0) {\n const _split = field.split('.');\n _split.shift();\n if (hasProperty(group.value, _split[0])) {\n flag = true;\n val = get ? get({\n id: '$form.' + _split[0] + '_' + group.rule.__fc__.id,\n getValue: () => {\n return deepGet(group.value, _split);\n }\n }) : deepGet(group.value, _split);\n }\n }\n if (!flag) {\n val = get ? get(field) : this.fc.getLoadData(field)\n }\n return val;\n }\n\n const treeToVal = (tree) => {\n const fields = [];\n tree.forEach(item => {\n if (item.key) {\n fields.push(item.key);\n } else if (item.children) {\n fields.push(treeToVal(item.children));\n }\n })\n let flag = false;\n fields.forEach((field, idx) => {\n if (field != null && (field.indexOf('\\'') === 0 || field.indexOf('\"') === 0)) {\n fields[idx] = field.slice(1, -1)\n flag = true;\n }\n })\n if (fields.length === 1 && (flag || !isNaN(Number(fields[0])))) {\n return fields[0];\n }\n return getValue(fields.join('.'));\n }\n\n let lastVal;\n vars.forEach(v => {\n const split = v.split('||');\n const field = split[0].trim();\n if (field) {\n const def = (split[1] || '').trim();\n const tree = parseTemplateToTree(field);\n let val = invoke(() => treeToVal(tree));\n if ((val == null || val === '') && split.length > 1) {\n val = def;\n }\n lastVal = val;\n str = str.replaceAll(`{{${v}}}`, val == null ? '' : val);\n }\n })\n if (vars.length === 1 && tmp === `{{${vars[0]}}}`) {\n return lastVal;\n }\n }\n return str;\n },\n loadFetchVar(options, get, rule) {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n const loadVal = str => {\n return this.loadStrVar(str, get, group ? {rule, value: (this.subRuleData[group.id] || {})} : null);\n }\n\n options.action = loadVal(options.action || '');\n\n ['headers', 'data', 'query'].forEach(key => {\n if (options[key]) {\n const data = Array.isArray(options[key]) ? [] : {};\n Object.keys(options[key]).forEach(k => {\n data[loadVal(k)] = loadVal(options[key][k]);\n });\n options[key] = data;\n }\n });\n\n return options;\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.setupState.unique > 0)\n return this.$render.render();\n else {\n this.vm.setupState.unique = 1;\n return [];\n }\n },\n });\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke, parseFn} from '../frame/util';\nimport toCase from '@form-create/utils/lib/tocase';\nimport {upper} from '@form-create/utils/lib/toline';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n this.fc.targetFormDriver(name, this.api, this.fc);\n this.vm.emit(name, this.api);\n this.emitEvent(name, this.api);\n },\n emitEvent(name, ...args) {\n const _fn = this.options[name] || this.options[toCase('on-' + name)];\n if (_fn) {\n const fn = parseFn(_fn);\n is.Function(fn) && invoke(() => fn(...args));\n }\n this.bus.$emit(name, ...args);\n },\n targetHook(ctx, name, args) {\n let hook = ctx.prop?.hook?.[name];\n\n let run = (on, p) => {\n if (on) {\n on = Array.isArray(on) ? on : [on];\n on.forEach(fn => {\n invoke(() => fn({args: Object.values(args || {}), ...args || {}, self: ctx.rule, rule: ctx.rule, parent: p?.rule, $f: this.api, api: this.api, option: this.vm.props.option}));\n });\n }\n }\n run(hook);\n let deepName = 'deep' + upper(name);\n let parent = ctx.parent;\n while (parent) {\n let deepHook = parent.prop?.hook?.[deepName];\n run(deepHook, parent);\n parent = parent.parent;\n }\n }\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {mergeRule} from '../frame/util';\nimport {watch} from 'vue';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\n prop._c = getComponent(prop);\n this.onEffect(prop, k);\n this.providers[k] = prop;\n });\n },\n onEffect(provider, key) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${key || provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect).forEach(k => {\n ctx.watch.push(watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || ['fcFragment', 'fragment'].indexOf(type) > -1) return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","import {defineComponent} from 'vue';\n\nconst NAME = 'fcFragment';\n\nexport default defineComponent({\n name: NAME,\n inheritAttrs: false,\n props: ['vnode'],\n render() {\n return this.vnode;\n }\n})\n","import toLine from '@form-create/utils/lib/toline';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport {toProps} from '../frame/util';\nimport {createVNode, getCurrentInstance, resolveComponent, resolveDirective, withDirectives} from 'vue';\n\n\nfunction tidyDirectives(directives) {\n return Object.keys(directives).map(n => {\n const data = directives[n];\n const directive = resolveDirective(n);\n if (!directive) return;\n return [\n directive, data.value, data.arg, data.modifiers\n ]\n }).filter(v => !!v);\n}\n\nfunction makeDirective(data, vn) {\n let directives = data.directives;\n if (!directives) return vn;\n if (!Array.isArray(directives)) {\n directives = [directives];\n }\n return withDirectives(vn, directives.reduce((lst, v) => {\n return lst.concat(tidyDirectives(v));\n }, []))\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(handle) {\n this.vm = handle.vm;\n this.handle = handle;\n }\n\n extend(CreateNode.prototype, {\n make(tag, data, children) {\n return makeDirective(data, this.h(tag, toProps(data), children));\n },\n makeComponent(type, data, children) {\n try {\n return makeDirective(data, createVNode(type, toProps(data), children));\n } catch (e) {\n console.error(e);\n return createVNode('');\n }\n },\n h(tag, data, children) {\n const vm = this.vm || getCurrentInstance();\n const isNativeTag = vm.appContext.config.isNativeTag(tag);\n const component = this.handle.fc.prop.components[tag];\n if (!component && isNativeTag) {\n delete data.formCreateInject;\n }\n try{\n return createVNode(component || (isNativeTag ? tag : resolveComponent(tag)), data, children);\n }catch (e){\n console.error(e);\n return createVNode('');\n }\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n CreateNode.alias(k, v);\n [k, line, lower].forEach(n => {\n CreateNode.prototype[n] = function (data, children) {\n return this.make(aliasMap[k] || n, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\nimport {invoke} from '../frame/util';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.refs[this.ref];\n },\n adapterValidate(validate, validator) {\n validate.validator = (rule, value, callback) => {\n return validator(value, callback);\n }\n return validate;\n },\n getSlot(name) {\n const _fn = (vm) => {\n if (vm) {\n let slot = vm.slots[name];\n if (slot) {\n return slot;\n }\n return _fn(vm.setupState.parent);\n }\n return undefined;\n }\n return _fn(this.vm);\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.$handle.fc.targetFormDriver('updateOptions', options, {handle: this.$handle, api: this.$handle.api})\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n fieldChange(ctx, value, formValue, setFlag) {\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport {byCtx, deepGet, invoke, parseFn} from './util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {nextTick} from 'vue';\nimport {toPromise} from '@form-create/utils';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n nextTick(() => {\n let attrs = toArray(inject.getValue());\n const unwatchs = [];\n attrs.forEach(attr => {\n if (attr && (attr.attr || attr.template)) {\n let fn = (get) => {\n let group;\n if (rule && rule.__fc__) {\n group = rule.__fc__.getParentGroup();\n }\n let value;\n if (attr.template) {\n value = fc.$handle.loadStrVar(attr.template, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n } else if (attr.handler && is.Function(attr.handler)) {\n value = attr.handler(get, rule, api);\n } else {\n value = fc.$handle.loadStrVar(`{{${attr.attr}}}`, get, group ? {rule, value: (fc.$handle.subRuleData[group.id] || {})} : null);\n }\n if ((value == null || value === '') && attr.default != null) {\n value = attr.default;\n }\n if (attr.copy !== false) {\n value = deepCopy(value)\n }\n const _rule = (attr.modify ? rule : inject.getProp());\n if (attr.to === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, attr.to || 'options', value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n });\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.loaded;\n return loadData;\n}\n\nconst t = function (fc) {\n const t = {\n name: 't',\n _fn: [],\n loaded(inject, rule, api) {\n this.deleted(inject);\n let attrs = inject.getValue() || {};\n const unwatchs = [];\n Object.keys(attrs).forEach(key => {\n const attr = attrs[key];\n if (attr) {\n const isObj = typeof attr === 'object';\n let fn = (get) => {\n let value = fc.t(isObj ? attr.attr : attr, isObj ? attr.params : null, get);\n const _rule = ((isObj && attr.modify) ? rule : inject.getProp());\n if (key === 'child') {\n if (_rule.children) {\n _rule.children[0] = value;\n } else {\n _rule.children = [value];\n }\n } else {\n deepSet(_rule, key, value);\n }\n api.sync(rule);\n };\n let callback = (get) => fn(get);\n const unwatch = fc.watchLoadData(callback);\n fn = debounce(fn, attr.wait || 300)\n if (attr.watch !== false) {\n unwatchs.push(unwatch);\n } else {\n unwatch();\n }\n }\n })\n this._fn[inject.id] = unwatchs;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n t.watch = t.loaded;\n return t;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n let options = attr.getValue();\n if (!options || options.method === false) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n if (!is.Object(options)) {\n options = {method: options};\n }\n const method = options.method;\n const validate = {\n ...options,\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, is.String(method) ? method : 'formCreateValidate', ...args, {\n attr,\n rule,\n api\n });\n }\n }\n };\n delete validate.method;\n attr.getProp().validate = [validate];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n fetchAttr.deleted(inject);\n if (is.Function(option)) {\n option = option(rule, api);\n }\n option = parseOpt(option);\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n if (val != null && option && option.key && fc.$handle.options.globalData[option.key]) {\n fc.fetchCache.set(fc.$handle.options.globalData[option.key], {status: true, data: val});\n }\n api.sync(rule);\n }\n\n if (!option || (!option.action && !option.key)) {\n set(undefined);\n return;\n }\n option = deepCopy(option);\n if (!option.to) {\n option.to = 'options';\n }\n\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n fetchAttr._fn[inject.id] = fc.watchLoadData(debounce((get, change) => {\n if (change && option.watch === false) {\n return fetchAttr._fn[inject.id]();\n }\n if(option.key) {\n fc.targetRule = rule;\n const res = get('$globalData.' + option.key);\n delete fc.targetRule;\n if (res) {\n if (check()) return;\n set(res);\n }\n return ;\n }\n const _option = fc.$handle.loadFetchVar(deepCopy(option), get, rule);\n const config = {\n headers: {},\n ..._option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : (hasProperty(v, 'data') ? v.data : v);\n const parse = parseFn(_option.parse);\n if (is.Function(parse)) {\n fn = parse;\n } else if (parse && is.String(parse)) {\n fn = (v) => {\n return deepGet(v, parse);\n }\n }\n toPromise(fn(body, rule, api)).then(res => {\n set(res);\n })\n },\n onError(e) {\n set(undefined);\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + _option.action)))(e, rule, api);\n }\n };\n fc.$handle.beforeFetch(config, {rule, api}).then(() => {\n if (is.Function(_option.action)) {\n toPromise(_option.action(rule, api)).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }).catch(e => {});\n }, option.wait || 600));\n }\n\n const fetchAttr = {\n name: 'fetch',\n _fn: [],\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id]();\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n\n return fetchAttr;\n}\n\n\nexport default {\n fetch,\n loadData,\n t,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n ctx.prop.props.innerHTML = children.default();\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(children) {\n return {\n default: () => children.filter(v => is.String(v)).join('')\n }\n }\n}\n","import {deepGet} from './util';\n\nfunction getCookie(name) {\n name = name + '=';\n\n const decodedCookie = decodeURIComponent(document.cookie);\n const cookieArray = decodedCookie.split(';');\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i];\n while (cookie.charAt(0) === ' ') {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n cookie = cookie.substring(name.length, cookie.length);\n try {\n return JSON.parse(cookie);\n } catch (e) {\n return cookie;\n }\n }\n }\n return null;\n}\n\nfunction getLocalStorage(name) {\n const value = localStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nfunction getSessionStorage(name) {\n const value = sessionStorage.getItem(name);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n return null;\n}\n\nexport function baseDriver(driver, name) {\n if (!name) {\n return null;\n }\n const split = name.split('.');\n let value = driver(split.shift());\n\n if (!split.length) {\n return value;\n }\n if (value == null) {\n return null;\n }\n return deepGet(value, split);\n}\n\nexport function cookieDriver(name) {\n return baseDriver(getCookie, name);\n}\n\nexport function localStorageDriver(name) {\n return baseDriver(getLocalStorage, name);\n}\n\nexport function sessionStorageDriver(name) {\n return baseDriver(getSessionStorage, name);\n}","export default {\n en: {\n required: '{title} is required',\n validate: {\n url: '{title} is not a valid url',\n email: '{title} is not a valid email',\n ip: '{title} {title} is not a valid ip',\n phone: '{title} {title} is not a valid phone',\n pattern: '{title} does not match pattern {pattern}',\n uppercase: '{title} must be all uppercase',\n lowercase: '{title} must be all lowercased',\n positive: '{title} is not a positive number',\n negative: '{title} is not a negative number',\n equal: '{title} is not equal to {equal}',\n min: '{title} cannot be less than {min}',\n max: '{title} cannot be greater than {max}',\n enum: '{title} must be one of {enum}',\n hasKeys: '{title} does not contain required fields {hasKeys}',\n minLen: '{title} must be at least {minLen}',\n maxLen: '{title} cannot be longer than {maxLen}',\n len: '{title} must be exactly {len}',\n integer: '{title} is not an integer',\n number: '{title} is not an number',\n }\n },\n 'zh-cn': {\n required: '{title}不能为空',\n validate: {\n url: '{title}不是有效的 url 地址',\n email: '{title}不是有效的邮箱地址',\n ip: '{title}不是有效的 IP 地址',\n phone: '{title}不是正确的手机号',\n pattern: '{title}必须匹配 {pattern}',\n uppercase: '{title}必须全大写',\n lowercase: '{title}必须全小写',\n positive: '{title}不是正数',\n negative: '{title}不是负数',\n equal: '{title}必须等于 {equal}',\n min: '{title}必须大于等于 {min}',\n max: '{title}必须小于等于 {max}',\n enum: '{title}必须是 {enum} 之一',\n hasKeys: '{title}必须包含 {hasKeys} 字段',\n minLen: '{title}长度必须大于 {minLen}',\n maxLen: '{title}长度必须小于 {maxLen}',\n len: '{title}长度必须为 {len}',\n integer: '{title}必须为整数',\n number: '{title}必须为数字',\n },\n }\n}","import $FormCreate from '../components/formCreate';\nimport {computed, createApp, h, nextTick, reactive, ref, watch} from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory, mergeRule} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, deepGet, invoke, mergeGlobal, parseFn, parseJson, setPrototypeOf, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend, {copy} from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport Mitt from '@form-create/utils/lib/mitt';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\nimport {cookieDriver, localStorageDriver, sessionStorageDriver} from './dataDriver';\nimport debounce from '@form-create/utils/lib/debounce';\nimport {deepSet} from '@form-create/utils';\nimport baseLanguage from './language';\n\nfunction parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return parseProp('name', ...arguments);\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\nlet id = 1;\nconst instance = {};\nconst defValueTag = Symbol('defValue');\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const modelFields = {};\n const drivers = {};\n const useApps = [];\n const listener = [];\n const extendApiFn = [\n config.extendApi\n ];\n const providers = {\n ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const isMobile = config.isMobile === true;\n const loadData = reactive({\n $mobile: isMobile,\n });\n const CreateNode = CreateNodeFactory();\n const formulas = {};\n const prototype = {};\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\n\n function useApp(fn) {\n useApps.push(fn);\n }\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = is.Function(data.prop) ? data.prop : {\n ...data.prop,\n name: data.id\n };\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser(key) {\n if (arguments.length === 0) {\n return BaseParser;\n } else if (typeof key === 'string' && arguments.length === 1) {\n return parsers[toCase(key)];\n }\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return BaseParser;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = setPrototypeOf(parser, base || BaseParser);\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = id;\n if (component === undefined) {\n return components[name];\n }\n } else {\n name = id.displayName || id.name;\n component = id;\n }\n if (!name || !component) return;\n const nameAlias = toCase(name);\n components[name] = component;\n components[nameAlias] = component;\n delete CreateNode.aliasMap[name];\n delete CreateNode.aliasMap[nameAlias];\n delete parsers[name];\n delete parsers[nameAlias];\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return $FormCreate(FormCreate, components, directives);\n }\n\n function createFormApp(rule, option) {\n const Type = $form();\n return createApp({\n data() {\n return reactive({\n rule, option\n });\n },\n render() {\n return h(Type, {ref: 'fc', ...this.$data});\n }\n });\n }\n\n function $vnode() {\n return fragment;\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, option) {\n let app = createFormApp(rules, option || {});\n useApps.forEach(v => {\n invoke(() => v(create, app));\n })\n const div = document.createElement('div');\n (option?.el || document.body).appendChild(div);\n const vm = app.mount(div);\n return vm.$refs.fc.fapi;\n }\n\n setPrototypeOf(create, prototype);\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n modelFields,\n providers,\n useApps,\n maker,\n formulas,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function setModelField(name, field) {\n modelFields[name] = field;\n }\n\n function setFormula(name, fn) {\n formulas[name] = fn;\n }\n\n function setDriver(name, driver) {\n const parent = drivers[name] || {};\n const parsers = parent.parsers || {};\n if (driver.parsers) {\n Object.keys(driver.parsers).forEach(k => {\n parsers[k] = setPrototypeOf(driver.parsers[k], BaseParser);\n });\n }\n driver.name = name;\n drivers[name] = {...parent, ...driver, parsers};\n }\n\n function refreshData(id) {\n if (id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('$loadData.' + id);\n })\n })\n }\n }\n\n function setData(id, data) {\n deepSet(loadData, id, data);\n refreshData(id);\n }\n\n function setDataDriver(id, data) {\n const callback = (...args) => {\n return invoke(() => data(...args));\n }\n callback._driver = true;\n setData(id, callback);\n }\n\n function getData(id, def) {\n const split = (id || '').split('.');\n id = split.shift();\n const field = split.join('.');\n if (!hasProperty(loadData, id)) {\n loadData[id] = defValueTag;\n }\n if (loadData[id] !== defValueTag) {\n let val = loadData[id];\n if (val && val._driver) {\n val = val(field);\n } else if (split.length) {\n val = deepGet(val, split);\n }\n return (val == null || val === '') ? def : val;\n } else {\n return def;\n }\n }\n\n function extendApi(fn) {\n extendApiFn.push(fn);\n }\n\n function removeData(id) {\n delete loadData[id];\n refreshData(id);\n }\n\n function on(name, callback) {\n listener.push({name, callback});\n }\n\n function FormCreate(vm) {\n extend(this, {\n id: id++,\n create,\n vm,\n manager: createManager(config.manager),\n parsers,\n providers,\n modelFields,\n formulas,\n isMobile,\n rules: vm.props.rule,\n name: vm.props.name || uniqueId(),\n inFor: vm.props.inFor,\n prop: {\n components,\n directives,\n },\n get: null,\n drivers,\n renderDriver: null,\n refreshData,\n loadData,\n CreateNode,\n bus: new Mitt(),\n unwatch: [],\n options: ref({}),\n extendApiFn,\n fetchCache: new WeakMap(),\n tmpData: reactive({}),\n })\n listener.forEach(item => {\n this.bus.$on(item.name, item.callback);\n });\n nextTick(() => {\n watch(this.options, () => {\n this.$handle.$manager.updateOptions(this.options.value);\n this.api().refresh();\n }, {deep: true})\n });\n extend(vm.appContext.components, components);\n extend(vm.appContext.directives, directives);\n this.$handle = new Handle(this)\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\n }\n\n FormCreate.isMobile = isMobile;\n\n extend(FormCreate.prototype, {\n init() {\n if (this.isSub()) {\n this.unwatch.push(watch(() => this.vm.setupState.parent.setupState.fc.options.value, () => {\n this.initOptions();\n this.$handle.api.refresh();\n }, {deep: true, flush: 'sync'}));\n }\n if (this.vm.props.driver) {\n this.renderDriver = typeof this.vm.props.driver === 'object' ? this.vm.props.driver : this.drivers[this.vm.props.driver];\n }\n if (!this.renderDriver && this.vm.setupState.parent) {\n this.renderDriver = this.vm.setupState.parent.setupState.fc.renderDriver;\n }\n if (!this.renderDriver) {\n this.renderDriver = this.drivers.default;\n }\n this.initOptions();\n this.$handle.init();\n },\n targetFormDriver(method, ...args) {\n this.bus.$emit(method, ...args);\n if (this.renderDriver && this.renderDriver[method]) {\n return invoke(() => this.renderDriver[method](...args));\n }\n },\n t(id, params, get) {\n let value = get ? get('$t.' + id) : this.globalLanguageDriver(id);\n if (value == null) {\n value = '';\n }\n if (value && params) {\n Object.keys(params).forEach(param => {\n const regex = new RegExp(`{${param}}`, 'g');\n value = value.replace(regex, params[param]);\n });\n }\n return value;\n },\n globalDataDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalData && this.options.value.globalData[key];\n if (option) {\n if (option.type === 'static') {\n return deepGet(option.data, split);\n } else {\n let val;\n const res = this.fetchCache.get(option);\n if (res) {\n if (res.status) {\n val = deepGet(res.data, split);\n }\n if (!res.loading) {\n return val;\n }\n res.loading = false;\n this.fetchCache.set(option, res);\n } else {\n this.fetchCache.set(option, {status: false});\n }\n const reload = debounce(() => {\n unwatch();\n const res = this.fetchCache.get(option);\n if ((this.options.value.globalData && Object.values(this.options.value.globalData).indexOf(option) !== -1)) {\n if (res) {\n res.loading = true;\n this.fetchCache.set(option, res);\n }\n this.bus.$emit('$loadData.$globalData.' + key);\n } else {\n this.fetchCache.delete(option);\n }\n }, option.wait || 600)\n\n const _emit = (data) => {\n this.fetchCache.set(option, {status: true, data});\n this.bus.$emit('$loadData.$globalData.' + key);\n };\n\n const callback = (get, change) => {\n if (change && option.watch === false) {\n return unwatch();\n }\n if (change) {\n reload();\n return;\n }\n const options = this.$handle.loadFetchVar(copy(option), get);\n options.targetRule = this.targetRule;\n this.$handle.api.fetch(options).then(res => {\n _emit(res);\n }).catch(e => {\n _emit(null);\n });\n };\n const unwatch = this.watchLoadData(callback);\n if(option.watch === false) {\n unwatch();\n }\n this.unwatch.push(unwatch);\n return val;\n }\n }\n },\n getLocale() {\n let locale = this.vm.setupState.top.props.locale;\n if (locale && typeof locale === 'object') {\n return locale.name;\n }\n if (typeof locale === 'string') {\n return locale;\n }\n return 'zh-cn';\n },\n globalLanguageDriver(id) {\n let t = this.vm.setupState.top.props.t;\n let locale = this.vm.setupState.top.props.locale;\n let value = undefined;\n if (t) {\n value = invoke(() => t(id));\n }\n if (value == null && locale && typeof locale === 'object') {\n value = deepGet(locale, id);\n }\n if (value == null) {\n const language = this.options.value.language || {};\n const locale = this.getLocale();\n value = deepGet(language[locale] || {}, id);\n if (value == null) {\n value = deepGet(baseLanguage[locale] || {}, id);\n }\n }\n return value;\n },\n globalVarDriver(id) {\n let split = id.split('.');\n const key = split.shift();\n const option = this.options.value.globalVariable && this.options.value.globalVariable[key];\n if (option) {\n const handle = is.Function(option) ? option : parseFn(option.handle);\n if (handle) {\n let val = handle((...args) => this.$handle.api.getData(...args), this.$handle.api);\n return deepGet(val, split);\n }\n }\n },\n setData(id, data, isGlobal) {\n if (!isGlobal) {\n deepSet(this.vm.setupState.top.setupState.fc.tmpData, id, data);\n this.bus.$emit('$loadData.' + id);\n } else {\n setData(id, data);\n }\n },\n getLoadData(id, def) {\n let val = null;\n if (id != null) {\n let split = id.split('.');\n const key = split.shift();\n val = deepGet(this.vm.setupState.top.setupState.fc.tmpData, id);\n if (val != null) {\n return val;\n } else if (key === '$topForm') {\n val = this.$handle.api.top.formData(true);\n } else if (key === '$scopeForm') {\n val = this.$handle.api.scope.formData(true);\n } else if (key === '$form') {\n val = this.$handle.api.formData(true);\n } else if (key === '$options') {\n val = this.options.value;\n } else if (key === '$globalData') {\n val = this.globalDataDriver(split.join('.'));\n split = [];\n } else if (key === '$var') {\n val = this.globalVarDriver(split.join('.'));\n split = [];\n } else if (key === '$locale') {\n val = this.getLocale();\n split = [];\n } else if (key === '$t') {\n val = this.globalLanguageDriver(split.join('.'));\n split = [];\n } else if (key === '$preview') {\n return this.$handle.preview;\n } else {\n val = getData(id);\n split = [];\n }\n if (val && split.length) {\n val = deepGet(val, split);\n }\n }\n return (val == null || val === '') ? def : val;\n },\n watchLoadData(fn, wait) {\n let unwatch = {};\n\n const run = (flag) => {\n if (!this.get) {\n this.get = get;\n }\n invoke(() => {\n fn(get, flag);\n });\n if (this.get === get) {\n this.get = undefined;\n }\n };\n\n const get = (id, def) => {\n let getValue;\n if (typeof id === 'object') {\n getValue = id.getValue;\n id = id.id;\n }\n if (unwatch[id]) {\n return unwatch[id].val;\n }\n const data = computed(() => {\n return getValue ? getValue() : this.getLoadData(id, def);\n })\n const split = id.split('.');\n const key = split.shift();\n const key2 = split.shift() || '';\n const callback = debounce(() => {\n const temp = getValue ? getValue() : this.getLoadData(id, def);\n if (!unwatch[id]) {\n return;\n } else if (((temp instanceof Function || is.Object(temp) || Array.isArray(temp)) && temp === unwatch[id].val) || JSON.stringify(temp) !== JSON.stringify(unwatch[id].val)) {\n unwatch[id].val = temp;\n run(true);\n }\n }, wait || 0);\n const un = watch(data, (n) => {\n callback();\n });\n this.bus.$on('$loadData.' + key, callback);\n if (key2) {\n this.bus.$on('$loadData.' + key + '.' + key2, callback);\n }\n unwatch[id] = {\n fn: (() => {\n this.bus.$off('$loadData.' + key, callback);\n if (key2) {\n this.bus.$off('$loadData.' + key + '.' + key2, callback);\n }\n un();\n }),\n val: data.value,\n }\n return data.value;\n }\n run(false);\n const un = () => {\n Object.keys(unwatch).forEach(k => unwatch[k].fn());\n unwatch = {};\n }\n this.unwatch.push(un);\n return un;\n },\n isSub() {\n return this.vm.setupState.parent && this.vm.props.extendOption;\n },\n initOptions() {\n this.options.value = {};\n let options = {\n formData: {},\n submitBtn: {},\n resetBtn: {},\n globalEvent: {},\n globalData: {}, ...deepCopy(globalConfig)\n };\n const isSubForm = this.isSub();\n if (isSubForm) {\n options = this.mergeOptions(options, this.vm.setupState.parent.setupState.fc.options.value || {}, true);\n }\n options = this.mergeOptions(options, this.vm.props.option);\n const api = this.api();\n this.targetFormDriver('initOptions', options, {api, isSubForm});\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = {...opt || {}};\n parent && ['page', 'onSubmit', 'onReset', 'onCreated', 'onChange', 'onMounted', 'mounted', 'onReload', 'reload', 'formData', 'el', 'globalClass', 'style'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.options.value = this.mergeOptions(this.options.value, options);\n this.$handle.$manager.updateOptions(this.options.value);\n this.bus.$emit('$loadData.$options');\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n unmount() {\n if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n } else {\n delete instance[this.name];\n }\n }\n listener.forEach(item => {\n this.bus.$off(item.name, item.callback);\n });\n this.tmpData = {};\n this.unwatch.forEach(fn => fn());\n this.unwatch = [];\n this.$handle.reloadRule([]);\n },\n updated() {\n this.$handle.bindNextTick(() => this.bus.$emit('next-tick', this.$handle.api));\n }\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n isMobile,\n extendApi,\n getData,\n setDataDriver,\n setData,\n removeData,\n refreshData,\n maker,\n component,\n directive,\n setModelField,\n setFormula,\n setDriver,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n mergeRule,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n useApp,\n getApi,\n on,\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(app, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n const key = `_installedFormCreate${isMobile ? 'Mobile' : ''}_${config.ui}`;\n if (app[key] === true) return;\n app[key] = true;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n app.config.globalProperties.$formCreate = $formCreate;\n const $component = $form();\n app.component($component.name, $component);\n useApps.forEach(v => {\n invoke(() => v(formCreate, app));\n })\n }\n })\n }\n\n useAttr(prototype);\n useStatic(prototype);\n\n setDataDriver('$cookie', cookieDriver);\n setDataDriver('$localStorage', localStorageDriver);\n setDataDriver('$sessionStorage', sessionStorageDriver);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n config.install && create.use(config);\n\n useApp((_, app) => {\n app.mixin({\n props: ['formCreateInject'],\n })\n })\n\n parser(html);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.modelFields && extend(modelFields, inherit.modelFields);\n inherit.providers && extend(providers, inherit.providers);\n inherit.useApps && extend(useApps, inherit.useApps);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n inherit.formulas && extend(formulas, inherit.formulas);\n }\n\n const FcComponent = $form();\n setPrototypeOf(FcComponent, prototype);\n Object.defineProperties(FcComponent, {\n fetch: {\n get() {\n return prototype.fetch;\n },\n set(val) {\n prototype.fetch = val;\n }\n }\n })\n\n FcComponent.util = prototype;\n\n return FcComponent;\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n },\n Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","\nexport function $set(target, field, value) {\n target[field] = value;\n}\n\nexport function $del(target, field) {\n delete target[field];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend(Array.isArray(obj) ? [] : {}, obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== 'function') {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf('$FN:') === 0) {\n v = v.substring(4);\n flag = true;\n } else if (v.indexOf('$EXEC:') === 0) {\n v = v.substring(6);\n flag = true;\n } else if (v.indexOf('$GLOBAL:') === 0) {\n const name = v.substring(8);\n v = function (...args) {\n const callback = args[0].api.getGlobalEvent(name);\n if (callback) {\n return callback.call(this, ...args);\n }\n return undefined;\n }\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (v.indexOf('$FNX:') === 0) {\n v = makeFn('function($inject){\\n' + v.substring(5) + '\\n}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf('function ') === 0 && v !== 'function ') {\n flag = true;\n } else if (!mode && v.indexOf('function(') === 0 && v !== 'function(') {\n flag = true;\n }\n if (!flag) return fn;\n let val;\n try{\n val = makeFn(v);\n }catch (e){\n val = makeFn('function ' + v);\n }\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","let id = 0;\n\nexport default function uniqueId() {\n const num = 370 + (++id);\n return 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}`).toString(36) + num.toString(36) + 'c';\n}\n","export default function debounce(fn, wait) {\n var timeout = null;\n return function (...arg) {\n if (timeout !== null)\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.call(this, ...arg), wait);\n }\n}\n\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst[name] = slots[name]\n }\n return lst;\n }, {})\n}","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","import is from './type';\n\nexport default function toDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n\nexport function upper(str) {\n return str.replace(str[0], str[0].toLocaleUpperCase());\n}","function isPromise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\n\nexport default function toPromise(value) {\n if (isPromise(value)) {\n return value;\n }\n return Promise.resolve(value);\n}","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n"],"names":["Calendar","defineComponent","name","inheritAttrs","props","placeholder","String","formCreateInject","Object","disabled","Boolean","clearable","type","modelValue","Array","minDate","Date","maxDate","emits","setup","_","show","ref","toRef","inputValue","value","watch","n","formatter","date","dayjs","format","toDate","str","defaultDate","computed","isArray","map","dateRange","undefined","formatValue","onInput","emit","strValue","range","length","join","multiple","t","open","confirm","getStrValue","hasProperty","clear","e","stopPropagation","render","h","class","this","readonly","$props","onClick","model-value","isLink","border","v-slots","right-icon","clearIcon","is","empty","_extends","$attrs","onUpdate:show","v","onConfirm","mounted","$emit","$refs","el","normalizeOptions","options","item","normalized","label","text","children","Cascader","fieldNames","Number","_fieldNames$value","findOptions","path","i","find","updateInputValue","option","deep","val","selectedOptions","round","position","onClose","onFinish","Checkbox","direction","onUpdate:modelValue","opt","tmp","shape","Select","columnsFieldNames","selectedValues","columns","onCancel","parseFile","file","url","is_string","getFileName","uid","parseUpload","split","pop","Uploader","afterRead","Function","action","headers","method","data","uploadName","onSuccess","onError","maxCount","fileList","toArray","uploadValue","files","filter","onDelete","uploadFile","status","api","fetch","dataType","source","then","res","catch","message","onUpdate:model-value","$slots","Radio","DatePicker","formValue","columnsType","TimePicker","Group","field","rule","expand","button","default","max","min","defaultValue","sortBtn","title","onBeforeRemove","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","form","markRaw","$form","handler","o","keys","forEach","$f","formData","deferSyncValue","deepExtend","setValue","once","deepCopy","d","expandRule","total","addRule","removeRule","methods","_value","cache","k","JSON","stringify","input","key","[object Object]","coverValue","copyRules","submitBtn","resetBtn","defVal","extend","index","nextTick","add$f","indexOf","add","push","del","splice","toPromise","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","a","subForm","sortIcon","canMoveUp","canMoveDown","makeIcon","vm","btn","getTitle","replace","created","Type","isCardType","onUpdate:api","inFor","extendOption","script","viewBox","xmlns","_openBlock","openBlock","_createElementBlock","_hoisted_1","_cache","_createElementVNode","fill","components","IconWarning","parsers","maker","hidden","creatorFactory","ctx","vNode","col","span","row","prop","mergeProp","alias","PRE","icon","slider","stepper","inputNumber","rate","uploader","upload","cell","timePicker","datePicker","switch","select","cascader","calendar","checkbox","radio","textarea","formItem","group","array","object","tidy","isFalse","tidyRule","_rule","manager","validate","Promise","validateField","resolve","reject","clearValidateState","resetValidation","id","tidyOptions","tidyBool","pattern","RegExp","def","info","wrap","mergeProps","getDefaultOptions","required","labelAlign","inputAlign","gutter","loading","block","innerText","size","click","adapterValidate","validator","trigger","err","update","on","submit","preventDefault","style","beforeRender","className","$handle","preview","slotLen","setSlot","makeFormBtn","$r","getSlots","makeRow","makeWrap","uni","isTitle","_col","cls","rules","injectValidate","$render","mergeClass","wrapRef","makeInfo","makeCol","native","_ctx$refRule","_ctx$refRule2","titleProp","infoProp","titleSlot","getSlot","refRule","__$title","flag","align","_prop","args","_ctx$refRule3","showNotify","__$info","duration","targetHook","vn","makeSubmitBtn","makeResetBtn","width","fApi","resetFields","tidyBtnProp","Undef","extendApi","formEl","$manager","wrapEl","getFieldCtx","refs","callback","forms","all","isScope","emitEvent","sub","fields","clearSub","helper","tidyFields","clearSubValidateState","getCtxs","submitBtnProps","isShow","resetBtnProps","refreshOptions","successFn","failFn","validateOnSubmit","beforeSubmit","invoke","onSubmit","css","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","load","inject","parseVal","getValue","_title","clearProp","updateMessage","_rule$__fc__$refRule$","__fc__","match","getLocale","getProp","sync","install","FormCreate","componentAlias","component","register","parser","Field","FormCreateMobile","FormCreateFactory","ui","version","isMobile","attrs","normal","window","formCreateMobile","keyAttrs","arrayAttrs","normalAttrs","normalMerge","toArrayMerge","functionalMerge","enumerable","writable","configurable","copyRule","mode","mergeRule","merge","getRule","r","funcProxy","that","proxy","defineProperties","reduce","initial","get","byCtx","__origin__","fn","logError","makeSlotBag","slotBag","slotName","slot","vnFn","slots","mergeBag","bag","isVNode","toProps","toCase","upper","setPrototypeOf","proto","changeType","b","condition","==","!=",">",">=","<","<=","notOn","in","notIn","between","notBetween","notEmpty","test","deepGet","convertFieldToConditions","parts","conditions","currentCondition","part","getGroupInject","parent","$FormCreate","directives","driver","locale","fc","getCurrentInstance","provide","top","setupState","toRefs","reactive","ctxInject","destroyed","unique","renderRule","updateValue","fapi","isMore","styleEl","onBeforeMount","watchEffect","content","globalClass","subCss","toLine","innerHTML","emit$topForm","debounce","bus","emit$scopeForm","emit$form","emit$change","onMounted","$on","scope","onBeforeUnmount","$off","rmSubForm","getSubForm","idx","unmount","parentNode","parentElement","removeChild","onUpdated","updated","addSubForm","initOptions","refresh","flush","isBreakWatch","every","updateAppendData","reloadRule","toJson","config","forceCoverValue","json","init","Creator","_data","display","event","appendProto","prototype","arguments","setProp","$set","modelField","_clone","clone","constructor","commonMaker","create","make","makerFactory","factory","getBody","xhr","responseText","response","XMLHttpRequest","onProgress","addEventListener","evt","percent","loaded","query","acc","queryString","URLSearchParams","toString","includes","onerror","onload","msg","Error","getError","toLowerCase","FormData","append","setRequestHeader","filename","withCredentials","send","asyncFetch","_fetch","parseFn","targetRule","copy","Render","handle","CreateNode","force","tmpInput","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","cacheConfig","getTypeSlot","_fn","renderSlot","ctxs","isFragment","initProp","mergeGlobal","initNone","renderChildren","loadChildrenPending","renderCtx","global","trueType","g","originType","setOptions","loadPending","origin","optionsTo","deepSet","parseSide","side","renderSides","temp","prefix","suffix","renderId","ctxProp","injectProp","cacheFlag","slotValue","model","slotUpdate","_load","loadChildren","renderSlots","_vn","targetFormDriver","none","__v_isVNode","stable","console","error","target","$stable","getModelField","modelFields","aliasMap","state","getWrap","onUpdateValue","vnodeMounted","__rule__","fc.updateValue","fc.el","exportEl","$el","getFormData","modelEmit","onEmitInput","effect","onBaseInput","toValue","trueArray","child","defaultRender","makeComponent","lower","createChildrenVnodes","createRuleVnode","useRender$1","EVENT","RuleContext","isInput","pending","linkOn","root","ctrlRule","subRule","payload","updateKey","findCtrl","ctrl","isCtrl","__ctrl","strFn","getParentGroup","onLoad","onUpdate","oldValue","updateChildren","onReload","getPending","$api","setPending","reload","effectData","clearEffectData","updateType","getType","setParser","_this$refRule","__$validate","hasHidden","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","delete","rmCtrl","deleted","rm","_rm","noWatch","rmCtx","BaseParser","toFormValue","renderDriver","defaultPreview","noneKey","oldValueTag","Symbol","Handler","watching","reloading","noWatchFn","deferSyncFn","isMounted","subRuleData","appendData","ignoreFields","providers","cycleLoad","loadedId","changeStatus","pageEnd","nextReload","lifecycle","initData","extendApiFn","fieldCtx","nameCtx","allSubForm","subs","isPreview","siblings","formulas","appendValue","removeField","getCtx","after","prepend","hiddenStatus","displayStatus","bind","updateOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","findType","findTypes","getRenderRule","getRefRule","setEffect","attr","substr","updateValidate","updateValidates","validates","refreshValidate","onReset","exec","space","closeModal","getChildrenRuleList","getParentRule","getParentSubRule","getChildrenFormData","ignore","setChildrenFormData","cover","getGlobalEvent","globalEvent","getGlobalData","globalData","loadData","emitGlobalEvent","getInjectData","unshift","apply","setGlobalData","setData","setGlobalVar","$once","nextRefresh","emitsOptions","getCurrentFormRule","_h$vm$setupState$getG","loadFetchVar","fail","beforeFetch","watchFetch","watchLoadData","change","_opt","wait","getData","getLoadData","watchData","isGlobal","refreshData","params","changeValue","changeField","Api","useProvider","usePage","loadRule","__init","globalBeforeFetch","parseInjectEvent","injectEvent","parseEventLst","parseEvent","__inject","parseEmit","emitPrefix","eventName","eventInject","emitKey","fieldKey","arg","__emit","_inject","self","__origin","__json","loadStrVar","vars","regex","matches","extractVar","_split","shift","treeToVal","tree","slice","isNaN","lastVal","trim","parseTemplateToTree","template","tokens","current","depth","char","token","replaceAll","loadVal","useInject","page","first","limit","Math","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","useRender","parseRule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","preIndex","isRepeat","ruleEffect","repeat","isCopy","isInit","parseJson","bindParser","rmSubRuleData","setCtx","_preIndex","refreshUpdate","refreshControl","useCtrl","controls","getCtrl","handleFn","valid","isHidden","hideLst","reverse","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","fieldChange","isQuote","isChange","subData","isIgnore","ignoreHiddenFields","linkField","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","lst","getParser","list","newValue","call","adapter","computedRule","computedValue","compute","linkage","linkageVariable","beforeValidate","getValidateMessage","invalid","formatRule","entries","num","isInteger","some","checkCondition","or","one","variableVal","variable","compare","invert","computeValue","obj","rmSub","$del","useContext","_mounted","_ctx$prop","run","p","values","hook","deepName","_parent$prop","useLifecycle","ps","_c","c","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","emitEffect","custom","getEffect","_type","useEffect","fragment","makeDirective","withDirectives","concat","directive","resolveDirective","modifiers","tidyDirectives","createManager","CustomManager","Manager","assign","mergeOptionsRule","mergeOptions","componentValidate","$provider","fetchAttr","to","parseOpt","set","fetchCache","_option","body","unwatchs","modify","isObj","html","tag","getCookie","cookieArray","decodeURIComponent","cookie","charAt","substring","getLocalStorage","localStorage","getItem","getSessionStorage","sessionStorage","baseDriver","cookieDriver","localStorageDriver","sessionStorageDriver","baseLanguage","en","email","ip","phone","uppercase","lowercase","positive","negative","equal","enum","hasKeys","minLen","maxLen","integer","number","zh-cn","parseProp","nameProp","instance","defValueTag","Element","nodeType","isArr","hasOwnProperty","nst","PREFIX","SUFFIX","makeFn","timeout","drivers","useApps","listener","globalConfig","$mobile","createVNode","isNativeTag","appContext","resolveComponent","nodes","line","toLocaleLowerCase","CreateNodeFactory","getApi","useApp","base","displayName","nameAlias","formCreateParser","$vnode","app","createApp","$data","createFormApp","div","mount","inherit","_config","setModelField","setFormula","setDriver","setDataDriver","_driver","removeData","uniqueId","Mitt","WeakMap","tmpData","Handle","useAttr","formCreate","exportAttrs","isSub","globalLanguageDriver","param","globalDataDriver","_emit","language","globalVarDriver","globalVariable","key2","isSubForm","$formCreate","globalProperties","$component","mixin","FcComponent","util","exclude","timeStamp","_isVue","isPromise","random","now"],"mappings":"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"}