{"version":3,"file":"index.cjs","sources":["../../../../packages/hooks/use-reflect/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash-es'\nimport { type UnwrapNestedRefs, reactive } from 'vue'\n\ninterface ReflectOptions {\n  clone?: boolean\n  reactivity?: boolean\n}\n\ntype ReflectType<T, O> = T extends true ? UnwrapNestedRefs<O> : O\ntype ReflectReturn<T, O> = T extends true\n  ? UnwrapNestedRefs<O[keyof O]>\n  : O[keyof O]\n\nexport const useReflect = <O extends object>(\n  obj: O,\n  options?: ReflectOptions,\n) => {\n  const { clone = true, reactivity = true } = options || {}\n\n  let target: ReflectType<typeof reactivity, O> = obj\n  target = clone ? cloneDeep(target) : target\n  target = reactivity ? reactive(target) : target\n\n  const has = (propertyKey: keyof O) => {\n    return Reflect.has(target, propertyKey)\n  }\n\n  const del = (propertyKey: keyof O) => {\n    return Reflect.deleteProperty(target, propertyKey)\n  }\n\n  const set = (propertyKey: keyof O, value: any, receiver?: O) => {\n    return Reflect.set(target, propertyKey, value, receiver || target)\n  }\n\n  const get = (\n    propertyKey: keyof O,\n    receiver?: O,\n  ): ReflectReturn<typeof reactivity, O> => {\n    return Reflect.get(target, propertyKey, receiver || target)\n  }\n\n  return { target, has, del, set, get }\n}\n"],"names":["cloneDeep","reactive"],"mappings":";;;;AAaa,MAAA,aAAa,CACxB,KACA,YACG;AACH,QAAM,EAAE,QAAQ,MAAM,aAAa,KAAK,IAAI,WAAW;AAEvD,MAAI,SAA4C;AACvC,WAAA,QAAQA,SAAAA,UAAU,MAAM,IAAI;AAC5B,WAAA,aAAaC,IAAAA,SAAS,MAAM,IAAI;AAEnC,QAAA,MAAM,CAAC,gBAAyB;AAC7B,WAAA,QAAQ,IAAI,QAAQ,WAAW;AAAA,EAAA;AAGlC,QAAA,MAAM,CAAC,gBAAyB;AAC7B,WAAA,QAAQ,eAAe,QAAQ,WAAW;AAAA,EAAA;AAGnD,QAAM,MAAM,CAAC,aAAsB,OAAY,aAAiB;AAC9D,WAAO,QAAQ,IAAI,QAAQ,aAAa,OAAO,YAAY,MAAM;AAAA,EAAA;AAG7D,QAAA,MAAM,CACV,aACA,aACwC;AACxC,WAAO,QAAQ,IAAI,QAAQ,aAAa,YAAY,MAAM;AAAA,EAAA;AAG5D,SAAO,EAAE,QAAQ,KAAK,KAAK,KAAK,IAAI;AACtC;;"}