ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 1.41 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../src/hooks/use-id/index.ts"],"sourcesContent":["import { Ref, InjectionKey, inject, computed, unref } from 'vue';\r\n\r\n// type\r\nimport type { MaybeRef } from '@vueuse/core';\r\n\r\nexport type IvueIdInjectionContext = {\r\n prefix: number;\r\n current: number;\r\n};\r\n\r\nexport const ID_INJECTION_KEY: InjectionKey<IvueIdInjectionContext> =\r\n Symbol('ivue-id-injection');\r\n\r\n// 随机生成id\r\nconst defaultIdInjection = {\r\n prefix: Math.floor(Math.random() * 10000),\r\n current: 0,\r\n};\r\n\r\n// 生成随机id\r\nexport const useId = (deterministicId?: MaybeRef<string>): Ref<string> => {\r\n const idInjection = inject(ID_INJECTION_KEY, defaultIdInjection);\r\n\r\n const setId = computed(\r\n () =>\r\n unref(deterministicId) ||\r\n `ivue-id-${idInjection.prefix}-${idInjection.current++}`\r\n );\r\n\r\n return setId;\r\n};\r\n"],"names":[],"mappings":";;AAUa,MAAA,gBAAA,GACX,OAAO,mBAAmB,EAAA;AAG5B,MAAM,kBAAqB,GAAA;AAAA,EACzB,QAAQ,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,MAAA,KAAW,GAAK,CAAA;AAAA,EACxC,OAAS,EAAA,CAAA;AACX,CAAA,CAAA;AAGa,MAAA,KAAA,GAAQ,CAAC,eAAoD,KAAA;AACxE,EAAM,MAAA,WAAA,GAAc,MAAO,CAAA,gBAAA,EAAkB,kBAAkB,CAAA,CAAA;AAE/D,EAAA,MAAM,KAAQ,GAAA,QAAA;AAAA,IACZ,MACE,KAAM,CAAA,eAAe,KACrB,CAAW,QAAA,EAAA,WAAA,CAAY,UAAU,WAAY,CAAA,OAAA,EAAA,CAAA,CAAA;AAAA,GACjD,CAAA;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}