{"version":3,"file":"hooks.mjs","sources":["../../src/form/hooks.ts"],"sourcesContent":["import { Ref, inject, computed, getCurrentInstance } from 'vue';\nimport { isBoolean } from 'lodash-es';\nimport { TdFormProps } from './type';\n\nexport interface FormDisabledProvider {\n  disabled: Ref<TdFormProps['disabled']>;\n}\n\nexport interface FormReadonlyProvider {\n  readonly: Ref<TdFormProps['readonly']>;\n}\n\n/**\n * 用于实现 form 的全局禁用状态hook\n * 禁用优先级: 组件 > 组件组 > 表单(propsDisabled.value > extend?.value > disabled?.value)\n * @returns\n */\nexport function useFormDisabled(extend?: Ref<boolean>) {\n  const ctx = getCurrentInstance();\n  const propsDisabled = computed(() => ctx?.props.disabled as boolean);\n  const { disabled } = inject<FormDisabledProvider>('formDisabled', Object.create(null));\n  return computed(() => {\n    // 组件\n    if (isBoolean(propsDisabled.value)) {\n      return propsDisabled.value;\n    }\n    // 组件组\n    if (isBoolean(extend?.value)) {\n      return extend.value;\n    }\n    // 表单\n    if (isBoolean(disabled?.value)) {\n      return disabled.value;\n    }\n    return false;\n  });\n}\n\n/**\n * 用于实现 form 的全局只读状态hook\n * 只读优先级: 组件 > 组件组 > 表单(propsReadonly.value > extend?.value > readonly?.value)\n * @returns\n */\nexport function useReadonly(extend?: Ref<boolean>) {\n  const ctx = getCurrentInstance();\n  const propsReadonly = computed(() => ctx?.props.readonly as boolean);\n  const { readonly } = inject<FormReadonlyProvider>('formReadonly', Object.create(null));\n  return computed(() => {\n    // 组件\n    if (isBoolean(propsReadonly.value)) {\n      return propsReadonly.value;\n    }\n    // 组件组\n    if (isBoolean(extend?.value)) {\n      return extend.value;\n    }\n    // 表单\n    if (isBoolean(readonly?.value)) {\n      return readonly.value;\n    }\n    return false;\n  });\n}\n"],"names":["useFormDisabled","extend","ctx","getCurrentInstance","propsDisabled","computed","props","disabled","_inject","inject","Object","create","isBoolean","value","useReadonly","propsReadonly","readonly","_inject2"],"mappings":";;;;;;;;;AAiBO,SAASA,gBAAgBC,MAAuB,EAAA;AACrD,EAAA,IAAMC,MAAMC,kBAAmB,EAAA,CAAA;EAC/B,IAAMC,aAAgB,GAAAC,QAAA,CAAS,YAAA;IAAA,OAAMH,GAAA,aAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAKI,MAAMC,QAAmB,CAAA;GAAA,CAAA,CAAA;AAC7D,EAAA,IAAAC,OAAA,GAAeC,MAAA,CAA6B,+BAAuBC,MAAA,CAAAC,MAAA,CAAO,IAAI,CAAC,CAAA;IAA7EJ,mBAAAA;EACR,OAAOF,SAAS,YAAM;AAEhB,IAAA,IAAAO,SAAA,CAAUR,aAAc,CAAAS,KAAK,CAAG,EAAA;MAClC,OAAOT,aAAc,CAAAS,KAAA,CAAA;AACvB,KAAA;IAEI,IAAAD,SAAA,CAAUX,MAAQ,KAARA,IAAAA,IAAAA,MAAQ,uBAARA,MAAQ,CAAAY,KAAK,CAAG,EAAA;MAC5B,OAAOZ,MAAO,CAAAY,KAAA,CAAA;AAChB,KAAA;IAEI,IAAAD,SAAA,CAAUL,QAAU,KAAVA,IAAAA,IAAAA,QAAU,uBAAVA,QAAU,CAAAM,KAAK,CAAG,EAAA;MAC9B,OAAON,QAAS,CAAAM,KAAA,CAAA;AAClB,KAAA;AACO,IAAA,OAAA,KAAA,CAAA;AACT,GAAC,CAAA,CAAA;AACH,CAAA;AAOO,SAASC,YAAYb,MAAuB,EAAA;AACjD,EAAA,IAAMC,MAAMC,kBAAmB,EAAA,CAAA;EAC/B,IAAMY,aAAgB,GAAAV,QAAA,CAAS,YAAA;IAAA,OAAMH,GAAA,aAAAA,GAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,GAAA,CAAKI,MAAMU,QAAmB,CAAA;GAAA,CAAA,CAAA;AAC7D,EAAA,IAAAC,QAAA,GAAeR,MAAA,CAA6B,+BAAuBC,MAAA,CAAAC,MAAA,CAAO,IAAI,CAAC,CAAA;IAA7EK,oBAAAA;EACR,OAAOX,SAAS,YAAM;AAEhB,IAAA,IAAAO,SAAA,CAAUG,aAAc,CAAAF,KAAK,CAAG,EAAA;MAClC,OAAOE,aAAc,CAAAF,KAAA,CAAA;AACvB,KAAA;IAEI,IAAAD,SAAA,CAAUX,MAAQ,KAARA,IAAAA,IAAAA,MAAQ,uBAARA,MAAQ,CAAAY,KAAK,CAAG,EAAA;MAC5B,OAAOZ,MAAO,CAAAY,KAAA,CAAA;AAChB,KAAA;IAEI,IAAAD,SAAA,CAAUI,QAAU,KAAVA,IAAAA,IAAAA,QAAU,uBAAVA,QAAU,CAAAH,KAAK,CAAG,EAAA;MAC9B,OAAOG,QAAS,CAAAH,KAAA,CAAA;AAClB,KAAA;AACO,IAAA,OAAA,KAAA,CAAA;AACT,GAAC,CAAA,CAAA;AACH;;;;"}