{
  "version": 3,
  "sources": ["../../../src/props.ts"],
  "sourcesContent": ["import { createMemo } from 'solid-js';\n\nexport function omitProps<T extends Record<string, any>, K extends keyof T>(\n  value: T,\n  keys: K[],\n): Omit<T, K> {\n  const newObject = {};\n\n  const currentKeys = Object.keys(value);\n\n  for (let i = 0, len = currentKeys.length; i < len; i += 1) {\n    const key = currentKeys[i];\n    if (!keys.includes(key as K)) {\n      Object.defineProperty(newObject, key, {\n        get() {\n          return value[key];\n        },\n        configurable: true,\n        enumerable: true,\n      });\n    }\n  }\n\n  return newObject as Omit<T, K>;\n}\n\nexport function pickProps<T extends Record<string, any>, K extends keyof T>(\n  value: T,\n  keys: K[],\n): Pick<T, K> {\n  const newObject = {};\n\n  const currentKeys = Object.keys(value);\n\n  for (let i = 0, len = currentKeys.length; i < len; i += 1) {\n    const key = currentKeys[i];\n    if (keys.includes(key as K)) {\n      Object.defineProperty(newObject, key, {\n        get() {\n          return value[key];\n        },\n        configurable: true,\n        enumerable: true,\n      });\n    }\n  }\n\n  return newObject as Pick<T, K>;\n}\n\ntype ReactiveObject = Record<string | symbol, any> | any[];\n\nexport type Spread<T extends ReactiveObject> = {\n  [key in keyof T]: Readonly<() => T[key]>;\n};\n\nexport type KeyType<T extends ReactiveObject> = T extends any[]\n  ? number\n  : keyof T;\n\nexport function destructure<T extends ReactiveObject>(source: T): Spread<T> {\n  const proxy = new Proxy((Array.isArray(source) ? [] : {}) as Spread<T>, {\n    get(target, key) {\n      const ref = Reflect.get(target, key);\n      if (ref) {\n        return ref;\n      }\n      const newRef = createMemo(() => source[key as keyof T]);\n      Reflect.set(target, key, newRef);\n      return newRef;\n    },\n  });\n\n  return proxy;\n}\n\nexport function spread<T extends ReactiveObject>(source: T): Spread<T> {\n  const proxy = (Array.isArray(source) ? [] : {}) as Spread<T>;\n\n  for (const key of Object.keys(source)) {\n    const k = key as keyof Spread<T>;\n    proxy[k] = createMemo(() => source[k]);\n  }\n\n  return proxy;\n}\n"],
  "mappings": ";AAAA,SAAS,kBAAkB;AAEpB,SAAS,UACd,OACA,MACY;AACZ,QAAM,YAAY,CAAC;AAEnB,QAAM,cAAc,OAAO,KAAK,KAAK;AAErC,WAAS,IAAI,GAAG,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK,GAAG;AACzD,UAAM,MAAM,YAAY,CAAC;AACzB,QAAI,CAAC,KAAK,SAAS,GAAQ,GAAG;AAC5B,aAAO,eAAe,WAAW,KAAK;AAAA,QACpC,MAAM;AACJ,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,QACA,cAAc;AAAA,QACd,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,UACd,OACA,MACY;AACZ,QAAM,YAAY,CAAC;AAEnB,QAAM,cAAc,OAAO,KAAK,KAAK;AAErC,WAAS,IAAI,GAAG,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK,GAAG;AACzD,UAAM,MAAM,YAAY,CAAC;AACzB,QAAI,KAAK,SAAS,GAAQ,GAAG;AAC3B,aAAO,eAAe,WAAW,KAAK;AAAA,QACpC,MAAM;AACJ,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,QACA,cAAc;AAAA,QACd,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAYO,SAAS,YAAsC,QAAsB;AAC1E,QAAM,QAAQ,IAAI,MAAO,MAAM,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,GAAiB;AAAA,IACtE,IAAI,QAAQ,KAAK;AACf,YAAM,MAAM,QAAQ,IAAI,QAAQ,GAAG;AACnC,UAAI,KAAK;AACP,eAAO;AAAA,MACT;AACA,YAAM,SAAS,WAAW,MAAM,OAAO,GAAc,CAAC;AACtD,cAAQ,IAAI,QAAQ,KAAK,MAAM;AAC/B,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,SAAS,OAAiC,QAAsB;AACrE,QAAM,QAAS,MAAM,QAAQ,MAAM,IAAI,CAAC,IAAI,CAAC;AAE7C,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,UAAM,IAAI;AACV,UAAM,CAAC,IAAI,WAAW,MAAM,OAAO,CAAC,CAAC;AAAA,EACvC;AAEA,SAAO;AACT;",
  "names": []
}
