tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.97 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/shared/useDefault/index.ts"],"sourcesContent":["import { computed, ref, watchEffect, WritableComputedRef } from 'vue';\nimport camelCase from 'lodash/camelCase';\n\nfunction getDefaultName(key: string): string {\n const str = camelCase(key);\n return `default${str[0].toLocaleUpperCase() + str.slice(1)}`;\n}\n\n// eventName is keybase, change -> onChange; visible-change -> onVisibleChange\nfunction getEventPropsName(eventName: string): string {\n const str = camelCase(eventName);\n return `on${str[0].toLocaleUpperCase()}${str.slice(1)}`;\n}\n\n/**\n * 受控和非受控逻辑处理,包含 value / modelValue / events\n * @param props 属性\n * @param emit 触发方法,context.emit\n * @param key 受控属性名称\n * @param eventName 事件名称\n * @example const [value, setValue] = useDefault();\n * @returns [value, setValue]\n */\nexport function useDefault<V, T>(props: T, emit: (...args: any[]) => void, key: string, eventName: string) {\n const modelValue = 'modelValue';\n const defaultName = getDefaultName(String(key));\n\n const isUsedModelValue = props[modelValue] !== undefined;\n const isUsedKey = props[key] !== undefined;\n\n const innerValue = ref<V>();\n\n if (isUsedKey) {\n innerValue.value = props[key];\n } else if (isUsedModelValue) {\n innerValue.value = props[modelValue];\n } else {\n innerValue.value = props[defaultName];\n }\n watchEffect(() => {\n if (isUsedModelValue) {\n innerValue.value = props[modelValue];\n }\n if (isUsedKey) {\n innerValue.value = props[key];\n }\n });\n\n function emitEvents<T extends Array<any>>(value: V, ...arg: T) {\n const updateKeys = [`update:${key}`];\n if (isUsedModelValue) {\n updateKeys.push(`update:modelValue`);\n }\n // Props Event exists in Vue3. `props.onChange()` is equal `context.emit('change')`\n updateKeys.forEach((updateKey) => {\n emit(updateKey, value, ...arg);\n });\n const propsEventName = getEventPropsName(eventName);\n props[propsEventName]?.(value, ...arg);\n }\n\n function setInnerValue<M extends Array<any>>(value: V, ...arg: M) {\n if (!isUsedKey && !isUsedModelValue) {\n innerValue.value = value;\n }\n emitEvents<M>(value, ...arg);\n }\n\n const innerValueRef = computed<V>({\n get() {\n return innerValue.value as V;\n },\n set(value: V) {\n setInnerValue(value);\n },\n });\n\n return [innerValueRef, setInnerValue] as [WritableComputedRef<V>, typeof setInnerValue];\n}\n"],"names":["getDefaultName","key","str","camelCase","concat","toLocaleUpperCase","slice","getEventPropsName","eventName","useDefault","props","emit","modelValue","defaultName","String","isUsedModelValue","isUsedKey","innerValue","ref","value","watchEffect","emitEvents","_props$propsEventName","_len","arguments","length","arg","Array","_key","updateKeys","push","forEach","updateKey","apply","propsEventName","call","setInnerValue","_len2","_key2","innerValueRef","computed","get","set"],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,SAASA,eAAeC,GAAqB,EAAA;AACrC,EAAA,IAAAC,GAAA,GAAMC,YAAUF,GAAG,CAAA,CAAA;AACzB,EAAA,OAAA,SAAA,CAAAG,MAAA,CAAiBF,GAAI,CAAA,CAAA,CAAA,CAAGG,mBAAsB,GAAAH,GAAA,CAAII,MAAM,CAAC,CAAA,CAAA,CAAA;AAC3D,CAAA;AAGA,SAASC,kBAAkBC,SAA2B,EAAA;AAC9C,EAAA,IAAAN,GAAA,GAAMC,YAAUK,SAAS,CAAA,CAAA;AAC/B,EAAA,OAAA,IAAA,CAAAJ,MAAA,CAAYF,GAAI,CAAA,CAAA,CAAA,CAAGG,mBAAsB,CAAA,CAAAD,MAAA,CAAAF,GAAA,CAAII,MAAM,CAAC,CAAA,CAAA,CAAA;AACtD,CAAA;AAWO,SAASG,UAAiBA,CAAAC,KAAA,EAAUC,IAAgC,EAAAV,GAAA,EAAaO,SAAmB,EAAA;EACzG,IAAMI,UAAa,GAAA,YAAA,CAAA;EACnB,IAAMC,WAAc,GAAAb,cAAA,CAAec,MAAO,CAAAb,GAAG,CAAC,CAAA,CAAA;EAExC,IAAAc,gBAAA,GAAmBL,MAAME,UAAgB,CAAA,KAAA,KAAA,CAAA,CAAA;EACzC,IAAAI,SAAA,GAAYN,MAAMT,GAAS,CAAA,KAAA,KAAA,CAAA,CAAA;AAEjC,EAAA,IAAMgB,aAAaC,GAAO,EAAA,CAAA;AAE1B,EAAA,IAAIF,SAAW,EAAA;AACbC,IAAAA,UAAA,CAAWE,QAAQT,KAAM,CAAAT,GAAA,CAAA,CAAA;aAChBc,gBAAkB,EAAA;AAC3BE,IAAAA,UAAA,CAAWE,QAAQT,KAAM,CAAAE,UAAA,CAAA,CAAA;AAC3B,GAAO,MAAA;AACLK,IAAAA,UAAA,CAAWE,QAAQT,KAAM,CAAAG,WAAA,CAAA,CAAA;AAC3B,GAAA;AACAO,EAAAA,WAAA,CAAY,YAAM;AAChB,IAAA,IAAIL,gBAAkB,EAAA;AACpBE,MAAAA,UAAA,CAAWE,QAAQT,KAAM,CAAAE,UAAA,CAAA,CAAA;AAC3B,KAAA;AACA,IAAA,IAAII,SAAW,EAAA;AACbC,MAAAA,UAAA,CAAWE,QAAQT,KAAM,CAAAT,GAAA,CAAA,CAAA;AAC3B,KAAA;AACF,GAAC,CAAA,CAAA;EAEQ,SAAAoB,UAAAA,CAAiCF,OAAqB;AAAA,IAAA,IAAAG,qBAAA,CAAA;IAAA,KAAAC,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAARC,GAAQ,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAARF,MAAAA,GAAQ,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,KAAA;AACvD,IAAA,IAAAC,UAAA,GAAa,CAAA,SAAA,CAAAzB,MAAA,CAAWH,GAAK,CAAA,CAAA,CAAA;AACnC,IAAA,IAAIc,gBAAkB,EAAA;MACpBc,UAAA,CAAWC,wBAAwB,CAAA,CAAA;AACrC,KAAA;AAEWD,IAAAA,UAAA,CAAAE,OAAA,CAAQ,UAACC,SAAc,EAAA;MAC3BrB,IAAA,CAAAsB,KAAA,CAAA,KAAA,CAAA,EAAA,CAAAD,SAAA,EAAWb,KAAO,CAAAf,CAAAA,MAAA,CAAGsB,GAAG,CAAA,CAAA,CAAA;AAC/B,KAAC,CAAA,CAAA;AACK,IAAA,IAAAQ,cAAA,GAAiB3B,kBAAkBC,SAAS,CAAA,CAAA;IAC5C,CAAAc,qBAAA,GAAAZ,KAAA,CAAAwB,cAAA,CAAA,MAAAZ,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,IAAAA,qBAAA,CAAAa,IAAA,CAAAF,KAAA,CAAAX,qBAAA,EAAA,CAAAZ,KAAA,EAAkBS,KAAO,CAAAf,CAAAA,MAAA,CAAGsB,GAAG,CAAA,CAAA,CAAA;AACvC,GAAA;EAES,SAAAU,aAAAA,CAAoCjB,OAAqB;AAC5D,IAAA,IAAA,CAACH,SAAa,IAAA,CAACD,gBAAkB,EAAA;MACnCE,UAAA,CAAWE,KAAQ,GAAAA,KAAA,CAAA;AACrB,KAAA;IAAA,KAAAkB,IAAAA,KAAA,GAAAb,SAAA,CAAAC,MAAA,EAHwDC,GAAQ,OAAAC,KAAA,CAAAU,KAAA,GAAAA,CAAAA,GAAAA,KAAA,WAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAARZ,MAAAA,GAAQ,CAAAY,KAAA,GAAAd,CAAAA,CAAAA,GAAAA,SAAA,CAAAc,KAAA,CAAA,CAAA;AAAA,KAAA;IAIlDjB,UAAA,CAAAY,KAAA,CAAAd,KAAAA,CAAAA,EAAAA,CAAAA,KAAA,EAAAf,MAAA,CAAUsB,GAAG,CAAA,CAAA,CAAA;AAC7B,GAAA;EAEA,IAAMa,gBAAgBC,QAAY,CAAA;IAChCC,GAAM,EAAA,SAANA,GAAMA,GAAA;MACJ,OAAOxB,UAAW,CAAAE,KAAA,CAAA;KACpB;AACAuB,IAAAA,KAAAA,SAAAA,IAAIvB,KAAU,EAAA;MACZiB,aAAA,CAAcjB,KAAK,CAAA,CAAA;AACrB,KAAA;AACF,GAAC,CAAA,CAAA;AAEM,EAAA,OAAA,CAACoB,eAAeH,aAAa,CAAA,CAAA;AACtC;;;;"}