{"_id":"react-async-modal-hook","_rev":"30-1f829607cd94f34ce51a70a59d5f4739","name":"react-async-modal-hook","dist-tags":{"beta":"1.0.1","latest":"1.2.0"},"versions":{"0.0.0":{"name":"react-async-modal-hook","version":"0.0.0","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.0","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"3cbed1289dbdc4f20996a75a95e63aec5cc3d75e","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.0.tgz","fileCount":6,"integrity":"sha512-dt++hyYXCMpMWO2nNcTe0JIEwjUahwtpmI7Fy9UGwIxQaqvgqM6bE58xljvCzW53lztZEn53BOOtLA7IEeDclQ==","signatures":[{"sig":"MEYCIQCZhezmUsi51KarfII/iWdJ9mt/AlAF2KtMWEFAsm93hgIhAJ13MQ2ae/QVLlPDDzrJiZpWum37CMPdxB0gSHacUwqg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41864},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.0.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/9b2604f0f3b87b02aa2263e9fb933090/react-async-modal-hook-0.0.0.tgz","_integrity":"sha512-dt++hyYXCMpMWO2nNcTe0JIEwjUahwtpmI7Fy9UGwIxQaqvgqM6bE58xljvCzW53lztZEn53BOOtLA7IEeDclQ==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async imperative interface for spawning and resolving components","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.0_1709405323102_0.499722833423758","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"react-async-modal-hook","version":"0.0.1","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.1","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"714588c5e07dcd6a72d1b19275e243b492218e61","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.1.tgz","fileCount":6,"integrity":"sha512-CldKZ23CFbuPaPseTM9iYGxtW4A42lqTjzFAwbSOhoitgpKF81jmoi2lBfqXgGQgQtDn1hdhKeiuEU+5OAt+2A==","signatures":[{"sig":"MEUCIQCfI9SUMpOOpLAcv+tK5o+CDYWYZeb8pNkvMqzUGGDL1AIgQWGJi6N7Lzd0bOkHoNTBhIVaqAM0DFZAJqAuvaaCB3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33105},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.1.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/3102dc3477326617244a80b10750c530/react-async-modal-hook-0.0.1.tgz","_integrity":"sha512-CldKZ23CFbuPaPseTM9iYGxtW4A42lqTjzFAwbSOhoitgpKF81jmoi2lBfqXgGQgQtDn1hdhKeiuEU+5OAt+2A==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.1_1709439163285_0.771145915356807","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"react-async-modal-hook","version":"0.0.2","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.2","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"d40cd28556e558f3a69a328eddabdfdd0a83c2c4","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.2.tgz","fileCount":6,"integrity":"sha512-JgNnQ5HfhWr2pIxnQGmW+b2r1/PuLsLqXnau4fhCwaLRQ/17YP3+9UriFIw7O+FV81GMasqKQ1Tl9UsJTqBGnw==","signatures":[{"sig":"MEQCIEEQiJQD3+Hc+TLHQv03KUrVZaEBTDl67sKEAH0nD9mbAiAdEBhEDvZ8cY4Hlb/aHeqeUpISX4hk1bp3vQwWtNgKBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33119},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.2.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/ec0d2f641e6a889415d6be4000d981e0/react-async-modal-hook-0.0.2.tgz","_integrity":"sha512-JgNnQ5HfhWr2pIxnQGmW+b2r1/PuLsLqXnau4fhCwaLRQ/17YP3+9UriFIw7O+FV81GMasqKQ1Tl9UsJTqBGnw==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.2_1709440545078_0.11696258731496023","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"react-async-modal-hook","version":"0.0.3","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.3","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"37f2a161e24aaaeac436f0604f278ef6908f6b61","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.3.tgz","fileCount":6,"integrity":"sha512-Lmbjbe8rNBGmVO5CYD52ZKe0l21zpNM3DQz5uxY0MG/P0sOvYxomnNRNBfldpbPn+CTqotqfeqEEsnP1JG6Fjg==","signatures":[{"sig":"MEYCIQDuXMAwqGoZiErS71Bvf8SDFb1zVvptXrqjWpxbhxZ/awIhAM+P0GrsMDwsNQ/qSrvoCVz6sXXuQ0bzX/BFXHjGG0ck","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33177},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.3.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/a1991b6b83afbdc711a24f755e7d588f/react-async-modal-hook-0.0.3.tgz","_integrity":"sha512-Lmbjbe8rNBGmVO5CYD52ZKe0l21zpNM3DQz5uxY0MG/P0sOvYxomnNRNBfldpbPn+CTqotqfeqEEsnP1JG6Fjg==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.3_1709441149037_0.14924649509879329","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"react-async-modal-hook","version":"0.0.4","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.4","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"816e6c9d6482a2a616e8f6300cee79723305c2fd","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.4.tgz","fileCount":6,"integrity":"sha512-sDo3TAOXECaUT5xGZSgasZyJe0ptRuzBgjP866sZosNyf5keqcON90Z1bgvwHO7FNCAxXWyaadBR0Ff3G9zg7g==","signatures":[{"sig":"MEUCICRmTe9B3Jx9atdRl9PWhL4FcZ/UFNNbg0qKHQ1qGHiBAiEA1Ky1EksPzVOwwg/htryM/wF3yPtT5B1WUz0iWWgMiao=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32766},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.4.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/dd2532e8320fd765e2dc5d1f452fa6dd/react-async-modal-hook-0.0.4.tgz","_integrity":"sha512-sDo3TAOXECaUT5xGZSgasZyJe0ptRuzBgjP866sZosNyf5keqcON90Z1bgvwHO7FNCAxXWyaadBR0Ff3G9zg7g==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.4_1709442119563_0.2528776601206073","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"react-async-modal-hook","version":"0.0.5","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.5","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"cb5b19beb476cbb062eb890e299533b9fde66f49","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.5.tgz","fileCount":6,"integrity":"sha512-2sJL9LVsLwJvOZ6XaGuJkj5q3t8+uuulVGEONAnb8bT24g9Z/L3iX/bY9OmgboNQTWHAKUEBbj4dF4/s8R8GKw==","signatures":[{"sig":"MEUCIQCDQCv23p8YMUzvWXAe9AwxWk8B72Wya438ghgXXv/VdQIgB7Q6sHUEVOghJCg3KNBPWbrcQMrkajqlO20jUO2Cw/U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32876},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.5.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/f460ffa5ce3476d0fe0ed86f08880273/react-async-modal-hook-0.0.5.tgz","_integrity":"sha512-2sJL9LVsLwJvOZ6XaGuJkj5q3t8+uuulVGEONAnb8bT24g9Z/L3iX/bY9OmgboNQTWHAKUEBbj4dF4/s8R8GKw==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.5_1709442922694_0.3254421804673815","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"react-async-modal-hook","version":"0.0.6","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.6","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"9bc5bda0477038cd6f5f0d77e1cce80798d0d565","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.6.tgz","fileCount":6,"integrity":"sha512-ZMQ2lsXU+WOWaphVffqMbBDg4SGeO3dB5qWLHnPh3qP6Q/e6oLcXq4MxeZCqPCVfsNqaFmpQlEuIcEN+JUfjjA==","signatures":[{"sig":"MEUCIQDNBCXPNifju7z9b+TGyhJeU1P/wsAFkl4ZHr9vrxKmuQIgWhJhv1/UO5jqu5wZn71ToPu1sUTu+1fDeIRYoIWaivo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33453},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.6.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/46fc2d091ff2f618d171470b4e418a9f/react-async-modal-hook-0.0.6.tgz","_integrity":"sha512-ZMQ2lsXU+WOWaphVffqMbBDg4SGeO3dB5qWLHnPh3qP6Q/e6oLcXq4MxeZCqPCVfsNqaFmpQlEuIcEN+JUfjjA==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.6_1709444578387_0.08440659514604376","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"react-async-modal-hook","version":"0.0.7","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.7","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"4e8cfc972c81a99dde85aa56782219f8d72e91d5","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.7.tgz","fileCount":6,"integrity":"sha512-+vPWfIfMjsTCDruv/tSsbPA/a5dIeoYLrfI6Si4zDooNP86lM3jvBEPlIQ18IR064hLTLuFneeGYXcYREsZq7g==","signatures":[{"sig":"MEYCIQCqAZ4YtC96OMRb4Bn7uyQ7smMdDKe9UIaUbDwmVZj3rQIhAIg9mBiBbJI/YDUKDxiPH5a7mtdqCwS8zTfUvuZ01ARj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33461},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.7.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/c308086c49d2bac21290d7dce9b5a5ed/react-async-modal-hook-0.0.7.tgz","_integrity":"sha512-+vPWfIfMjsTCDruv/tSsbPA/a5dIeoYLrfI6Si4zDooNP86lM3jvBEPlIQ18IR064hLTLuFneeGYXcYREsZq7g==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"immer":"^10.0.2","react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.7_1709444711451_0.999193735853892","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"react-async-modal-hook","version":"0.0.8","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.8","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"98d0137630e30c27f9efc5b5463fb9df084c2801","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.8.tgz","fileCount":6,"integrity":"sha512-u60TQt3KKO8Cvj4b9e5VIyX+WVZq50Yvh+oxLjoo4z1ChOqFRZVmW9FS6JP+4Sva68Hk9FoxPuaIFcnDVdgOjQ==","signatures":[{"sig":"MEYCIQDZaP5a39jX6MhtGw5T6Z9vIFrNaL2QEwK4ExM44rm3cgIhAIAy3b7sDJl2K8QaSXUYYnFt4Y41Kyrg6sBOJ+tYBRSx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33275},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.8.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/a524ba728efeffda40e247bf5725f3a6/react-async-modal-hook-0.0.8.tgz","_integrity":"sha512-u60TQt3KKO8Cvj4b9e5VIyX+WVZq50Yvh+oxLjoo4z1ChOqFRZVmW9FS6JP+4Sva68Hk9FoxPuaIFcnDVdgOjQ==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving components","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.8_1709446380654_0.5410206174772243","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"react-async-modal-hook","version":"0.0.9","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.9","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"2eec6fd5f2463b54d46fa4afd770c68c9f57fc4d","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.9.tgz","fileCount":6,"integrity":"sha512-BghluBHTZEUuUH3bIMnIgKdOK2olswkwmC9rZ+uVENiJTqBIFAUV9fZdXVeHqGWHxBsNcxyYtZJ19VsI+/02Lg==","signatures":[{"sig":"MEUCIFYuE0Sn8mIeczH1KD5VQGkK4bYOdM+6OYE6baOQZUOSAiEA0qeGs2qCF6xUjFVTsjggiwE6UcYEVrn3TeBSeC6RYGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33271},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.9.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/48748993b63991fe5c919e965ac5ca91/react-async-modal-hook-0.0.9.tgz","_integrity":"sha512-BghluBHTZEUuUH3bIMnIgKdOK2olswkwmC9rZ+uVENiJTqBIFAUV9fZdXVeHqGWHxBsNcxyYtZJ19VsI+/02Lg==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.9_1709446666786_0.5847066086137114","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"react-async-modal-hook","version":"0.0.10","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.10","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"3a9aca160e47663b1ffc70b0db3887368e462582","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.10.tgz","fileCount":6,"integrity":"sha512-S89OjsKbkIuOk8C7TD0vgOZI082c2H+RB+S48sl47CuOQsWCRmHsxi15yc7D7Pz+DL295tQQLHTb9KjcJafn9w==","signatures":[{"sig":"MEUCIQCm2enY+McFxj+Y8Tvxgq8EhwHolKsT2ttGFPUznMqhQgIgU2nbQLlI5fgNihgOULKP46W87gDRMRGWjXu4ZjmPak8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34656},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.10.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/1a510ec562dc43eabcf641c1cdca8d6f/react-async-modal-hook-0.0.10.tgz","_integrity":"sha512-S89OjsKbkIuOk8C7TD0vgOZI082c2H+RB+S48sl47CuOQsWCRmHsxi15yc7D7Pz+DL295tQQLHTb9KjcJafn9w==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.10_1709449713184_0.4944147597210984","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"react-async-modal-hook","version":"0.0.11","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.11","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"3b1d3b79dee88adb0ea03cbfba4005bc7e43a5db","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.11.tgz","fileCount":6,"integrity":"sha512-xTJ0k3PpKhrGU/cRW7v92mlE+4bh/Ftqf/D3ASjCBKZk0GyEYBWISOVHm5op9/KjdQHSCx05Mu48p4LcD28+OA==","signatures":[{"sig":"MEQCIDgAZ3UxFYKwWotpCWsxLAXda2Jv+hzbzHKYaIyl4l6PAiARSpku2e3DuUR6YJhFP27nloGyjkiqIrkELWBEP3ZaIA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34674},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.11.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/8ab6ab8402bfb5a7981b8f68c5bb978f/react-async-modal-hook-0.0.11.tgz","_integrity":"sha512-xTJ0k3PpKhrGU/cRW7v92mlE+4bh/Ftqf/D3ASjCBKZk0GyEYBWISOVHm5op9/KjdQHSCx05Mu48p4LcD28+OA==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.11_1709450016694_0.7717414543450292","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"react-async-modal-hook","version":"0.0.12","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.12","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"01632e59e931d4181a76f0cdd29cb7b57bd4fbc5","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.12.tgz","fileCount":6,"integrity":"sha512-gAeEILODbmESLJp9kDucpY2Ix7qbPEwUHV1AER7y61oM4hu3WRrpp21laSDXsmpc1N1H9DpeAJpowKO0JBY96g==","signatures":[{"sig":"MEUCIEC7JUmFahHbjjHfYhHu6ue4sOJdH4VGA4ah2COOyVirAiEAsf7KEm/tHcal9erRQ8VdE/lZkf/7ARP0rTx/VIDj/TY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35116},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.12.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/8d353bde63065b6456d7c7bf949bd494/react-async-modal-hook-0.0.12.tgz","_integrity":"sha512-gAeEILODbmESLJp9kDucpY2Ix7qbPEwUHV1AER7y61oM4hu3WRrpp21laSDXsmpc1N1H9DpeAJpowKO0JBY96g==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.12_1709451846258_0.015582246105122266","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"react-async-modal-hook","version":"0.0.13","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.13","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"b6c4e31b1827633791d49abc496c038fd1a8ef69","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.13.tgz","fileCount":6,"integrity":"sha512-Ff05wnM/M+GuNWxeGduL9YYqs8zfrMnaGrja+2doTjG6If6ghTkEemhhrB9tm5rj3tJAeHGTl1YmWF/6NVS0PQ==","signatures":[{"sig":"MEYCIQC4YZX+FECQR1Uu22PEEIiWTU/7e0iEBdzjs2WTCro7OAIhALWnNTPu7SIVfCeaNUrrUQt9FiqjNbuoP+ZTtMogtOYg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35122},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.13.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/c6b4d43bc1cb5f068dbd212c5631bee7/react-async-modal-hook-0.0.13.tgz","_integrity":"sha512-Ff05wnM/M+GuNWxeGduL9YYqs8zfrMnaGrja+2doTjG6If6ghTkEemhhrB9tm5rj3tJAeHGTl1YmWF/6NVS0PQ==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.13_1709452008426_0.20528795403611744","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"react-async-modal-hook","version":"0.0.14","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.14","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"1ce2f2d22b0a42ecd3af2670d75174df61477ec1","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.14.tgz","fileCount":6,"integrity":"sha512-ozHstyJX+nKS2gx0NoPhO76bx8qMr4a9PPIvWfTzaEebxJuAsB0ckbLujdFh6wZA/JqOJ6qYw91Cg8nytQiAGw==","signatures":[{"sig":"MEUCIEIDJW1hQgAVTviXXozKAEbSi/8cM0m0dxAkmR0MdfZwAiEAvYLe08FnWhkY7SQf2fYIezmLF0RfEVj0Hea2pw/UewQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35370},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.14.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/cc65e91842be7dcda009e6b41865e24e/react-async-modal-hook-0.0.14.tgz","_integrity":"sha512-ozHstyJX+nKS2gx0NoPhO76bx8qMr4a9PPIvWfTzaEebxJuAsB0ckbLujdFh6wZA/JqOJ6qYw91Cg8nytQiAGw==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.14_1712530073709_0.008522716962541033","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"react-async-modal-hook","version":"0.0.15","keywords":["react","async","modal","hook"],"author":{"name":"Kasper573"},"license":"MIT","_id":"react-async-modal-hook@0.0.15","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/yas#readme","bugs":{"url":"https://github.com/kasper573/yas/issues"},"dist":{"shasum":"e69531916ac4da28524f1c75dcbb4a229535492f","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.15.tgz","fileCount":6,"integrity":"sha512-MLyyTmBYMyx8nyGDP6OB+0EOdnpYwX5oqF3PbdTXsU1cekhvnalDRILEHHBSDgTV28jcQtxE2tjbPbkNmgJUNg==","signatures":[{"sig":"MEQCIBFLNQOR8Pcv4X54/6mcgD2vttUP7kcjUey5e/SGFHHVAiBqGaIbRJnsqMVohOmy3jR6L7QYUVBYBrAhzhNhUdGBJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37266},"main":"dist/index.js","_from":"file:react-async-modal-hook-0.0.15.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/d3ea96ae8d410e27fcbb5ef40e4005c3/react-async-modal-hook-0.0.15.tgz","_integrity":"sha512-MLyyTmBYMyx8nyGDP6OB+0EOdnpYwX5oqF3PbdTXsU1cekhvnalDRILEHHBSDgTV28jcQtxE2tjbPbkNmgJUNg==","repository":{"url":"git+https://github.com/kasper573/yas.git","type":"git","directory":"incubations/react-async-modal-hook"},"_npmVersion":"10.2.3","description":"React hook that provides an async interface for spawning and resolving modals","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.15_1712700088743_0.9490035398994696","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"react-async-modal-hook","version":"0.0.16","license":"MIT","_id":"react-async-modal-hook@0.0.16","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"3b7ffbc6566dcb19d4e0b85dbc9d1ff48f0c7df5","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-0.0.16.tgz","fileCount":6,"integrity":"sha512-wXl4k2NCbYSF7pvXR7V+Q8wmakPxAKSVBldnoS/16KLkJMpTh/HAXONiJJkNSCzPJgaItR8fV4gM1ZLi3ptpxA==","signatures":[{"sig":"MEQCIDWSD9yjcHMivBdfGP1uNGevRij4ZBZxrbsa0E5GrM1NAiA+g07JyA+b4T7SxX9qOIBmGdzH4TfEKMpI1gzn5WNhZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37535},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"cd2b2cf98c97ad6015faa435cd3468799e47ce29","scripts":{"dev":"pnpm build --watch","test":"vitest run --typecheck","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist","format":"prettier --write .","test:watch":"vitest --typecheck","prepublishOnly":"npm run build"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.2.3","description":"The declarative nature of React is great for most use cases, but not always.\r When working with async UI flows like dialogs, toasts and drawers, it's often\r preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","vite":"5.2.13","jsdom":"^24.0.0","vitest":"1.3.1","prettier":"^3","typescript":"^5","@types/jest":"^29.5.12","@types/node":"^20","@types/react":"^18.2.61","@vitejs/plugin-react":"4.2.1","@testing-library/react":"14.2.1","@testing-library/jest-dom":"6.4.2","@testing-library/user-event":"14.5.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_0.0.16_1717918089091_0.2947640755076786","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"react-async-modal-hook","version":"1.0.0","license":"MIT","_id":"react-async-modal-hook@1.0.0","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"e4077e4f59715a1551d44d20779101b16872d822","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.0.tgz","fileCount":6,"integrity":"sha512-4RXqaUcgxx9f6gzTkqigPOGCd5fW8mkHzmAlcDFgimbgwcUt0bhYBWTo7w2N8vNxiDO+aodQlscw9y75LLC1aQ==","signatures":[{"sig":"MEUCIQDqTMycLdlcQC8sJ7IHMllzWaQQ9OVqs7v4UWjMPReC8AIgKHoUgZMZlcznZ5TmHHaT2sB9ar+yIFu+WYcMhje4Mws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34820},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/4bff9ddb697bd2f1dfc1af1485ef7d4a/react-async-modal-hook-1.0.0.tgz","_integrity":"sha512-4RXqaUcgxx9f6gzTkqigPOGCd5fW8mkHzmAlcDFgimbgwcUt0bhYBWTo7w2N8vNxiDO+aodQlscw9y75LLC1aQ==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"immer":"^10","react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.0_1761795884366_0.8933655383422521","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"react-async-modal-hook","version":"1.0.1","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.1","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"c5b2e02cdd9a74b4245fb6b42a04270e7c6593d2","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.1.tgz","fileCount":6,"integrity":"sha512-H6FzP0+hwOqz61nMUqrlvlEoeQXpy6dHHddu66ewwzTc5YjHQajRLPTAEW/+z3XSzZCPvggOBvxLMhk5q/a0/g==","signatures":[{"sig":"MEUCIQCWJkDJmlXm7RVxoP3HA1Gy2c422FC5dUaw2Gb1809BpQIgcYW++ag2qP4+IH85eZBIWnO6XhekspDHGoUGIY97cZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34922},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/a72e965d3cfaa9a617ba011647b59adc/react-async-modal-hook-1.0.1.tgz","_integrity":"sha512-H6FzP0+hwOqz61nMUqrlvlEoeQXpy6dHHddu66ewwzTc5YjHQajRLPTAEW/+z3XSzZCPvggOBvxLMhk5q/a0/g==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"immer":"^10","react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.1_1761796560130_0.5243707678352925","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta.1":{"name":"react-async-modal-hook","version":"1.0.1-beta.1","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.1-beta.1","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"54a234e4aaccb48e617212520c54a58dfe94989d","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.1-beta.1.tgz","fileCount":6,"integrity":"sha512-AN4ZLpkS/NIyS++FB66nN/T88RCtJrdDaPioO+BiEmBtBREddaJpnWv7NKjEQ0EatMJUvQOaMTjwcuBeMn8e4w==","signatures":[{"sig":"MEQCICEJLmM3bf5H2oCAdljSdqWJhaOf0v7V4y/GoHKJLgHvAiACBZ2j9Qh/FMHFrkGZCoQCSY6xQLkh5OrKLc01OfB8Xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34634},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.1-beta.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/a1f25e057ff665a6558668f2598630f9/react-async-modal-hook-1.0.1-beta.1.tgz","_integrity":"sha512-AN4ZLpkS/NIyS++FB66nN/T88RCtJrdDaPioO+BiEmBtBREddaJpnWv7NKjEQ0EatMJUvQOaMTjwcuBeMn8e4w==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.1-beta.1_1762054909543_0.25848660899466647","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"react-async-modal-hook","version":"1.0.3","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.3","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"d84d977f508c3737fbde2a6fe7d849f631016ec1","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.3.tgz","fileCount":6,"integrity":"sha512-V24hDasvOJk3XkonVce7FNjDT89E+R4u7LrlOB3bKkdQJZdsGexrhiJ57lWWVmpG+MmRK8xVPcoaYUNSypFuMA==","signatures":[{"sig":"MEUCIBlJYIUJ8RF6k6Rku467Khs6JefpxikLdhyo8JIRg8tFAiEAq3y5sLBVfEv/tCZV/yM/YN9t2mrguydNByl2ppVXiEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36099},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.3.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/261ca0c81f4cc4294ccca6e347f28971/react-async-modal-hook-1.0.3.tgz","_integrity":"sha512-V24hDasvOJk3XkonVce7FNjDT89E+R4u7LrlOB3bKkdQJZdsGexrhiJ57lWWVmpG+MmRK8xVPcoaYUNSypFuMA==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.3_1762200226686_0.7369344956906974","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"react-async-modal-hook","version":"1.0.4","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.4","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"e2a0b9d081dd3d24f8e431aff6768dd648990c7a","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.4.tgz","fileCount":6,"integrity":"sha512-V5WF12pcB+q5tvNWRYLQ8Psbi5FgT4gYME/TMYhtg7cl+ql/sR63iF3Lv7Ds1jF+GV+2psDNCeZlqrBsEBGv+A==","signatures":[{"sig":"MEUCIAuo8Ime3rEEhytHPetRjLP2hFtccrqpZc+/cI/XniCZAiEA/QUz6BtuKGKEj9YbfBOO4Fpa5/W+axkhLVWYvbLPqy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36159},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.4.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/768436f35bfd5137b203925458fc4e32/react-async-modal-hook-1.0.4.tgz","_integrity":"sha512-V5WF12pcB+q5tvNWRYLQ8Psbi5FgT4gYME/TMYhtg7cl+ql/sR63iF3Lv7Ds1jF+GV+2psDNCeZlqrBsEBGv+A==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.4_1762200927256_0.08589426412504553","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"react-async-modal-hook","version":"1.0.5","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.5","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"8c63d77163a8105330f327e26aadc3080cf0e606","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.5.tgz","fileCount":6,"integrity":"sha512-FtSoI/1p5lBxXM5QOpTPnx3O7BG3h4/veBaDzXLn04QsKUPEYiURwhtwL6op95+s08aIDzRxskfutTyfcop0RQ==","signatures":[{"sig":"MEUCIQDXtnoPxcsJZVGme1BF5cXF5Lz9moG8rr7HQRquqKJ9rwIgKilxSYF0xeAxlaSwNR/onA33JdSrergVABxgJ3JgFHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39182},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.5.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/fe025a43a598101ba8e407b62c63406b/react-async-modal-hook-1.0.5.tgz","_integrity":"sha512-FtSoI/1p5lBxXM5QOpTPnx3O7BG3h4/veBaDzXLn04QsKUPEYiURwhtwL6op95+s08aIDzRxskfutTyfcop0RQ==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.5_1762207212418_0.505548208527691","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"react-async-modal-hook","version":"1.0.6","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.6","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"335d4a762fb701804b56685938f8fc1872d2219b","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.6.tgz","fileCount":6,"integrity":"sha512-PdYanMnGbEgPGSE5dOIgIsz8MEbt5FVjo3kTeDAbVJxo88qcaQyclMyenI96SyMv41jrCf6HWO9hUQqEk4yXtA==","signatures":[{"sig":"MEUCIFKwSSHmYCNrT7MI3UMfmv6JpFjjnDJonFw/8gjMmJH2AiEAim0r2i5VhPOc0hg84HBCFLqmiFEmH3ZAtM2IbSCrIt8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39361},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.6.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/492e562a8def2dc3f43e00c027a40bd4/react-async-modal-hook-1.0.6.tgz","_integrity":"sha512-PdYanMnGbEgPGSE5dOIgIsz8MEbt5FVjo3kTeDAbVJxo88qcaQyclMyenI96SyMv41jrCf6HWO9hUQqEk4yXtA==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.6_1762208553156_0.9893897468527795","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"react-async-modal-hook","version":"1.0.7","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.7","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"394aa708926af87775ca376276172ec7f0fdd509","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.7.tgz","fileCount":6,"integrity":"sha512-7o/er0WifrUKgaGZzp483SgI6OQTbE/OWxYUV3s1qNNNzbGCS3VTXNx5N530yTg4oxUiNuQbbsX27r3qSNn4zg==","signatures":[{"sig":"MEUCIByw/5IiDB3Qt4Ekn4C2qCEmV7Dt94eEd3QCkeip8wBFAiEA3ywehDyC8TeCwlfOALojYIGDGInL2FkZG4BKXU0iwdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39560},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.7.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/da245d093a5b6d196a56663920fb98ac/react-async-modal-hook-1.0.7.tgz","_integrity":"sha512-7o/er0WifrUKgaGZzp483SgI6OQTbE/OWxYUV3s1qNNNzbGCS3VTXNx5N530yTg4oxUiNuQbbsX27r3qSNn4zg==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.7_1762209551608_0.019860758128128708","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"react-async-modal-hook","version":"1.0.8","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.8","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"26cf7b7c8337a169267c07592d96f23b23b64f0b","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.8.tgz","fileCount":6,"integrity":"sha512-5ZNVHEELzTTxeM/paczyJW9tvFboC9920yHEB8GdNzlgJyQax4MErUJeG8psUoV3GE773VboS8Skqq1pvjDAZA==","signatures":[{"sig":"MEUCICG2wKVYTggChdqISwcf8HUoYCnWnzEtKQEPCT2XQo3CAiEAuiwsX8Csi6auhHv65ACGKOteTnmJRPqC2jE/ZGCCFYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39618},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.8.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/2bccdf898785fe820e42082a601471a6/react-async-modal-hook-1.0.8.tgz","_integrity":"sha512-5ZNVHEELzTTxeM/paczyJW9tvFboC9920yHEB8GdNzlgJyQax4MErUJeG8psUoV3GE773VboS8Skqq1pvjDAZA==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.8_1762210067315_0.30255258213307656","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"react-async-modal-hook","version":"1.0.9","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.9","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"b9ec796885b71592622f4d433b9c3219e0c101fe","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.9.tgz","fileCount":6,"integrity":"sha512-cBQ5oxosQcHVLFywNoUsOeawa8LQj+iRwxrJGBt9YKWrSYILiAo8cxboCN+2k1Kqa6LEoFDg9JBTeDT63pf6KA==","signatures":[{"sig":"MEQCIDD7zWXGlmKgvPp8zR8njt1aGpJMS9uvqO8Kde9QVk5bAiAG0csJAsuPkqVl8f3wp6ch5tG2W3NUqC4u1gReL3p7EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39721},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.9.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/faeb0ccb9e3b47f6296684cc3190904e/react-async-modal-hook-1.0.9.tgz","_integrity":"sha512-cBQ5oxosQcHVLFywNoUsOeawa8LQj+iRwxrJGBt9YKWrSYILiAo8cxboCN+2k1Kqa6LEoFDg9JBTeDT63pf6KA==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.9_1762210777325_0.38871808091882865","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"react-async-modal-hook","version":"1.0.10","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.0.10","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"78b0b31d7b0b747676f17f9353ec34b52bf23830","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.0.10.tgz","fileCount":6,"integrity":"sha512-LIGfG3hEObaMOgTf0gHFsEw52IQxtlLk0pjEXRmhn2nCh1JuLmAeKtBJikvkg8wFSC0LANFzm4dXhEKQo3VGwg==","signatures":[{"sig":"MEUCIQDfdd6OqeVQv5XMKnzlUZAvKVYjz6wkjFnYCV938E5jOgIgLH27y8DxkuIIzDRxOpPLy3NOEH5AUNCcYOeUzOJgBhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39758},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.0.10.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/e620d9ea09182a705031a7ad2a99cf26/react-async-modal-hook-1.0.10.tgz","_integrity":"sha512-LIGfG3hEObaMOgTf0gHFsEw52IQxtlLk0pjEXRmhn2nCh1JuLmAeKtBJikvkg8wFSC0LANFzm4dXhEKQo3VGwg==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.0.10_1762290627657_0.8446566086063194","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"react-async-modal-hook","version":"1.1.0","keywords":["react","modal","async","hook","typescript"],"license":"MIT","_id":"react-async-modal-hook@1.1.0","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"dist":{"shasum":"b95ca51188d25303be2895b913d4e7d1e3e23cd8","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.1.0.tgz","fileCount":6,"integrity":"sha512-pdnDhqMT1rdCvC9Lq3NkUnVyIu2bUwqIzmspHtdo5r4lHBzmh253NlXK5ji49IDoS+/bid/wIw72ioFDK/YC7A==","signatures":[{"sig":"MEYCIQCBhfH9iW3klsT326N5HtGLVtQYRFqQ4zRrTfRhuOPkiwIhAK/D+2M1W2rHwZJKGAwVf37somslI9WxTqQpn8Sk+aCp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40432},"main":"dist/index.js","type":"module","_from":"file:react-async-modal-hook-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap","build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist"},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"_resolved":"/tmp/05dc5567bfc473d913c03099be559420/react-async-modal-hook-1.1.0.tgz","_integrity":"sha512-pdnDhqMT1rdCvC9Lq3NkUnVyIu2bUwqIzmspHtdo5r4lHBzmh253NlXK5ji49IDoS+/bid/wIw72ioFDK/YC7A==","repository":{"url":"git+https://github.com/kasper573/react-async-modal-hook.git","type":"git"},"_npmVersion":"10.9.2","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","typescript":"^5.5.3","@types/react":"^18.2.61","@types/react-dom":"^18.2.61"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/react-async-modal-hook_1.1.0_1765921930710_0.30408950522780387","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"react-async-modal-hook","version":"1.2.0","license":"MIT","type":"module","keywords":["react","modal","async","hook","typescript"],"repository":{"type":"git","url":"git+https://github.com/kasper573/react-async-modal-hook.git"},"main":"dist/index.js","types":"dist/index.d.ts","peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"devDependencies":{"@types/react":"^18.2.61","@types/react-dom":"^18.2.61","typescript":"^5.5.3","tsup":"^8"},"scripts":{"build":"tsup src/index.ts --clean --dts --format esm,cjs --out-dir dist","dev":"tsup src/index.ts --watch --dts --format esm,cjs --out-dir dist --sourcemap"},"_id":"react-async-modal-hook@1.2.0","description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"homepage":"https://github.com/kasper573/react-async-modal-hook#readme","_integrity":"sha512-MIcuOPeNZOpYpJA6cCo1geBkz+oyo5IdP+zfqSSMo9mzA2Nk7kK/SmbGONy+Q4Bjy695sr75UGMB4+maS+3Uhg==","_resolved":"/tmp/6e1151742a08809851bdbc5a969f50b7/react-async-modal-hook-1.2.0.tgz","_from":"file:react-async-modal-hook-1.2.0.tgz","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-MIcuOPeNZOpYpJA6cCo1geBkz+oyo5IdP+zfqSSMo9mzA2Nk7kK/SmbGONy+Q4Bjy695sr75UGMB4+maS+3Uhg==","shasum":"661695cb67b3b88356d91fabef5ea9fd42881273","tarball":"https://registry.npmjs.org/react-async-modal-hook/-/react-async-modal-hook-1.2.0.tgz","fileCount":6,"unpackedSize":42019,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICKYsp96XArdHGQrGXYvFdIdohoDV4MaQpd1q9F1tO7fAiEA39aV6LKDOdBxpoyp7upux98m1m3KQo4x7IDr8/kcvFc="}]},"_npmUser":{"name":"kasper573","email":"kaspernpm@gmail.com"},"directories":{},"maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-async-modal-hook_1.2.0_1775693848782_0.33971495131878804"},"_hasShrinkwrap":false}},"time":{"created":"2024-03-02T18:48:43.101Z","modified":"2026-04-09T00:17:29.121Z","0.0.0":"2024-03-02T18:48:43.247Z","0.0.1":"2024-03-03T04:12:43.453Z","0.0.2":"2024-03-03T04:35:45.256Z","0.0.3":"2024-03-03T04:45:49.243Z","0.0.4":"2024-03-03T05:01:59.740Z","0.0.5":"2024-03-03T05:15:22.864Z","0.0.6":"2024-03-03T05:42:58.611Z","0.0.7":"2024-03-03T05:45:11.687Z","0.0.8":"2024-03-03T06:13:00.794Z","0.0.9":"2024-03-03T06:17:46.932Z","0.0.10":"2024-03-03T07:08:33.349Z","0.0.11":"2024-03-03T07:13:36.866Z","0.0.12":"2024-03-03T07:44:06.423Z","0.0.13":"2024-03-03T07:46:48.605Z","0.0.14":"2024-04-07T22:47:53.861Z","0.0.15":"2024-04-09T22:01:28.943Z","0.0.16":"2024-06-09T07:28:09.247Z","1.0.0":"2025-10-30T03:44:44.592Z","1.0.1":"2025-10-30T03:56:00.321Z","1.0.1-beta.1":"2025-11-02T03:41:49.731Z","1.0.3":"2025-11-03T20:03:46.952Z","1.0.4":"2025-11-03T20:15:27.451Z","1.0.5":"2025-11-03T22:00:12.636Z","1.0.6":"2025-11-03T22:22:33.383Z","1.0.7":"2025-11-03T22:39:12.313Z","1.0.8":"2025-11-03T22:47:47.514Z","1.0.9":"2025-11-03T22:59:37.525Z","1.0.10":"2025-11-04T21:10:27.844Z","1.1.0":"2025-12-16T21:52:10.838Z","1.2.0":"2026-04-09T00:17:29.014Z"},"bugs":{"url":"https://github.com/kasper573/react-async-modal-hook/issues"},"license":"MIT","homepage":"https://github.com/kasper573/react-async-modal-hook#readme","keywords":["react","modal","async","hook","typescript"],"repository":{"type":"git","url":"git+https://github.com/kasper573/react-async-modal-hook.git"},"description":"The declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.","maintainers":[{"name":"kasper573","email":"kaspernpm@gmail.com"}],"readme":"# react-async-modal-hook\n\nThe declarative nature of React is great for most use cases, but not always. When working with async UI flows like dialogs, toasts and drawers, it's often preferable to have a promise based interface, which is what this library provides.\n\n**Highlights:**\n\n- **Minimal boilerplate**: Only write the code that matters. The rest is handled internally.\n- **Linear logic flow**: Spawn and await modal results in easy to read and compose async/await flow.\n- **Performance**: Modal state changes re-render modals without re-rendering the parent component\n- **Tiny**: ~1kB gzipped and minified, zero dependencies.\n\n## Quickstart\n\n> For more detailed information, see full documentation below.\n\nHere's an example of a component that allows the user to display and add list items. Adding new items is done via a dialog, and if the user tries to add a duplicate item, we want to show a confirmation dialog before proceeding.\n\n```tsx\nimport { useModal } from \"react-async-modal-hook\";\nimport { CreateItemDialog } from \"./CreateItemDialog\";\nimport { ConfirmDialog } from \"./ConfirmDialog\";\n\nfunction ItemList() {\n  const [items, setItems] = useState([]);\n\n  // useModal is a hook that returns the two key features of this library:\n  // 1. A spawner function that opens a new instance of the given modal.\n  //    It returns a promise that resolves when the modal closes, along with its result.\n  // 2. The inlet: A react element that renders the spawned elements for the given component.\n  const [confirm, confirmInlet] = useModal(ConfirmDialog);\n  const [createItem, createInlet] = useModal(CreateItemDialog);\n\n  async function onAddClicked() {\n    // Calling `createItem` will display the `CreateItemDialog` modal and return a promise.\n    // This promise waits for the dialog to close and returns the new item.\n    // (See the modal component example below for how promise resolution works)\n    const newItem = await createItem();\n\n    if (items.includes(newItem)) {\n      const confirmed = await confirm({\n        title: \"The item has already been added\",\n        message: `Are you sure you want add a duplicate of \"${newItem}\"?`,\n      });\n\n      if (!confirmed) {\n        return; // User cancelled\n      }\n    }\n\n    setItems([...items, newItem]);\n  }\n\n  return (\n    <>\n      {/* All modal inlets must be added to the react tree */}\n      {createInlet}\n      {confirmInlet}\n\n      <ul>\n        {items.map((item, index) => (\n          <li key={index}>{item}</li>\n        ))}\n      </ul>\n\n      <button onClick={onAddClicked}>Add item</button>\n    </>\n  );\n}\n```\n\nAny react component that accepts `ModalProps<T>` can be used with `useModal`.\n\nThe component is expected to follow the convention of making use of the `open` prop to control visibility, and calling the `resolve` function when the modal should be closed.\n\nThe generic type `T` represents the type of value that the modal is designed to output, which can be any data you want. If specified, the `resolve` function will require a value of that type when called.\n\n```tsx\nimport { ModalProps } from \"react-async-modal-hook\";\n\ninterface ConfirmDialogProps extends ModalProps<boolean> {\n  title: string;\n  message: string;\n}\n\nexport function ConfirmDialog({ title, message, open, resolve }: ConfirmDialogProps) {\n  return (\n    <dialog open={open}>\n      <h2>{title}</h2>\n      <p>{message}</p>\n      <button onClick={() => resolve(true)}>Yes</button>\n      <button onClick={() => resolve(false)}>No</button>\n    </div>\n  );\n}\n```\n\n> Only showcasing one of the components from the above example here for brevity, as the other component would be nearly identical.\n\n## Setup\n\n1. Install the package\n\n```bash\nnpm install react-async-modal-hook\n# or\nyarn add react-async-modal-hook\n# or\npnpm add react-async-modal-hook\n```\n\n2. Add `ModalStore` and `ModalOutlet` to your app\n\nThe store contains the state of all modals in your app.\n\nThe outlet is a react portal destination where all modals will be sent. It allows you to control the draw order of all modals, which is a great way to avoid having to resort to using z-index.\n\n```tsx\nimport { useMemo } from \"react\";\nimport { ModalStore, ModalContext, ModalOutlet } from \"react-async-modal-hook\";\n\nfunction App() {\n  const modalStore = useMemo(\n    () =>\n      new ModalStore({\n        // The library must know if React StrictMode is enabled.\n        // Since strict mode is disabled in prod you can do this in ie. vite:\n        isStrictModeEnabled: import.meta.env.MODE !== \"production\",\n      }),\n    [],\n  );\n\n  return (\n    <StrictMode>\n      <ModalContext.Provider value={modalStore}>\n        <YourAppContent />\n        <ModalOutlet />\n      </ModalContext.Provider>\n    </StrictMode>\n  );\n}\n```\n\n> You can [customize the modal outlet](#custom-modal-outlet) if necessary.\n\n## What are these `inlets` in the example above?\n\nI call them inlets because they are the counterpart to the outlet you set up.\n\nThey are react elements that renders all currently spawned modal instances for its associated modal component.\n\n1. It automatically renders into a [react portal](https://react.dev/reference/react-dom/createPortal) targeting your [ModalOutlet](#1-set-up-modal-store-and-outlet) component\n\n2. It automatically handles the open/close state of the modal.\n\n3. It provides the `resolve` function to the modal component, which allows the modal to close itself and return a value.\n\nInlets should always be part of the react tree. Do not render them conditionally for visibility, or wrap with more react portals, since that is already handled internally.\n\nNote that since inlets automatically portal to the outlet, it never actually renders anything inline, so you do not have to worry about it impacting the dom where you place them.\n\n> An optional note on implementation for the extra curious: It may seem like it should be possible to automate the rendering of modal elements without this inlet pattern, and thus reducing boilerplate even futher. Unfortunately that can't be done without losing access to react context. Previous versions of this library tried this approach and found this out the hard way, so the inlet pattern is a minor verbosity ultimately imposed by react itself that we simply cannot avoid if we want modals to have access to context, which we definitely do. The reduction in boilerplate is not worth the loss of access to react context.\n\n## Default props\n\nProps passed to all spawned instances can be provided by using the second argument to `useModal`:\n\n```tsx\nconst [showDialog, dialogInlet] = useModal(MyDialog, {\n  theme: \"dark\",\n  size: \"large\",\n});\n\n// Now all spawned dialogs will have these defaults\nconst result = await showDialog({ title: \"Custom Title\" });\n// Will yield this modal: <MyDialog theme=\"dark\" size=\"large\" title=\"Custom Title\" />\n```\n\n### TypeScript benefits\n\nFor Typescript users: If you provide default props for properties that are required by the modal component, the librarys typescript definitions will adjust and allow you to omit them in the spawner function.\n\n```tsx\n// Lets say you have a modal component for the following props:\n// (Modal implementation not shown for brevity)\ninterface MyDialogProps extends ModalProps<string> {\n  title: string;\n}\n\n// It's perfectly fine to omit default props, even if some props are required:\nconst [show, inlet1] = useModal(MyDialog);\n\n// But then when you spawn a new instance, you must provide all required props:\nawait show({ title: \"Hello\" }); // OK\nawait show({}); // TypeScript error: Property 'title' is missing\nawait show(); // TypeScript error: Expected 1 arguments, but got 0.\n\n// However, if you provide default props for all required properties:\nconst [showWithDefaults, inlet2] = useModal(MyDialog, {\n  title: \"Default Title\",\n});\n\n// Now you can omit them when spawning new instances:\nawait showWithDefaults({}); // OK\nawait showWithDefaults(); // OK\n\n// But of course you can still override the defaults if needed:\nawait showWithDefaults({ title: \"Custom Title\" }); // OK\n```\n\n## Animation support with useModalSustainer\n\nBy default, modal elements are unmounted as soon as they are resolved. This works fine as long as your modals do not have any exit animations. If you want to add exit animations, you can use the `useModalSustainer` hook inside your modal component to communicate to the library that it should wait to unmount modal elements of this component until you explicitly tell it to do so.\n\nThis allows you to integrate with any animation library of your choice, or even just use CSS animations.\n\n```tsx\nimport { ModalProps, useModalSustainer } from \"react-async-modal-hook\";\n\nfunction AnimatedDialog({ open, resolve }: ModalProps<string>) {\n  // Simply using the sustainer hook will keep all modal instances from being removed\n  // until you explicitly call sustainer.resolve()\n  const sustainer = useModalSustainer();\n\n  return (\n    <div\n      className={`dialog ${open ? \"entering\" : \"exiting\"}`}\n      // We only want to resolve the sustainer when the \"close\" animation ends\n      onAnimationEnd={open ? undefined : () => sustainer.resolve()}\n    >\n      <h2>Animated Dialog</h2>\n      <button onClick={() => resolve(\"done\")}>Close</button>\n    </div>\n  );\n}\n```\n\nNote: See [Nested `useModal` calls](#nested-usemodal-calls) for a gotcha when using nested modals with sustainers.\n\n## Multiple modal instances\n\nThe same modal component can have multiple instances open simultaneously:\n\n```tsx\nconst [showNotification, notificationInlet] = useModal(NotificationDialog);\n\nasync function handleMultipleNotifications() {\n  // All three will be open at the same time\n  const results = await Promise.all([\n    showNotification({ message: \"First notification\", type: \"info\" }),\n    showNotification({ message: \"Second notification\", type: \"warning\" }),\n    showNotification({ message: \"Third notification\", type: \"error\" }),\n  ]);\n\n  console.log(\"All notifications resolved:\", results);\n}\n```\n\n## Integration with UI component libraries\n\nThe library interface is really small and should work seamlessly with any popular UI component library. Here's an example for integrating with a [material-ui dialog component](https://mui.com/material-ui/react-dialog/).\n\n```tsx\nimport {\n  Dialog,\n  DialogTitle,\n  DialogContent,\n  DialogActions,\n  Button,\n} from \"@mui/material\";\nimport { ModalProps, useModalSustainer } from \"react-async-modal-hook\";\n\nexport function ConfirmDialog({\n  open,\n  resolve,\n  title,\n  content,\n}: ModalProps<boolean> & {\n  title: string;\n  content: string;\n}) {\n  const sustainer = useModalSustainer();\n\n  return (\n    <Dialog\n      open={open}\n      onClose={() => resolve(false)}\n      // This may differ based on the UI library you use,\n      // but it usually involves hooking into the exit transition.\n      slotProps={{\n        transition: {\n          onExited: () => sustainer.resolve(), // Wait for MUI's exit transition\n        },\n      }}\n      // Remember to disable any built-in portals\n      // since it's already handled by the library\n      disablePortal\n    >\n      <DialogTitle>{title}</DialogTitle>\n      <DialogContent>{content}</DialogContent>\n      <DialogActions>\n        <Button onClick={() => resolve(false)}>Cancel</Button>\n        <Button onClick={() => resolve(true)} variant=\"contained\">\n          Confirm\n        </Button>\n      </DialogActions>\n    </Dialog>\n  );\n}\n```\n\nFor more examples you can check out the [storybook app included in the repository](https://github.com/kasper573/react-async-modal-hook/tree/main/apps/storybook/src)\n\n## Custom modal outlet\n\nBy default modals render into the `<ModalOutlet />`. It is just an unstyled div, so you can easily customize it by passing props:\n\n```tsx\n<ModalOutlet\n  id=\"your-id-here\"\n  className=\"your-class-here\"\n  style={yourInlineStylesHere}\n  // ...etc\n/>\n```\n\nIf you're integrating with something outside react, you can set any dom element as the react portal target by assigning it to the `ModalStore`:\n\n```tsx\nconst modalStore = new ModalStore(...);\nmodalStore.setOutlet(document.getElementById(\"custom-modal-root\"));\n```\n\n> In fact, the `ModalOutlet` component is just a simple div component that assigns its ref as the outlet on the `ModalStore` when mounted, which of course is another approach you could use.\n\n## Nested `useModal` calls\n\n> For example, a drawer modal that spawns notification modals.\n\nThis is supported. You can have components that use `useModal` to spawn modals from within modals, but there is one gotcha to be aware of when doing this, especially when using `useModalSustainer` for exit animations:\n\nIf a component that uses `useModal` unmounts while it still has modals open, those modals will also unmount, regardless if you are using `useModalSustainer`. The promises of the discarded modals will be rejected, so you will still have an opportunity to handle this scenario by catching the promise rejection. However, for components using sustainers to keep exit animations running, the animations simply won't finish playing before the modals are unmounted.\n\n> See the [NestedGotcha](https://kasper573.github.io/react-async-modal-hook/?path=/story/nestedgotcha--use-modal) ([source](https://github.com/kasper573/react-async-modal-hook/blob/main/apps/storybook/src/NestedGotcha.stories.tsx)) storybook story for a demo of this behavior.\n\nThis is fine for the vast majority of use cases since in practice you rarely do this, as `useModal` is intended for modals which by nature prompt the user until an action has been chosen. However, if using `useModal` for notification modals like snackbars/toasts or other similar non blocking UI patterns, then discarding the modals early may not be desirable. But in those cases you can solve the problem by using a global event system, and plugging those events into `useModal` higher up in your react tree, likely in the app root.\n\n> See the [NestedIdeal](https://kasper573.github.io/react-async-modal-hook/?path=/story/nestedideal--use-modal) ([source](https://github.com/kasper573/react-async-modal-hook/blob/main/apps/storybook/src/NestedIdeal.stories.tsx)) storybook story for a demo of the solution.\n\nThis limitation is an intentional design choice to keep the library simple and robust. This approach is really easy to build and maintain, and guarantees that you won't have modals lingering around in case of unexpected unmounts. The alternative would be to rebuild the library to have first class nesting support built-in to the sustainer feature, but that would be excessively complex for little gain, since the vast majority of use cases don't require it.\n","readmeFilename":"readme.md"}