icarys-fc-vant 1.0.15 → 1.0.17
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.
- package/README.md +40 -205
- package/dist/index.js +7590 -0
- package/dist/index.min.js +3 -7407
- package/dist/index.min.js.map +1 -0
- package/package.json +6 -19
- package/src/components/common/subform/LICENSE +21 -0
- package/src/components/common/subform/README.md +6 -0
- package/src/components/common/subform/package.json +48 -0
- package/src/components/common/subform/src/component.jsx +75 -0
- package/src/components/common/subform/src/index.js +3 -0
- package/src/components/common/wangeditor/LICENSE +21 -0
- package/src/components/common/wangeditor/README.md +14 -0
- package/src/components/common/wangeditor/package-lock.json +114 -0
- package/src/components/common/wangeditor/package.json +52 -0
- package/src/components/common/wangeditor/src/component.jsx +74 -0
- package/src/components/common/wangeditor/src/index.js +3 -0
- package/src/core/LICENSE +21 -0
- package/src/core/README.md +120 -0
- package/src/core/babel.config.js +13 -0
- package/src/core/bili.config.js +34 -0
- package/src/core/package-lock.json +13 -0
- package/src/core/package.json +61 -0
- package/src/core/src/components/formCreate.js +287 -0
- package/src/core/src/components/fragment.js +12 -0
- package/src/core/src/factory/context.js +264 -0
- package/src/core/src/factory/creator.js +63 -0
- package/src/core/src/factory/maker.js +17 -0
- package/src/core/src/factory/manager.js +87 -0
- package/src/core/src/factory/node.js +89 -0
- package/src/core/src/factory/parser.js +28 -0
- package/src/core/src/frame/api.js +691 -0
- package/src/core/src/frame/attrs.js +12 -0
- package/src/core/src/frame/dataDriver.js +76 -0
- package/src/core/src/frame/fetch.js +128 -0
- package/src/core/src/frame/index.js +792 -0
- package/src/core/src/frame/language.js +50 -0
- package/src/core/src/frame/provider.js +297 -0
- package/src/core/src/frame/util.js +311 -0
- package/src/core/src/handler/context.js +573 -0
- package/src/core/src/handler/effect.js +122 -0
- package/src/core/src/handler/index.js +143 -0
- package/src/core/src/handler/inject.js +199 -0
- package/src/core/src/handler/input.js +199 -0
- package/src/core/src/handler/lifecycle.js +55 -0
- package/src/core/src/handler/loader.js +375 -0
- package/src/core/src/handler/page.js +46 -0
- package/src/core/src/handler/render.js +29 -0
- package/src/core/src/index.js +12 -0
- package/src/core/src/parser/html.js +17 -0
- package/src/core/src/render/cache.js +47 -0
- package/src/core/src/render/index.js +33 -0
- package/src/core/src/render/render.js +418 -0
- package/src/core/types/index.d.ts +842 -0
- package/src/index.js +5 -0
- package/src/utils/LICENSE +21 -0
- package/src/utils/README.md +24 -0
- package/src/utils/lib/console.js +16 -0
- package/src/utils/lib/debounce.js +9 -0
- package/src/utils/lib/deepextend.js +51 -0
- package/src/utils/lib/deepset.js +14 -0
- package/src/utils/lib/extend.js +20 -0
- package/src/utils/lib/index.js +14 -0
- package/src/utils/lib/json.js +90 -0
- package/src/utils/lib/mergeprops.js +62 -0
- package/src/utils/lib/mitt.js +43 -0
- package/src/utils/lib/modify.js +8 -0
- package/src/utils/lib/slot.js +8 -0
- package/src/utils/lib/toarray.js +5 -0
- package/src/utils/lib/tocase.js +11 -0
- package/src/utils/lib/todate.js +10 -0
- package/src/utils/lib/toline.js +10 -0
- package/src/utils/lib/topromise.js +10 -0
- package/src/utils/lib/tostring.js +7 -0
- package/src/utils/lib/type.js +45 -0
- package/src/utils/lib/unique.js +6 -0
- package/src/utils/package.json +32 -0
- package/src/vant/LICENSE +21 -0
- package/src/vant/auto-import.d.ts +5 -0
- package/src/vant/auto-import.js +50 -0
- package/src/vant/babel.config.js +10 -0
- package/src/vant/bili.config.js +40 -0
- package/src/vant/examples/App.vue +96 -0
- package/src/vant/examples/main.js +13 -0
- package/src/vant/examples/rule.js +366 -0
- package/src/vant/package.json +83 -0
- package/src/vant/public/index.html +14 -0
- package/src/vant/src/components/calendar.jsx +128 -0
- package/src/vant/src/components/cascader.jsx +120 -0
- package/src/vant/src/components/checkbox.jsx +38 -0
- package/src/vant/src/components/datePicker.jsx +87 -0
- package/src/vant/src/components/group.jsx +384 -0
- package/src/vant/src/components/icon/IconWarning.vue +12 -0
- package/src/vant/src/components/index.js +26 -0
- package/src/vant/src/components/radio.jsx +38 -0
- package/src/vant/src/components/select.jsx +81 -0
- package/src/vant/src/components/timePicker.jsx +76 -0
- package/src/vant/src/components/uploader.jsx +99 -0
- package/src/vant/src/core/alias.js +31 -0
- package/src/vant/src/core/api.js +135 -0
- package/src/vant/src/core/config.js +35 -0
- package/src/vant/src/core/index.js +45 -0
- package/src/vant/src/core/manager.js +282 -0
- package/src/vant/src/core/provider.js +63 -0
- package/src/vant/src/core/utils.js +15 -0
- package/src/vant/src/index.js +13 -0
- package/src/vant/src/parsers/hidden.js +12 -0
- package/src/vant/src/parsers/index.js +59 -0
- package/src/vant/src/parsers/row.js +10 -0
- package/src/vant/src/style/index.css +495 -0
- package/src/vant/types/config.d.ts +99 -0
- package/src/vant/types/index.d.ts +27 -0
- package/src/vant/vue.config.js +21 -0
|
@@ -0,0 +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/utils/lib/toarray.js","../src/utils/lib/debounce.js","../src/utils/lib/toline.js","../src/utils/lib/modify.js","../src/utils/lib/type.js","../src/utils/lib/deepextend.js","../src/utils/lib/mergeprops.js","../src/core/src/frame/attrs.js","../src/utils/lib/console.js","../src/utils/lib/tocase.js","../src/utils/lib/json.js","../src/core/src/frame/util.js","../src/core/src/components/formCreate.js","../src/utils/lib/extend.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/utils/lib/unique.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/utils/lib/tostring.js","../src/core/src/factory/node.js","../src/core/src/factory/manager.js","../src/utils/lib/deepset.js","../src/core/src/frame/provider.js","../src/utils/lib/mitt.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/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/utils/lib/slot.js","../src/utils/lib/todate.js","../src/utils/lib/topromise.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/components/common/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","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\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 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}","\nexport function $set(target, field, value) {\n target[field] = value;\n}\n\nexport function $del(target, field) {\n delete target[field];\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","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","export const normalMerge = ['props'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'hook'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '../../../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","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","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\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","import deepExtend from '../../../utils/lib/deepextend';\nimport is from '../../../utils/lib/type';\nimport mergeProps from '../../../utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '../../../utils/lib/console';\nimport {isVNode} from 'vue';\nimport {upper} from '../../../utils/lib/toline';\nimport toCase from '../../../utils/lib/tocase';\n\nexport {parseJson, parseFn, toJson} from '../../../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 '../../../utils/lib/toarray';\nimport debounce from '../../../utils/lib/debounce';\nimport toLine from '../../../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 {$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","import extend from '../../../utils/lib/extend';\nimport is from '../../../utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '../../../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 '../../../utils/lib/type';\nimport {parseFn} from '../../../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 '../../../utils/lib/modify';\nimport {deepCopy} from '../../../utils/lib/deepextend';\nimport is, {hasProperty} from '../../../utils/lib/type';\nimport extend from '../../../utils/lib/extend';\nimport {format} from '../../../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 '../../../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 '../../../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 '../../../utils/lib/extend';\nimport mergeProps from '../../../utils/lib/mergeprops';\nimport is from '../../../utils/lib/type';\nimport {invoke, makeSlotBag, mergeRule} from '../frame/util';\nimport toCase, {lower} from '../../../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 '../../../utils/lib/extend';\nimport is from '../../../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","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","import unique from '../../../utils/lib/unique';\nimport toCase from '../../../utils/lib/tocase';\nimport extend from '../../../utils/lib/extend';\nimport {enumerable, invoke, mergeRule} from '../frame/util';\nimport {deepCopy} from '../../../utils/lib/deepextend';\nimport {markRaw, reactive} from 'vue';\nimport is from '../../../utils/lib/type';\nimport toArray from '../../../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 '../../../utils/lib/extend';\nimport {byCtx, condition, copyRule, enumerable, getRule, invoke, parseFn, parseJson, toJson} from '../frame/util';\nimport is, {hasProperty} from '../../../utils/lib/type';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '../../../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 '../../../utils/lib/extend';\nimport {$set} from '../../../utils/lib/modify';\nimport is, {hasProperty} from '../../../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 '../../../utils/lib/extend';\nimport toCase from '../../../utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '../../../utils/lib/modify';\nimport is, {hasProperty} from '../../../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 '../../../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 '../../../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 '../../../utils/lib/type';\nimport {deepCopy} from '../../../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 '../../../utils/lib/extend';\nimport is, {hasProperty} from '../../../utils/lib/type';\nimport toLine from '../../../utils/lib/toline';\nimport {deepGet, extractVar, invoke, parseFn, parseTemplateToTree} from '../frame/util';\nimport toCase from '../../../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 '../../../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 '../../../utils/lib/extend';\nimport is from '../../../utils/lib/type';\nimport {invoke, parseFn} from '../frame/util';\nimport toCase from '../../../utils/lib/tocase';\nimport {upper} from '../../../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 '../../../utils/lib/extend';\nimport is, {hasProperty} from '../../../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","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","import toLine from '../../../utils/lib/toline';\nimport toString from '../../../utils/lib/tostring';\nimport extend from '../../../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 '../../../utils/lib/mergeprops';\nimport unique from '../../../utils/lib/unique';\nimport extend from '../../../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","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","import {err} from '../../../utils/lib/console';\nimport {byCtx, deepGet, invoke, parseFn} from './util';\nimport is, {hasProperty} from '../../../utils/lib/type';\nimport deepSet from '../../../utils/lib/deepset';\nimport {deepCopy} from '../../../utils/lib/deepextend';\nimport toArray from '../../../utils/lib/toarray';\nimport debounce from '../../../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","// https://github.com/developit/mitt\n\nexport default function Mitt(all) {\n all = all || new Map();\n\n const mitt = {\n\n $on(type, handler) {\n const handlers = all.get(type);\n const added = handlers && handlers.push(handler);\n if (!added) {\n all.set(type, [handler]);\n }\n },\n\n $once(type, handler) {\n handler._once = true;\n mitt.$on(type, handler);\n },\n\n $off(type, handler) {\n const handlers = all.get(type);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n\n $emit(type, ...args) {\n (all.get(type) || []).slice().map((handler) => {\n if (handler._once) {\n mitt.$off(type, handler);\n delete handler._once;\n }\n handler(...args);\n });\n (all.get('*') || []).slice().map((handler) => {\n handler(type, args);\n });\n }\n };\n\n return mitt;\n}","import is from '../../../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 '../../../utils/lib/type';\nimport toCase from '../../../utils/lib/tocase';\nimport extend, {copy} from '../../../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 '../../../utils/lib/deepextend';\nimport Mitt from '../../../utils/lib/mitt';\nimport html from '../parser/html';\nimport uniqueId from '../../../utils/lib/unique';\nimport {cookieDriver, localStorageDriver, sessionStorageDriver} from './dataDriver';\nimport debounce from '../../../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","import hidden from './hidden';\nimport row from './row';\nimport {hasProperty} from '../../../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 '../../../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 '../../../utils/lib/mergeprops';\nimport is, {hasProperty} from '../../../utils/lib/type';\nimport extend from '../../../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 '../../../utils/lib/extend';\nimport is from '../../../utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '../../../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 '../../../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 '../../../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","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}","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","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}"],"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","_createVNode","class","createVNode","_resolveComponent","this","readonly","$props","onClick","model-value","isLink","border","right-icon","clearIcon","is","empty","_mergeProps","$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","default","resolveComponent","mergeProps","onClose","onFinish","Checkbox","_slot","direction","onUpdate:modelValue","s","opt","tmp","shape","_isVNode","prototype","toString","call","isVNode","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","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","debounce","fn","wait","timeout","arg","clearTimeout","setTimeout","toLine","line","toLocaleLowerCase","substr","upper","toLocaleUpperCase","$set","target","$del","Undef","Element","nodeType","trueArray","getType","exec","hasOwnProperty","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","normalMerge","toArrayMerge","functionalMerge","objects","initial","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","reduce","b","arrA","arrB","event","hook","mergeFn","fn1","fn2","apply","arguments","keyAttrs","arrayAttrs","normalAttrs","attrs","msg","err","console","error","toCase","lower","toLowerCase","PREFIX","SUFFIX","toJson","obj","space","_isVue","__emit","makeFn","parseFn","trim","flag","substring","args","callback","getGlobalEvent","__inject","parseJson","json","enumerable","writable","configurable","copyRule","rules","mergeRule","merge","array","normal","r","funcProxy","that","proxy","defineProperties","get","byCtx","__fc__","__origin__","invoke","def","logError","makeSlotBag","slotBag","slotName","setSlot","slot","vnFn","getSlot","getSlots","slots","slotLen","mergeBag","bag","toProps","prop","on","id","style","setPrototypeOf","proto","changeType","condition","==","!=",">",">=","<","<=","notOn","in","notIn","between","notBetween","notEmpty","pattern","RegExp","test","deepGet","convertFieldToConditions","parts","conditions","currentCondition","part","getGroupInject","parent","$FormCreate","FormCreate","directives","isMobile","required","driver","preview","locale","fc","getCurrentInstance","provide","inject","top","setupState","toRefs","reactive","ctxInject","destroyed","isShow","unique","renderRule","updateValue","fapi","isMore","styleEl","onBeforeMount","watchEffect","content","globalClass","subCss","document","createElement","head","appendChild","innerHTML","emit$topForm","bus","emit$scopeForm","emit$form","emit$change","onMounted","$on","scope","onBeforeUnmount","$off","rmSubForm","sub","getSubForm","idx","unmount","parentNode","parentElement","removeChild","onUpdated","updated","addSubForm","initOptions","refresh","flush","$handle","isBreakWatch","every","updateAppendData","reloadRule","config","forceCoverValue","clearValidateState","init","_extends","assign","c","copy","creatorFactory","maker","Creator","_data","hidden","display","appendProto","setProp","modelField","constructor","commonMaker","create","make","makerFactory","factory","getBody","xhr","responseText","response","XMLHttpRequest","upload","onProgress","addEventListener","evt","percent","loaded","query","acc","queryString","URLSearchParams","includes","onerror","onload","Error","getError","FormData","append","setRequestHeader","filename","withCredentials","send","asyncFetch","_fetch","Promise","resolve","reject","targetRule","Render","handle","$manager","vNode","CreateNode","force","tmpInput","initCache","initRender","clearCacheAll","clearCache","ctx","use","setCache","vnode","getCache","useCache","cacheConfig","getTypeSlot","_fn","beforeRender","renderSlot","ctxs","isFragment","initProp","mergeGlobal","initNone","renderChildren","loadChildrenPending","renderCtx","global","trueType","g","originType","setOptions","loadPending","optionsTo","deepSet","parseSide","side","renderSides","vn","temp","prefix","suffix","renderId","tidyRule","ctxProp","injectProp","cacheFlag","slotValue","model","slotUpdate","_load","parser","loadChildren","renderSlots","_vn","native","targetFormDriver","makeWrap","none","__v_isVNode","stable","mergeClass","$stable","getModelField","modelFields","aliasMap","state","getWrap","refs","wrapRef","onUpdateValue","mergeProp","vnodeMounted","__rule__","fc.updateValue","fc.el","exportEl","$el","getFormData","modelEmit","onEmitInput","effect","targetHook","onBaseInput","toValue","child","defaultRender","component","makeComponent","createChildrenVnodes","createRuleVnode","alias","useRender$1","EVENT","uniqueId","num","Math","random","now","RuleContext","isInput","pending","linkOn","root","ctrlRule","group","subRule","payload","refRule","updateKey","update","findCtrl","ctrl","isCtrl","strFn","getParentGroup","onLoad","onUpdate","oldValue","updateChildren","onReload","getPending","$api","setPending","reload","sync","effectData","clearEffectData","updateType","setParser","_this$refRule","validate","__$validate","hasHidden","injectValidate","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","delete","rmCtrl","deleted","rm","_rm","noWatch","rmCtx","$render","BaseParser","toFormValue","renderDriver","defaultPreview","noneKey","oldValueTag","Symbol","Handler","watching","loading","reloading","noWatchFn","deferSyncFn","isMounted","subRuleData","appendData","ignoreFields","providers","cycleLoad","loadedId","changeStatus","pageEnd","nextReload","lifecycle","initData","manager","extendApiFn","extendApi","h","tidyFields","fields","fieldCtx","nameCtx","allSubForm","subs","isScope","isPreview","siblings","formulas","getValue","getFieldCtx","appendValue","removeField","getCtx","getCtxs","after","prepend","hiddenStatus","displayStatus","all","bind","updateOptions","onSubmit","refreshOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","findType","findTypes","getRenderRule","getRefRule","setEffect","attr","updateValidate","updateValidates","validates","refreshValidate","resetFields","onReset","trigger","closeModal","getChildrenRuleList","getParentRule","getParentSubRule","getChildrenFormData","ignore","setChildrenFormData","cover","globalEvent","getGlobalData","globalData","loadData","emitGlobalEvent","getInjectData","unshift","setGlobalData","setData","setGlobalVar","$once","nextRefresh","emitsOptions","getCurrentFormRule","_h$vm$setupState$getG","loadFetchVar","fail","beforeFetch","watchFetch","watchLoadData","change","_opt","getData","getLoadData","watchData","isGlobal","refreshData","params","getLocale","helper","changeValue","changeField","Api","useProvider","usePage","loadRule","__init","globalBeforeFetch","beforeSubmit","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","eventName","eventInject","emitKey","fieldKey","_inject","self","loadStrVar","vars","regex","match","matches","extractVar","_split","shift","treeToVal","tree","slice","isNaN","lastVal","parseTemplateToTree","template","tokens","current","depth","char","token","replaceAll","loadVal","useInject","page","first","limit","ceil","parseInt","pageLoad","pageFn","clearNextTick","bindNextTick","useRender","parseRule","_rule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","preIndex","isRepeat","ruleEffect","repeat","isCopy","isInit","bindParser","rmSubRuleData","setCtx","_preIndex","refreshUpdate","refreshControl","useCtrl","controls","getCtrl","handleFn","valid","isHidden","hideLst","reverse","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","emitEvent","fieldChange","isQuote","isChange","subData","isIgnore","ignoreHiddenFields","linkField","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","lst","getParser","list","parsers","newValue","info","_ctx$refRule","__$title","validator","adapter","adapterValidate","computedRule","computedValue","compute","linkage","linkageVariable","beforeValidate","getValidateMessage","invalid","_ctx$refRule2","formatRule","entries","isInteger","some","checkCondition","or","one","variableVal","variable","compare","invert","computeValue","rmSub","useContext","_mounted","_ctx$prop","run","p","values","deepName","_parent$prop","useLifecycle","ps","_c","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","emitEffect","custom","getEffect","_type","getProp","clearProp","useEffect","fragment","makeDirective","withDirectives","concat","directive","resolveDirective","modifiers","tidyDirectives","createManager","CustomManager","Manager","mergeOptionsRule","to","$r","mergeOptions","tidyOptions","getDefaultOptions","componentValidate","load","$provider","fetchAttr","parseOpt","set","fetchCache","_option","body","unwatchs","modify","isObj","Mitt","Map","mitt","handlers","_once","html","tag","getCookie","cookieArray","decodeURIComponent","cookie","charAt","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","FormCreateFactory","drivers","useApps","listener","globalConfig","$mobile","isNativeTag","appContext","nodes","CreateNodeFactory","getApi","useApp","register","componentAlias","base","displayName","nameAlias","formCreateParser","$vnode","install","app","createApp","$data","createFormApp","div","mount","inherit","_config","setModelField","setFormula","setDriver","setDataDriver","_driver","removeData","WeakMap","tmpData","Handle","useAttr","formCreate","version","ui","exportAttrs","isSub","globalLanguageDriver","param","globalDataDriver","_emit","language","globalVarDriver","globalVariable","key2","isSubForm","$formCreate","globalProperties","$component","mixin","FcComponent","util","col","span","row","PRE","icon","slider","stepper","inputNumber","rate","uploader","cell","timePicker","datePicker","switch","select","cascader","calendar","checkbox","radio","textarea","formItem","object","tidy","isFalse","validateField","resetValidation","tidyBool","wrap","labelAlign","inputAlign","gutter","block","innerText","size","click","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","cls","makeInfo","makeCol","titleProp","infoProp","titleSlot","align","_prop","_ctx$refRule3","showNotify","__$info","duration","makeSubmitBtn","makeResetBtn","width","fApi","tidyBtnProp","formEl","wrapEl","forms","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","validateOnSubmit","css","insertAt","getElementsByTagName","firstChild","insertBefore","styleSheet","cssText","createTextNode","parseVal","_title","updateMessage","_rule$__fc__$refRule$","Field","FormCreateMobile","window","formCreateMobile","exclude","timeStamp","isPromise"],"mappings":"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"}
|