@shopify/cli-hydrogen 4.0.0-alpha.1 → 4.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/templates/demo-store/.cache/content-v2/sha512/00/cf/2691ba3b4253dc803282219fc108c6d7b3fb03e318729ee568216e8a13af36614948c5a215992ba7b5222cc1055cf81b6a752c3597e261a8c8095f55eb9d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/02/76/13bbea15bb42b81a204b0dc5f14726e0bfa8d012a7b284f887cc2e3c92195d6b07a78f199f990b311ca5fafa9079563503cdd81808cd9b7e496d86c72732 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/08/3c/f2108d415b1474e3e7fee6684b9f1c4b99249c5d4178686b1632d19209f6782c86d7b04abe3873d955bb9e353cca92d8ae7324f374eb691bfd8729ce8407 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/0c/da/c6f091fb614d96e6d0a533733b487011ab615ad5983823c7085320ec2ea2ee8e020ae2646f4772d350f253abb4f8a2489c843a8b873a90bfed3c27c5fd0b +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/11/0c/195071c290a61e22dd825b300c9f93e5315b2effefc3e5545440ac704d629e177bc877333ce73232ac72703bcc69fb425632d84b3caefe7f5c0fd12537ee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/17/08/03dabbacd40d4a2b132018a520d1dbcf29ffb2c659bbe01cb91f700202d5016ab4104831b95a05b98535549be4a6520ddcd6504ba361692549a5cd0458ee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/25/f3/97b4dddda618ca4621d4a8da779269ba2f2eae1fc35cb0cc394e5fb909bb4825e10ca37a4115d69fdd5551be5d64bdb75e0bf0199794f473c25f4ae7aa1a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/27/a0/d277ff364ced6a2d01639f1e2b8675ef95eff3a4aa4d2fda0990392526e0f18def66116a8623096d1bdafabe1dc8efc56ef0956054b3370dfa9ad6596a29 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/28/53/96d2a5c3d4b08a7191e545d4d961f7690f814a331dc8efcc11e45854fbccd04f825ec8d3a1070b05aca51dd63e06c778316395446055cc3cfc90c8b30615 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/28/7c/c71b0c6367bdf7307a8061fe1c4568c9f1e9603d835b6fc917fe8042535a867c37154e35376a01ad6bdb3c2d6f29b88b41902fd6f20b1227e02081682d01 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/29/2e/db501d168869cc6b7d5e51bfbf399e920773ed905b9e2b782ebfb29c5260f05b67d0b7d4599e8c5666253789d545ecfdfdb9e020da8ac262d99d0e69e5b0 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2b/71/b06448186eeafe74e7e29de9fb188013acc513af9d0d4eeff66650385fce9f77f5f2ccea51806c8449cf25c7825ee4c3ac428822d4e3b8b3f1b010adb7aa +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2d/e9/141465ed1c16a93073fe5602f300dc3d8a5246fe045abffa4ac277550e4b365c30629224f328540a36d470ef4d69d8f80d6aeadfbd4a07872a66c40143df +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2d/ec/a65ff18546d88746d8d74b60cd34137005996ded9afd4877b74cba36e9a4dd1829992dbb37ec13b296f39cfeef462c6f12a4c6913577504fec6d7d5611aa +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/30/9f/f03a3dcdd3a5f1116ab710595deb552c1564bd8295bff71f62b3d95be656a6ef53e8ceaee21cbcb880cc06270c3db2327ab1ddef2fc09d6cba4436f470e7 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/35/3c/f46f8adbcf210210bac8ab00267ab16c16393ab4a95920f69c4452b298a83c9785d3d2c2bb4a63937cb4eed028197a18f0d2929024ebae18b0751f07ebf5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/36/3e/ece5cc6633a23301aa4f05fc1efddd8876aec2d8bf7afe504526e2866ed67263e99bffbb1e0d99a65622a7246f9d662217032aca47f70b6f0f13b75e7df1 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/37/19/de54f68ea7b2a79f86d12ec1107e99d04217817fb6de9a5ba2dc5cdd16d16e1dda4cc9f7cf2b6ece5a6330f47ca20fa27a08aeffc17eb23fd11399e601fd +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/46/04/af285aee74d96b28b24f75d7911de65e6c7bb26475ab5219fe5308028fda55060cf45650dfa09c0731ec73ece453c1e24e0c38715e8d4c5c80fd6365a1f4 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/46/1c/c69c5b9150a9f76dff13c0d6a768540636e6569f4f3f56795d1b4c494045d5908674f292815212ac52e6d8a597b4ad35783506113f195a09f1057f09f00c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/4b/48/ca635670e7d1b1a5550d32f51389a5754234da55c6d7c900f348c8bf1ccc84bdcefc620e08979b7aa1d04a49a1138b46346f126d20c0126eb0c3261deb5b +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/50/75/609ace481c5e148698b91afca04bd995ab360802c5f8961228eceb891236836cab54c7fddd97a62e4ca19a03e5863fd0999c68849cf37b30a4fe32e1397f +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/50/cd/4f809a5b4a52449879ecf0b061e00f36f5e2df284fddb5c9c75e13ab1db6e85931fb82d211f1699eed3fe308ffd5d2e69dc2d261fdea58f8224acc278143 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/51/ab/e165384df6374c7b2d0ebebc8642ecb0e0c14f7c5b57970ec5d2e17f7d1643e0b01eda69e5ffbefde85ecba6d613bcc5175c5564e36bfb73d966c8ea4153 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/54/86/917224aeb3e04e19a51534244f5ed28f3529d85276452f52af9af3657798246c97a0948bcf62c707394ab80f0062a87e7079bd71c05e0d16f927091617d2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6a/9d/a99dc2fae7981ecb35b0dadc0acddd23e65ae6590f70743d824c36697fd10610ffafa9aa63c09a7861a701c1d52400050d9b562dc4f6bdba8e0de362b486 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6b/6d/71211d4cebfd1e1c86788ede5784a53cf366a85f4e2646a300c820958a5219bfa5492b169d1cca1b431e946b41d15a526ee7f77db65a6e730dead281f777 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6e/25/d2212e576c7d9684f5237bd1ee363dfe5cf0ad5f9acbeeded47a531c7d3444d2144684e310c8d4d4200ee5b142671bc2be887dc8d3244377d645813e048c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/73/40/c822831f11f08a9ceea944d0145b072ba6164a3e2e75f98fda5437cda6dfddf9ca9450445c1f3236228d6259ac95e4cde9bb6e5996490ed00b7b13b06121 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/73/4c/bf7dfa31c1d17f57e5fdabc0bd79ce133d3ea7562f494615c8bd4369b58c29963090577cd70c6ab2bb8af6ae92915ce20bb0bf1925cccb961aeeed9c8703 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/7b/15/d1749be8fa73f2f123e5e9a0807f343cdfa14fd263f9073fe7cd73352b7318b976a43687096a06acbbed2a2f0f86119d45cdd1e9ad6d09208c06b6232db2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/88/76/d18fdfbb05293909609d42368642fc6da4bd138c5864ec2f721212b52e595b84ae46f48021ed3e6240edf443f78bdea557d56d700e3da848459ea3077a80 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8a/d1/ca384452cdc8a2fb92fa1c70a4db303dd5f9887475e0e4ddf4bc711b5ebceb684ba5fd8bf596c3d491ab8598bd52ffe20f98564f8110da0730f46f39e790 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8b/ae/5793cc875f8fa5fe744c72c07b09ead40386e23a89cb2b77957c61413eb4afc993f70eee071a00aeff74bfe63cfcd91385e45094338c0fc05aedaca91917 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8c/51/88e1fc4d8365cb6ad1a755e8bca81fbb64abb1c8ef08a8314471952910e0e29eadfa283d482233d500893a57b57470171ab98ebacb4b93780b37e7a87c93 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8f/81/8e238bb1d4654dcc554d661194c9415fe36dc6f20624dd26e47c0043f06ee69d1abd49947b11954508bfd01823fdf97a3ca9196521f05cb471473095c5c5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/91/39/2d6842760bb34dde16e9aad46162f546e8cab25d2440a69cb01bf4b2ed8fb3122490666d3eb9b70225259f7ed47e182bc6b83fe455647dde30d61cefa07d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/91/ef/9fc44c6b88d8614b31058550efddfc49a43aeef50cf16d7ade5087e6b13c3f5ca743b1a10c72993a806db4ddf093c2216a853e0dbf6c002c61507e60bfee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/93/6b/e60098157f6bff8ba570cab2ffd97a14983109006f7fa87e4432728366f96dfb19e957d28754daa45f1b6cb2421d26ab59bbd5ce5a448d6102e8e662403d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/94/4a/a539de5a6348e4ecc4e05ea18301c0077a30ed452550660f8b13440a40f7e3858a03ef0aad25b559c49dbbe51455cc5d8e2a7b6c2b0c57e31875b5f8e6be +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/94/6b/572828348790e114213fd3502aba2781cdb87da48f9a16bc6c407d5e12ec888c3fd144f699f50c26934255feee621b2e81aa9156d1afd4e838698fd7be94 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9c/93/917e1b17263467c1baa4f0ef3e5f0a24cf28fc88f290532df19a48d5364d0ca64ef4b5296581cec1e94c5b9a896174e7dd67f42c44ab0482ecbbedf46b3a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9e/2e/945fdc4a4fb8c2186645c71b48ef341e6f0da2a6b3ddd38761210fcf713c2249160f87387ac66547fa30732269fbf9ad6b24b6c6a50ae914284b96be8571 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9f/e5/f8840af1702b9e2e9005708f2513779d889a88d8d7379d5d93cf28390fd6c0300ba5cac0fe429d67a22ddeb884f85917c73f4ae286328a5cf437f568b73f +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/a0/92/dc5bc315864cebde3ccd84e2a2e4228d8f467aa14efdcc3ef13b8815abbf495afeccb531cc4e049fe4d81d0b3e5afc0139b4450fb2cfca2b2c82cdd450ac +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/aa/85/daa1447b7715eafed15469bb5fdce67152d71416d2c40db224480ca151019a7ee86ea5b81ddeb85f7bdae453dab2021886ba63e85b0303ab20bc7b712ea4 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ad/44/f00b1b89c5d7778be4cd40cff421c77e97a937e945491777256fafa6ac80cc334b7118b4248fd13c3cb7fb37d86e1b54afaf688b295542694f276d359082 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/b0/02/9ef55507e114e4391048df8e43101c006d5b3852e33450030d3ba974d438dd3ac489b084b15445ff5e1747e642eda2d969a13c8ba5a778669f9ab019789a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ba/08/9238d2f1bec0536eed757ab6583e384da966814a1c83896409f032bb673a056d62bb6f3b8a5bef36d61daf0e15617154b106b3bbc721354690bc930bb649 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/bc/33/6e26ece5ac53d9eac9ac8a192ef39faf2a587a5808253c659fb1d371c477fc8074d428c8d1929b0d85dd1fec66fc79ea6b9fcb01507e2efec75fb7fbc2cc +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/be/33/7a64881c125a7ff913866bb1818d3fd54d10d837c5a66b6e8f39b9be9e12d352d060f365a62b070414995afb4e90ce70e3d0d31423e6f6fa4e02141e9e9d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/c5/5a/e35359eb2d580bc01b459208e8911fb606223ae88c095db8174d0400824626bc8cf02c869c11d3b751774fafc52555243ed0ea6d6e3c072ef990a4f41461 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/cd/6c/8525b5108666cbe3305a4ad413c0ea863878337b0621eaff9443c170e2f4afe6a0b0ece9ea5ee6777f37b483dede689e86734350430416bde47553bdaf7c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d4/79/8b69e57b3c37d1b04f2734fef377858aaa753467733fc2545b45556e0ae2d066c0180fa34c3a93b625db353ee070b82ad24f3b8dd2a2513aac4fcdc55154 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d5/f6/e56af7190da8a8ba31ae458ad2b1cbfc0cd10a449248348eb92dd8a7de2819c284525513e3082fcd3b1bfdddbe2135bda8bf827cef58bc95abb8a3c83278 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d7/9e/450b29d4cb47831fc3235642c3f4c461d3fb8f8c0ee567aeed2d51d3c0eb6d2e0cfabcf0dbe709ff99d3ba04ead42c75b06efe396aae4939163884cbfec5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/da/84/b6d27e02f9b109d7cff3095b08e2e2ed1802c8b6829c98f6e297d1c404059f8bacfdc278afd07e2f81cbc487318396a3775037b678ab6aff9a5231c94c0d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/dc/0a/58f1301ab9de7b2c6b01d5d5b3676416048c9a42e4140ce4149d242da4d1d7b009bd9f911cf5860628ede86c7d30f4e827c502b8b4f365de6d7e7378ca94 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/dd/b0/b95c68e126e3b0ceeb4c28f6d9cfd165597001d03c7287a9d2fe632cd166c442a578b55ddbb757b72202dcdd49586de80d54cb98ec439d0bd99c0023d6f6 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/e2/6e/b769bab909900c19709f3779dde41268bd5bad463f233c1a4934aefc4af01ba532b0ec73776e874427e110710069e5c2c0aeb4debeef9827a21cc8d3364d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/e8/ae/9b467e1d23913d4584d9417875b3cdc25f6dfed8b228f3a0c818129010b778aae1af1eb200b015ab428e79afe0ef1061262392fbdb96ed7da95efbe7f758 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ec/08/68aa37fb6cee7b8ad4e1c4ee9d352d626db39c1f6b1ed71530e5943d1575127e82f636bdab2fa00b90581c3829db9bf4d3ef4130024ef224c8a48b4d7df2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ed/74/dda12abc4e0e3d645725a3b240b3874262c153ae37fe7a2991d5b6aa7564b5adf8080d262c0be4f841747ca359db51d58b004b7eed8330f27a739b9e3a46 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/fd/f3/986b7ee5ea5ad1d89af5c08de69d43c025b54381092e0a19fd7e7a1e0352552aa85c056315ce5e11a46ec75a252b1a44e2083abb73cd6df8407dfdb0ac48 +1 -0
- package/dist/templates/demo-store/.cache/index-v5/06/7e/7376a38676aa7f0543ab03fc451602dab8ad66e6ddebc44d94ee6f5c1df2 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/06/84/719070270981ac7d003eefa98569d499d2d93dd2f1828da9825b87d03160 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/08/b4/0d9cf6db265587df0990c07ef4bc1e61fa9fe85d6cfe4d6cbbf839c2313c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/0a/75/d3baf53012b62018cb60557f47601d810ec57c564bdc0b24c4990c73a833 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/0c/43/721b2c2b054af973286c2ea3c51c612d347365682b5aae5b9e98554f91e1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/12/83/1a44e36774d9014fe186e18a3691e1ec3f37f2c30c22d38787a3cd157d7f +2 -0
- package/dist/templates/demo-store/.cache/index-v5/13/bd/14a326bd4cb6fb280eb85ecca60d6519738bf7e80df5285ec626d129baf3 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/19/b1/b0877b4141a2ee6f7c173e2407c0b26958c0919238934a89a03049397aec +2 -0
- package/dist/templates/demo-store/.cache/index-v5/1b/6a/418ff1309326b48db3963d5ad40eacb0728d138b7f24896390e484b34c50 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/24/d9/e0e8006f3c8deb17314475a674698161e207f116d9056bf0e1aabfa6c430 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/28/f4/466108ec4c6619222c94f178cc3962ed49f5f9a1e3783ad55335de0cdad3 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/2e/ae/45167cd92f49c852d660e05a29b7484c886b3c0579fb9c148162b1a88fb6 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/35/95/be51ab071b6bd2259e4acb91185c5e0affeee223c15a822ba226607d5616 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/36/74/12368a4a642be74c83dfdb5eaca244dc624ca78c3528edc49262807f9f96 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/37/56/4cbfef349acf26ffb05aa7f17742913d7bd956c920a5bb1941ca0dda3a22 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/3b/e5/5841b3445af43a34c7b560d6cf329ade1bfb64584b85fbb10ac4a7313ef4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/40/67/0807c50d176836338cf5fe4864622d377a143dc97f0a86a702bf11dd7d72 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/45/4b/1a3af253b3e2ef123d3872ad54d71865cc788ff5373a00414d2ae0243421 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/4f/8a/4672c73b9b76b90b7b378fbf9bc1a09426d0b5dbe97404e1f1f5a354013c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/51/da/70f3331e7c62bab563cf9f86297b1bda6f6215420807d7710aaee0b8ca5d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/55/0e/4666f091383137a5168d8052b246b3a7a28e05215dc7d8ff7f6b921f0142 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/58/93/287077465c80a2bfba306f218e51893019895137562df4a116326a0b222a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/61/d4/edd3f3713e7e144ff99d6920736fddfa8676eb5ab824f3f97cf65fa250ea +2 -0
- package/dist/templates/demo-store/.cache/index-v5/68/63/f781b7764101dfe1c192f68e1083513974e2396c9db609adf220a983bd88 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/68/f1/4a98caa6e2ab43e78781b99c7833cab4e722cd716bf9718e001a43efb27b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7d/de/0d76288297eecd2ad4b07dd881631b481b19a83f7c9d36cfa4f967332943 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7e/12/528dc5a6aebfe1fb1d5b4b7d56097f25291dd9454e0ab8faa0a26f296815 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7e/bf/17c5f07b52df7946e14e733afa8f3880a40c1032bd3fb307cae4319e0fa8 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/81/59/14da935263d86e18f99d2391d6731d29cd2d5c0d8c81c65293816e6ad32a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/85/85/0475166b36ce12e75c5a6352b12ea2fa872f696b8161dd08fdfab09a7273 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/88/bd/84904435de02c12b5b01c5aadd782e65a48d44006d98b864e01961a109dc +2 -0
- package/dist/templates/demo-store/.cache/index-v5/88/f6/729e4bad26ebd2b792dee6d1f96f87546ff9c4fa95518f603627fdd1126f +2 -0
- package/dist/templates/demo-store/.cache/index-v5/8a/7c/f5287da63fd3884889fef7019b2679f9a53ce5a268097295682ddad5131b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/95/40/bed10ab9e6081915bc6dc1ffb23a589f407c22ab7d254453f0b3ce53e5f5 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/96/b8/090abc56d6e9489d08af9564fb75d34477730aa1ece14ad85ba516549f2b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/9b/e4/8aa4e95d52644490afdb862c05cb2dccb9f5c1aa45157f3af5c37aad080a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a1/e7/85ee850c85c329791d2123dd8231464fa27317290756b459012830d0f57e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a2/27/f2e299e50a8a3b2b54a89bb3be85f3118081b3c6cfed704bb7d2802e2a49 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a2/88/971871174c14875c70ca7bc9cea8d6b01465c1716d99440b059fa493947c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/aa/57/05b67f08f71909d263fe9c357786097f5683394dbd65b0e4da2f9aa25288 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/ac/25/d778b282ab78dbafcc1b4fb19695aed368081c76fa680140b89af08b07b1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/ad/f9/09a060689bb686417e37a22fcf4866b6188f58eff7128f7979a4a68a6b2d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/af/79/e80586a8b4bd0086246d97823d95bd64c77ad44b1fae591fdcd3883f776e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/b8/22/805af62bf21b63052b47f2f85322cb615ee786c214c0abc63b593a9f80ac +2 -0
- package/dist/templates/demo-store/.cache/index-v5/b8/67/17d551f86553b2a3a30c80b1d9797cbfcaa3d00f5239f39c1727c4d4fe8e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/bc/52/538f70c9e2857f944f17c9121f6018d5c26ba916801b78d75484b130cd78 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c1/77/182e74b8e456fd321a98e8b23f5616eaf2968ccc0dd0eeff016624a89534 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c2/b6/58c9b05294374187ca9a342d46ed1b1f9e0afaf619acf88014f7f1a5dd8b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c6/72/887059f60c91b6fa41fbdab6bc1e1b6f4e3596cadd7a22457466fc1c2f67 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c8/52/09bfbca72b45aec745fc339c27986edefa85e40bd69113275a6ecd6495e9 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/cb/f3/c8983d3f6b148ff6b70a42e0c3ccc4ca2f368df0aca086b8f0279d49f5be +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d2/7b/9476cfbc06c75a311a1951bcdea3b843d3f8763c916468901c3cd85ae7a4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d7/2f/11fb6fd9a383d1edb40e2a774ca2de45a4f4b2c02e3f10d772427ef813d1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d7/a8/e21243c97a68bff4874453358b21815d4dc4c804b63fce7cba9cc567c3d6 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/db/34/e258d66ddeae0e8df2f3a92f0fc0a0472adc9b48c8d2f38087a828da4bc0 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/de/8a/31224d2c63a17ccc13c25e35f4e5882c9a5f5553a3ffeb916c84aa73a15d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/e0/9c/a50143959e2a05f23db12f6e7f9982a0889c4105004c9f58115f9fdb19e0 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f3/45/ed5a71628f7babbcd96f9d316ba1a9a7cdea5be1ef54d931ed5d6fcbfc21 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f4/20/fefac33b4499a27824ee7ef5a84779df38eca55b00ec3046fcb028efb593 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f6/1d/25c4d10714262d4559d2c43d3e64ebfc038d37b0edbbf02246bdd6dcdacb +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f8/f2/017d33a8105299b5a1d72ea80b7cce0d4bafbcd8409437a212735325631a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/fd/f2/f7f55dae9bf6b65ea883eb44dc2fd24a2d2a97c5b68cb559255c6574d239 +2 -0
- package/dist/templates/demo-store/.hydrogen/routes/[route-manifest.json].tsx +54 -0
- package/dist/templates/demo-store/.hydrogen/routes/admin.tsx +15 -0
- package/dist/templates/demo-store/_env +6 -0
- package/dist/templates/demo-store/_gitignore +14 -0
- package/dist/templates/demo-store/app/styles/app.css +4203 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_assets/app-QCTC5PWY.css +4203 -0
- package/dist/templates/demo-store/dist/client/build/_assets/custom-font-COCMVHUB.css +13 -0
- package/dist/templates/demo-store/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js +133 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js +27 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js +83 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js +20 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js +32 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js +105 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js +68 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js +24 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js +25 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js +54 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js +66 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js +2 -0
- package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/manifest-78BD90E6.js +1 -0
- package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js +32 -0
- package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/favicon.svg +28 -0
- package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-Text.woff2 +0 -0
- package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-TextItalic.woff2 +0 -0
- package/dist/templates/demo-store/dist/worker/_assets/app-QCTC5PWY.css +4203 -0
- package/dist/templates/demo-store/dist/worker/_assets/custom-font-COCMVHUB.css +13 -0
- package/dist/templates/demo-store/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/demo-store/dist/worker/index.js +1572 -0
- package/dist/templates/demo-store/dist/worker/index.js.map +7 -0
- package/dist/templates/demo-store/package.json +1 -1
- package/dist/templates/demo-store/remix.init/index.mjs +25 -0
- package/dist/templates/hello-world/.cache/content-v2/sha512/34/81/da34a44efefe809149ec1298fc4031563cb2702c00c70fbd1d0392afa44e5a6bc535cbe5c34a6f379361a5991327c2023fb915b0f94940d21c42cc38a368 +1 -0
- package/dist/templates/hello-world/.cache/content-v2/sha512/fa/dd/9bc10a1cb1f145eabd96bdba509178e20484197fefd8469ace9f53bf277e875751db3c4dddf229807c48cbe8db19494fe2a5aab7d2a4b7ae8bebbd67509c +1 -0
- package/dist/templates/hello-world/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
- package/dist/templates/hello-world/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
- package/dist/templates/hello-world/_env +6 -0
- package/dist/templates/hello-world/_gitignore +8 -0
- package/dist/templates/hello-world/dist/client/build/_assets/app-2MJQXVFI.css +38 -0
- package/dist/templates/hello-world/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js +66 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js +20 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js +27 -0
- package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/manifest-7F090344.js +1 -0
- package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js +2 -0
- package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js +2 -0
- package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js.map +7 -0
- package/dist/templates/hello-world/dist/client/favicon.svg +28 -0
- package/dist/templates/hello-world/dist/worker/_assets/app-2MJQXVFI.css +38 -0
- package/dist/templates/hello-world/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/hello-world/dist/worker/index.js +257 -0
- package/dist/templates/hello-world/dist/worker/index.js.map +7 -0
- package/dist/templates/hello-world/package.json +1 -1
- package/dist/templates/hello-world/remix.init/index.mjs +25 -0
- package/dist/templates/hello-world/remix.init/package.json +7 -0
- package/package.json +1 -1
- package/tmp-create-app.mjs +7 -1
- package/dist/templates/demo-store/.turbo/turbo-build.log +0 -13
- package/dist/templates/demo-store/package-lock.json +0 -25515
- package/dist/templates/demo-store/remix.init/index.ts +0 -15
- package/dist/templates/hello-world/.turbo/turbo-build.log +0 -9
- package/dist/templates/hello-world/package-lock.json +0 -27641
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../../../../../node_modules/history/index.js", "../../../../../../node_modules/@remix-run/react/dist/esm/browser.js", "../../../../../../node_modules/@remix-run/react/dist/esm/_virtual/_rollupPluginBabelHelpers.js", "../../../../../../node_modules/@remix-run/react/dist/esm/components.js", "../../../../../../../packages/react-router/lib/context.ts", "../../../../../../../packages/react-router/lib/router.ts", "../../../../../../../packages/react-router/lib/hooks.tsx", "../../../../../../../packages/react-router/lib/components.tsx", "../../../../../../../packages/react-router-dom/index.tsx", "../../../../../../node_modules/@remix-run/deferred/dist/esm/index.js", "../../../../../../node_modules/@remix-run/react/dist/esm/errorBoundaries.js", "../../../../../../node_modules/@remix-run/react/dist/esm/invariant.js", "../../../../../../node_modules/@remix-run/react/dist/esm/routeModules.js", "../../../../../../node_modules/@remix-run/react/dist/esm/links.js", "../../../../../../node_modules/@remix-run/react/dist/esm/markup.js", "../../../../../../node_modules/@remix-run/react/dist/esm/routes.js", "../../../../../../node_modules/@remix-run/react/dist/esm/data.js", "../../../../../../node_modules/@remix-run/react/dist/esm/routeMatching.js", "../../../../../../node_modules/@remix-run/react/dist/esm/transition.js", "../../../../../../node_modules/@remix-run/react/dist/esm/scroll-restoration.js"],
|
|
4
|
+
"sourcesContent": ["export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}", "import _extends from '@babel/runtime/helpers/esm/extends';\n\n/**\r\n * Actions represent the type of change to a location value.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action\r\n */\nvar Action;\n\n(function (Action) {\n /**\r\n * A POP indicates a change to an arbitrary index in the history stack, such\r\n * as a back or forward navigation. It does not describe the direction of the\r\n * navigation, only that the current index changed.\r\n *\r\n * Note: This is the default action for newly created history objects.\r\n */\n Action[\"Pop\"] = \"POP\";\n /**\r\n * A PUSH indicates a new entry being added to the history stack, such as when\r\n * a link is clicked and a new page loads. When this happens, all subsequent\r\n * entries in the stack are lost.\r\n */\n\n Action[\"Push\"] = \"PUSH\";\n /**\r\n * A REPLACE indicates the entry at the current index in the history stack\r\n * being replaced by a new one.\r\n */\n\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\n\nvar readOnly = process.env.NODE_ENV !== \"production\" ? function (obj) {\n return Object.freeze(obj);\n} : function (obj) {\n return obj;\n};\n\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== 'undefined') console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message); // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nvar BeforeUnloadEventType = 'beforeunload';\nvar HashChangeEventType = 'hashchange';\nvar PopStateEventType = 'popstate';\n/**\r\n * Browser history stores the location in regular URLs. This is the standard for\r\n * most web apps, but it requires some configuration on the server to ensure you\r\n * serve the same app at multiple URLs.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\r\n */\n\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$window = _options.window,\n window = _options$window === void 0 ? document.defaultView : _options$window;\n var globalHistory = window.history;\n\n function getIndexAndLocation() {\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var state = globalHistory.state || {};\n return [state.idx, readOnly({\n pathname: pathname,\n search: search,\n hash: hash,\n state: state.usr || null,\n key: state.key || 'default'\n })];\n }\n\n var blockedPopTx = null;\n\n function handlePop() {\n if (blockedPopTx) {\n blockers.call(blockedPopTx);\n blockedPopTx = null;\n } else {\n var nextAction = Action.Pop;\n\n var _getIndexAndLocation = getIndexAndLocation(),\n nextIndex = _getIndexAndLocation[0],\n nextLocation = _getIndexAndLocation[1];\n\n if (blockers.length) {\n if (nextIndex != null) {\n var delta = index - nextIndex;\n\n if (delta) {\n // Revert the POP\n blockedPopTx = {\n action: nextAction,\n location: nextLocation,\n retry: function retry() {\n go(delta * -1);\n }\n };\n go(delta);\n }\n } else {\n // Trying to POP to a location with no index. We did not create\n // this location, so we can't effectively block the navigation.\n process.env.NODE_ENV !== \"production\" ? warning(false, // TODO: Write up a doc that explains our blocking strategy in\n // detail and link to it here so people can understand better what\n // is going on and how to avoid it.\n \"You are trying to block a POP navigation to a location that was not \" + \"created by the history library. The block will fail silently in \" + \"production, but in general you should do all navigation with the \" + \"history library (instead of using window.history.pushState directly) \" + \"to avoid this situation.\") : void 0;\n }\n } else {\n applyTx(nextAction);\n }\n }\n }\n\n window.addEventListener(PopStateEventType, handlePop);\n var action = Action.Pop;\n\n var _getIndexAndLocation2 = getIndexAndLocation(),\n index = _getIndexAndLocation2[0],\n location = _getIndexAndLocation2[1];\n\n var listeners = createEvents();\n var blockers = createEvents();\n\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), '');\n }\n\n function createHref(to) {\n return typeof to === 'string' ? to : createPath(to);\n } // state defaults to `null` because `window.history.state` does\n\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n hash: '',\n search: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function getHistoryStateAndUrl(nextLocation, index) {\n return [{\n usr: nextLocation.state,\n key: nextLocation.key,\n idx: index\n }, createHref(nextLocation)];\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction) {\n action = nextAction;\n\n var _getIndexAndLocation3 = getIndexAndLocation();\n\n index = _getIndexAndLocation3[0];\n location = _getIndexAndLocation3[1];\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr = getHistoryStateAndUrl(nextLocation, index + 1),\n historyState = _getHistoryStateAndUr[0],\n url = _getHistoryStateAndUr[1]; // TODO: Support forced reloading\n // try...catch because iOS limits us to 100 pushState calls :/\n\n\n try {\n globalHistory.pushState(historyState, '', url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n applyTx(nextAction);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr2 = getHistoryStateAndUrl(nextLocation, index),\n historyState = _getHistoryStateAndUr2[0],\n url = _getHistoryStateAndUr2[1]; // TODO: Support forced reloading\n\n\n globalHistory.replaceState(historyState, '', url);\n applyTx(nextAction);\n }\n }\n\n function go(delta) {\n globalHistory.go(delta);\n }\n\n var history = {\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n var unblock = blockers.push(blocker);\n\n if (blockers.length === 1) {\n window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n\n return function () {\n unblock(); // Remove the beforeunload listener so the document may\n // still be salvageable in the pagehide event.\n // See https://html.spec.whatwg.org/#unloading-documents\n\n if (!blockers.length) {\n window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n };\n }\n };\n return history;\n}\n/**\r\n * Hash history stores the location in window.location.hash. This makes it ideal\r\n * for situations where you don't want to send the location to the server for\r\n * some reason, either because you do cannot configure it or the URL space is\r\n * reserved for something else.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\r\n */\n\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options2 = options,\n _options2$window = _options2.window,\n window = _options2$window === void 0 ? document.defaultView : _options2$window;\n var globalHistory = window.history;\n\n function getIndexAndLocation() {\n var _parsePath = parsePath(window.location.hash.substr(1)),\n _parsePath$pathname = _parsePath.pathname,\n pathname = _parsePath$pathname === void 0 ? '/' : _parsePath$pathname,\n _parsePath$search = _parsePath.search,\n search = _parsePath$search === void 0 ? '' : _parsePath$search,\n _parsePath$hash = _parsePath.hash,\n hash = _parsePath$hash === void 0 ? '' : _parsePath$hash;\n\n var state = globalHistory.state || {};\n return [state.idx, readOnly({\n pathname: pathname,\n search: search,\n hash: hash,\n state: state.usr || null,\n key: state.key || 'default'\n })];\n }\n\n var blockedPopTx = null;\n\n function handlePop() {\n if (blockedPopTx) {\n blockers.call(blockedPopTx);\n blockedPopTx = null;\n } else {\n var nextAction = Action.Pop;\n\n var _getIndexAndLocation4 = getIndexAndLocation(),\n nextIndex = _getIndexAndLocation4[0],\n nextLocation = _getIndexAndLocation4[1];\n\n if (blockers.length) {\n if (nextIndex != null) {\n var delta = index - nextIndex;\n\n if (delta) {\n // Revert the POP\n blockedPopTx = {\n action: nextAction,\n location: nextLocation,\n retry: function retry() {\n go(delta * -1);\n }\n };\n go(delta);\n }\n } else {\n // Trying to POP to a location with no index. We did not create\n // this location, so we can't effectively block the navigation.\n process.env.NODE_ENV !== \"production\" ? warning(false, // TODO: Write up a doc that explains our blocking strategy in\n // detail and link to it here so people can understand better\n // what is going on and how to avoid it.\n \"You are trying to block a POP navigation to a location that was not \" + \"created by the history library. The block will fail silently in \" + \"production, but in general you should do all navigation with the \" + \"history library (instead of using window.history.pushState directly) \" + \"to avoid this situation.\") : void 0;\n }\n } else {\n applyTx(nextAction);\n }\n }\n }\n\n window.addEventListener(PopStateEventType, handlePop); // popstate does not fire on hashchange in IE 11 and old (trident) Edge\n // https://developer.mozilla.org/de/docs/Web/API/Window/popstate_event\n\n window.addEventListener(HashChangeEventType, function () {\n var _getIndexAndLocation5 = getIndexAndLocation(),\n nextLocation = _getIndexAndLocation5[1]; // Ignore extraneous hashchange events.\n\n\n if (createPath(nextLocation) !== createPath(location)) {\n handlePop();\n }\n });\n var action = Action.Pop;\n\n var _getIndexAndLocation6 = getIndexAndLocation(),\n index = _getIndexAndLocation6[0],\n location = _getIndexAndLocation6[1];\n\n var listeners = createEvents();\n var blockers = createEvents();\n\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), '');\n }\n\n function getBaseHref() {\n var base = document.querySelector('base');\n var href = '';\n\n if (base && base.getAttribute('href')) {\n var url = window.location.href;\n var hashIndex = url.indexOf('#');\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href;\n }\n\n function createHref(to) {\n return getBaseHref() + '#' + (typeof to === 'string' ? to : createPath(to));\n }\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n hash: '',\n search: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function getHistoryStateAndUrl(nextLocation, index) {\n return [{\n usr: nextLocation.state,\n key: nextLocation.key,\n idx: index\n }, createHref(nextLocation)];\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction) {\n action = nextAction;\n\n var _getIndexAndLocation7 = getIndexAndLocation();\n\n index = _getIndexAndLocation7[0];\n location = _getIndexAndLocation7[1];\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(nextLocation.pathname.charAt(0) === '/', \"Relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr3 = getHistoryStateAndUrl(nextLocation, index + 1),\n historyState = _getHistoryStateAndUr3[0],\n url = _getHistoryStateAndUr3[1]; // TODO: Support forced reloading\n // try...catch because iOS limits us to 100 pushState calls :/\n\n\n try {\n globalHistory.pushState(historyState, '', url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n applyTx(nextAction);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(nextLocation.pathname.charAt(0) === '/', \"Relative pathnames are not supported in hash history.replace(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr4 = getHistoryStateAndUrl(nextLocation, index),\n historyState = _getHistoryStateAndUr4[0],\n url = _getHistoryStateAndUr4[1]; // TODO: Support forced reloading\n\n\n globalHistory.replaceState(historyState, '', url);\n applyTx(nextAction);\n }\n }\n\n function go(delta) {\n globalHistory.go(delta);\n }\n\n var history = {\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n var unblock = blockers.push(blocker);\n\n if (blockers.length === 1) {\n window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n\n return function () {\n unblock(); // Remove the beforeunload listener so the document may\n // still be salvageable in the pagehide event.\n // See https://html.spec.whatwg.org/#unloading-documents\n\n if (!blockers.length) {\n window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n };\n }\n };\n return history;\n}\n/**\r\n * Memory history stores the current location in memory. It is designed for use\r\n * in stateful non-browser environments like tests and React Native.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory\r\n */\n\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options3 = options,\n _options3$initialEntr = _options3.initialEntries,\n initialEntries = _options3$initialEntr === void 0 ? ['/'] : _options3$initialEntr,\n initialIndex = _options3.initialIndex;\n var entries = initialEntries.map(function (entry) {\n var location = readOnly(_extends({\n pathname: '/',\n search: '',\n hash: '',\n state: null,\n key: createKey()\n }, typeof entry === 'string' ? parsePath(entry) : entry));\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: \" + JSON.stringify(entry) + \")\") : void 0;\n return location;\n });\n var index = clamp(initialIndex == null ? entries.length - 1 : initialIndex, 0, entries.length - 1);\n var action = Action.Pop;\n var location = entries[index];\n var listeners = createEvents();\n var blockers = createEvents();\n\n function createHref(to) {\n return typeof to === 'string' ? to : createPath(to);\n }\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n search: '',\n hash: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction, nextLocation) {\n action = nextAction;\n location = nextLocation;\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in memory history.push(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n applyTx(nextAction, nextLocation);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in memory history.replace(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n entries[index] = nextLocation;\n applyTx(nextAction, nextLocation);\n }\n }\n\n function go(delta) {\n var nextIndex = clamp(index + delta, 0, entries.length - 1);\n var nextAction = Action.Pop;\n var nextLocation = entries[nextIndex];\n\n function retry() {\n go(delta);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index = nextIndex;\n applyTx(nextAction, nextLocation);\n }\n }\n\n var history = {\n get index() {\n return index;\n },\n\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n return blockers.push(blocker);\n }\n };\n return history;\n} ////////////////////////////////////////////////////////////////////////////////\n// UTILS\n////////////////////////////////////////////////////////////////////////////////\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n\nfunction promptBeforeUnload(event) {\n // Cancel the event.\n event.preventDefault(); // Chrome (and legacy IE) requires returnValue to be set.\n\n event.returnValue = '';\n}\n\nfunction createEvents() {\n var handlers = [];\n return {\n get length() {\n return handlers.length;\n },\n\n push: function push(fn) {\n handlers.push(fn);\n return function () {\n handlers = handlers.filter(function (handler) {\n return handler !== fn;\n });\n };\n },\n call: function call(arg) {\n handlers.forEach(function (fn) {\n return fn && fn(arg);\n });\n }\n };\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\r\n * Creates a string URL path from the given pathname, search, and hash components.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createpath\r\n */\n\n\nfunction createPath(_ref) {\n var _ref$pathname = _ref.pathname,\n pathname = _ref$pathname === void 0 ? '/' : _ref$pathname,\n _ref$search = _ref.search,\n search = _ref$search === void 0 ? '' : _ref$search,\n _ref$hash = _ref.hash,\n hash = _ref$hash === void 0 ? '' : _ref$hash;\n if (search && search !== '?') pathname += search.charAt(0) === '?' ? search : '?' + search;\n if (hash && hash !== '#') pathname += hash.charAt(0) === '#' ? hash : '#' + hash;\n return pathname;\n}\n/**\r\n * Parses a string URL path into its separate pathname, search, and hash components.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#parsepath\r\n */\n\nfunction parsePath(path) {\n var parsedPath = {};\n\n if (path) {\n var hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n var searchIndex = path.indexOf('?');\n\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport { Action, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, parsePath };\n//# sourceMappingURL=index.js.map\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { createBrowserHistory } from 'history';\nimport * as React from 'react';\nimport { RemixEntry } from './components.js';\n\n// TODO: We eventually might not want to import anything directly from `history`\n\n/**\n * The entry point for a Remix app when it is rendered in the browser (in\n * `app/entry.client.js`). This component is used by React to hydrate the HTML\n * that was received from the server.\n */\nfunction RemixBrowser(_props) {\n let historyRef = React.useRef();\n\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({\n window\n });\n }\n\n let history = historyRef.current;\n let [state, dispatch] = React.useReducer((_, update) => update, {\n action: history.action,\n location: history.location\n });\n React.useLayoutEffect(() => history.listen(dispatch), [history]);\n let entryContext = window.__remixContext;\n entryContext.manifest = window.__remixManifest;\n entryContext.routeModules = window.__remixRouteModules;\n entryContext.serverAbortDelay = window.__remixServerAbortDelay; // In the browser, we don't need this because a) in the case of loader\n // errors we already know the order and b) in the case of render errors\n // React knows the order and handles error boundaries normally.\n\n entryContext.appState.trackBoundaries = false;\n entryContext.appState.trackCatchBoundaries = false;\n return /*#__PURE__*/React.createElement(RemixEntry, {\n context: entryContext,\n action: state.action,\n location: state.location,\n navigator: history\n });\n}\n\nexport { RemixBrowser };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport * as React from 'react';\nimport { useHref, NavLink as NavLink$1, Link as Link$1, useLocation, useResolvedPath, useNavigate, Router, useRoutes } from 'react-router-dom';\nimport { AbortedDeferredError } from '@remix-run/deferred';\nimport { createPath } from 'history';\nimport { RemixErrorBoundary, RemixRootDefaultErrorBoundary, RemixCatchBoundary, RemixRootDefaultCatchBoundary } from './errorBoundaries.js';\nimport invariant from './invariant.js';\nimport { getLinksForMatches, isPageLinkDescriptor, getNewMatchesForLinks, getDataLinkHrefs, getModuleLinkHrefs, getStylesheetPrefetchLinks } from './links.js';\nimport { createHtml, escapeHtml } from './markup.js';\nimport { createClientRoutes } from './routes.js';\nimport { matchClientRoutes } from './routeMatching.js';\nimport { createTransitionManager } from './transition.js';\n\nconst IS_SSR = typeof document === \"undefined\"; ////////////////////////////////////////////////////////////////////////////////\n// RemixEntry\n\nconst RemixEntryContext = /*#__PURE__*/React.createContext(undefined);\n\nfunction useRemixEntryContext() {\n let context = React.useContext(RemixEntryContext);\n invariant(context, \"You must render this element inside a <Remix> element\");\n return context;\n}\n\nfunction RemixEntry({\n context: entryContext,\n action,\n location: historyLocation,\n navigator: _navigator,\n static: staticProp = false\n}) {\n let {\n manifest,\n routeData: documentLoaderData,\n deferredLoaderData: documentDeferredLoaderData,\n actionData: documentActionData,\n routeModules,\n serverHandoffString,\n appState: entryComponentDidCatchEmulator,\n serverAbortDelay: documentServerAbortDelay\n } = entryContext;\n let clientRoutes = React.useMemo(() => createClientRoutes(manifest.routes, routeModules, RemixRoute), [manifest, routeModules]);\n let [clientState, setClientState] = React.useState(entryComponentDidCatchEmulator);\n let [transitionManager] = React.useState(() => {\n return createTransitionManager({\n routes: clientRoutes,\n actionData: documentActionData,\n loaderData: documentLoaderData,\n deferredLoaderData: documentDeferredLoaderData,\n location: historyLocation,\n catch: entryComponentDidCatchEmulator.catch,\n catchBoundaryId: entryComponentDidCatchEmulator.catchBoundaryRouteId,\n onRedirect: _navigator.replace\n });\n });\n React.useEffect(() => {\n let subscriber = state => {\n setClientState({\n catch: state.catch,\n error: state.error,\n catchBoundaryRouteId: state.catchBoundaryId,\n loaderBoundaryRouteId: state.errorBoundaryId,\n renderBoundaryRouteId: null,\n trackBoundaries: false,\n trackCatchBoundaries: false\n });\n };\n\n return transitionManager.subscribe(subscriber);\n }, [transitionManager]); // Ensures pushes interrupting pending navigations use replace\n // TODO: Move this to React Router\n\n let navigator = React.useMemo(() => {\n let push = (to, state) => {\n return transitionManager.getState().transition.state !== \"idle\" ? _navigator.replace(to, state) : _navigator.push(to, state);\n };\n\n return { ..._navigator,\n push\n };\n }, [_navigator, transitionManager]);\n let {\n location,\n matches,\n loaderData,\n actionData\n } = transitionManager.getState(); // Send new location to the transition manager\n\n React.useEffect(() => {\n let {\n location\n } = transitionManager.getState();\n if (historyLocation === location) return;\n transitionManager.send({\n type: \"navigation\",\n location: historyLocation,\n submission: consumeNextNavigationSubmission(),\n action\n });\n }, [transitionManager, historyLocation, action]); // If we tried to render and failed, and the app threw before rendering any\n // routes, get the error and pass it to the ErrorBoundary to emulate\n // `componentDidCatch`\n\n let ssrErrorBeforeRoutesRendered = clientState.error && clientState.renderBoundaryRouteId === null && clientState.loaderBoundaryRouteId === null ? deserializeError(clientState.error) : undefined;\n let ssrCatchBeforeRoutesRendered = clientState.catch && clientState.catchBoundaryRouteId === null ? clientState.catch : undefined;\n return /*#__PURE__*/React.createElement(RemixEntryContext.Provider, {\n value: {\n matches,\n manifest,\n appState: clientState,\n routeModules,\n serverHandoffString,\n clientRoutes,\n routeData: loaderData,\n deferredLoaderData: documentDeferredLoaderData,\n actionData,\n transitionManager,\n serverAbortDelay: documentServerAbortDelay\n }\n }, /*#__PURE__*/React.createElement(RemixErrorBoundary, {\n location: location,\n component: RemixRootDefaultErrorBoundary,\n error: ssrErrorBeforeRoutesRendered\n }, /*#__PURE__*/React.createElement(RemixCatchBoundary, {\n location: location,\n component: RemixRootDefaultCatchBoundary,\n catch: ssrCatchBeforeRoutesRendered\n }, /*#__PURE__*/React.createElement(Router, {\n navigationType: action,\n location: location,\n navigator: navigator,\n static: staticProp\n }, /*#__PURE__*/React.createElement(Routes, null)))));\n}\n\nfunction deserializeError(data) {\n let error = new Error(data.message);\n error.stack = data.stack;\n return error;\n}\n\nfunction Routes() {\n // TODO: Add `renderMatches` function to RR that we can use and then we don't\n // need this component, we can just `renderMatches` from RemixEntry\n let {\n clientRoutes\n } = useRemixEntryContext(); // fallback to the root if we don't have a match\n\n let element = useRoutes(clientRoutes) || clientRoutes[0].element;\n return element;\n} ////////////////////////////////////////////////////////////////////////////////\n// RemixRoute\n\n\nconst RemixRouteContext = /*#__PURE__*/React.createContext(undefined);\n\nfunction useRemixRouteContext() {\n let context = React.useContext(RemixRouteContext);\n invariant(context, \"You must render this element in a remix route element\");\n return context;\n}\n\nfunction DefaultRouteComponent({\n id\n}) {\n throw new Error(`Route \"${id}\" has no component! Please go add a \\`default\\` export in the route module file.\\n` + \"If you were trying to navigate or submit to a resource route, use `<a>` instead of `<Link>` or `<Form reloadDocument>`.\");\n}\n\nfunction RemixRoute({\n id\n}) {\n let location = useLocation();\n let {\n routeData,\n routeModules,\n appState\n } = useRemixEntryContext(); // This checks prevent cryptic error messages such as: 'Cannot read properties of undefined (reading 'root')'\n\n invariant(routeData, \"Cannot initialize 'routeData'. This normally occurs when you have server code in your client modules.\\n\" + \"Check this link for more details:\\nhttps://remix.run/pages/gotchas#server-code-in-client-bundles\");\n invariant(routeModules, \"Cannot initialize 'routeModules'. This normally occurs when you have server code in your client modules.\\n\" + \"Check this link for more details:\\nhttps://remix.run/pages/gotchas#server-code-in-client-bundles\");\n let data = routeData[id];\n let {\n default: Component,\n CatchBoundary,\n ErrorBoundary\n } = routeModules[id];\n let element = Component ? /*#__PURE__*/React.createElement(Component, null) : /*#__PURE__*/React.createElement(DefaultRouteComponent, {\n id: id\n });\n let context = {\n data,\n id\n };\n\n if (CatchBoundary) {\n // If we tried to render and failed, and this route threw the error, find it\n // and pass it to the ErrorBoundary to emulate `componentDidCatch`\n let maybeServerCaught = appState.catch && appState.catchBoundaryRouteId === id ? appState.catch : undefined; // This needs to run after we check for the error from a previous render,\n // otherwise we will incorrectly render this boundary for a loader error\n // deeper in the tree.\n\n if (appState.trackCatchBoundaries) {\n appState.catchBoundaryRouteId = id;\n }\n\n context = maybeServerCaught ? {\n id,\n\n get data() {\n console.error(\"You cannot `useLoaderData` in a catch boundary.\");\n return undefined;\n }\n\n } : {\n id,\n data\n };\n element = /*#__PURE__*/React.createElement(RemixCatchBoundary, {\n location: location,\n component: CatchBoundary,\n catch: maybeServerCaught\n }, element);\n } // Only wrap in error boundary if the route defined one, otherwise let the\n // error bubble to the parent boundary. We could default to using error\n // boundaries around every route, but now if the app doesn't want users\n // seeing the default Remix ErrorBoundary component, they *must* define an\n // error boundary for *every* route and that would be annoying. Might as\n // well make it required at that point.\n //\n // By conditionally wrapping like this, we allow apps to define a top level\n // ErrorBoundary component and be done with it. Then, if they want to, they\n // can add more specific boundaries by exporting ErrorBoundary components\n // for whichever routes they please.\n //\n // NOTE: this kind of logic will move into React Router\n\n\n if (ErrorBoundary) {\n // If we tried to render and failed, and this route threw the error, find it\n // and pass it to the ErrorBoundary to emulate `componentDidCatch`\n let maybeServerRenderError = appState.error && (appState.renderBoundaryRouteId === id || appState.loaderBoundaryRouteId === id) ? deserializeError(appState.error) : undefined; // This needs to run after we check for the error from a previous render,\n // otherwise we will incorrectly render this boundary for a loader error\n // deeper in the tree.\n\n if (appState.trackBoundaries) {\n appState.renderBoundaryRouteId = id;\n }\n\n context = maybeServerRenderError ? {\n id,\n\n get data() {\n console.error(\"You cannot `useLoaderData` in an error boundary.\");\n return undefined;\n }\n\n } : {\n id,\n data\n };\n element = /*#__PURE__*/React.createElement(RemixErrorBoundary, {\n location: location,\n component: ErrorBoundary,\n error: maybeServerRenderError\n }, element);\n } // It's important for the route context to be above the error boundary so that\n // a call to `useLoaderData` doesn't accidentally get the parents route's data.\n\n\n return /*#__PURE__*/React.createElement(RemixRouteContext.Provider, {\n value: context\n }, element);\n} ////////////////////////////////////////////////////////////////////////////////\n// Public API\n\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\nfunction useAsyncValue() {\n let value = React.useContext(AwaitContext);\n return value === null || value === void 0 ? void 0 : value._data;\n}\n\n/**\n * Component to use for rendering Promises (usually on loaderData)\n */\nfunction Await({\n children,\n errorElement,\n resolve\n}) {\n return /*#__PURE__*/React.createElement(AwaitErrorBoundary, {\n resolve: resolve,\n errorElement: errorElement\n }, /*#__PURE__*/React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus;\n\n(function (AwaitRenderStatus) {\n AwaitRenderStatus[AwaitRenderStatus[\"pending\"] = 0] = \"pending\";\n AwaitRenderStatus[AwaitRenderStatus[\"success\"] = 1] = \"success\";\n AwaitRenderStatus[AwaitRenderStatus[\"error\"] = 2] = \"error\";\n})(AwaitRenderStatus || (AwaitRenderStatus = {}));\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n\n componentDidCatch(error, errorInfo) {\n console.error(\"<Await> caught the following error during render\", error, errorInfo);\n }\n\n render() {\n let {\n children,\n errorElement,\n resolve\n } = this.props;\n let promise = null;\n let status = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_data\", {\n get: () => resolve\n });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_error\", {\n get: () => renderError\n });\n } else if (resolve._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status = promise._error !== undefined ? AwaitRenderStatus.error : promise._data !== undefined ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", {\n get: () => true\n });\n promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n get: () => data\n }), error => Object.defineProperty(resolve, \"_error\", {\n get: () => error\n }));\n }\n\n if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n // If the promise was aborted, we want to freeze the UI until the next piece of data is ready\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n let child = errorElement && typeof errorElement === \"object\" && \"type\" in errorElement && typeof errorElement.type === \"function\" ? /*#__PURE__*/React.cloneElement(errorElement, {\n error: promise._error\n }) : errorElement; // Render via our errorElement\n\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: child\n });\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: children\n });\n } // Throw to the suspense boundary\n\n\n throw promise;\n }\n\n}\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\n\n\nfunction ResolveAwait({\n children\n}) {\n let data = useAsyncValue();\n\n if (typeof children === \"function\") {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children(data));\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n}\n/**\n * Defines the prefetching behavior of the link:\n *\n * - \"intent\": Fetched when the user focuses or hovers the link\n * - \"render\": Fetched when the link is rendered\n * - \"none\": Never fetched\n */\n\n\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n let [maybePrefetch, setMaybePrefetch] = React.useState(false);\n let [shouldPrefetch, setShouldPrefetch] = React.useState(false);\n let {\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n onTouchStart\n } = theirElementProps;\n React.useEffect(() => {\n if (prefetch === \"render\") {\n setShouldPrefetch(true);\n }\n }, [prefetch]);\n\n let setIntent = () => {\n if (prefetch === \"intent\") {\n setMaybePrefetch(true);\n }\n };\n\n let cancelIntent = () => {\n if (prefetch === \"intent\") {\n setMaybePrefetch(false);\n setShouldPrefetch(false);\n }\n };\n\n React.useEffect(() => {\n if (maybePrefetch) {\n let id = setTimeout(() => {\n setShouldPrefetch(true);\n }, 100);\n return () => {\n clearTimeout(id);\n };\n }\n }, [maybePrefetch]);\n return [shouldPrefetch, {\n onFocus: composeEventHandlers(onFocus, setIntent),\n onBlur: composeEventHandlers(onBlur, cancelIntent),\n onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n }];\n}\n/**\n * A special kind of `<Link>` that knows whether or not it is \"active\".\n *\n * @see https://remix.run/api/remix#navlink\n */\n\n\nlet NavLink = /*#__PURE__*/React.forwardRef(({\n to,\n prefetch = \"none\",\n ...props\n}, forwardedRef) => {\n let href = useHref(to);\n let [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NavLink$1, _extends({\n ref: forwardedRef,\n to: to\n }, props, typeof prefetchHandlers === \"object\" ? { ...prefetchHandlers\n } : {})), shouldPrefetch ? /*#__PURE__*/React.createElement(PrefetchPageLinks, {\n page: href\n }) : null);\n});\nNavLink.displayName = \"NavLink\";\n/**\n * This component renders an anchor tag and is the primary way the user will\n * navigate around your website.\n *\n * @see https://remix.run/api/remix#link\n */\n\nlet Link = /*#__PURE__*/React.forwardRef(({\n to,\n prefetch = \"none\",\n ...props\n}, forwardedRef) => {\n let href = useHref(to);\n let [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Link$1, _extends({\n ref: forwardedRef,\n to: to\n }, props, typeof prefetchHandlers === \"object\" ? prefetchHandlers : {})), shouldPrefetch ? /*#__PURE__*/React.createElement(PrefetchPageLinks, {\n page: href\n }) : null);\n});\nLink.displayName = \"Link\";\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return event => {\n theirHandler && theirHandler(event);\n\n if (!event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\n/**\n * Renders the `<link>` tags for the current routes.\n *\n * @see https://remix.run/api/remix#meta-links-scripts\n */\n\nfunction Links() {\n let {\n matches,\n routeModules,\n manifest\n } = useRemixEntryContext();\n let links = React.useMemo(() => getLinksForMatches(matches, routeModules, manifest), [matches, routeModules, manifest]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, links.map(link => {\n if (isPageLinkDescriptor(link)) {\n return /*#__PURE__*/React.createElement(PrefetchPageLinks, _extends({\n key: link.page\n }, link));\n }\n\n let imageSrcSet = null; // In React 17, <link imageSrcSet> and <link imageSizes> will warn\n // because the DOM attributes aren't recognized, so users need to pass\n // them in all lowercase to forward the attributes to the node without a\n // warning. Normalize so that either property can be used in Remix.\n\n if (\"useId\" in React) {\n if (link.imagesrcset) {\n link.imageSrcSet = imageSrcSet = link.imagesrcset;\n delete link.imagesrcset;\n }\n\n if (link.imagesizes) {\n link.imageSizes = link.imagesizes;\n delete link.imagesizes;\n }\n } else {\n if (link.imageSrcSet) {\n link.imagesrcset = imageSrcSet = link.imageSrcSet;\n delete link.imageSrcSet;\n }\n\n if (link.imageSizes) {\n link.imagesizes = link.imageSizes;\n delete link.imageSizes;\n }\n }\n\n return /*#__PURE__*/React.createElement(\"link\", _extends({\n key: link.rel + (link.href || \"\") + (imageSrcSet || \"\")\n }, link));\n }));\n}\n/**\n * This component renders all of the `<link rel=\"prefetch\">` and\n * `<link rel=\"modulepreload\"/>` tags for all the assets (data, modules, css) of\n * a given page.\n *\n * @param props\n * @param props.page\n * @see https://remix.run/api/remix#prefetchpagelinks-\n */\n\nfunction PrefetchPageLinks({\n page,\n ...dataLinkProps\n}) {\n let {\n clientRoutes\n } = useRemixEntryContext();\n let matches = React.useMemo(() => matchClientRoutes(clientRoutes, page), [clientRoutes, page]);\n\n if (!matches) {\n console.warn(`Tried to prefetch ${page} but no routes matched.`);\n return null;\n }\n\n return /*#__PURE__*/React.createElement(PrefetchPageLinksImpl, _extends({\n page: page,\n matches: matches\n }, dataLinkProps));\n}\n\nfunction usePrefetchedStylesheets(matches) {\n let {\n routeModules\n } = useRemixEntryContext();\n let [styleLinks, setStyleLinks] = React.useState([]);\n React.useEffect(() => {\n let interrupted = false;\n getStylesheetPrefetchLinks(matches, routeModules).then(links => {\n if (!interrupted) setStyleLinks(links);\n });\n return () => {\n interrupted = true;\n };\n }, [matches, routeModules]);\n return styleLinks;\n}\n\nfunction PrefetchPageLinksImpl({\n page,\n matches: nextMatches,\n ...linkProps\n}) {\n let location = useLocation();\n let {\n matches,\n manifest\n } = useRemixEntryContext();\n let newMatchesForData = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, \"data\"), [page, nextMatches, matches, location]);\n let newMatchesForAssets = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, location, \"assets\"), [page, nextMatches, matches, location]);\n let dataHrefs = React.useMemo(() => getDataLinkHrefs(page, newMatchesForData, manifest), [newMatchesForData, page, manifest]);\n let moduleHrefs = React.useMemo(() => getModuleLinkHrefs(newMatchesForAssets, manifest), [newMatchesForAssets, manifest]); // needs to be a hook with async behavior because we need the modules, not\n // just the manifest like the other links in here.\n\n let styleLinks = usePrefetchedStylesheets(newMatchesForAssets);\n return /*#__PURE__*/React.createElement(React.Fragment, null, dataHrefs.map(href => /*#__PURE__*/React.createElement(\"link\", _extends({\n key: href,\n rel: \"prefetch\",\n as: \"fetch\",\n href: href\n }, linkProps))), moduleHrefs.map(href => /*#__PURE__*/React.createElement(\"link\", _extends({\n key: href,\n rel: \"modulepreload\",\n href: href\n }, linkProps))), styleLinks.map(link =>\n /*#__PURE__*/\n // these don't spread `linkProps` because they are full link descriptors\n // already with their own props\n React.createElement(\"link\", _extends({\n key: link.href\n }, link))));\n}\n/**\n * Renders the `<title>` and `<meta>` tags for the current routes.\n *\n * @see https://remix.run/api/remix#meta-links-scripts\n */\n\n\nfunction Meta() {\n let {\n matches,\n routeData,\n routeModules\n } = useRemixEntryContext();\n let location = useLocation();\n let meta = {};\n let parentsData = {};\n\n for (let match of matches) {\n let routeId = match.route.id;\n let data = routeData[routeId];\n let params = match.params;\n let routeModule = routeModules[routeId];\n\n if (routeModule.meta) {\n let routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n data,\n parentsData,\n params,\n location\n }) : routeModule.meta;\n Object.assign(meta, routeMeta);\n }\n\n parentsData[routeId] = data;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, Object.entries(meta).map(([name, value]) => {\n if (!value) {\n return null;\n }\n\n if ([\"charset\", \"charSet\"].includes(name)) {\n return /*#__PURE__*/React.createElement(\"meta\", {\n key: \"charset\",\n charSet: value\n });\n }\n\n if (name === \"title\") {\n return /*#__PURE__*/React.createElement(\"title\", {\n key: \"title\"\n }, String(value));\n } // Open Graph tags use the `property` attribute, while other meta tags\n // use `name`. See https://ogp.me/\n\n\n let isOpenGraphTag = name.startsWith(\"og:\");\n return [value].flat().map(content => {\n if (isOpenGraphTag) {\n return /*#__PURE__*/React.createElement(\"meta\", {\n property: name,\n content: content,\n key: name + content\n });\n }\n\n if (typeof content === \"string\") {\n return /*#__PURE__*/React.createElement(\"meta\", {\n name: name,\n content: content,\n key: name + content\n });\n }\n\n return /*#__PURE__*/React.createElement(\"meta\", _extends({\n key: name + JSON.stringify(content)\n }, content));\n });\n }));\n}\n/**\n * Tracks whether Remix has finished hydrating or not, so scripts can be skipped\n * during client-side updates.\n */\n\nlet isHydrated = false;\nconst js = String.raw;\n/**\n * Renders the `<script>` tags needed for the initial render. Bundles for\n * additional routes are loaded later as needed.\n *\n * @param props Additional properties to add to each script tag that is rendered.\n * In addition to scripts, \\<link rel=\"modulepreload\"> tags receive the crossOrigin\n * property if provided.\n *\n * @see https://remix.run/api/remix#meta-links-scripts\n */\n\nfunction Scripts(props) {\n let {\n manifest,\n matches,\n pendingLocation,\n clientRoutes,\n routeData,\n deferredLoaderData,\n serverHandoffString,\n serverAbortDelay\n } = useRemixEntryContext();\n React.useEffect(() => {\n isHydrated = true;\n }, []);\n let initialScripts = React.useMemo(() => {\n let contextScript = serverHandoffString ? js`window.__remixContext = ${serverHandoffString};` : \"\";\n\n if (serverHandoffString && deferredLoaderData && routeData) {\n contextScript += typeof serverAbortDelay === \"number\" ? js`window.__remixServerAbortDelay = ${serverAbortDelay};` : \"\";\n contextScript += js`window.__remixDeferredResolvers={};`;\n\n for (let [routeId, deferredKeys] of Object.entries(deferredLoaderData)) {\n if (!routeData[routeId] || typeof routeData[routeId] !== \"object\") {\n continue;\n }\n\n contextScript += js`window.__remixDeferredResolvers[${JSON.stringify(routeId)}]={};`;\n\n for (let key of deferredKeys) {\n var _routeData$routeId$ke;\n\n if (!((_routeData$routeId$ke = routeData[routeId][key]) !== null && _routeData$routeId$ke !== void 0 && _routeData$routeId$ke.then)) {\n continue;\n }\n\n contextScript += \"(() => {\";\n contextScript += js`let p,r,e;`;\n contextScript += js`p=new Promise(((j,k)=>{r=j;e=k;}));`;\n contextScript += js`window.__remixDeferredResolvers[${JSON.stringify(routeId)}][${JSON.stringify(key)}]={r,e};`;\n\n if (serverAbortDelay) {\n let racePromise = js`new Promise((_,e2) => setTimeout(() => {e2(new Error(\"The render was aborted by the server without a reason.\"));}, window.__remixServerAbortDelay))`;\n contextScript += js`p=Promise.race([p, ${racePromise}]);`;\n }\n\n contextScript += js`window.__remixContext.routeData[${JSON.stringify(routeId)}][${JSON.stringify(key)}]=p;`;\n contextScript += \"})();\";\n }\n }\n }\n\n let routeModulesScript = `${matches.map((match, index) => `import ${JSON.stringify(manifest.url)};\nimport * as route${index} from ${JSON.stringify(manifest.routes[match.route.id].module)};`).join(\"\\n\")}\nwindow.__remixRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"script\", _extends({}, props, {\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: createHtml(contextScript),\n type: undefined\n })), /*#__PURE__*/React.createElement(\"script\", _extends({}, props, {\n dangerouslySetInnerHTML: createHtml(routeModulesScript),\n type: \"module\",\n async: true\n }))); // disabled deps array because we are purposefully only rendering this once\n // for hydration, after that we want to just continue rendering the initial\n // scripts as they were when the page first loaded\n // eslint-disable-next-line\n }, []); // avoid waterfall when importing the next route module\n\n let nextMatches = React.useMemo(() => {\n if (pendingLocation) {\n // FIXME: can probably use transitionManager `nextMatches`\n let matches = matchClientRoutes(clientRoutes, pendingLocation);\n invariant(matches, `No routes match path \"${pendingLocation.pathname}\"`);\n return matches;\n }\n\n return [];\n }, [pendingLocation, clientRoutes]);\n let routePreloads = matches.concat(nextMatches).map(match => {\n let route = manifest.routes[match.route.id];\n return (route.imports || []).concat([route.module]);\n }).flat(1);\n let preloads = manifest.entry.imports.concat(routePreloads);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"link\", {\n rel: \"modulepreload\",\n href: manifest.entry.module,\n crossOrigin: props.crossOrigin\n }), dedupe(preloads).map(path => /*#__PURE__*/React.createElement(\"link\", {\n key: path,\n rel: \"modulepreload\",\n href: path,\n crossOrigin: props.crossOrigin\n })), isHydrated ? null : initialScripts, /*#__PURE__*/React.createElement(DeferredHydrationScripts, null));\n}\n\nfunction DeferredHydrationScripts() {\n let {\n routeData,\n deferredLoaderData\n } = useRemixEntryContext();\n let scripts = React.useMemo(() => {\n if (!deferredLoaderData) {\n return null;\n }\n\n let scripts = [];\n\n for (let [routeId, deferredKeys] of Object.entries(deferredLoaderData || {})) {\n if (!routeData[routeId] || typeof routeData[routeId] !== \"object\") {\n continue;\n }\n\n for (let key of deferredKeys) {\n scripts.push( /*#__PURE__*/React.createElement(React.Suspense, {\n key: `${routeId}[${key}]`\n }, /*#__PURE__*/React.createElement(DeferredHydrationScriptContext.Provider, {\n value: {\n result: undefined,\n routeId,\n key\n }\n }, /*#__PURE__*/React.createElement(DeferredHydrationScript, {\n resolve: routeData[routeId][key]\n }))));\n }\n }\n\n return scripts;\n }, [deferredLoaderData, routeData]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, scripts);\n}\n\nconst DeferredHydrationScriptContext = /*#__PURE__*/React.createContext({\n result: undefined,\n routeId: \"\",\n key: \"\"\n});\n\nfunction DeferredHydrationScript({\n resolve\n}) {\n let ctx = React.useContext(DeferredHydrationScriptContext);\n let promise = null;\n let status = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - return early\n return null;\n } else if (resolve._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status = promise._error !== undefined ? AwaitRenderStatus.error : promise._data !== undefined ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", {\n get: () => true\n });\n promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n get: () => data\n }), error => Object.defineProperty(resolve, \"_error\", {\n get: () => error\n }));\n }\n\n if (status === AwaitRenderStatus.pending) {\n throw promise;\n }\n\n let isError = promise._error !== undefined;\n let error = promise._error;\n let script = \"(() => {\";\n\n if (isError) {\n script += js`let v=new Error(${JSON.stringify(error.message)});`;\n script += js`v.stack=${JSON.stringify(error.stack)};`;\n } else {\n script += js`let v=${escapeHtml(JSON.stringify(promise._data))};`;\n }\n\n if (isError) {\n script += js`window.__remixDeferredResolvers[${JSON.stringify(ctx.routeId)}][${JSON.stringify(ctx.key)}].e(v);`;\n } else {\n script += js`window.__remixDeferredResolvers[${JSON.stringify(ctx.routeId)}][${JSON.stringify(ctx.key)}].r(v);`;\n }\n\n script += \"})();\";\n return /*#__PURE__*/React.createElement(\"script\", {\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: script\n }\n });\n}\n\nfunction dedupe(array) {\n return [...new Set(array)];\n}\n\n/**\n * A Remix-aware `<form>`. It behaves like a normal form except that the\n * interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n *\n * @see https://remix.run/api/remix#form\n */\nlet Form = /*#__PURE__*/React.forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {\n ref: ref\n }));\n});\nForm.displayName = \"Form\";\nlet FormImpl = /*#__PURE__*/React.forwardRef(({\n reloadDocument = false,\n replace = false,\n method = \"get\",\n action,\n encType = \"application/x-www-form-urlencoded\",\n fetchKey,\n onSubmit,\n ...props\n}, forwardedRef) => {\n let submit = useSubmitImpl(fetchKey);\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\n return /*#__PURE__*/React.createElement(\"form\", _extends({\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n encType: encType,\n onSubmit: reloadDocument ? undefined : event => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n submit(submitter || event.currentTarget, {\n method,\n replace\n });\n }\n }, props));\n});\nFormImpl.displayName = \"FormImpl\";\n\n/**\n * Resolves a `<form action>` path relative to the current route.\n *\n * @see https://remix.run/api/remix#useformaction\n */\nfunction useFormAction(action, // TODO: Remove method param in v2 as it's no longer needed and is a breaking change\nmethod = \"get\") {\n let {\n id\n } = useRemixRouteContext();\n let resolvedPath = useResolvedPath(action ?? \".\"); // Previously we set the default action to \".\". The problem with this is that\n // `useResolvedPath(\".\")` excludes search params and the hash of the resolved\n // URL. This is the intended behavior of when \".\" is specifically provided as\n // the form action, but inconsistent w/ browsers when the action is omitted.\n // https://github.com/remix-run/remix/issues/927\n\n let location = useLocation();\n let {\n search,\n hash\n } = resolvedPath;\n let isIndexRoute = id.endsWith(\"/index\");\n\n if (action == null) {\n search = location.search;\n hash = location.hash; // When grabbing search params from the URL, remove the automatically\n // inserted ?index param so we match the useResolvedPath search behavior\n // which would not include ?index\n\n if (isIndexRoute) {\n let params = new URLSearchParams(search);\n params.delete(\"index\");\n search = params.toString() ? `?${params.toString()}` : \"\";\n }\n }\n\n if ((action == null || action === \".\") && isIndexRoute) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return createPath({\n pathname: resolvedPath.pathname,\n search,\n hash\n });\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n *\n * @see https://remix.run/api/remix#usesubmit\n */\nfunction useSubmit() {\n return useSubmitImpl();\n}\nlet defaultMethod = \"get\";\nlet defaultEncType = \"application/x-www-form-urlencoded\";\nfunction useSubmitImpl(key) {\n let navigate = useNavigate();\n let defaultAction = useFormAction();\n let {\n transitionManager\n } = useRemixEntryContext();\n return React.useCallback((target, options = {}) => {\n let method;\n let action;\n let encType;\n let formData;\n\n if (isFormElement(target)) {\n let submissionTrigger = options.submissionTrigger;\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType = options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(`Cannot submit a <button> without a <form>`);\n } // <button>/<input type=\"submit\"> may override attributes of <form>\n\n\n method = options.method || target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"formaction\") || form.getAttribute(\"action\") || defaultAction;\n encType = options.encType || target.getAttribute(\"formenctype\") || form.getAttribute(\"enctype\") || defaultEncType;\n formData = new FormData(form); // Include name + value from a <button>\n\n if (target.name) {\n formData.append(target.name, target.value);\n }\n } else {\n if (isHtmlElement(target)) {\n throw new Error(`Cannot submit element that is not <form>, <button>, or ` + `<input type=\"submit|image\">`);\n }\n\n method = options.method || \"get\";\n action = options.action || defaultAction;\n encType = options.encType || \"application/x-www-form-urlencoded\";\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n if (IS_SSR) {\n throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n }\n\n let {\n protocol,\n host\n } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n if (method.toLowerCase() === \"get\") {\n // Start with a fresh set of params and wipe out the old params to\n // match default browser behavior\n let params = new URLSearchParams();\n let hasParams = false;\n\n for (let [name, value] of formData) {\n if (typeof value === \"string\") {\n hasParams = true;\n params.append(name, value);\n } else {\n throw new Error(`Cannot submit binary form data using GET`);\n }\n }\n\n url.search = hasParams ? `?${params.toString()}` : \"\";\n }\n\n let submission = {\n formData,\n action: url.pathname + url.search,\n method: method.toUpperCase(),\n encType,\n key: Math.random().toString(36).substr(2, 8)\n };\n\n if (key) {\n transitionManager.send({\n type: \"fetcher\",\n href: submission.action,\n submission,\n key\n });\n } else {\n setNextNavigationSubmission(submission);\n navigate(url.pathname + url.search, {\n replace: options.replace\n });\n }\n }, [defaultAction, key, navigate, transitionManager]);\n}\nlet nextNavigationSubmission;\n\nfunction setNextNavigationSubmission(submission) {\n nextNavigationSubmission = submission;\n}\n\nfunction consumeNextNavigationSubmission() {\n let submission = nextNavigationSubmission;\n nextNavigationSubmission = undefined;\n return submission;\n}\n\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\n\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes, which automatically happens on the next `<Link>` click when Remix\n * detects a new version of the app is available on the server.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n *\n * @see https://remix.run/api/remix#usebeforeunload\n */\n\n\nfunction useBeforeUnload(callback) {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n/**\n * Returns the current route matches on the page. This is useful for creating\n * layout abstractions with your current routes.\n *\n * @see https://remix.run/api/remix#usematches\n */\nfunction useMatches() {\n let {\n matches,\n routeData,\n routeModules\n } = useRemixEntryContext();\n return React.useMemo(() => matches.map(match => {\n var _routeModules$match$r;\n\n let {\n pathname,\n params\n } = match;\n return {\n id: match.route.id,\n pathname,\n params,\n data: routeData[match.route.id],\n // if the module fails to load or an error/response is thrown, the module\n // won't be defined.\n handle: (_routeModules$match$r = routeModules[match.route.id]) === null || _routeModules$match$r === void 0 ? void 0 : _routeModules$match$r.handle\n };\n }), [matches, routeData, routeModules]);\n}\n/**\n * Returns the JSON parsed data from the current route's `loader`.\n *\n * @see https://remix.run/api/remix#useloaderdata\n */\n\nfunction useLoaderData() {\n return useRemixRouteContext().data;\n}\n/**\n * Returns the JSON parsed data from the current route's `action`.\n *\n * @see https://remix.run/api/remix#useactiondata\n */\n\nfunction useActionData() {\n let {\n id: routeId\n } = useRemixRouteContext();\n let {\n transitionManager\n } = useRemixEntryContext();\n let {\n actionData\n } = transitionManager.getState();\n return actionData ? actionData[routeId] : undefined;\n}\n/**\n * Returns everything you need to know about a page transition to build pending\n * navigation indicators and optimistic UI on data mutations.\n *\n * @see https://remix.run/api/remix#usetransition\n */\n\nfunction useTransition() {\n let {\n transitionManager\n } = useRemixEntryContext();\n return transitionManager.getState().transition;\n}\n\nfunction createFetcherForm(fetchKey) {\n let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n // TODO: make ANOTHER form w/o a fetchKey prop\n return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, {\n ref: ref,\n fetchKey: fetchKey\n }));\n });\n FetcherForm.displayName = \"fetcher.Form\";\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n *\n * @see https://remix.run/api/remix#usefetcher\n */\nfunction useFetcher() {\n let {\n transitionManager\n } = useRemixEntryContext();\n let [key] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(key));\n let [load] = React.useState(() => href => {\n transitionManager.send({\n type: \"fetcher\",\n href,\n key\n });\n });\n let submit = useSubmitImpl(key);\n let fetcher = transitionManager.getFetcher(key);\n let fetcherWithComponents = React.useMemo(() => ({\n Form,\n submit,\n load,\n ...fetcher\n }), [fetcher, Form, submit, load]);\n React.useEffect(() => {\n // Is this busted when the React team gets real weird and calls effects\n // twice on mount? We really just need to garbage collect here when this\n // fetcher is no longer around.\n return () => transitionManager.deleteFetcher(key);\n }, [transitionManager, key]);\n return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n *\n * @see https://remix.run/api/remix#usefetchers\n */\n\nfunction useFetchers() {\n let {\n transitionManager\n } = useRemixEntryContext();\n let {\n fetchers\n } = transitionManager.getState();\n return [...fetchers.values()];\n} // Dead Code Elimination magic for production builds.\n// This way devs don't have to worry about doing the NODE_ENV check themselves.\n// If running an un-bundled server outside of `remix dev` you will still need\n// to set the REMIX_DEV_SERVER_WS_PORT manually.\n\nconst LiveReload = process.env.NODE_ENV !== \"development\" ? () => null : function LiveReload({\n port = Number(process.env.REMIX_DEV_SERVER_WS_PORT || 8002),\n nonce = undefined\n}) {\n let js = String.raw;\n return /*#__PURE__*/React.createElement(\"script\", {\n nonce: nonce,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: js`\n function remixLiveReloadConnect(config) {\n let protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n let host = location.hostname;\n let socketPath = protocol + \"//\" + host + \":\" + ${String(port)} + \"/socket\";\n\n let ws = new WebSocket(socketPath);\n ws.onmessage = (message) => {\n let event = JSON.parse(message.data);\n if (event.type === \"LOG\") {\n console.log(event.message);\n }\n if (event.type === \"RELOAD\") {\n console.log(\"\uD83D\uDCBF Reloading window ...\");\n window.location.reload();\n }\n };\n ws.onopen = () => {\n if (config && typeof config.onOpen === \"function\") {\n config.onOpen();\n }\n };\n ws.onclose = (error) => {\n console.log(\"Remix dev asset server web socket closed. Reconnecting...\");\n setTimeout(\n () =>\n remixLiveReloadConnect({\n onOpen: () => window.location.reload(),\n }),\n 1000\n );\n };\n ws.onerror = (error) => {\n console.log(\"Remix dev asset server web socket error:\");\n console.error(error);\n };\n }\n remixLiveReloadConnect();\n `\n }\n });\n};\n\nexport { Await, AwaitContext, Form, FormImpl, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, RemixEntry, RemixEntryContext, RemixRoute, Scripts, composeEventHandlers, useActionData, useAsyncValue, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLoaderData, useMatches, useSubmit, useSubmitImpl, useTransition };\n", "import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick<History, \"go\" | \"push\" | \"replace\" | \"createHref\">;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n", "import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment<Segment extends string> =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment<LeftSegment> extends infer LeftResult\n ? ParamParseSegment<RightSegment> extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment<RightSegment> extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n ParamParseSegment<Segment> extends string\n ? ParamParseSegment<Segment>\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n", "import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : outlet\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1)),\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n", "import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n", "/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n onClick={handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\" ? children({ isActive }) : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n", "/**\n * @remix-run/deferred v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nconst CONTENT_TYPE = \"text/remix-deferred\";\nconst DEFERRED_VALUE_PLACEHOLDER_PREFIX = \"__deferred_promise:\";\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n pendingKeys = new Set();\n subscribers = new Set();\n\n constructor(data) {\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"DeferredData only accepts plain objects\"); // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n\n this.controller.signal.addEventListener(\"abort\", onAbort);\n let deferredKeys = [];\n this.data = Object.entries(data).reduce((acc, [key, value]) => {\n let trackedValue = this.trackPromise(key, value);\n\n if (isTrackedPromise(trackedValue)) {\n deferredKeys.push(key);\n }\n\n return Object.assign(acc, {\n [key]: trackedValue\n });\n }, {});\n this.deferredKeys = deferredKeys;\n }\n\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.pendingKeys.add(key); // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, null, data), error => this.onSettle(promise, key, error)); // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n\n this.pendingKeys.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n\n for (let subscriber of this.subscribers) {\n subscriber(false, key);\n }\n\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n\n for (let subscriber of this.subscribers) {\n subscriber(false, key);\n }\n\n return data;\n }\n\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n\n for (let subscriber of this.subscribers) {\n subscriber(true);\n }\n }\n\n async resolveData(signal) {\n let aborted = false;\n\n if (!this.done) {\n let onAbort = () => this.cancel();\n\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n\n return aborted;\n }\n\n get done() {\n return this.pendingKeys.size === 0;\n }\n\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, [key, value]) => Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n }), {});\n }\n\n get criticalData() {\n invariant(this.data !== null, \"Can only get critical data on initialized deferreds\");\n return Object.entries(this.data).reduce((acc, [key, value]) => Object.assign(acc, {\n [key]: isTrackedPromise(value) ? DEFERRED_VALUE_PLACEHOLDER_PREFIX + key : value\n }), {});\n }\n\n}\n\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\n\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n\n return value._data;\n}\n\nasync function parseDeferredReadableStream(stream) {\n if (!stream) {\n throw new Error(\"parseDeferredReadableStream requires stream argument\");\n }\n\n let deferredData;\n let deferredResolvers = {};\n\n try {\n let sectionReader = readStreamSections(stream); // Read the first section to get the critical data\n\n let initialSectionResult = await sectionReader.next();\n let initialSection = initialSectionResult.value;\n if (!initialSection) throw new Error(\"no critical data\");\n let criticalData = JSON.parse(initialSection); // Setup deferred data and resolvers for later based on the critical data\n\n if (typeof criticalData === \"object\" && criticalData !== null) {\n for (let [eventKey, value] of Object.entries(criticalData)) {\n if (typeof value !== \"string\" || !value.startsWith(DEFERRED_VALUE_PLACEHOLDER_PREFIX)) {\n continue;\n }\n\n deferredData = deferredData || {};\n deferredData[eventKey] = new Promise((resolve, reject) => {\n deferredResolvers[eventKey] = {\n resolve: value => {\n resolve(value);\n delete deferredResolvers[eventKey];\n },\n reject: error => {\n reject(error);\n delete deferredResolvers[eventKey];\n }\n };\n });\n }\n } // Read the rest of the stream and resolve deferred promises\n\n\n (async () => {\n try {\n for await (let section of sectionReader) {\n // Determine event type and data\n let [event, ...sectionDataStrings] = section.split(\":\");\n let sectionDataString = sectionDataStrings.join(\":\");\n let data = JSON.parse(sectionDataString);\n\n if (event === \"data\") {\n for (let [key, value] of Object.entries(data)) {\n if (deferredResolvers[key]) {\n deferredResolvers[key].resolve(value);\n }\n }\n } else if (event === \"error\") {\n for (let [key, value] of Object.entries(data)) {\n let err = new Error(value.message);\n err.stack = value.stack;\n\n if (deferredResolvers[key]) {\n deferredResolvers[key].reject(err);\n }\n }\n }\n }\n\n for (let [key, resolver] of Object.entries(deferredResolvers)) {\n resolver.reject(new AbortedDeferredError(`Deferred ${key} will never resolved`));\n }\n } catch (error) {\n // Reject any existing deferred promises if something blows up\n for (let resolver of Object.values(deferredResolvers)) {\n resolver.reject(error);\n }\n }\n })();\n\n return new DeferredData({ ...criticalData,\n ...deferredData\n });\n } catch (error) {\n for (let resolver of Object.values(deferredResolvers)) {\n resolver.reject(error);\n }\n\n throw error;\n }\n}\nfunction createDeferredReadableStream(deferredData) {\n let criticalData = deferredData.criticalData;\n let encoder = new TextEncoder();\n let stream = new ReadableStream({\n async start(controller) {\n // Send the critical data\n controller.enqueue(encoder.encode(JSON.stringify(criticalData) + \"\\n\\n\"));\n let unsubscribe = deferredData.subscribe((aborted, settledKey) => {\n if (settledKey) {\n let promise = deferredData.data[settledKey];\n\n if (\"_error\" in promise) {\n controller.enqueue(encoder.encode(\"error:\" + JSON.stringify({\n [settledKey]: serializeError(promise._error)\n }) + \"\\n\\n\"));\n } else {\n controller.enqueue(encoder.encode(\"data:\" + JSON.stringify({\n [settledKey]: promise._data ?? null\n }) + \"\\n\\n\"));\n }\n }\n });\n await deferredData.resolveData(new AbortController().signal);\n unsubscribe();\n controller.close();\n }\n\n });\n return stream;\n} // must be type alias due to inference issues on interfaces\n// https://github.com/microsoft/TypeScript/issues/15300\n\nfunction serializeError(error) {\n return {\n message: error.message,\n stack: error.stack\n };\n}\n\nasync function* readStreamSections(stream) {\n let reader = stream.getReader();\n let buffer = [];\n let sections = [];\n let closed = false;\n let encoder = new TextEncoder();\n let decoder = new TextDecoder();\n\n let readStreamSection = async () => {\n if (sections.length > 0) return sections.shift(); // Read from the stream until we have at least one complete section to process\n\n while (!closed && sections.length === 0) {\n let chunk = await reader.read();\n\n if (chunk.done) {\n closed = true;\n break;\n } // Buffer the raw chunks\n\n\n buffer.push(chunk.value);\n\n try {\n // Attempt to split off a section from the buffer\n let bufferedString = decoder.decode(mergeArrays(...buffer));\n let splitSections = bufferedString.split(\"\\n\\n\");\n\n if (splitSections.length >= 2) {\n // We have a complete section, so add it to the sections array\n sections.push(...splitSections.slice(0, -1)); // Remove the section from the buffer and store the rest for future processing\n\n buffer = [encoder.encode(splitSections.slice(-1).join(\"\\n\\n\"))];\n } // If we successfully parsed at least one section, break out of reading the stream\n // to allow upstream processing of the processable sections\n\n\n if (sections.length > 0) {\n break;\n }\n } catch {\n // If we failed to parse the buffer it was because we failed to decode the stream\n // because we are missing bytes that we haven't yet received, so continue reading\n // from the stream until we have a complete section\n continue;\n }\n } // If we have a complete section, return it\n\n\n if (sections.length > 0) {\n return sections.shift();\n } // If we have no complete section, but we have no more chunks to process,\n // split those sections and clear out the buffer as there is no more data\n // to process. If this errors, let it bubble up as the stream ended\n // without valid data\n\n\n if (buffer.length > 0) {\n let bufferedString = decoder.decode(mergeArrays(...buffer));\n sections = bufferedString.split(\"\\n\\n\").filter(s => s);\n buffer = [];\n } // Return any remaining sections that have been processed\n\n\n return sections.shift();\n };\n\n let section = await readStreamSection();\n\n while (section) {\n yield section;\n section = await readStreamSection();\n }\n}\n\nfunction mergeArrays(...arrays) {\n let out = new Uint8Array(arrays.reduce((total, arr) => total + arr.length, 0));\n let offset = 0;\n\n for (let arr of arrays) {\n out.set(arr, offset);\n offset += arr.length;\n }\n\n return out;\n}\n\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport { AbortedDeferredError, CONTENT_TYPE, DEFERRED_VALUE_PLACEHOLDER_PREFIX, DeferredData, createDeferredReadableStream, parseDeferredReadableStream };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport React__default, { useContext } from 'react';\n\n// TODO: We eventually might not want to import anything directly from `history`\nclass RemixErrorBoundary extends React__default.Component {\n constructor(props) {\n super(props);\n this.state = {\n error: props.error || null,\n location: props.location\n };\n }\n\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application (even the HTML!) that will have no effect--the error page\n // continues to display. This gives us a mechanism to recover from the error\n // when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error || null,\n location: props.location\n };\n } // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n\n\n return {\n error: props.error || state.error,\n location: state.location\n };\n }\n\n render() {\n if (this.state.error) {\n return /*#__PURE__*/React__default.createElement(this.props.component, {\n error: this.state.error\n });\n } else {\n return this.props.children;\n }\n }\n\n}\n/**\n * When app's don't provide a root level ErrorBoundary, we default to this.\n */\n\nfunction RemixRootDefaultErrorBoundary({\n error\n}) {\n console.error(error);\n return /*#__PURE__*/React__default.createElement(\"html\", {\n lang: \"en\"\n }, /*#__PURE__*/React__default.createElement(\"head\", null, /*#__PURE__*/React__default.createElement(\"meta\", {\n charSet: \"utf-8\"\n }), /*#__PURE__*/React__default.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }), /*#__PURE__*/React__default.createElement(\"title\", null, \"Application Error!\")), /*#__PURE__*/React__default.createElement(\"body\", null, /*#__PURE__*/React__default.createElement(\"main\", {\n style: {\n fontFamily: \"system-ui, sans-serif\",\n padding: \"2rem\"\n }\n }, /*#__PURE__*/React__default.createElement(\"h1\", {\n style: {\n fontSize: \"24px\"\n }\n }, \"Application Error\"), /*#__PURE__*/React__default.createElement(\"pre\", {\n style: {\n padding: \"2rem\",\n background: \"hsla(10, 50%, 50%, 0.1)\",\n color: \"red\",\n overflow: \"auto\"\n }\n }, error.stack)), /*#__PURE__*/React__default.createElement(\"script\", {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\uD83D\uDCBF Hey developer\uD83D\uDC4B. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information.\"\n );\n `\n }\n })));\n}\nlet RemixCatchContext = /*#__PURE__*/React__default.createContext(undefined);\n/**\n * Returns the status code and thrown response data.\n *\n * @see https://remix.run/api/conventions#catchboundary\n */\n\nfunction useCatch() {\n return useContext(RemixCatchContext);\n}\nfunction RemixCatchBoundary({\n catch: catchVal,\n component: Component,\n children\n}) {\n if (catchVal) {\n return /*#__PURE__*/React__default.createElement(RemixCatchContext.Provider, {\n value: catchVal\n }, /*#__PURE__*/React__default.createElement(Component, null));\n }\n\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, children);\n}\n/**\n * When app's don't provide a root level CatchBoundary, we default to this.\n */\n\nfunction RemixRootDefaultCatchBoundary() {\n let caught = useCatch();\n return /*#__PURE__*/React__default.createElement(\"html\", {\n lang: \"en\"\n }, /*#__PURE__*/React__default.createElement(\"head\", null, /*#__PURE__*/React__default.createElement(\"meta\", {\n charSet: \"utf-8\"\n }), /*#__PURE__*/React__default.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }), /*#__PURE__*/React__default.createElement(\"title\", null, \"Unhandled Thrown Response!\")), /*#__PURE__*/React__default.createElement(\"body\", null, /*#__PURE__*/React__default.createElement(\"h1\", {\n style: {\n fontFamily: \"system-ui, sans-serif\",\n padding: \"2rem\"\n }\n }, caught.status, \" \", caught.statusText), /*#__PURE__*/React__default.createElement(\"script\", {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\uD83D\uDCBF Hey developer\uD83D\uDC4B. You can provide a way better UX than this when your app throws 404s (and other responses). Check out https://remix.run/guides/not-found for more information.\"\n );\n `\n }\n })));\n}\n\nexport { RemixCatchBoundary, RemixErrorBoundary, RemixRootDefaultCatchBoundary, RemixRootDefaultErrorBoundary, useCatch };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport { invariant as default };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// TODO: We eventually might not want to import anything directly from `history`\n// and leverage `react-router` here instead\n// TODO: import/export from react-router-dom\n\n/**\n * A React component that is rendered when the server throws a Response.\n *\n * @see https://remix.run/api/conventions#catchboundary\n */\n\n/**\n * A React component that is rendered when there is an error on a route.\n *\n * @see https://remix.run/api/conventions#errorboundary\n */\n\n/**\n * A function that defines `<link>` tags to be inserted into the `<head>` of\n * the document on route transitions.\n *\n * @see https://remix.run/api/remix#meta-links-scripts\n */\n\n/**\n * A function that returns an object of name + content pairs to use for\n * `<meta>` tags for a route. These tags will be merged with (and take\n * precedence over) tags from parent routes.\n *\n * @see https://remix.run/api/remix#meta-links-scripts\n */\n\n/**\n * A name/content pair used to render `<meta>` tags in a meta function for a\n * route. The value can be either a string, which will render a single `<meta>`\n * tag, or an array of strings that will render multiple tags with the same\n * `name` attribute.\n */\n\n/**\n * During client side transitions Remix will optimize reloading of routes that\n * are currently on the page by avoiding loading routes that aren't changing.\n * However, in some cases, like form submissions or search params Remix doesn't\n * know which routes need to be reloaded so it reloads them all to be safe.\n *\n * This function lets apps further optimize by returning `false` when Remix is\n * about to reload the route. A common case is a root loader with nothing but\n * environment variables: after form submissions the root probably doesn't need\n * to be reloaded.\n *\n * @see https://remix.run/api/conventions#unstable_shouldreload\n */\n\n/**\n * A React component that is rendered for a route.\n */\n\n/**\n * An arbitrary object that is associated with a route.\n *\n * @see https://remix.run/api/conventions#handle\n */\nasync function loadRouteModule(route, routeModulesCache) {\n if (route.id in routeModulesCache) {\n return routeModulesCache[route.id];\n }\n\n try {\n let routeModule = await import(\n /* webpackIgnore: true */\n route.module);\n routeModulesCache[route.id] = routeModule;\n return routeModule;\n } catch (error) {\n // User got caught in the middle of a deploy and the CDN no longer has the\n // asset we're trying to import! Reload from the server and the user\n // (should) get the new manifest--unless the developer purged the static\n // assets, the manifest path, but not the documents \uD83D\uDE2C\n window.location.reload();\n return new Promise(() => {// check out of this hook cause the DJs never gonna re[s]olve this\n });\n }\n}\n\nexport { loadRouteModule };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { parsePath } from 'history';\nimport { loadRouteModule } from './routeModules.js';\n\n// TODO: We eventually might not want to import anything directly from `history`\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets all the links for a set of matches. The modules are assumed to have been\n * loaded already.\n */\nfunction getLinksForMatches(matches, routeModules, manifest) {\n let descriptors = matches.map(match => {\n var _module$links;\n\n let module = routeModules[match.route.id];\n return ((_module$links = module.links) === null || _module$links === void 0 ? void 0 : _module$links.call(module)) || [];\n }).flat(1);\n let preloads = getCurrentPageModulePreloadHrefs(matches, manifest);\n return dedupe(descriptors, preloads);\n}\nasync function prefetchStyleLinks(routeModule) {\n if (!routeModule.links) return;\n let descriptors = routeModule.links();\n if (!descriptors) return;\n let styleLinks = [];\n\n for (let descriptor of descriptors) {\n if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n styleLinks.push({ ...descriptor,\n rel: \"preload\",\n as: \"style\"\n });\n }\n } // don't block for non-matching media queries\n\n\n let matchingLinks = styleLinks.filter(link => !link.media || window.matchMedia(link.media).matches);\n await Promise.all(matchingLinks.map(prefetchStyleLink));\n}\n\nasync function prefetchStyleLink(descriptor) {\n return new Promise(resolve => {\n let link = document.createElement(\"link\");\n Object.assign(link, descriptor);\n\n function removeLink() {\n // if a navigation interrupts this prefetch React will update the <head>\n // and remove the link we put in there manually, so we check if it's still\n // there before trying to remove it\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n }\n\n link.onload = () => {\n removeLink();\n resolve();\n };\n\n link.onerror = () => {\n removeLink();\n resolve();\n };\n\n document.head.appendChild(link);\n });\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction isPageLinkDescriptor(object) {\n return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n if (object == null) return false; // <link> may not have an href if <link rel=\"preload\"> is used with imagesrcset + imagesizes\n // https://github.com/remix-run/remix/issues/184\n // https://html.spec.whatwg.org/commit-snapshots/cb4f5ff75de5f4cbd7013c4abad02f21c77d4d1c/#attr-link-imagesrcset\n\n if (object.href == null) {\n return object.rel === \"preload\" && (typeof object.imageSrcSet === \"string\" || typeof object.imagesrcset === \"string\") && (typeof object.imageSizes === \"string\" || typeof object.imagesizes === \"string\");\n }\n\n return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getStylesheetPrefetchLinks(matches, routeModules) {\n let links = await Promise.all(matches.map(async match => {\n let mod = await loadRouteModule(match.route, routeModules);\n return mod.links ? mod.links() : [];\n }));\n return links.flat(1).filter(isHtmlLinkDescriptor).filter(link => link.rel === \"stylesheet\" || link.rel === \"preload\").map(link => link.rel === \"preload\" ? { ...link,\n rel: \"prefetch\"\n } : { ...link,\n rel: \"prefetch\",\n as: \"style\"\n });\n} // This is ridiculously identical to transition.ts `filterMatchesToLoad`\n\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, location, mode) {\n let path = parsePathPatch(page);\n\n let isNew = (match, index) => {\n if (!currentMatches[index]) return true;\n return match.route.id !== currentMatches[index].route.id;\n };\n\n let matchPathChanged = (match, index) => {\n var _currentMatches$index;\n\n return (// param change, /users/123 -> /users/456\n currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n ((_currentMatches$index = currentMatches[index].route.path) === null || _currentMatches$index === void 0 ? void 0 : _currentMatches$index.endsWith(\"*\")) && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n );\n }; // NOTE: keep this mostly up-to-date w/ the transition data diff, but this\n // version doesn't care about submissions\n\n\n let newMatches = mode === \"data\" && location.search !== path.search ? // this is really similar to stuff in transition.ts, maybe somebody smarter\n // than me (or in less of a hurry) can share some of it. You're the best.\n nextMatches.filter((match, index) => {\n if (!match.route.hasLoader) {\n return false;\n }\n\n if (isNew(match, index) || matchPathChanged(match, index)) {\n return true;\n }\n\n if (match.route.shouldReload) {\n return match.route.shouldReload({\n params: match.params,\n prevUrl: new URL(location.pathname + location.search + location.hash, window.origin),\n url: new URL(page, window.origin)\n });\n }\n\n return true;\n }) : nextMatches.filter((match, index) => {\n return (mode === \"assets\" || match.route.hasLoader) && (isNew(match, index) || matchPathChanged(match, index));\n });\n return newMatches;\n}\nfunction getDataLinkHrefs(page, matches, manifest) {\n let path = parsePathPatch(page);\n return dedupeHrefs(matches.filter(match => manifest.routes[match.route.id].hasLoader).map(match => {\n let {\n pathname,\n search\n } = path;\n let searchParams = new URLSearchParams(search);\n searchParams.set(\"_data\", match.route.id);\n return `${pathname}?${searchParams}`;\n }));\n}\nfunction getModuleLinkHrefs(matches, manifestPatch) {\n return dedupeHrefs(matches.map(match => {\n let route = manifestPatch.routes[match.route.id];\n let hrefs = [route.module];\n\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n\n return hrefs;\n }).flat(1));\n} // The `<Script>` will render rel=modulepreload for the current page, we don't\n// need to include them in a page prefetch, this gives us the list to remove\n// while deduping.\n\nfunction getCurrentPageModulePreloadHrefs(matches, manifest) {\n return dedupeHrefs(matches.map(match => {\n let route = manifest.routes[match.route.id];\n let hrefs = [route.module];\n\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n\n return hrefs;\n }).flat(1));\n}\n\nfunction dedupeHrefs(hrefs) {\n return [...new Set(hrefs)];\n}\n\nfunction dedupe(descriptors, preloads) {\n let set = new Set();\n let preloadsSet = new Set(preloads);\n return descriptors.reduce((deduped, descriptor) => {\n let alreadyModulePreload = !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n\n if (alreadyModulePreload) {\n return deduped;\n }\n\n let str = JSON.stringify(descriptor);\n\n if (!set.has(str)) {\n set.add(str);\n deduped.push(descriptor);\n }\n\n return deduped;\n }, []);\n} // https://github.com/remix-run/history/issues/897\n\nfunction parsePathPatch(href) {\n let path = parsePath(href);\n if (path.search === undefined) path.search = \"\";\n return path;\n}\n\nexport { dedupe, getDataLinkHrefs, getLinksForMatches, getModuleLinkHrefs, getNewMatchesForLinks, getStylesheetPrefetchLinks, isHtmlLinkDescriptor, isPageLinkDescriptor, prefetchStyleLinks };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction createHtml(html) {\n return {\n __html: html\n };\n} // This escapeHtml utility is based on https://github.com/zertosh/htmlescape\n// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE\n// We've chosen to inline the utility here to reduce the number of npm dependencies we have,\n// slightly decrease the code size compared the original package and make it esm compatible.\n\nconst ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n return html.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\n\nexport { createHtml, escapeHtml };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { loadRouteModule } from './routeModules.js';\nimport { fetchData, isCatchResponse, extractData, isRedirectResponse } from './data.js';\nimport { CatchValue, TransitionRedirect } from './transition.js';\nimport { prefetchStyleLinks } from './links.js';\nimport invariant from './invariant.js';\n\nfunction createClientRoute(entryRoute, routeModulesCache, Component) {\n return {\n caseSensitive: !!entryRoute.caseSensitive,\n element: /*#__PURE__*/React.createElement(Component, {\n id: entryRoute.id\n }),\n id: entryRoute.id,\n path: entryRoute.path,\n index: entryRoute.index,\n module: entryRoute.module,\n loader: createLoader(entryRoute, routeModulesCache),\n action: createAction(entryRoute, routeModulesCache),\n shouldReload: createShouldReload(entryRoute, routeModulesCache),\n ErrorBoundary: entryRoute.hasErrorBoundary,\n CatchBoundary: entryRoute.hasCatchBoundary,\n hasLoader: entryRoute.hasLoader\n };\n}\nfunction createClientRoutes(routeManifest, routeModulesCache, Component, parentId) {\n return Object.keys(routeManifest).filter(key => routeManifest[key].parentId === parentId).map(key => {\n let route = createClientRoute(routeManifest[key], routeModulesCache, Component);\n let children = createClientRoutes(routeManifest, routeModulesCache, Component, route.id);\n if (children.length > 0) route.children = children;\n return route;\n });\n}\n\nfunction createShouldReload(route, routeModules) {\n let shouldReload = arg => {\n let module = routeModules[route.id];\n invariant(module, `Expected route module to be loaded for ${route.id}`);\n\n if (module.unstable_shouldReload) {\n return module.unstable_shouldReload(arg);\n }\n\n return true;\n };\n\n return shouldReload;\n}\n\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n let routeModule = await loadRouteModule(route, routeModules);\n await prefetchStyleLinks(routeModule);\n return routeModule;\n}\n\nfunction createLoader(route, routeModules) {\n let loader = async ({\n url,\n signal,\n submission\n }) => {\n if (route.hasLoader) {\n let [result] = await Promise.all([fetchData(url, route.id, signal, submission), loadRouteModuleWithBlockingLinks(route, routeModules)]);\n if (result instanceof Error) throw result;\n let redirect = await checkRedirect(result);\n if (redirect) return redirect;\n\n if (isCatchResponse(result)) {\n throw new CatchValue(result.status, result.statusText, await extractData(result, signal, true));\n }\n\n return extractData(result, signal);\n } else {\n await loadRouteModuleWithBlockingLinks(route, routeModules);\n }\n };\n\n return loader;\n}\n\nfunction createAction(route, routeModules) {\n let action = async ({\n url,\n signal,\n submission\n }) => {\n if (!route.hasAction) {\n console.error(`Route \"${route.id}\" does not have an action, but you are trying ` + `to submit to it. To fix this, please add an \\`action\\` function to the route`);\n }\n\n let result = await fetchData(url, route.id, signal, submission);\n\n if (result instanceof Error) {\n throw result;\n }\n\n let redirect = await checkRedirect(result);\n if (redirect) return redirect;\n await loadRouteModuleWithBlockingLinks(route, routeModules);\n\n if (isCatchResponse(result)) {\n throw new CatchValue(result.status, result.statusText, await extractData(result, signal, true));\n }\n\n return extractData(result, signal);\n };\n\n return action;\n}\n\nasync function checkRedirect(response) {\n if (isRedirectResponse(response)) {\n let url = new URL(response.headers.get(\"X-Remix-Redirect\"), window.location.origin);\n\n if (url.origin !== window.location.origin) {\n await new Promise(() => {\n window.location.replace(url.href);\n });\n } else {\n return new TransitionRedirect(url.pathname + url.search + url.hash, response.headers.get(\"X-Remix-Revalidate\") !== null);\n }\n }\n\n return null;\n}\n\nexport { createClientRoute, createClientRoutes };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { parseDeferredReadableStream } from '@remix-run/deferred';\nimport invariant from './invariant.js';\n\nfunction isCatchResponse(response) {\n return response instanceof Response && response.headers.get(\"X-Remix-Catch\") != null;\n}\nfunction isErrorResponse(response) {\n return response instanceof Response && response.headers.get(\"X-Remix-Error\") != null;\n}\nfunction isRedirectResponse(response) {\n return response instanceof Response && response.headers.get(\"X-Remix-Redirect\") != null;\n}\nasync function fetchData(url, routeId, signal, submission) {\n url.searchParams.set(\"_data\", routeId);\n let init = submission ? getActionInit(submission, signal) : {\n credentials: \"same-origin\",\n signal\n };\n let response = await fetch(url.href, init);\n\n if (isErrorResponse(response)) {\n let data = await response.json();\n let error = new Error(data.message);\n error.stack = data.stack;\n return error;\n }\n\n return response;\n}\nasync function extractData(response, signal, resolveDeferred = false) {\n // This same algorithm is used on the server to interpret load\n // results when we render the HTML page.\n let contentType = response.headers.get(\"Content-Type\");\n\n if (response.body && contentType && /\\btext\\/remix-deferred\\b/.test(contentType)) {\n let deferred = await parseDeferredReadableStream(response.body);\n\n if (!resolveDeferred) {\n return deferred;\n }\n\n if (await deferred.resolveData(signal)) {\n return deferred;\n }\n\n return deferred.unwrappedData;\n }\n\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n return response.json();\n }\n\n return response.text();\n}\n\nfunction getActionInit(submission, signal) {\n let {\n encType,\n method,\n formData\n } = submission;\n let headers = undefined;\n let body = formData;\n\n if (encType === \"application/x-www-form-urlencoded\") {\n body = new URLSearchParams();\n\n for (let [key, value] of formData) {\n invariant(typeof value === \"string\", `File inputs are not supported with encType \"application/x-www-form-urlencoded\", please use \"multipart/form-data\" instead.`);\n body.append(key, value);\n }\n\n headers = {\n \"Content-Type\": encType\n };\n }\n\n return {\n method,\n body,\n signal,\n credentials: \"same-origin\",\n headers\n };\n}\n\nexport { extractData, fetchData, isCatchResponse, isErrorResponse, isRedirectResponse };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { matchRoutes } from 'react-router-dom';\n\n// TODO: We eventually might not want to import anything directly from `history`\nfunction matchClientRoutes(routes, location) {\n let matches = matchRoutes(routes, location);\n if (!matches) return null;\n return matches.map(match => ({\n params: match.params,\n pathname: match.pathname,\n route: match.route\n }));\n}\n\nexport { matchClientRoutes };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { Action } from 'history';\nimport { DeferredData } from '@remix-run/deferred';\nimport { matchClientRoutes } from './routeMatching.js';\nimport invariant from './invariant.js';\n\n// TODO: We eventually might not want to import anything directly from `history`\n//#region Types and Utils\n////////////////////////////////////////////////////////////////////////////////\n\nclass CatchValue {\n constructor(status, statusText, data) {\n this.status = status;\n this.statusText = statusText;\n this.data = data;\n }\n\n}\n\nfunction isActionSubmission(submission) {\n return [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(submission.method);\n}\n\nfunction isLoaderSubmission(submission) {\n return submission.method === \"GET\";\n}\n\nfunction isRedirectLocation(location) {\n return Boolean(location.state) && location.state.isRedirect;\n}\n\nfunction isLoaderRedirectLocation(location) {\n return isRedirectLocation(location) && location.state.type === \"loader\";\n}\n\nfunction isActionRedirectLocation(location) {\n return isRedirectLocation(location) && location.state.type === \"action\";\n}\n\nfunction isFetchActionRedirect(location) {\n return isRedirectLocation(location) && location.state.type === \"fetchAction\";\n}\n\nfunction isLoaderSubmissionRedirectLocation(location) {\n return isRedirectLocation(location) && location.state.type === \"loaderSubmission\";\n}\n\nclass TransitionRedirect {\n constructor(location, setCookie = false) {\n this.setCookie = setCookie;\n this.location = typeof location === \"string\" ? location : location.pathname + location.search;\n }\n\n}\nconst IDLE_TRANSITION = {\n state: \"idle\",\n submission: undefined,\n location: undefined,\n type: \"idle\"\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n type: \"init\",\n data: undefined,\n submission: undefined\n}; //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createTransitionManager\n////////////////////////////////////////////////////////////////////////////////\n\nfunction createTransitionManager(init) {\n let {\n routes,\n deferredLoaderData\n } = init;\n let pendingNavigationController; // Map of routeId->AbortController for pending deferred returned from loaders\n\n let pendingNavigationDeferredControllers = new Map(); // Set of routeId's for which we cancelled pending deferred's and need to\n // track until the end of the navigation so we can clear their\n // deferredLoaderData\n\n let cancelledDeferredRouteIds = new Set();\n let fetchControllers = new Map();\n let incrementingLoadId = 0;\n let navigationLoadId = -1;\n let fetchReloadIds = new Map();\n let fetchRedirectIds = new Set();\n let subscribers = new Set();\n let matches = matchClientRoutes(routes, init.location);\n\n if (!matches) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the CatchBoundary to take over\n matches = [{\n params: {},\n pathname: \"\",\n route: routes[0]\n }];\n }\n\n let state = {\n location: init.location,\n loaderData: init.loaderData || {},\n actionData: init.actionData,\n catch: init.catch,\n error: init.error,\n catchBoundaryId: init.catchBoundaryId || null,\n errorBoundaryId: init.errorBoundaryId || null,\n matches,\n nextMatches: undefined,\n transition: IDLE_TRANSITION,\n fetchers: new Map()\n };\n\n function update(updates) {\n let overrides = {};\n\n if (updates.transition) {\n if (updates.transition === IDLE_TRANSITION) {\n pendingNavigationController = undefined; // Preserve deferred data for active routes that were not cancelled, or\n // were cancelled and are again pending (i.e., returned a subsequent\n // defer() after an action)\n\n overrides.loaderData = [...Object.entries(state.loaderData), ...Object.entries(updates.loaderData || {})].filter(([routeId]) => {\n let isActive = (updates.matches || state.matches).some(m => m.route.id === routeId);\n let wasCancelled = cancelledDeferredRouteIds.has(routeId);\n let isPending = pendingNavigationDeferredControllers.has(routeId);\n return isActive && (!wasCancelled || isPending);\n }).reduce((acc, [routeId, data]) => Object.assign(acc, {\n [routeId]: data\n }), updates.loaderData || {});\n cancelledDeferredRouteIds.forEach(id => cancelledDeferredRouteIds.delete(id));\n }\n }\n\n state = Object.assign({}, state, updates, overrides);\n\n for (let subscriber of subscribers.values()) {\n subscriber(state);\n }\n }\n\n function getState() {\n return state;\n }\n\n function getFetcher(key) {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function setFetcher(key, fetcher) {\n state.fetchers.set(key, fetcher);\n }\n\n function deleteFetcher(key) {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n async function send(event) {\n switch (event.type) {\n case \"navigation\":\n {\n let {\n action,\n location,\n submission\n } = event;\n let matches = matchClientRoutes(routes, location);\n\n if (!matches) {\n matches = [{\n params: {},\n pathname: \"\",\n route: routes[0]\n }];\n await handleNotFoundNavigation(location, matches);\n } else if (!submission && isHashChangeOnly(location)) {\n await handleHashChange(location, matches);\n } // back/forward button, treat all as normal navigation\n else if (action === Action.Pop) {\n await handleLoad(location, matches);\n } // <Form method=\"post | put | delete | patch\">\n else if (submission && isActionSubmission(submission)) {\n await handleActionSubmissionNavigation(location, submission, matches);\n } // <Form method=\"get\"/>\n else if (submission && isLoaderSubmission(submission)) {\n await handleLoaderSubmissionNavigation(location, submission, matches);\n } // action=>redirect\n else if (isActionRedirectLocation(location)) {\n await handleActionRedirect(location, matches);\n } // <Form method=\"get\"> --> loader=>redirect\n else if (isLoaderSubmissionRedirectLocation(location)) {\n await handleLoaderSubmissionRedirect(location, matches);\n } // loader=>redirect\n else if (isLoaderRedirectLocation(location)) {\n await handleLoaderRedirect(location, matches);\n } // useSubmission()=>redirect\n else if (isFetchActionRedirect(location)) {\n await handleFetchActionRedirect(location, matches);\n } // <Link>, navigate()\n else {\n await handleLoad(location, matches);\n }\n\n navigationLoadId = -1;\n break;\n }\n\n case \"fetcher\":\n {\n let {\n key,\n submission,\n href\n } = event;\n let matches = matchClientRoutes(routes, href);\n invariant(matches, \"No matches found\");\n if (fetchControllers.has(key)) abortFetcher(key);\n let match = getFetcherRequestMatch(new URL(href, window.location.href), matches);\n\n if (submission && isActionSubmission(submission)) {\n await handleActionFetchSubmission(key, submission, match);\n } else if (submission && isLoaderSubmission(submission)) {\n await handleLoaderFetchSubmission(href, key, submission, match);\n } else {\n await handleLoaderFetch(href, key, match);\n }\n\n break;\n }\n\n default:\n {\n // @ts-ignore\n throw new Error(`Unknown data event type: ${event.type}`);\n }\n }\n }\n\n function dispose() {\n abortNormalNavigation();\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds);\n\n for (let [, controller] of fetchControllers) {\n controller.abort();\n }\n }\n\n function isIndexRequestUrl(url) {\n for (let param of url.searchParams.getAll(\"index\")) {\n // only use bare `?index` params without a value\n // \u2705 /foo?index\n // \u2705 /foo?index&index=123\n // \u2705 /foo?index=123&index\n // \u274C /foo?index=123\n if (param === \"\") {\n return true;\n }\n }\n\n return false;\n }\n\n function getFetcherRequestMatch(url, matches) {\n let match = matches.slice(-1)[0];\n\n if (!isIndexRequestUrl(url) && match.route.index) {\n return matches.slice(-2)[0];\n }\n\n return match;\n }\n\n async function handleActionFetchSubmission(key, submission, match) {\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds);\n let currentFetcher = state.fetchers.get(key);\n let fetcher = {\n state: \"submitting\",\n type: \"actionSubmission\",\n submission,\n data: (currentFetcher === null || currentFetcher === void 0 ? void 0 : currentFetcher.data) || undefined\n };\n setFetcher(key, fetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n let controller = new AbortController();\n fetchControllers.set(key, controller);\n let result = await callAction(submission, match, controller.signal);\n\n if (controller.signal.aborted) {\n return;\n }\n\n if (isRedirectResult(result)) {\n let locationState = {\n isRedirect: true,\n type: \"fetchAction\",\n setCookie: result.value.setCookie\n };\n fetchRedirectIds.add(key);\n init.onRedirect(result.value.location, locationState);\n let loadingFetcher = {\n state: \"loading\",\n type: \"actionRedirect\",\n submission,\n data: undefined\n };\n setFetcher(key, loadingFetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n return;\n }\n\n if (maybeBailOnError(match, key, result)) {\n return;\n }\n\n if (await maybeBailOnCatch(match, key, result)) {\n return;\n }\n\n let loadFetcher = {\n state: \"loading\",\n type: \"actionReload\",\n data: result.value,\n submission\n };\n setFetcher(key, loadFetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n let maybeActionErrorResult = isErrorResult(result) ? result : undefined;\n let maybeActionCatchResult = isCatchResult(result) ? result : undefined;\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let matchesToLoad = state.nextMatches || state.matches;\n let results = await callLoaders(state, state.transition.location || state.location, matchesToLoad, controller.signal, pendingNavigationDeferredControllers, cancelledDeferredRouteIds, maybeActionErrorResult, maybeActionCatchResult, submission, match.route.id, loadFetcher);\n\n if (controller.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n let redirect = findRedirect(results);\n\n if (redirect) {\n let locationState = {\n isRedirect: true,\n type: \"loader\",\n setCookie: redirect.setCookie\n };\n init.onRedirect(redirect.location, locationState);\n return;\n }\n\n let [error, errorBoundaryId] = findErrorAndBoundaryId(results, state.matches, maybeActionErrorResult);\n let [catchVal, catchBoundaryId] = (await findCatchAndBoundaryId(results, state.matches, maybeActionCatchResult)) || [];\n let doneFetcher = {\n state: \"idle\",\n type: \"done\",\n data: result.value,\n submission: undefined\n };\n setFetcher(key, doneFetcher);\n let abortedKeys = abortStaleFetchLoads(loadId);\n\n if (abortedKeys) {\n markFetchersDone(abortedKeys);\n }\n\n let yeetedNavigation = yeetStaleNavigationLoad(loadId);\n let [loaderData, monitorDeferred] = await makeLoaderData(getState, results, state.matches, matchesToLoad, pendingNavigationDeferredControllers, controller.signal);\n\n if (controller.signal.aborted) {\n return;\n } // need to do what we would have done when the navigation load completed\n\n\n if (yeetedNavigation) {\n let {\n transition\n } = state;\n invariant(transition.state === \"loading\", \"Expected loading transition\");\n update({\n location: transition.location,\n matches: state.nextMatches,\n error,\n errorBoundaryId,\n catch: catchVal,\n catchBoundaryId,\n loaderData,\n actionData: transition.type === \"actionReload\" ? state.actionData : undefined,\n transition: IDLE_TRANSITION,\n fetchers: new Map(state.fetchers)\n });\n } // otherwise just update the info for the data\n else {\n update({\n fetchers: new Map(state.fetchers),\n error,\n errorBoundaryId,\n loaderData\n });\n }\n\n monitorDeferred();\n }\n\n function yeetStaleNavigationLoad(landedId) {\n let isLoadingNavigation = state.transition.state === \"loading\";\n\n if (isLoadingNavigation && navigationLoadId < landedId) {\n abortNormalNavigation();\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds);\n return true;\n }\n\n return false;\n }\n\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = {\n state: \"idle\",\n type: \"done\",\n data: fetcher.data,\n submission: undefined\n };\n setFetcher(key, doneFetcher);\n }\n }\n\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n\n return yeetedKeys.length ? yeetedKeys : false;\n }\n\n async function handleLoaderFetchSubmission(href, key, submission, match) {\n let currentFetcher = state.fetchers.get(key);\n let fetcher = {\n state: \"submitting\",\n type: \"loaderSubmission\",\n submission,\n data: (currentFetcher === null || currentFetcher === void 0 ? void 0 : currentFetcher.data) || undefined\n };\n setFetcher(key, fetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n let controller = new AbortController();\n fetchControllers.set(key, controller);\n let result = await callLoader(match, createUrl(href), controller.signal);\n result = await resolveDeferredResult(result, controller.signal);\n fetchControllers.delete(key);\n\n if (controller.signal.aborted) {\n return;\n }\n\n if (isRedirectResult(result)) {\n let locationState = {\n isRedirect: true,\n type: \"loader\",\n setCookie: result.value.setCookie\n };\n init.onRedirect(result.value.location, locationState);\n return;\n }\n\n if (maybeBailOnError(match, key, result)) {\n return;\n }\n\n if (await maybeBailOnCatch(match, key, result)) {\n return;\n }\n\n let doneFetcher = {\n state: \"idle\",\n type: \"done\",\n data: result.value,\n submission: undefined\n };\n setFetcher(key, doneFetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n }\n\n async function handleLoaderFetch(href, key, match) {\n if (typeof AbortController === \"undefined\") {\n throw new Error(\"handleLoaderFetch was called during the server render, but it shouldn't be. \" + \"You are likely calling useFetcher.load() in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n\n let currentFetcher = state.fetchers.get(key);\n let fetcher = {\n state: \"loading\",\n type: \"normalLoad\",\n submission: undefined,\n data: (currentFetcher === null || currentFetcher === void 0 ? void 0 : currentFetcher.data) || undefined\n };\n setFetcher(key, fetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n let controller = new AbortController();\n fetchControllers.set(key, controller);\n let result = await callLoader(match, createUrl(href), controller.signal);\n result = await resolveDeferredResult(result, controller.signal);\n if (controller.signal.aborted) return;\n fetchControllers.delete(key);\n\n if (isRedirectResult(result)) {\n let locationState = {\n isRedirect: true,\n type: \"loader\",\n setCookie: result.value.setCookie\n };\n init.onRedirect(result.value.location, locationState);\n return;\n }\n\n if (maybeBailOnError(match, key, result)) {\n return;\n }\n\n if (await maybeBailOnCatch(match, key, result)) {\n return;\n }\n\n let doneFetcher = {\n state: \"idle\",\n type: \"done\",\n data: result.value,\n submission: undefined\n };\n setFetcher(key, doneFetcher);\n update({\n fetchers: new Map(state.fetchers)\n });\n }\n\n async function maybeBailOnCatch(match, key, result) {\n // TODO: revisit this if submission is correct after review\n if (isCatchResult(result)) {\n let catchBoundaryId = findNearestCatchBoundary(match, state.matches);\n state.fetchers.delete(key);\n update({\n transition: IDLE_TRANSITION,\n fetchers: new Map(state.fetchers),\n catch: {\n data: result.value.data,\n status: result.value.status,\n statusText: result.value.statusText\n },\n catchBoundaryId\n });\n return true;\n }\n\n return false;\n }\n\n function maybeBailOnError(match, key, result) {\n if (isErrorResult(result)) {\n let errorBoundaryId = findNearestBoundary(match, state.matches);\n state.fetchers.delete(key);\n update({\n fetchers: new Map(state.fetchers),\n error: result.value,\n errorBoundaryId\n });\n return true;\n }\n\n return false;\n }\n\n async function handleNotFoundNavigation(location, matches) {\n abortNormalNavigation();\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds);\n let transition = {\n state: \"loading\",\n type: \"normalLoad\",\n submission: undefined,\n location\n };\n update({\n transition,\n nextMatches: matches\n }); // Force async so UI code doesn't have to special not found route changes not\n // skipping the pending state (like scroll restoration gets really\n // complicated without the pending state, maybe we can figure something else\n // out later, but this works great.)\n\n await Promise.resolve();\n let catchBoundaryId = findNearestCatchBoundary(matches[0], matches);\n update({\n location,\n matches,\n catch: {\n data: null,\n status: 404,\n statusText: \"Not Found\"\n },\n catchBoundaryId,\n transition: IDLE_TRANSITION\n });\n }\n\n async function handleActionSubmissionNavigation(location, submission, matches) {\n abortNormalNavigation();\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds);\n let transition = {\n state: \"submitting\",\n type: \"actionSubmission\",\n submission,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n let controller = new AbortController();\n pendingNavigationController = controller; // Create a local copy we can mutate for proper determination of the acton\n // to run on layout/index routes. We do not want to mutate the eventual\n // matches used for revalidation\n\n let actionMatches = matches;\n\n if (!isIndexRequestUrl(createUrl(submission.action)) && actionMatches[matches.length - 1].route.index) {\n actionMatches = actionMatches.slice(0, -1);\n }\n\n let leafMatch = actionMatches.slice(-1)[0];\n let result = await callAction(submission, leafMatch, controller.signal);\n\n if (controller.signal.aborted) {\n return;\n }\n\n if (isRedirectResult(result)) {\n let locationState = {\n isRedirect: true,\n type: \"action\",\n setCookie: result.value.setCookie\n };\n init.onRedirect(result.value.location, locationState);\n return;\n }\n\n let catchVal, catchBoundaryId;\n\n if (isCatchResult(result)) {\n [catchVal, catchBoundaryId] = (await findCatchAndBoundaryId([result], actionMatches, result)) || [];\n }\n\n let loadTransition = {\n state: \"loading\",\n type: \"actionReload\",\n submission,\n location\n };\n update({\n transition: loadTransition,\n actionData: {\n [leafMatch.route.id]: result.value\n }\n });\n await loadPageData(location, matches, submission, leafMatch.route.id, result, catchVal, catchBoundaryId);\n }\n\n async function handleLoaderSubmissionNavigation(location, submission, matches) {\n abortNormalNavigation();\n let transition = {\n state: \"submitting\",\n type: \"loaderSubmission\",\n submission,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches, submission);\n }\n\n async function handleHashChange(location, matches) {\n abortNormalNavigation();\n let transition = {\n state: \"loading\",\n type: \"normalLoad\",\n submission: undefined,\n location\n };\n update({\n transition,\n nextMatches: matches\n }); // Force async so UI code doesn't have to special case hash changes not\n // skipping the pending state (like scroll restoration gets really\n // complicated without the pending state, maybe we can figure something else\n // out later, but this works great.)\n\n await Promise.resolve();\n update({\n location,\n matches,\n transition: IDLE_TRANSITION\n });\n }\n\n async function handleLoad(location, matches) {\n abortNormalNavigation();\n let transition = {\n state: \"loading\",\n type: \"normalLoad\",\n submission: undefined,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches);\n }\n\n async function handleLoaderRedirect(location, matches) {\n abortNormalNavigation();\n let transition = {\n state: \"loading\",\n type: \"normalRedirect\",\n submission: undefined,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches);\n }\n\n async function handleLoaderSubmissionRedirect(location, matches) {\n abortNormalNavigation();\n invariant(state.transition.type === \"loaderSubmission\", `Unexpected transition: ${JSON.stringify(state.transition)}`);\n let {\n submission\n } = state.transition;\n let transition = {\n state: \"loading\",\n type: \"loaderSubmissionRedirect\",\n submission,\n location: location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches, submission);\n }\n\n async function handleFetchActionRedirect(location, matches) {\n abortNormalNavigation();\n let transition = {\n state: \"loading\",\n type: \"fetchActionRedirect\",\n submission: undefined,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches);\n }\n\n async function handleActionRedirect(location, matches) {\n abortNormalNavigation();\n invariant(state.transition.type === \"actionSubmission\" || // loader redirected during action reload\n state.transition.type === \"actionReload\" || // loader redirected during action redirect\n state.transition.type === \"actionRedirect\", `Unexpected transition: ${JSON.stringify(state.transition)}`);\n let {\n submission\n } = state.transition;\n let transition = {\n state: \"loading\",\n type: \"actionRedirect\",\n submission,\n location\n };\n update({\n transition,\n nextMatches: matches\n });\n await loadPageData(location, matches, submission);\n }\n\n function isHashChangeOnly(location) {\n return createHref(state.location) === createHref(location) && state.location.hash !== location.hash;\n }\n\n async function loadPageData(location, matches, submission, submissionRouteId, actionResult, catchVal, catchBoundaryId) {\n let maybeActionErrorResult = actionResult && isErrorResult(actionResult) ? actionResult : undefined;\n let maybeActionCatchResult = actionResult && isCatchResult(actionResult) ? actionResult : undefined;\n let controller = new AbortController();\n pendingNavigationController = controller;\n navigationLoadId = ++incrementingLoadId;\n let results = await callLoaders(state, location, matches, controller.signal, pendingNavigationDeferredControllers, cancelledDeferredRouteIds, maybeActionErrorResult, maybeActionCatchResult, submission, submissionRouteId, undefined, catchBoundaryId);\n\n if (controller.signal.aborted) {\n return;\n }\n\n let redirect = findRedirect(results);\n\n if (redirect) {\n // loader redirected during an action reload, treat it like an\n // actionRedirect instead so that all the loaders get called again and the\n // submission sticks around for optimistic/pending UI.\n if (state.transition.type === \"actionReload\" || isActionRedirectLocation(location)) {\n let locationState = {\n isRedirect: true,\n type: \"action\",\n setCookie: redirect.setCookie\n };\n init.onRedirect(redirect.location, locationState);\n } else if (state.transition.type === \"loaderSubmission\") {\n let locationState = {\n isRedirect: true,\n type: \"loaderSubmission\",\n setCookie: redirect.setCookie\n };\n init.onRedirect(redirect.location, locationState);\n } else {\n var _location$state;\n\n let locationState = {\n isRedirect: true,\n type: \"loader\",\n // If we're in the middle of a setCookie redirect, we need to preserve\n // the flag so we handle revalidations across multi-redirect scenarios\n setCookie: redirect.setCookie || ((_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.setCookie) === true\n };\n init.onRedirect(redirect.location, locationState);\n }\n\n return;\n }\n\n let [error, errorBoundaryId] = findErrorAndBoundaryId(results, matches, maybeActionErrorResult);\n [catchVal, catchBoundaryId] = (await findCatchAndBoundaryId(results, matches, maybeActionCatchResult)) || [catchVal, catchBoundaryId];\n markFetchRedirectsDone();\n let abortedIds = abortStaleFetchLoads(navigationLoadId);\n\n if (abortedIds) {\n markFetchersDone(abortedIds);\n }\n\n let [loaderData, monitorDeferred] = await makeLoaderData(getState, results, state.matches, matches, pendingNavigationDeferredControllers, controller.signal);\n\n if (controller.signal.aborted) {\n return;\n }\n\n update({\n location,\n matches,\n error,\n errorBoundaryId,\n catch: catchVal,\n catchBoundaryId,\n loaderData,\n actionData: state.transition.type === \"actionReload\" ? state.actionData : undefined,\n transition: IDLE_TRANSITION,\n fetchers: abortedIds ? new Map(state.fetchers) : state.fetchers\n });\n monitorDeferred();\n }\n\n function abortNormalNavigation() {\n if (pendingNavigationController) {\n pendingNavigationController.abort();\n }\n }\n\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchRedirectsDone() {\n let doneKeys = [];\n\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n\n if (fetcher.type === \"actionRedirect\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n\n markFetchersDone(doneKeys);\n }\n\n if (deferredLoaderData && typeof document !== \"undefined\") {\n pendingNavigationController = new AbortController();\n let signal = pendingNavigationController.signal;\n let results = matches.map(match => ({\n match,\n value: deferredLoaderData !== null && deferredLoaderData !== void 0 && deferredLoaderData[match.route.id] ? new DeferredData(init.loaderData[match.route.id]) : init.loaderData[match.route.id]\n }));\n makeLoaderData(getState, results, state.matches, matches, pendingNavigationDeferredControllers, pendingNavigationController.signal, false).then(([loaderData, monitorDeferred]) => {\n if (signal.aborted) {\n return;\n }\n\n update({\n loaderData\n });\n monitorDeferred();\n });\n }\n\n function subscribe(subscriber) {\n subscribers.add(subscriber);\n return () => {\n subscribers.delete(subscriber);\n };\n }\n\n return {\n subscribe,\n send,\n getState,\n getFetcher,\n deleteFetcher,\n dispose,\n\n get _internalFetchControllers() {\n return fetchControllers;\n }\n\n };\n} //#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createTransitionManager sub-functions\n////////////////////////////////////////////////////////////////////////////////\n\nasync function callLoaders(state, location, matches, signal, pendingNavigationDeferredControllers, cancelledDeferredRouteIds, actionErrorResult, actionCatchResult, submission, submissionRouteId, fetcher, catchBoundaryId) {\n let url = createUrl(createHref(location));\n let matchesToLoad = filterMatchesToLoad(state, location, matches, cancelledDeferredRouteIds, actionErrorResult, actionCatchResult, submission, submissionRouteId, fetcher, catchBoundaryId); // We can't abort these up front like we do for normal navigations because\n // they're route-specific so we need to wait until we know matchesToLoad so\n // we can only cancel non-reused routes\n\n abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds, matches, matchesToLoad);\n return Promise.all(matchesToLoad.map(match => callLoader(match, url, signal)));\n}\n\nasync function callLoader(match, url, signal) {\n invariant(match.route.loader, `Expected loader for ${match.route.id}`);\n\n try {\n let {\n params\n } = match;\n let value = await match.route.loader({\n params,\n url,\n signal\n });\n return {\n match,\n value\n };\n } catch (error) {\n return {\n match,\n value: error\n };\n }\n}\n\nasync function callAction(submission, match, signal) {\n invariant(match.route.action, `Expected action for ${match.route.id}`);\n\n try {\n let value = await match.route.action({\n url: createUrl(submission.action),\n params: match.params,\n submission,\n signal\n });\n return {\n match,\n value\n };\n } catch (error) {\n return {\n match,\n value: error\n };\n }\n}\n\nfunction isNewRouteInstance(currentMatch, match) {\n var _currentMatch$route$p;\n\n return (// param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n ((_currentMatch$route$p = currentMatch.route.path) === null || _currentMatch$route$p === void 0 ? void 0 : _currentMatch$route$p.endsWith(\"*\")) && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\n\nfunction filterMatchesToLoad(state, location, matches, cancelledDeferredRouteIds, actionErrorResult, actionCatchResult, submission, submissionRouteId, fetcher, catchBoundaryId) {\n var _location$state2;\n\n // Filter out all routes below the problematic route as they aren't going\n // to render so we don't need to load them.\n if (catchBoundaryId || submissionRouteId && (actionCatchResult || actionErrorResult)) {\n let foundProblematicRoute = false;\n matches = matches.filter(match => {\n if (foundProblematicRoute) {\n return false;\n }\n\n if (match.route.id === submissionRouteId || match.route.id === catchBoundaryId) {\n foundProblematicRoute = true;\n return false;\n }\n\n return true;\n });\n }\n\n let isNew = (match, index) => {\n // [a] -> [a, b]\n if (!state.matches[index]) return true; // [a, b] -> [a, c]\n\n return match.route.id !== state.matches[index].route.id;\n };\n\n let url = createUrl(createHref(location));\n\n let filterByRouteProps = (match, index) => {\n if (!match.route.loader) {\n return false;\n }\n\n if (isNew(match, index) || isNewRouteInstance(state.matches[index], match)) {\n return true;\n } // If a route had a cancelled deferred, it cannot opt out of revalidation\n\n\n if (cancelledDeferredRouteIds.has(match.route.id)) {\n return true;\n }\n\n if (match.route.shouldReload) {\n let prevUrl = createUrl(createHref(state.location));\n return match.route.shouldReload({\n prevUrl,\n url,\n submission,\n params: match.params\n });\n }\n\n return true;\n };\n\n let isInRootCatchBoundary = state.matches.length === 1;\n\n if (isInRootCatchBoundary) {\n return matches.filter(match => !!match.route.loader);\n }\n\n if ((fetcher === null || fetcher === void 0 ? void 0 : fetcher.type) === \"actionReload\") {\n return matches.filter(filterByRouteProps);\n } else if ( // mutation, reload for fresh data\n state.transition.type === \"actionReload\" || state.transition.type === \"actionRedirect\" || state.transition.type === \"fetchActionRedirect\" || // clicked the same link, resubmitted a GET form\n createHref(url) === createHref(state.location) || // search affects all loaders\n url.searchParams.toString() !== state.location.search.substring(1) || // a cookie was set\n (_location$state2 = location.state) !== null && _location$state2 !== void 0 && _location$state2.setCookie) {\n return matches.filter(filterByRouteProps);\n }\n\n return matches.filter((match, index, arr) => {\n var _location$state3;\n\n // don't load errored action route\n if ((actionErrorResult || actionCatchResult) && arr.length - 1 === index) {\n return false;\n }\n\n return match.route.loader && (isNew(match, index) || isNewRouteInstance(state.matches[index], match) || ((_location$state3 = location.state) === null || _location$state3 === void 0 ? void 0 : _location$state3.setCookie));\n });\n}\n\nfunction isRedirectResult(result) {\n return result.value instanceof TransitionRedirect;\n}\n\nfunction createHref(location) {\n return location.pathname + location.search;\n}\n\nfunction findRedirect(results) {\n for (let result of results) {\n if (isRedirectResult(result)) {\n return result.value;\n }\n }\n\n return null;\n}\n\nasync function findCatchAndBoundaryId(results, matches, actionCatchResult) {\n let loaderCatchResult;\n\n for (let result of results) {\n if (isCatchResult(result)) {\n loaderCatchResult = result;\n break;\n }\n }\n\n let extractCatchData = async res => ({\n status: res.status,\n statusText: res.statusText,\n data: res.data\n }); // Weird case where action threw, and then a parent loader ALSO threw, we\n // use the action catch but the loader's nearest boundary (cause we can't\n // render down to the boundary the action would prefer)\n\n\n if (actionCatchResult && loaderCatchResult) {\n let boundaryId = findNearestCatchBoundary(loaderCatchResult.match, matches);\n return [await extractCatchData(actionCatchResult.value), boundaryId];\n }\n\n if (loaderCatchResult) {\n let boundaryId = findNearestCatchBoundary(loaderCatchResult.match, matches);\n return [await extractCatchData(loaderCatchResult.value), boundaryId];\n }\n\n return null;\n}\n\nfunction findErrorAndBoundaryId(results, matches, actionErrorResult) {\n let loaderErrorResult;\n\n for (let result of results) {\n if (isErrorResult(result)) {\n loaderErrorResult = result;\n break;\n }\n } // Weird case where action errored, and then a parent loader ALSO errored, we\n // use the action error but the loader's nearest boundary (cause we can't\n // render down to the boundary the action would prefer)\n\n\n if (actionErrorResult && loaderErrorResult) {\n let boundaryId = findNearestBoundary(loaderErrorResult.match, matches);\n return [actionErrorResult.value, boundaryId];\n }\n\n if (actionErrorResult) {\n let boundaryId = findNearestBoundary(actionErrorResult.match, matches);\n return [actionErrorResult.value, boundaryId];\n }\n\n if (loaderErrorResult) {\n let boundaryId = findNearestBoundary(loaderErrorResult.match, matches);\n return [loaderErrorResult.value, boundaryId];\n }\n\n return [undefined, undefined];\n}\n\nfunction findNearestCatchBoundary(matchWithError, matches) {\n let nearestBoundaryId = null;\n\n for (let match of matches) {\n if (match.route.CatchBoundary) {\n nearestBoundaryId = match.route.id;\n } // only search parents (stop at throwing match)\n\n\n if (match === matchWithError) {\n break;\n }\n }\n\n return nearestBoundaryId;\n}\n\nfunction findNearestBoundary(matchWithError, matches) {\n let nearestBoundaryId = null;\n\n for (let match of matches) {\n if (match.route.ErrorBoundary) {\n nearestBoundaryId = match.route.id;\n } // only search parents (stop at throwing match)\n\n\n if (match === matchWithError) {\n break;\n }\n }\n\n return nearestBoundaryId;\n}\n\nfunction wrapDeferredPromise(promise, signal) {\n let wrapped = promise.then(async data => {\n if (!signal.aborted) {\n Object.defineProperty(wrapped, \"_data\", {\n get: () => data\n });\n }\n\n return data;\n }, error => {\n if (!signal.aborted) {\n Object.defineProperty(wrapped, \"_error\", {\n get: () => error\n });\n }\n\n return Promise.reject(error);\n });\n Object.defineProperty(wrapped, \"_tracked\", {\n get: () => true\n }); // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n\n wrapped.catch(() => {});\n return wrapped;\n}\n\nfunction wrapDeferredData(deferred, signal) {\n let finalData = {};\n\n for (let [key, value] of Object.entries(deferred.data)) {\n finalData[key] = value instanceof Promise ? wrapDeferredPromise(value, signal) : value;\n }\n\n return finalData;\n}\n\nasync function makeLoaderData(getState, results, currentMatches, matches, pendingNavigationDeferredControllers, signal, shouldBuffer = true) {\n let state = getState();\n let newData = {};\n let toMonitor = [];\n\n for (let result of results) {\n let {\n match,\n value\n } = result;\n\n if (isDeferredResult(result)) {\n let deferred = result.value;\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let bufferDeferred = shouldBuffer && !!currentMatch && !isNewRouteInstance(currentMatch, match) && typeof state.loaderData[match.route.id] !== \"undefined\";\n let deferredController = new AbortController();\n pendingNavigationDeferredControllers.set(match.route.id, deferredController);\n\n if (bufferDeferred) {\n await deferred.resolveData(signal);\n } else {\n toMonitor.push({\n routeId: match.route.id,\n deferred,\n signal: deferredController.signal\n });\n }\n\n newData[match.route.id] = wrapDeferredData(deferred, deferredController.signal);\n } else {\n newData[match.route.id] = value;\n }\n }\n\n let loaderData = {};\n state = getState();\n\n for (let {\n route\n } of matches) {\n let value = newData[route.id] !== undefined ? newData[route.id] : state.loaderData[route.id];\n\n if (value !== undefined) {\n loaderData[route.id] = value;\n }\n }\n\n let monitorDeferred = () => {\n for (let {\n deferred,\n routeId,\n signal\n } of toMonitor) {\n let unsubscribe = deferred.subscribe((aborted, settledKey) => {\n if (aborted || deferred.done) {\n unsubscribe();\n\n if (!signal.aborted) {\n pendingNavigationDeferredControllers.delete(routeId);\n }\n }\n });\n }\n };\n\n return [loaderData, monitorDeferred];\n}\n\nfunction abortPendingDeferredControllers(pendingNavigationDeferredControllers, cancelledDeferredRouteIds, matches = [], matchesToLoad = []) {\n for (let [routeId, controller] of pendingNavigationDeferredControllers) {\n // Can cancel if this route is no longer matched\n let isRouteMatched = matches.some(m => m.route.id === routeId); // Or if this route is about to be reloaded\n\n let isRouteLoading = matchesToLoad.some(m => m.route.id === routeId);\n\n if (!isRouteMatched || isRouteLoading) {\n controller.abort();\n pendingNavigationDeferredControllers.delete(routeId);\n cancelledDeferredRouteIds.add(routeId);\n }\n }\n}\n\nasync function resolveDeferredResult(result, signal) {\n if (isDeferredResult(result)) {\n if (await result.value.resolveData(signal)) {\n return result;\n }\n\n return {\n match: result.match,\n value: result.value.unwrappedData\n };\n }\n\n return result;\n}\n\nfunction isDeferredResult(result) {\n return typeof result.value === \"object\" && !!result.value && result.value instanceof DeferredData;\n}\n\nfunction isCatchResult(result) {\n return result.value instanceof CatchValue;\n}\n\nfunction isErrorResult(result) {\n return result.value instanceof Error;\n}\n\nfunction createUrl(href) {\n return new URL(href, window.location.origin);\n} //#endregion\n\nexport { CatchValue, IDLE_FETCHER, IDLE_TRANSITION, TransitionRedirect, createTransitionManager };\n", "/**\n * @remix-run/react v0.0.0-experimental-e18af792a\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useBeforeUnload, useTransition } from './components.js';\n\nlet STORAGE_KEY = \"positions\";\nlet positions = {};\n\nif (typeof document !== \"undefined\") {\n let sessionPositions = sessionStorage.getItem(STORAGE_KEY);\n\n if (sessionPositions) {\n positions = JSON.parse(sessionPositions);\n }\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n *\n * @see https://remix.run/api/remix#scrollrestoration\n */\n\n\nfunction ScrollRestoration({\n nonce = undefined\n}) {\n useScrollRestoration(); // wait for the browser to restore it on its own\n\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n }, []); // let the browser restore on it's own for refresh\n\n useBeforeUnload(React.useCallback(() => {\n window.history.scrollRestoration = \"auto\";\n }, []));\n\n let restoreScroll = (STORAGE_KEY => {\n if (!window.history.state || !window.history.state.key) {\n let key = Math.random().toString(32).slice(2);\n window.history.replaceState({\n key\n }, \"\");\n }\n\n try {\n let positions = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || \"{}\");\n let storedY = positions[window.history.state.key];\n\n if (typeof storedY === \"number\") {\n window.scrollTo(0, storedY);\n }\n } catch (error) {\n console.error(error);\n sessionStorage.removeItem(STORAGE_KEY);\n }\n }).toString();\n\n return /*#__PURE__*/React.createElement(\"script\", {\n nonce: nonce,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: `(${restoreScroll})(${JSON.stringify(STORAGE_KEY)})`\n }\n });\n}\nlet hydrated = false;\n\nfunction useScrollRestoration() {\n let location = useLocation();\n let transition = useTransition();\n let wasSubmissionRef = React.useRef(false);\n React.useEffect(() => {\n if (transition.submission) {\n wasSubmissionRef.current = true;\n }\n }, [transition]);\n React.useEffect(() => {\n if (transition.location) {\n positions[location.key] = window.scrollY;\n }\n }, [transition, location]);\n useBeforeUnload(React.useCallback(() => {\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify(positions));\n }, []));\n\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line\n React.useLayoutEffect(() => {\n // don't do anything on hydration, the component already did this with an\n // inline script.\n if (!hydrated) {\n hydrated = true;\n return;\n }\n\n let y = positions[location.key]; // been here before, scroll to it\n\n if (y != undefined) {\n window.scrollTo(0, y);\n return;\n } // try to scroll to the hash\n\n\n if (location.hash) {\n let el = document.getElementById(location.hash.slice(1));\n\n if (el) {\n el.scrollIntoView();\n return;\n }\n } // don't do anything on submissions\n\n\n if (wasSubmissionRef.current === true) {\n wasSubmissionRef.current = false;\n return;\n } // otherwise go to the top on new locations\n\n\n window.scrollTo(0, 0);\n }, [location]);\n }\n\n React.useEffect(() => {\n if (transition.submission) {\n wasSubmissionRef.current = true;\n }\n }, [transition]);\n}\n\nexport { ScrollRestoration };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_extends", "target", "i", "source", "key", "Action", "readOnly", "obj", "BeforeUnloadEventType", "PopStateEventType", "createBrowserHistory", "options", "_options", "_options$window", "window", "globalHistory", "getIndexAndLocation", "_window$location", "pathname", "search", "hash", "state", "readOnly", "blockedPopTx", "handlePop", "blockers", "nextAction", "Action", "_getIndexAndLocation", "nextIndex", "nextLocation", "delta", "index", "go", "applyTx", "action", "_getIndexAndLocation2", "location", "listeners", "createEvents", "_extends", "createHref", "to", "createPath", "getNextLocation", "parsePath", "createKey", "getHistoryStateAndUrl", "allowTx", "retry", "_getIndexAndLocation3", "push", "_getHistoryStateAndUr", "historyState", "url", "replace", "_getHistoryStateAndUr2", "history", "listener", "blocker", "unblock", "BeforeUnloadEventType", "promptBeforeUnload", "promptBeforeUnload", "event", "createEvents", "handlers", "fn", "handler", "arg", "createKey", "createPath", "_ref", "_ref$pathname", "pathname", "_ref$search", "search", "_ref$hash", "hash", "parsePath", "path", "parsedPath", "hashIndex", "searchIndex", "React", "_extends", "target", "i", "source", "key", "React", "NavigationContext", "React", "LocationContext", "RouteContext", "outlet", "matches", "invariant", "cond", "message", "Error", "matchRoutes", "routes", "locationArg", "basename", "location", "parsePath", "pathname", "stripBasename", "branches", "flattenRoutes", "rankRouteBranches", "matches", "i", "length", "matchRouteBranch", "parentsMeta", "parentPath", "forEach", "route", "index", "meta", "relativePath", "path", "caseSensitive", "childrenIndex", "startsWith", "invariant", "slice", "joinPaths", "routesMeta", "concat", "children", "push", "score", "computeScore", "sort", "a", "b", "compareIndexes", "map", "paramRe", "dynamicSegmentValue", "indexRouteValue", "emptySegmentValue", "staticSegmentValue", "splatPenalty", "isSplat", "s", "segments", "split", "initialScore", "some", "filter", "reduce", "segment", "test", "every", "n", "branch", "matchedParams", "matchedPathname", "end", "remainingPathname", "match", "matchPath", "Object", "assign", "params", "pathnameBase", "normalizePathname", "pattern", "matcher", "paramNames", "compilePath", "replace", "captureGroups", "memo", "paramName", "splatValue", "safelyDecodeURIComponent", "regexpSource", "_", "endsWith", "RegExp", "undefined", "value", "decodeURIComponent", "resolvePath", "to", "fromPathname", "toPathname", "search", "hash", "resolvePathname", "normalizeSearch", "normalizeHash", "relativeSegments", "pop", "join", "resolveTo", "toArg", "routePathnames", "locationPathname", "from", "routePathnameIndex", "toSegments", "shift", "getToPathname", "toLowerCase", "nextChar", "charAt", "paths", "useHref", "useInRouterContext", "navigator", "React", "NavigationContext", "useResolvedPath", "joinedPathname", "endsWithSlash", "createHref", "LocationContext", "useLocation", "useNavigate", "useInRouterContext", "invariant", "basename", "navigator", "React", "NavigationContext", "matches", "RouteContext", "pathname", "locationPathname", "useLocation", "routePathnamesJson", "JSON", "stringify", "map", "match", "pathnameBase", "activeRef", "current", "to", "options", "go", "path", "resolveTo", "parse", "joinPaths", "replace", "push", "state", "OutletContext", "useOutlet", "context", "outlet", "React", "RouteContext", "React.createElement", "OutletContext", "useResolvedPath", "to", "matches", "React", "RouteContext", "pathname", "locationPathname", "useLocation", "routePathnamesJson", "JSON", "stringify", "map", "match", "pathnameBase", "resolveTo", "parse", "useRoutes", "routes", "locationArg", "useInRouterContext", "invariant", "parentMatches", "routeMatch", "length", "parentParams", "params", "parentPathname", "parentPathnameBase", "parentRoute", "route", "locationFromContext", "location", "_parsedLocationArg$pa", "parsedLocationArg", "parsePath", "startsWith", "remainingPathname", "slice", "matchRoutes", "_renderMatches", "Object", "assign", "joinPaths", "reduceRight", "outlet", "index", "React.createElement", "element", "undefined", "concat", "Outlet", "props", "useOutlet", "context", "Router", "_ref3", "basename", "basenameProp", "children", "location", "locationProp", "navigationType", "NavigationType", "Pop", "navigator", "static", "staticProp", "useInRouterContext", "invariant", "normalizePathname", "navigationContext", "React", "parsePath", "pathname", "search", "hash", "state", "key", "trailingPathname", "stripBasename", "React.createElement", "NavigationContext", "LocationContext", "isModifiedEvent", "event", "metaKey", "altKey", "ctrlKey", "shiftKey", "Link", "React", "_ref4", "ref", "onClick", "reloadDocument", "replace", "state", "target", "to", "rest", "_objectWithoutPropertiesLoose", "_excluded", "href", "useHref", "internalOnClick", "useLinkClickHandler", "handleClick", "defaultPrevented", "_extends", "NavLink", "_ref5", "ariaCurrentProp", "caseSensitive", "className", "classNameProp", "end", "style", "styleProp", "children", "_excluded2", "location", "useLocation", "path", "useResolvedPath", "locationPathname", "pathname", "toPathname", "toLowerCase", "isActive", "startsWith", "charAt", "length", "ariaCurrent", "undefined", "filter", "Boolean", "join", "React.createElement", "_temp", "replaceProp", "navigate", "useNavigate", "button", "preventDefault", "createPath", "DEFERRED_VALUE_PLACEHOLDER_PREFIX", "AbortedDeferredError", "DeferredData", "data", "invariant", "reject", "_", "r", "onAbort", "deferredKeys", "acc", "key", "value", "trackedValue", "isTrackedPromise", "promise", "error", "subscriber", "fn", "v", "k", "signal", "aborted", "resolve", "unwrapTrackedPromise", "parseDeferredReadableStream", "stream", "deferredData", "deferredResolvers", "sectionReader", "readStreamSections", "initialSection", "criticalData", "eventKey", "section", "event", "sectionDataStrings", "sectionDataString", "err", "resolver", "readStreamSections", "stream", "reader", "buffer", "sections", "closed", "encoder", "decoder", "readStreamSection", "chunk", "splitSections", "mergeArrays", "s", "section", "arrays", "out", "total", "arr", "offset", "invariant", "value", "message", "import_react", "RemixErrorBoundary", "React__default", "props", "error", "state", "RemixRootDefaultErrorBoundary", "RemixCatchContext", "useCatch", "RemixCatchBoundary", "catchVal", "Component", "children", "RemixRootDefaultCatchBoundary", "caught", "invariant", "value", "message", "loadRouteModule", "route", "routeModulesCache", "routeModule", "getLinksForMatches", "matches", "routeModules", "manifest", "descriptors", "match", "_module$links", "module", "preloads", "getCurrentPageModulePreloadHrefs", "dedupe", "prefetchStyleLinks", "routeModule", "styleLinks", "descriptor", "isPageLinkDescriptor", "matchingLinks", "link", "prefetchStyleLink", "resolve", "removeLink", "object", "isHtmlLinkDescriptor", "getStylesheetPrefetchLinks", "mod", "loadRouteModule", "getNewMatchesForLinks", "page", "nextMatches", "currentMatches", "location", "mode", "path", "parsePathPatch", "isNew", "index", "matchPathChanged", "_currentMatches$index", "getDataLinkHrefs", "dedupeHrefs", "pathname", "search", "searchParams", "getModuleLinkHrefs", "manifestPatch", "route", "hrefs", "set", "preloadsSet", "deduped", "str", "href", "parsePath", "createHtml", "html", "ESCAPE_LOOKUP", "ESCAPE_REGEX", "escapeHtml", "match", "React", "isCatchResponse", "response", "isErrorResponse", "isRedirectResponse", "fetchData", "url", "routeId", "signal", "submission", "init", "getActionInit", "data", "error", "extractData", "resolveDeferred", "contentType", "deferred", "parseDeferredReadableStream", "encType", "method", "formData", "headers", "body", "key", "value", "invariant", "matchClientRoutes", "routes", "location", "matches", "matchRoutes", "match", "CatchValue", "status", "statusText", "data", "isActionSubmission", "submission", "isLoaderSubmission", "isRedirectLocation", "location", "isLoaderRedirectLocation", "isActionRedirectLocation", "isFetchActionRedirect", "isLoaderSubmissionRedirectLocation", "TransitionRedirect", "setCookie", "IDLE_TRANSITION", "IDLE_FETCHER", "createTransitionManager", "init", "routes", "deferredLoaderData", "pendingNavigationController", "pendingNavigationDeferredControllers", "cancelledDeferredRouteIds", "fetchControllers", "incrementingLoadId", "navigationLoadId", "fetchReloadIds", "fetchRedirectIds", "subscribers", "matches", "matchClientRoutes", "state", "update", "updates", "overrides", "routeId", "isActive", "m", "wasCancelled", "isPending", "acc", "id", "subscriber", "getState", "getFetcher", "key", "setFetcher", "fetcher", "deleteFetcher", "abortFetcher", "send", "event", "action", "isHashChangeOnly", "handleHashChange", "Action", "handleLoad", "handleActionSubmissionNavigation", "handleLoaderSubmissionNavigation", "handleActionRedirect", "handleLoaderSubmissionRedirect", "handleLoaderRedirect", "handleFetchActionRedirect", "handleNotFoundNavigation", "href", "invariant", "match", "getFetcherRequestMatch", "handleActionFetchSubmission", "handleLoaderFetchSubmission", "handleLoaderFetch", "dispose", "abortNormalNavigation", "abortPendingDeferredControllers", "controller", "isIndexRequestUrl", "url", "param", "currentFetcher", "result", "callAction", "isRedirectResult", "locationState", "maybeBailOnError", "maybeBailOnCatch", "loadFetcher", "maybeActionErrorResult", "isErrorResult", "maybeActionCatchResult", "isCatchResult", "loadId", "matchesToLoad", "results", "callLoaders", "redirect", "findRedirect", "error", "errorBoundaryId", "findErrorAndBoundaryId", "catchVal", "catchBoundaryId", "findCatchAndBoundaryId", "doneFetcher", "abortedKeys", "abortStaleFetchLoads", "markFetchersDone", "yeetedNavigation", "yeetStaleNavigationLoad", "loaderData", "monitorDeferred", "makeLoaderData", "transition", "landedId", "keys", "yeetedKeys", "callLoader", "createUrl", "resolveDeferredResult", "findNearestCatchBoundary", "findNearestBoundary", "actionMatches", "leafMatch", "loadPageData", "createHref", "submissionRouteId", "actionResult", "_location$state", "markFetchRedirectsDone", "abortedIds", "doneKeys", "signal", "DeferredData", "subscribe", "actionErrorResult", "actionCatchResult", "filterMatchesToLoad", "params", "value", "isNewRouteInstance", "currentMatch", "_currentMatch$route$p", "_location$state2", "foundProblematicRoute", "isNew", "index", "filterByRouteProps", "prevUrl", "arr", "_location$state3", "loaderCatchResult", "extractCatchData", "res", "boundaryId", "loaderErrorResult", "matchWithError", "nearestBoundaryId", "wrapDeferredPromise", "promise", "wrapped", "wrapDeferredData", "deferred", "finalData", "currentMatches", "shouldBuffer", "newData", "toMonitor", "isDeferredResult", "bufferDeferred", "deferredController", "route", "unsubscribe", "aborted", "settledKey", "isRouteMatched", "isRouteLoading", "createClientRoute", "entryRoute", "routeModulesCache", "Component", "createLoader", "createAction", "createShouldReload", "createClientRoutes", "routeManifest", "parentId", "key", "route", "children", "routeModules", "arg", "module", "invariant", "loadRouteModuleWithBlockingLinks", "routeModule", "loadRouteModule", "prefetchStyleLinks", "url", "signal", "submission", "result", "fetchData", "redirect", "checkRedirect", "isCatchResponse", "CatchValue", "extractData", "response", "isRedirectResponse", "TransitionRedirect", "IS_SSR", "RemixEntryContext", "useRemixEntryContext", "context", "invariant", "RemixEntry", "entryContext", "action", "historyLocation", "_navigator", "staticProp", "manifest", "documentLoaderData", "documentDeferredLoaderData", "documentActionData", "routeModules", "serverHandoffString", "entryComponentDidCatchEmulator", "documentServerAbortDelay", "clientRoutes", "createClientRoutes", "RemixRoute", "clientState", "setClientState", "transitionManager", "createTransitionManager", "subscriber", "state", "navigator", "to", "location", "matches", "loaderData", "actionData", "consumeNextNavigationSubmission", "ssrErrorBeforeRoutesRendered", "deserializeError", "ssrCatchBeforeRoutesRendered", "RemixErrorBoundary", "RemixRootDefaultErrorBoundary", "RemixCatchBoundary", "RemixRootDefaultCatchBoundary", "Router", "Routes", "data", "error", "useRoutes", "RemixRouteContext", "useRemixRouteContext", "DefaultRouteComponent", "id", "useLocation", "routeData", "appState", "Component", "CatchBoundary", "ErrorBoundary", "element", "maybeServerCaught", "maybeServerRenderError", "AwaitRenderStatus", "neverSettledPromise", "usePrefetchBehavior", "prefetch", "theirElementProps", "maybePrefetch", "setMaybePrefetch", "shouldPrefetch", "setShouldPrefetch", "onFocus", "onBlur", "onMouseEnter", "onMouseLeave", "onTouchStart", "setIntent", "cancelIntent", "id", "composeEventHandlers", "NavLink", "to", "props", "forwardedRef", "href", "useHref", "prefetchHandlers", "_extends", "PrefetchPageLinks", "Link", "theirHandler", "ourHandler", "event", "Links", "matches", "routeModules", "manifest", "useRemixEntryContext", "links", "getLinksForMatches", "link", "isPageLinkDescriptor", "imageSrcSet", "React", "page", "dataLinkProps", "clientRoutes", "matchClientRoutes", "PrefetchPageLinksImpl", "usePrefetchedStylesheets", "styleLinks", "setStyleLinks", "interrupted", "getStylesheetPrefetchLinks", "nextMatches", "linkProps", "location", "useLocation", "newMatchesForData", "getNewMatchesForLinks", "newMatchesForAssets", "dataHrefs", "getDataLinkHrefs", "moduleHrefs", "getModuleLinkHrefs", "Meta", "routeData", "meta", "parentsData", "match", "routeId", "data", "params", "routeModule", "routeMeta", "name", "value", "isOpenGraphTag", "content", "isHydrated", "js", "Scripts", "pendingLocation", "deferredLoaderData", "serverHandoffString", "serverAbortDelay", "initialScripts", "contextScript", "deferredKeys", "key", "_routeData$routeId$ke", "racePromise", "routeModulesScript", "index", "createHtml", "invariant", "routePreloads", "route", "preloads", "dedupe", "path", "DeferredHydrationScripts", "scripts", "DeferredHydrationScriptContext", "DeferredHydrationScript", "resolve", "ctx", "promise", "status", "AwaitRenderStatus", "error", "isError", "script", "escapeHtml", "array", "Form", "ref", "FormImpl", "reloadDocument", "replace", "method", "action", "encType", "fetchKey", "onSubmit", "submit", "useSubmitImpl", "formMethod", "formAction", "useFormAction", "submitter", "useRemixRouteContext", "resolvedPath", "useResolvedPath", "search", "hash", "isIndexRoute", "createPath", "defaultMethod", "defaultEncType", "useSubmitImpl", "key", "navigate", "useNavigate", "defaultAction", "useFormAction", "transitionManager", "useRemixEntryContext", "target", "options", "method", "action", "encType", "formData", "isFormElement", "submissionTrigger", "isButtonElement", "isInputElement", "form", "isHtmlElement", "name", "value", "IS_SSR", "protocol", "host", "url", "params", "hasParams", "submission", "setNextNavigationSubmission", "nextNavigationSubmission", "consumeNextNavigationSubmission", "object", "useBeforeUnload", "callback", "useLoaderData", "useRemixRouteContext", "useTransition", "transitionManager", "useRemixEntryContext", "RemixBrowser", "_props", "historyRef", "createBrowserHistory", "history", "state", "dispatch", "_", "update", "entryContext", "RemixEntry", "React", "STORAGE_KEY", "positions", "sessionPositions", "ScrollRestoration", "nonce", "useScrollRestoration", "useBeforeUnload", "restoreScroll", "key", "storedY", "error", "hydrated", "location", "useLocation", "transition", "useTransition", "wasSubmissionRef", "y", "el"]
|
|
7
|
+
}
|