tocco-admin 1.0.0 → 1.0.4
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/changelog.md +33 -0
- package/dist/{a33f52a5f1ea0162305f99d63235f807.js → 010d0560a00a032c33da819e3c86596a.js} +0 -0
- package/dist/{6e88d3943f4c3a068493aad131cd4898.js → 029ed9161a8d24a9c2ba97124020989d.js} +0 -0
- package/dist/{6e4d1075690c1f17775f02251592ac60.js → 02d5c4961ca855a88b1cd3e1b7fa7aa2.js} +0 -0
- package/dist/{5d2589bbfd66894e296ec080a28d70e1.js → 03371bf1d5cbb1eab58e3a0130d1e9c2.js} +0 -0
- package/dist/{06d453ace473034cd357edb758d539ab.js → 03487ba89c7b63069d63c1b3802a472c.js} +0 -0
- package/dist/{7f63b670b51e07bd9a30869b68ada191.js → 03748243ac7148ca150ba06c2919ff81.js} +0 -0
- package/dist/{cf0a04afa21ac9ba23a1de0416a03105.js → 03980cb12dacd26148c22bb61fce440f.js} +0 -0
- package/dist/{efc508c36f4e417ec6bd5ec72989443b.js → 03aae8272914723a7bf85b984385032c.js} +0 -0
- package/dist/{09ec1e19429e9349a4f69e00cdc89509.js → 04770a551c5b6daa744be9b180a8d0fe.js} +0 -0
- package/dist/{7f10fe526aec57bd522af77ea6ac2b62.js → 06d958315fc6cdbb28576b03e43203aa.js} +0 -0
- package/dist/{84f75bf9ddb5400925d2a043a2013cec.js → 07101530302fe1d03dcd731992f7a899.js} +0 -0
- package/dist/{f4ee92824c023ab7278694588c9c40f1.js → 0731d7568a06d2e28351781370bc52bb.js} +0 -0
- package/dist/{6ddf5e6270865af626321055852c6cb5.js → 0794fa2b9c882c72fa7d586069b61055.js} +0 -0
- package/dist/{da1719655627488c0c1afaa1379e2c1d.js → 0872e65446d05c1c443180c6280b015f.js} +0 -0
- package/dist/{4ee6db42bdfd31631aaa20c2a02cf90e.js → 08b9f3e305b5e3e0b81f7848fa7f3b6b.js} +0 -0
- package/dist/{c0f91d067bd4f665ec7b85a632e3168d.js → 09563004132aabcfcc186943555a92a1.js} +0 -0
- package/dist/{3e6808cd6eefd1be1040403985581374.js → 0a1d9862d917663419ac2dd2e8193267.js} +0 -0
- package/dist/{6ed72418f4fa5f71dee7780ac5bb95e0.js → 0a858573915ab9b03fe79f98f8c51a04.js} +0 -0
- package/dist/{f3b6993cd8f9bbdd1d5ad68a5e1cdf70.js → 0a9cd3d62e7f1cd404606c50d9da86fb.js} +0 -0
- package/dist/{0f908578998bc65a3c374078edd4d880.js → 0beea7b55cf3b8c9f9b0bd46170bb30e.js} +0 -0
- package/dist/{e8250271e7641960341ae2ac170af4ac.js → 0ec4bf56a876c2bf34ea174c584ce628.js} +0 -0
- package/dist/{ceadf1677ee2a5b133bac039155145ec.js → 0f418117fac55a859631143ad7d0e833.js} +0 -0
- package/dist/{92cf63e9a949f08d97a74d9ed17392ed.js → 10132993df2cf9c9423b53a8a44379ab.js} +0 -0
- package/dist/{155500be4d3113e94dca99f997defb7a.js → 1034e3807d1bcf55cb564491950237ab.js} +0 -0
- package/dist/{a026164ca1f6f157fcb0f5f6bfd4abce.js → 104959bdb953a3792a203e98d2bf530f.js} +0 -0
- package/dist/{db7eff370e6f80152653db4bc1c65285.js → 114c58e47951fe3f6d25f683e0cd54e7.js} +0 -0
- package/dist/{81350551f7c2ff74244535aaff56dd11.js → 11b2d52156942feeb87b7c608276c49b.js} +0 -0
- package/dist/{2fe13737434324ed67582ac97d484c54.js → 11dc77ef2ea3a04834945a52f7de2072.js} +0 -0
- package/dist/{9cf3be7669b89ac4036cd07c9baf7e13.js → 12b520593765ef7e714d7fb3764633ed.js} +0 -0
- package/dist/{acc30207efba7ab5b7b509b599f37e6f.js → 130340e2c62b9e858f186dab5f491e55.js} +0 -0
- package/dist/{3a969f15f742add3d383e55d0ceb3d25.js → 1324f89bd8db0bae85b79b7f90f6c119.js} +0 -0
- package/dist/{998c5f13555e18b42e9bf826578b2e16.js → 13eda3507db9cbfb400f46b9b3ff6553.js} +0 -0
- package/dist/{37e37aa178d97ffcd94eeee1e1a25967.js → 1441681e52f3ae9ab33afbc5517359a0.js} +0 -0
- package/dist/{7cef38946c33fa981d6d2c86c62428e0.js → 1533058f0ce13acdaa8d5bdc7d147bef.js} +0 -0
- package/dist/{902223f10df9241dca67a311e6be82d2.js → 1549fe09fd6b44aca96e2b1b7cbd93d0.js} +0 -0
- package/dist/{d750a8dbf9dd09c0a33b9986e79e3c8c.js → 15f3800d33b854ba476c9daf1b9e0326.js} +0 -0
- package/dist/{d9a00ccd64f554cd458b3d6f6c66f465.js → 16563bfaf4741097d38cc6ce3ccc1a2d.js} +0 -0
- package/dist/{2ac58492ad5a1b5244deb0fef1e5a773.js → 170487867de05784a96608617bdd544d.js} +0 -0
- package/dist/{fe58209a4ef163863b95ab289a69cdaf.js → 179a93d3148b7edb72581279c3787d0c.js} +0 -0
- package/dist/{0dd0f45c3dde9af3fcf9706e6a2a1edd.js → 17dc98279d24649d3ca77cbce8c44e83.js} +0 -0
- package/dist/{fe56e099960b1f5a3ac7143e245f7ce1.js → 1850762f1bfaf1a1044765b02b243ed4.js} +0 -0
- package/dist/{1f7235986d23e6842cc54ba78816f16d.js → 18cfa6de2de3832aa10439fbf963217a.js} +0 -0
- package/dist/{81be1aff3c1cfa0531037ebab355abbb.js → 18e63e724098792b95b076412a860636.js} +0 -0
- package/dist/{2681042a598b029b51d51f7669b81c4d.js → 191feb6103c36b202bc01ba262916cdf.js} +0 -0
- package/dist/{8dec848a9d34e3804976ae4a589fbc4f.js → 19e684db1b08c82963634abc8b2c989f.js} +0 -0
- package/dist/{9c2b91bc7cd844308f5a746886a7d573.js → 1abc9efccf77fd4527d1c2fc85d87e04.js} +0 -0
- package/dist/{d465c0a35c6ef244bf587b0e6bdb4019.js → 1b15b9f88acaf59b96e59c6b5f32da12.js} +0 -0
- package/dist/{64a7727963416cd27ab100d1dfff8168.js → 1b64f97eed4a3837a93f8bdd363295fb.js} +0 -0
- package/dist/{7a679adc4e97aa2dab36bf2b4f37b6d3.js → 1c02ec6ec024eee3ebb6b34fa8ff316f.js} +0 -0
- package/dist/{214a729dcea91ee8a56f8ef43e17243a.js → 1c57b3481f295105588972ffa1305521.js} +0 -0
- package/dist/{c56ad0a02cde76fcd540a7f7db5eca1e.js → 1cc82820c232a82b5d8b6cb9e4152af3.js} +0 -0
- package/dist/{e9f63cc0a627466e1096f848ff476ca5.js → 1cd3d09b5303cc37fa337225ed6a9132.js} +0 -0
- package/dist/{21e63141d475afcb7d4fd1fac1da934b.js → 1e029a7f1f64457da4f54254d50ac59b.js} +0 -0
- package/dist/{f35e34e60520cef0b0dbba2bc2931941.js → 1e26167b5f75d5b94add34f1f4d8b044.js} +0 -0
- package/dist/{9e875d25eb6d80340adac0cfc35700c1.js → 1e4131e1241a5b81d54c7d9cb66b0e87.js} +0 -0
- package/dist/{c2b469d0ddb280bda5f621563579725d.js → 1fe2d583da5f073431d81a6ea13ffc0c.js} +0 -0
- package/dist/{88d5efab68c7526ad2ad4196932adb03.js → 1fee62e3e043728a265935971fa26200.js} +0 -0
- package/dist/{ca1483809659f6c87cc6f588891d2bd4.js → 211511e7b374f57ad31acaf49dbdccb1.js} +0 -0
- package/dist/{81096321488be75b81be9dbd40d9bb24.js → 2183252fe9e1b88fcf2bc454d6fd9273.js} +0 -0
- package/dist/{86dfc095a8bb97b2b6d94b798ebcdc61.js → 222d52530e9db0a0ec565c6306c5db35.js} +0 -0
- package/dist/{c9e10cf9c0a5a1dee23414b7bc709a11.js → 2267d20fd89c81a461e38abecdb8fcdc.js} +0 -0
- package/dist/{2031467f3d02be43b638c5e3ccba3996.js → 2272c6632c52c3e402ab27b8045ab8f1.js} +0 -0
- package/dist/{817d52a47a4657b8a4dab79e057f5fb0.js → 23bb1a9f279e7a732bfd405350aab114.js} +0 -0
- package/dist/{7bdb2e4d3bc51d15863aa7be6e0a23a9.js → 23da8ba64540ff4aa68a34d3445db680.js} +0 -0
- package/dist/{8a50c9e16faa7bc5e88b7261601fbea3.js → 243c0c0572ab9866e02e18821558a1c5.js} +0 -0
- package/dist/{e0476257d7657264e527f7a1f1ecbece.js → 244b1a234ec1728d0268214de601449d.js} +0 -0
- package/dist/{6e9ca56e0fa3e784eab3da45f8d0d8ac.js → 24a3ff38afde257888d755ece9bfd704.js} +0 -0
- package/dist/{f3a0f6e7e442de2ae51eddbf4eb98d97.js → 25718a469574ade47e23567d8c543169.js} +0 -0
- package/dist/{91832748c8f066b07af2341ccc6dd5b1.js → 25c99a71d30112583893bc5277402c46.js} +0 -0
- package/dist/{540bba54b49ea7a6ec513270449132db.js → 25eda4bb98e40a82cfd5b4bf9fbc06ec.js} +0 -0
- package/dist/{59457eef0e0be735680874d74c13e469.js → 263f7107e9357b1c91997e1a21b59ff5.js} +0 -0
- package/dist/{0a4b12234fd7cba4d7c62207e4835f4c.js → 26fb247a2e0630e1f435cb4d91ec51fd.js} +0 -0
- package/dist/{38528de2a5c097da375fd0a076667441.js → 27730a0bdc6f430cc85049a46a73a029.js} +0 -0
- package/dist/{b02e760aa00b054a6e53138426bd9411.js → 27ccb71fa24357a0919a861351d5b82d.js} +0 -0
- package/dist/{2839e845bd0cf60f35f3a8ca90a5ee22.js → 28474eb7ee45a125e49cc5cbe69e336f.js} +0 -0
- package/dist/{acc7448b80728a73c9a4046b3ec4407f.js → 28785bea435918d49b290d27bf660baa.js} +0 -0
- package/dist/{1de3569bf4cf2463628d69ecd92150ca.js → 28acb3b48578dfd30dd555fff7c822f7.js} +0 -0
- package/dist/{da06d4429e8bccd9ef90b16ebe49354b.js → 291611f874a2bc54dbc291b52d74c512.js} +0 -0
- package/dist/{1365ff3d277ebdab408e6aeec886cf08.js → 2b2fe1a34cdf81c656a47e493ca9d658.js} +0 -0
- package/dist/{51fd63020e12665fab2b755ae7a901d4.js → 2bcf741e1f2cb07989a722a6ba9c2ea7.js} +0 -0
- package/dist/{852f3a4ec9ee58d75bd55c85161bb68f.js → 2d2a42eeeeec801ab35f2fff7d900e43.js} +0 -0
- package/dist/{036680d9c1d332cf478c5823cd2a47db.js → 2dd82c65030101b60dffccedd8741c6e.js} +0 -0
- package/dist/{bb9282d93d3ae9d53870a66627f8c797.js → 2ddd0346681f9f12fd3a191245aa41df.js} +0 -0
- package/dist/{64f93b6b093bba4147485023263cf65f.js → 2f055ac4066041b9008dd6aebf9df34b.js} +0 -0
- package/dist/{8c8877c66a2c6404ed17f0f364f2f229.js → 2f5be3e3e9ab852d217168220854ea9b.js} +0 -0
- package/dist/{0bd6d25a3183a767309cd45cd8b8f347.js → 2f7c864f08b00c01f04ac22375f7ddd9.js} +0 -0
- package/dist/{1840080076c4078d157a5b05d0d95551.js → 2fc0239242a898632ca8aa451cb930c2.js} +0 -0
- package/dist/{ef2640638453d7df3e7e1659d1f67105.js → 2ff54aa3c655216f360438bc7f5b181a.js} +0 -0
- package/dist/{ce73c3243f61524d76000c4ace94f2bb.js → 30e80558090a09477e4466af8af4c40e.js} +0 -0
- package/dist/{9abcc804fa38b6d05e62a10cb8dbb668.js → 34791bf31a4236531bc887b48f872c1c.js} +0 -0
- package/dist/{f5dda2fc10c4a825f922a439633d70ea.js → 34b3249d58303435b894a43d3776a5c3.js} +0 -0
- package/dist/{94a0179602c94d55621a35e41c97ed5c.js → 3567d1ea443427e944a6f189a0898819.js} +0 -0
- package/dist/{434a5902436fc0f4bac913f7ae1471c6.js → 3646668820dc96864fbed7746f805947.js} +0 -0
- package/dist/{47bc1cf488af29738e21d8b5f4c8766b.js → 36474100e81ab63c4ddbc94ab2cc8667.js} +0 -0
- package/dist/{38a696bcfe6021b6442e70b6d3017b93.js → 365b89ceec577ebec0a39c938c2363f0.js} +0 -0
- package/dist/{47ecd829f86e48857a05b2189ee9c097.js → 367ad31e6d99d0021d05133b85bb9faf.js} +0 -0
- package/dist/{6f0543453c605ea6d673a3bd31dd1090.js → 37172facd8a534a38f378ca2a9c7c11b.js} +0 -0
- package/dist/{8770a939f7943a9fc6ef55f01bbf58b4.js → 37afa466cdb7fa8fc2e043164d48f29e.js} +0 -0
- package/dist/{21dca974f7343f200597e43a55766c6e.js → 37ee3b5201ae2e2dc5dc8b1b20ad900e.js} +0 -0
- package/dist/{20b003ac07f216a490981c397b91a117.js → 38270ad5088729f40c461c4a5a6bad5d.js} +0 -0
- package/dist/{34f05dc84111ffe37a1d5b5aacff7488.js → 3b190e5159c72fb7e27271956772bcba.js} +0 -0
- package/dist/{f50d7c4ce743ce495230d19bd33fefab.js → 3b544bb2c5a4e7b225a4b50235a0fd6d.js} +0 -0
- package/dist/{2bba99eb717e1aa22e45284a964ca73f.js → 3b6e7dc98c47eeafd851ca5072db4be6.js} +0 -0
- package/dist/{91c0f3f78f13aefc3168b4ef28ff49db.js → 3bbf0faa999b08584dc971eab820113a.js} +0 -0
- package/dist/{4cbd6f8a4f52821c1d3476139078797d.js → 3c5b59a666c5d39d9ba9cc054d36a410.js} +0 -0
- package/dist/{223593fe8dd78b83f22808f9aad86ae9.js → 3c71a5c0e85afc5486ee9ac29099843d.js} +0 -0
- package/dist/{88f2b86b79781364b99947d07d3c3469.js → 3dcc18a5dee46b57ad7f85c0bee86802.js} +0 -0
- package/dist/{37bc2ca46b9a9d40678a3cd05d50e397.js → 3df92508d7112d83474f31fe9590e289.js} +0 -0
- package/dist/{dcb084d6aacfa517923dd3a94e3b9af5.js → 3e277a4ce5486a806a00497aea8ecdd3.js} +0 -0
- package/dist/{5540bb93f39dcb670a0f9b4e4b793d02.js → 3e3e2243675fa4fb4b320dc57daf2d4f.js} +0 -0
- package/dist/{3e6cde7f6a3d84c5cff5127be1c019f3.js → 3f55ba1c6515db2f98bb996c1a5bc9e3.js} +0 -0
- package/dist/{413ec783ae29da56e8bdabae45457f91.js → 3f758ea78954547fed0a8d999691dd7c.js} +0 -0
- package/dist/{8e9de0496ec7e61744c335d3156e3e91.js → 406884d5525e864955e9f5058526aa02.js} +0 -0
- package/dist/{8120c57dbca7501da3ecf702c811f16f.js → 40dc555a17f1c85020333a41f01dd9ba.js} +0 -0
- package/dist/{d08030a8f6057b63643bacf4cee162b0.js → 40e6f6cb52a24a747b1046614db3b164.js} +0 -0
- package/dist/{d47938906a471dea833a3b57991c7124.js → 41d8a58fd52b6a06e8d3fb06cdabf67a.js} +0 -0
- package/dist/{d04b75913eb7152475e4db038e643095.js → 42b4ce6de00994aa6bf7db7ff2f931a8.js} +0 -0
- package/dist/{a28e3425f856992a4e5e4b0d448316cd.js → 43a0e099f8283dc1c1c6bbd39148d98d.js} +0 -0
- package/dist/{b49c9a9ab619e46a7ba6f9f89c800589.js → 440f4d477b586c7a6ba4c1c966ca79fc.js} +0 -0
- package/dist/{7e89c064ec09f955a6c3ffbfb96908a2.js → 444ababf8edc26948943fbb45bd06a19.js} +0 -0
- package/dist/{b4bd28ac3a7935d0c52a6cb19c89aced.js → 44701e25bb6f2ab9ff18343f2357d1b0.js} +0 -0
- package/dist/{d70ab0885fcc546aaf5eee0c5fca6278.js → 44ac2a2398075299754707d4bac7c276.js} +0 -0
- package/dist/{5e4dd0452f14cf5dbb02a7dc7d9dda76.js → 460c67d8fe31ef229704bd5ab6d1dd26.js} +0 -0
- package/dist/{dde12e6c2c05d17c95ed0a94da234b3b.js → 4639c30a609d986a255ccc684404527e.js} +0 -0
- package/dist/{fe4de7aeda3abed04c238956a8565de4.js → 4700af84801dbda8a3880e3469c21130.js} +0 -0
- package/dist/{c7fb0ccebacccfb5c2f7b2f6023ebe4a.js → 4736a562251eeaea46dd06892b489f35.js} +0 -0
- package/dist/{78999d905693a14a2c4677977ba222fb.js → 47541c23870e955fff15de4be490ba74.js} +0 -0
- package/dist/{6477e8f75e2259e66e943bdef7b9e4a7.js → 47f0fbf038314894ac52f2d67466b5e9.js} +0 -0
- package/dist/{983ddc3115fae8e0dfd108d799662892.js → 4860a6a7c59b9ed5c779f7201dc1f591.js} +0 -0
- package/dist/{1f1abd5e247cf6b2e9a3db6303277572.js → 48e9351c5623d4da657ce7d5d0267ea6.js} +0 -0
- package/dist/{1084edaced97872890c9d87a9944cdcd.js → 4a1dab236c2844d28f73c5c128afe299.js} +0 -0
- package/dist/{7150c52abe226d317116208cfe9fdc88.js → 4b425eb8188febc5a89674b89a72d296.js} +0 -0
- package/dist/{b518725b1ee5b4ba27eec173687966f0.js → 4b61fe945e9e73aba22717e5d6f080df.js} +0 -0
- package/dist/{31f3f1c32b27587832d28b634351325c.js → 4bf3bc1fbdd26ac698fef1bdf26e3ff4.js} +0 -0
- package/dist/{fb4580529d9585e912b7142f6b62cae4.js → 4c2816c26725f7aae5b490142e31112f.js} +0 -0
- package/dist/{c806ba4f0026195e7907bfb62d00b502.js → 4ceabd28d8dc751f41002ebf2b6fed88.js} +0 -0
- package/dist/{22b1c8bf4c2bdd7e438f832b888c75e4.js → 4d143a2d103a9e376a9e3b55e680eef7.js} +0 -0
- package/dist/{3cce0c7e1a8e1148f97de59a4b1ee73f.js → 4d8cb7033879cb7fcc7a43798e2bde22.js} +0 -0
- package/dist/{faf460076b3383fdc3ecc224068964cf.js → 4e389cce6fb8f78845fab249bce43c0b.js} +0 -0
- package/dist/{8bdbab2f0d58195a7d509ad6fbe02966.js → 4eed3725a00fc2bab78accdb014b7826.js} +0 -0
- package/dist/{f80c6eb0f52a68464b21211240e3d6e6.js → 4ef80ee74467e0297eec3cc03092da01.js} +0 -0
- package/dist/{61cc56da80a76731283878abc3b13761.js → 506d44d8712a22011ce2bec8adbb19b2.js} +0 -0
- package/dist/{7af5865535fb306e7d0364a9ff81f389.js → 50c073327491a2ed3bfa2ebb466c4204.js} +0 -0
- package/dist/{dd40dfc7840568927fdef65087a233ed.js → 51f903c5ce5284a63196247cffb5ca40.js} +0 -0
- package/dist/{c6f608398c43e25821557ee65cda5e58.js → 5352ecd8e5f1a2637b48e18cc406edb1.js} +0 -0
- package/dist/{b830d88aa22a866a208be27af90526a7.js → 53e3600928916423671f3388e2d67844.js} +0 -0
- package/dist/{243d8101969c933d25388b5287bb3425.js → 54b3396acd2c700969248de4b20cbf7c.js} +0 -0
- package/dist/{f457edce8a9809fa16aab3c8e695bf38.js → 55892adefebc0d53993fb108151ed150.js} +0 -0
- package/dist/{7e98c4d98664d6f7bcc52a07f21a1f9f.js → 57f4109bd1f06be4dc2bcb8ff7eaf1e5.js} +0 -0
- package/dist/{03276b6288c255cf1682f53ec11bb5a2.js → 57f9654d8ecdebfb02c636e1889af2e4.js} +0 -0
- package/dist/{c7d3b0afe7600a632fbf44ee8d84996e.js → 582e24f5ba929e358fadfc7be4c18025.js} +0 -0
- package/dist/{e0e2b1267a5d4acb4dda3a4a598cd8a5.js → 58598705e7012f4ca1eb1dd21d3c59a5.js} +0 -0
- package/dist/{697c2df91bf7c729d317c620a3cd77bd.js → 5861dfe4f2c7823623e82d0619c5bf06.js} +0 -0
- package/dist/{1cb8df3a3416707163473b1ee9268faf.js → 58aab872dbdb5e1607076e1935130e03.js} +0 -0
- package/dist/{5e9314c1c0d4e5f4cb7a3f80fc01530c.js → 595aef8d8b0a2017e2fc27db5703e0d1.js} +0 -0
- package/dist/{3c58f68d787710c79906a2cd6d248295.js → 59cc05504a1c823b6d4796bf6b430822.js} +0 -0
- package/dist/{e4d51c8b4202d444cb39db4e7642d7d9.js → 5a496ae20cc576bef1d35972548207cf.js} +0 -0
- package/dist/{09195a75bcf8a7ac579281ac2ed5954a.js → 5a67fdd5293af0a35defd2574c05cd04.js} +0 -0
- package/dist/{1d837e2c9de35cbb09a85208da4a0d8a.js → 5ada4185d70a1852b578b2063de58e37.js} +0 -0
- package/dist/{553aa6bb3b625428f4df57f5885d50f3.js → 5b6a626249d0bc43e412fffa6a9ee177.js} +0 -0
- package/dist/{a07f2b025030bd4f277803aea0e6a539.js → 5bad2df0e3bfd8fdc1a332fb6276cb39.js} +0 -0
- package/dist/{b0fc54e0e936c84253a30c9b39cfd9bf.js → 5c53d90bf4029cfd1b6a0945d1cae142.js} +0 -0
- package/dist/{8e81f51d2e7be98e9e45fe93239c7e99.js → 5c96efcfd419a70a93c96557979bc66d.js} +0 -0
- package/dist/{4d694d41a0c1b3eaad752a8352c5661c.js → 5d3314103b00c8ea165c6f9f6757f794.js} +0 -0
- package/dist/{a84f565fc5473f112281550ea6c2ccf4.js → 5d46734b57c7408a41473abcd515b64c.js} +0 -0
- package/dist/{628b24103fca421515ec8724d12f026f.js → 5da9145440d57c9b84d469253e84898d.js} +0 -0
- package/dist/{8afcf3a037a7f37f9c0bbad01507d73b.js → 5e37c1ef17a219449c8c6aa37a87a941.js} +0 -0
- package/dist/{5e62ca244220154bbcae2a7eb2c50e0f.js → 5e3f006db26e9b277b1bdbc130611a14.js} +0 -0
- package/dist/{c6d4a590e14107a8a5ad505d66241032.js → 5e55b301888460bd06c8e26d1011e01a.js} +0 -0
- package/dist/{57c7c145c720f31f3749b658e3769833.js → 5e6c2744429a8fac6e536b179c1f31d0.js} +0 -0
- package/dist/{2dea096a03cd8f864db5f06e9f0113e5.js → 5ebdef8c548fca6c51280e915d6f4c3f.js} +0 -0
- package/dist/{646323ed2e6bfb9e711785e109cf8d5f.js → 5ede1aebde9d4e5f5cce2db3044495c7.js} +0 -0
- package/dist/{142d258626093a8c3187029538e32bbc.js → 5f3ce6efab3c679ec1ad25ab0b3f6b2f.js} +0 -0
- package/dist/{c2c0e5fa8323e2c5c1f54f20afda51b8.js → 5fb6059ab5d7abab7a74eb73028a3aeb.js} +0 -0
- package/dist/{c24de6963d7d00c269db34091059e06d.js → 5fc5c77d4df4f5d77f8530f6b23ecd1e.js} +0 -0
- package/dist/{5eeee1acc01b04328cf42db0715bb7f5.js → 5fedbf948ed123687f77167fac1faf8b.js} +0 -0
- package/dist/{3f9e3ae9d4ee540b9fb067b6fd29d529.js → 60340be8eea1d704a17f399b3c3f9577.js} +0 -0
- package/dist/{8681f562786fa45bebe8ee7ed2461026.js → 621b99ed1a029c36b4e91ec35f36c344.js} +0 -0
- package/dist/{43dab3876e6402fc9ae359a033683cc4.js → 6292be0125d3720498496eaa7f541618.js} +0 -0
- package/dist/{dad7909925cdea4ce193d5c14a13abf3.js → 63b15fb6fc8f897b22a4bf72b7e8452a.js} +0 -0
- package/dist/{f7443e8232a7e4289b9f2ed4a512750c.js → 64a5f4d62507d032038dcd76d15188e1.js} +0 -0
- package/dist/{94a5c40baab0f2df8b43889ed5fb6b8a.js → 64c45b6610e353ba59a58afc6dd090ca.js} +0 -0
- package/dist/{3cab7110c6a090f72c540dcc1cfbe3b5.js → 64d6924350bd7706850cdc0dcc76ccf6.js} +0 -0
- package/dist/{cb5e8b8ede9cae0b8fb986da038763e3.js → 6511453710d760c2682567b40ddb3301.js} +0 -0
- package/dist/{4263ed179f5b2268965e1157074583e8.js → 656f53e1b4c6e37a31799737faf6d639.js} +0 -0
- package/dist/{294fbc5b00264d6215dd8ff838dc2999.js → 663234c150f2097f3812c6065491497c.js} +0 -0
- package/dist/{82ce99851e7fc39e91603bc3320fe6d2.js → 6903d8ef977a1424c4e2eb22b96feb77.js} +0 -0
- package/dist/{63ccb1f1a27a2bf6271f40d3082186f4.js → 6a7bf4fb4484f6f48d8e4337f126a61d.js} +0 -0
- package/dist/{398b591b6e9b2ae73dde100bca36f84a.js → 6abb884bd4f1a54529c00b58c14741cc.js} +0 -0
- package/dist/{a06ea1f6e485f67413d6cb34d7cc3515.js → 6bb61adbbc13088ee1c32d88b5c7e754.js} +0 -0
- package/dist/{d754905fe54aac6f3c350df34f51a0b6.js → 6c0a75dc5671c3f237a79f6e45b9891c.js} +0 -0
- package/dist/{a311e02008e0f00a37305a12d479159a.js → 6c67587c2093ac3a19da9f2196e040b7.js} +0 -0
- package/dist/{e2792218bae78a6aef6764de4e61fd82.js → 6d38cef4a006e6cfe54a6117aba7b600.js} +0 -0
- package/dist/{e53ab2ed7040ddd0541d4795f8d224e9.js → 6f09754fd684f82e6c06ae526d15ac80.js} +0 -0
- package/dist/{957cecf7fe593e179b14e2cb8795819c.js → 6f64da239140d00b81d8b6c523e86daf.js} +0 -0
- package/dist/{9e357a97da26127713394684a51946b8.js → 6faa9e5f2a0122d2333fa450337a09b0.js} +0 -0
- package/dist/{4474c9775d04684871043fae3501ec66.js → 6fd6a6ddbcbbebe735c9d21e594203ec.js} +0 -0
- package/dist/{4f30f5432d9bfb925c918a6870451fef.js → 6fe3f0823e345813c2084b243cb6650b.js} +0 -0
- package/dist/{ab16c1237e6e04bbf0024ee2bae42130.js → 70074e0c785c9a808dea76c7c7d17af3.js} +0 -0
- package/dist/{bc26ab0797e975ba01e701683935864b.js → 70286c33cab463fd576766adecd2d5d9.js} +0 -0
- package/dist/{fe5fd32b764aa22fde63925ac549a9c9.js → 707fa1de4d2096da1951c4bc9d21cb6d.js} +0 -0
- package/dist/{5f6f5026d13b2a9b884a8144a119cf9e.js → 7080d2a1db1608264a6d9d9fbaf2cce8.js} +0 -0
- package/dist/{85f71b723441bcf428b8abed1fc8f56f.js → 716879b6ef8945d579595d88534ae402.js} +0 -0
- package/dist/{bae95bdb1bbcc0969e0e40fb72539df3.js → 725da29f1643c2263a437c08a1454aea.js} +0 -0
- package/dist/{5c5f571e7b4ac9500fa21c5abd909c27.js → 73c78b067c792ea8c737746e4671d3e0.js} +0 -0
- package/dist/{b26738d581e044c69f7a4392906e6843.js → 740f4264cd757fcf28331fd30daf295e.js} +0 -0
- package/dist/{bb3e0098a11d21ca01d6e44c2e39f90b.js → 7493f0c3c9bf268d6ad785019d993dd7.js} +0 -0
- package/dist/{a5cb31cfb4711ef14999198f0d35eaf3.js → 74fa46809aba9625071aa51bc0a71561.js} +0 -0
- package/dist/{c38a3226f3858a47ba9fb788dc7b44fc.js → 755114145e5b97e5571a160a39e716db.js} +0 -0
- package/dist/{bf06f353bf67ef497b65afe567e7f294.js → 75bffda9455d77087f34708ac4e85371.js} +0 -0
- package/dist/{1f03c9a69a8b9f79bcb7a338963f80c8.js → 75d2dae20d7bac5ecfa9dafc48ec04eb.js} +0 -0
- package/dist/{4190490a8257bdfcce6e2bd4f0634086.js → 760eb6458a048f3cba7bc3ae52ef2ba4.js} +0 -0
- package/dist/{740ff6a6e968e50d530fde5e13064fd7.js → 7735af777659608bcd8cd6525e3bbe58.js} +0 -0
- package/dist/{1afe87852eca4b28294075c659ff8c45.js → 77aaca51c1c32acaf32656d45f4dc017.js} +0 -0
- package/dist/{aa1233d5e8262d6c87d7e17025479ac1.js → 77dd68f6396b8ab4ce2c238d6ddb5354.js} +0 -0
- package/dist/{fb41d9c741510992c10cc1deb4e9f269.js → 788819e459cdd8c4c1ef565fd303f519.js} +0 -0
- package/dist/{b69a91688637c9acd4bcce30598faeee.js → 7a9a1dced0e327dc9cb1728bef25641d.js} +0 -0
- package/dist/{07c0a60b390501dfbb57219d5c8fbc1a.js → 7bd84be066027e61c84c9c2aa9543c2a.js} +0 -0
- package/dist/{66670f2c1f5e7c4e531007e89bb85355.js → 7c1cd1223bd45600763f8c152ad167d5.js} +0 -0
- package/dist/{15abe309c5ecbc579dccc79beb041fd8.js → 7c27341a2599ffb713c8fb7beced7601.js} +0 -0
- package/dist/{611cab878498fbf52880d2323991f3d7.js → 7c317e61789b17749dfe6ea294c89b6b.js} +0 -0
- package/dist/{4e4d407bd6bf0ce7bfc869f7eb6e93d3.js → 7c9c55eb1a1e5c1dfd63631511d9a1f0.js} +0 -0
- package/dist/{e1cbafb3a5880cd8e5532e2acf8b6998.js → 7dead8e2fcacc316bbfa632cd9f1c9bb.js} +0 -0
- package/dist/{9d0f4f65be2f50ad54488089f126feda.js → 7e4099fc2d04c7c1cf96892b962ba4ec.js} +0 -0
- package/dist/{22812e27a1f54c0a4ff744a444a32d6c.js → 7ef082035f74b3d7324f95a7498ea656.js} +0 -0
- package/dist/{4ab6dffb1b7255cc39ef77a35eb53293.js → 7f12d133c88ce53d0837a6c4c0287a37.js} +0 -0
- package/dist/{d7cdf8e31755f70cd564c742feec3be0.js → 7f407a1006eb830d6f0aaad96c133d26.js} +0 -0
- package/dist/{51e6ccd3ea9d7443949b155b113eebd5.js → 805cb6232d7a9fa46025d48a43622ecf.js} +0 -0
- package/dist/{2a7b2ac7dc47105609001b93c25190b8.js → 80a171b7595d1161735e23dec8efddd6.js} +0 -0
- package/dist/{e393bf5358fc198ca07e518900b24311.js → 82fed7ec74be91e0db61c500d9c6d7ee.js} +0 -0
- package/dist/{31bcb02e59d84ce2e38b85616a0b44db.js → 83387cb17a7680f59240e7b399e3ac2b.js} +0 -0
- package/dist/{f102c542cd35eef623ab82b087af2f14.js → 8361542d34c46713c9aff6c4ce65a9a3.js} +0 -0
- package/dist/{07c26a67fe6aa27f701c6fb03a7bbafd.js → 85a977f41a907dba8c672f9bf4943da0.js} +0 -0
- package/dist/{eb6f00b565c6441d02346354a0ef64ce.js → 866bf6ca5057dcb24503761af061d486.js} +0 -0
- package/dist/{e1dbe800b2d3f5d74b2b5480ea2b897a.js → 870184211838006214be1c23c98672fc.js} +0 -0
- package/dist/{f913332fa21973f354fcb5b680811e56.js → 8707a7b49421dbbb842506674ff87fa3.js} +0 -0
- package/dist/{3cd86defa6e36c165ae673afab6b5eab.js → 875e553a27bee88a73df34a90b3058e4.js} +0 -0
- package/dist/{8e7a3ed0365cf37663cd6432382b9f87.js → 8772719d0f76ecabded160e32dc5eb77.js} +0 -0
- package/dist/{1570e695c448e6a4f3a6bdf0372b58f0.js → 87932c8321c9985ed3b6979e86d2a50e.js} +0 -0
- package/dist/{0768225f873adf5f103dcb714f17783d.js → 87d6bf8becf2d5ebe2f71fda95a313ea.js} +0 -0
- package/dist/{587c674b536ffaf75df5db37c7b67c4a.js → 88bbfb9fdb8730ffc23f546b42d8d620.js} +0 -0
- package/dist/{17c85759d562794da4d2ff11f1b9b3bd.js → 88e2feda80ac8cfb28f1dc0ec833b40d.js} +0 -0
- package/dist/{a93bbe4d82b7f6cc642b7ebc38f4df5d.js → 894720f1519e5eb34e1b4f33fca7a9dd.js} +0 -0
- package/dist/{b435aebcb57d65080cfd510e0a9d5d9d.js → 894edcaf39c3c95818e3949d737ed459.js} +0 -0
- package/dist/{4e9e0e943cacfdf9d350ba0c59bfb53b.js → 89d3c35a5ef97a600927b477a9ba06b4.js} +0 -0
- package/dist/{72d2343e3b39f8b214aa614fea10c9ab.js → 8ba6618773c9d8d0b4f6ecb785651e2c.js} +0 -0
- package/dist/{d27d5c5480c14bffe9ffc07fec3a806d.js → 8bf75743fb14fea7cf02a5da1bda79d4.js} +0 -0
- package/dist/{47cd5c7d174e6b624e55510c4e503600.js → 8cb83aa3fea85e950c29450b8237fb72.js} +0 -0
- package/dist/{330543be2120b9dcc9bec41ba5e05805.js → 8d9bb1799d9b98db107e84f10132e17f.js} +0 -0
- package/dist/{40505d6c2f34fc08502d3e596573c7f8.js → 8ed58ed9c7e1cb1ae1f2830d29011ffb.js} +0 -0
- package/dist/{4037e6d4b18e3e286dec455cc63c1d17.js → 909adc4a16e0f97d869e3dd16d561430.js} +0 -0
- package/dist/{dc5f6600785254887cbe9c35ce55e769.js → 90bafd962205e96c3285d27cbf95c55c.js} +0 -0
- package/dist/{2334a9d0e81f9aa6df36e30a4158e213.js → 91bd2b106800bd7812e2ab5a5fea985b.js} +0 -0
- package/dist/{a26463d029a2515171748a1ebcca53c3.js → 92f4aab5c66f6269c7054c8fbcb3de13.js} +0 -0
- package/dist/{ee0650a4d7fd0181d898e58648474a26.js → 957970f69802c38a9092b9b6264cc1b9.js} +0 -0
- package/dist/{33856f6eaf3444eaff9e4e5d3fe810c8.js → 9600fed6a4508afbbcd2c75923d953c3.js} +0 -0
- package/dist/{c3b0cd15adcc12a549e7ac5d165ac1f4.js → 962969a46fefcace3305abd4d6e14a2e.js} +0 -0
- package/dist/{d7f9c3bcea90f112bc7cac6559dcb00c.js → 964646d64dd3196a9c27fe302511414a.js} +0 -0
- package/dist/{acc4ded8b9debce27f884c9cce5bf63c.js → 9671c350e11f1569edb5066cbfeb3334.js} +0 -0
- package/dist/{f2195d2eae3dbef7e3798e115209dcd7.js → 9696a4229fb787eeb25b26f1274b75ee.js} +0 -0
- package/dist/{219db9db1df39ce8cf197c72cb643801.js → 97e72973d750ecb3bc2e75b75bf63c5b.js} +0 -0
- package/dist/{1c9874850164cfdaa7e1d212d09124a7.js → 9807cf1e443a7440371904b6525f37eb.js} +0 -0
- package/dist/{6dafd4eb9102ea47229a42a24d40f457.js → 985d6749688c18f94994794f88492444.js} +0 -0
- package/dist/{b048c40cfb4768fc6b65a121049f0b9e.js → 99ade8b6895e3a1c3d6eb70583cb924e.js} +0 -0
- package/dist/{8870430db332faf22d90e12f1620ee84.js → 9b1fd9cf4206cc32e84150c49707d811.js} +0 -0
- package/dist/{19a2b55271f405d0b97fad53c9d5ec2d.js → 9b8e2282f60f104ff3ace5b905af4d62.js} +0 -0
- package/dist/{4339a83a0599fb43f59642dffbdbe8f5.js → 9ff6d4a6592c0cb7d0b939113c3a6b31.js} +0 -0
- package/dist/{99b756405f919e9022e6a4e3579dd5ee.js → a164d0e40c4dfa485dcf8e6d5258d767.js} +0 -0
- package/dist/{41f85ea0c545f0539b6ae2753eb1f79c.js → a1c8660c5bcc6b6a43a7fb3c351174d9.js} +0 -0
- package/dist/{e6c2b11f457b5aa71fd08de4ae738c3f.js → a2a705f6bc3a6827d6c94c5978aec36d.js} +0 -0
- package/dist/{bef8dd4d998c8a971c0c8a9eb298470d.js → a2c0fcb443c396b30a11fc1682a29c13.js} +0 -0
- package/dist/{f95dc04dc50d90d0555ca3561e75c4c2.js → a4306aa43824ec1a4ee422b59a851e6f.js} +0 -0
- package/dist/{83ea78d42f1a8e5f7346f3a30140ebfb.js → a4bedde07e392f8ebf64341b61f75df2.js} +0 -0
- package/dist/{28f7c5b28bbad7b0bac0cc3cc5b89bad.js → a533e643002830be2da76c9527265860.js} +0 -0
- package/dist/{21c12c627149bdfc030e3de47acde151.js → a5d364d12a8f7691339c497b2e725bcf.js} +0 -0
- package/dist/{d345689433789d4b690fa2d03b1d83ee.js → a7824ec1ab22aeb22bb35ab8bf1ddc4a.js} +0 -0
- package/dist/{4705b919138245a5b454d25f8e418435.js → a934b622dd8bdcdcdc1dde985a07ac14.js} +0 -0
- package/dist/{79701bbf8c5436771916d9af708ae8ec.js → a98ead014d010899b35ee25c7c225542.js} +0 -0
- package/dist/{e745f8fb4f054a3f5b66ccad100a1217.js → aa0eee504d52a12d3a30bbd523afcc34.js} +0 -0
- package/dist/{35858a47038a7be957df49854e8e5eea.js → aa5623ec68d23fedb9c9c115c7d99063.js} +0 -0
- package/dist/{167a62ec377adafbeb4bbb1cef73250d.js → aaddd877950d1e3bf1b3ef0fc0ff596e.js} +0 -0
- package/dist/{40ba797ae7e4433f9847cd2c68bfbdf7.js → aaf5c3a4f1a188fd051577cea7b87209.js} +0 -0
- package/dist/{908119c25a234151c8c7c1a97005c866.js → ab4b314445b23359319c14cce9a0e321.js} +0 -0
- package/dist/{22d4f336d4fbe548273812e6e4cd345e.js → abb40a9a6ef0b2fe14c66dcadc9857a2.js} +0 -0
- package/dist/{4c23cecd95c406d71cbe8fe49ad3ab6c.js → ad215d7ba317c941cdcc96ae78e86666.js} +0 -0
- package/dist/{fe51d45583c0425b00c9a784727072e0.js → adc5e81257ed3f8d70d03cf79150eec1.js} +0 -0
- package/dist/{749b5fd2f9c2f584602aae4564fa1400.js → aedbf3a3ece39aab8c9f3b3a3779e79b.js} +0 -0
- package/dist/{aa2f98073a8d9f266f3928b5d9c457d1.js → af959c2a870f08dd8abccae97c9b9bae.js} +0 -0
- package/dist/{a477d7b35783dd10040a243a84c86a0c.js → b0071564b0854c39e3de8b99d66e4dfd.js} +0 -0
- package/dist/{833b242747fd7b098d46011e4289bc3f.js → b02d982ccb1011197a5a24800b178a0a.js} +0 -0
- package/dist/{af45a0eba37254fde00bc0845dc16954.js → b0803f33b602bd3b26be70f259e38cee.js} +0 -0
- package/dist/{f88127ad8950e3c94c3af6c65a7120fa.js → b1170472ae4b50e3b0070eb991e502fe.js} +0 -0
- package/dist/{ba07c8c1ca6ea903fd0f0379db66ea1e.js → b1ac30076824f72cdff7ea29ae0b6801.js} +0 -0
- package/dist/{0c2b3b3b66a73e289e2ca47cf22ef150.js → b1f3f77a9279cdb38846ebe13c3438bc.js} +0 -0
- package/dist/{a71d8ecb9a2a4b35fcd828bb970e7e84.js → b20056c149af6b50c851ecfff90e0ccb.js} +0 -0
- package/dist/{b131314d1ea62fa7bba91a4da8360298.js → b20cd9acf45420fcacfd923754185663.js} +0 -0
- package/dist/{02703e133100c3be64cfec414d4db706.js → b25188cf2652d63136d5e54c38abf84e.js} +0 -0
- package/dist/{58f38fb5c5d8da84e75bd48f7d501d59.js → b2742fab9568b63c2274698af5d381fc.js} +0 -0
- package/dist/{c5d7c4a345a7bb4c84ee8ced7322a8db.js → b2ff96fbe6501ff45c37491b94c96c5f.js} +0 -0
- package/dist/{35dc4119f9e28cb9baba1475537460bb.js → b33ef9b4202539d3690251cb8213a034.js} +0 -0
- package/dist/{bd98610e395f3b4c7915cf3fbe854f6f.js → b3bb2c8deddd8c2afcf73f6f5d711596.js} +0 -0
- package/dist/{144991c48dbba89bfe10e886aaaed32a.js → b402b938ca2da72e0984a1360eda5897.js} +0 -0
- package/dist/{de581fe10be3ac282fa6abc2f8171551.js → b460e24d77f9c0d8b21e65d899840adb.js} +0 -0
- package/dist/{6f783ca6efdcb90ccde9175312f6558d.js → b6a6a4adaab4f09a7835ff64a5096198.js} +0 -0
- package/dist/{44e6d883ecccba28d8adf592cb83e01b.js → b6df2278bd475169749bab512944b7ec.js} +0 -0
- package/dist/{99f6bcba35fb277563c6362f3caab715.js → b7b7be8216519adf62d75f123f9c6423.js} +0 -0
- package/dist/{89a47a0051ac0b3885ef8af2476526f0.js → b808fb222140a85b23ebbe0fffa906d9.js} +0 -0
- package/dist/{70647aa39b1179b9db672c874eaf3a9e.js → b8197742452dd2e77090dde34cb2dc4d.js} +0 -0
- package/dist/{89859a411a50c90f1e669deaf8a6775f.js → b881dca9d9a80f61d87374b4bd5a2dd5.js} +0 -0
- package/dist/{642f5bce034554539cc93a5b965e730a.js → b98206b2175363f1150c074608603942.js} +0 -0
- package/dist/{985b400088bf5e23fb83e70d9948eccb.js → ba6b8b3e06cd9d0aee9c69278ee84647.js} +0 -0
- package/dist/{51e6918f996813eafa4b1491d9dd343b.js → baa5bf4cfefed057a4657a1b02cfa114.js} +0 -0
- package/dist/{2f1b71c04ca88bae69f1798880dbc985.js → bb4d542cb170b3f7b27a42c69262975b.js} +0 -0
- package/dist/{7d46cd8e5efaac33d5bf823ed4268841.js → bb5bab7a675544fe31ddb7f4a77dffb9.js} +0 -0
- package/dist/{a036e6a0313d9a77375018f2ac758d6b.js → bc0551f89df16ee262a67c0431544a9e.js} +0 -0
- package/dist/{3045404d52d03253c81822bdf760cfd1.js → c0736a7477d7aac4c669bb94ccae25d9.js} +0 -0
- package/dist/{6d9ca7a980db8fa74e39b1ff3b0c75cd.js → c0780e66c6b1ade0fa22283ce1f9c402.js} +0 -0
- package/dist/{8043595ccf704fc61e7e3e4c7c7e77a5.js → c1bc72d79cc6161590fc01c6b139fccd.js} +0 -0
- package/dist/{46bac1e89f220258537c533035a6e263.js → c32ec7d45ccd947b98fe458a8ca1405b.js} +0 -0
- package/dist/{d2e30554e6939a2542e5135fff541daa.js → c40023acde0f3d5f4806f5fccbb4284b.js} +0 -0
- package/dist/{0cbaf3ecc6b20dbc83c2164e9a1eac02.js → c45445ab45defa960329c6f8e6224e57.js} +0 -0
- package/dist/{318f90759f2ff0d2a437350e87578172.js → c51840077c684be0e7e13339f85cd4a9.js} +0 -0
- package/dist/{bbd62124f6d03e01eb4332f55ead999d.js → c530988d2b1966fd10a4d99fa3877e1b.js} +0 -0
- package/dist/{00280aae09f2a71c1ab46c7cfb9f491c.js → c631c95d9019218dfd22d028f215e1d1.js} +0 -0
- package/dist/{bd33197d8c34bf6387e39130c28f8342.js → c728b4ef87cfd5f561d1601f0867c39d.js} +0 -0
- package/dist/{cf6e250c7df1f6206ad0330880821dca.js → c733414555a126e689832ffb55cc203f.js} +0 -0
- package/dist/{efa2aae8c65855514b0ca66c4fe1cc68.js → c797511423f91a877e7fdffa74d015cb.js} +0 -0
- package/dist/{7074e18e67a10875c827b6cfe2665b83.js → c7ca9dccbac3af7ebc82b271dd2aa570.js} +0 -0
- package/dist/{727184c92f9da8d8b0c013fd79cf32fe.js → c80e89199aef31e48addb2b35ea96365.js} +0 -0
- package/dist/{0b56e82ae05b7ec2022e1cb35b8b6e10.js → cb4175466ea600940f2927fa03a217e8.js} +0 -0
- package/dist/{20f8061729d26f9786679bbf7af0b87a.js → cb652f200fc3dd740b2e7f678a9272ea.js} +0 -0
- package/dist/{18a893070398343ab529fdb7b62f1b6d.js → cbdbd623038183a8c068dd24ecd90682.js} +0 -0
- package/dist/{5094b30d2471cc7312746173d8a4bb25.js → cbdc4ca43a8c940a6c3f59a8b6f17df5.js} +0 -0
- package/dist/{74973bbb728e661679e49a16773535a4.js → ccde58de5468dd353dbee74d631ebdf0.js} +0 -0
- package/dist/{8f69fc81a83ba318eca7dbae6c6eba75.js → cd358d9acaaa7049d85b15ac766fc314.js} +0 -0
- package/dist/{9c202aefac35a5ff49d3d3795e9932bc.js → cd9a17f94a922c7c88000b1b3cdd67df.js} +0 -0
- package/dist/{ea5c101c16108be8cf1522aae5736f5f.js → cda6c5c52fa5d595982da0fac9da25a5.js} +0 -0
- package/dist/{68cf9a0e1eaff7cc991e970a855108f8.js → cf188b3f83735389d47bb12fc9f7069a.js} +0 -0
- package/dist/{43a9bcfc200d80676bc68fe9a3c8ab6d.js → cf3f6b1c74c72cb5d02870022dbc9f94.js} +0 -0
- package/dist/{cf1f6c842a1ec0af6b00ce1859dce6d5.js → cf90a39d245bf7e6c1b41c7a9a28f0a1.js} +0 -0
- package/dist/{chunk-215.fff39767c95996b4de4d.js → chunk-215.e754c21a4318bf45a54e.js} +2 -2
- package/dist/{chunk-215.fff39767c95996b4de4d.js.map → chunk-215.e754c21a4318bf45a54e.js.map} +1 -1
- package/dist/chunk-308.2619c807dd54e06b172b.js +2 -0
- package/dist/chunk-308.2619c807dd54e06b172b.js.map +1 -0
- package/dist/chunk-389.5572ffcab03a0d9d2a34.js +40 -0
- package/dist/chunk-389.5572ffcab03a0d9d2a34.js.map +1 -0
- package/dist/chunk-404.4623b1e641adeb84a349.js +2 -0
- package/dist/chunk-404.4623b1e641adeb84a349.js.map +1 -0
- package/dist/chunk-460.b4c78fb7b40f867014a2.js +20 -0
- package/dist/chunk-460.b4c78fb7b40f867014a2.js.map +1 -0
- package/dist/chunk-617.fca2e832439c172aedad.js +7 -0
- package/dist/chunk-617.fca2e832439c172aedad.js.map +1 -0
- package/dist/chunk-669.ad98eead076fee71513a.js +18 -0
- package/dist/chunk-669.ad98eead076fee71513a.js.map +1 -0
- package/dist/{chunk-696.7f133582aaee60e8ee3f.js → chunk-696.c012472cdaa912891efd.js} +2 -2
- package/dist/{chunk-696.7f133582aaee60e8ee3f.js.map → chunk-696.c012472cdaa912891efd.js.map} +1 -1
- package/dist/chunk-817.5c2200dfd53556f2f257.js +2 -0
- package/dist/chunk-817.5c2200dfd53556f2f257.js.map +1 -0
- package/dist/chunk-82.167733d9d2beb70e6b2c.js +2 -0
- package/dist/chunk-82.167733d9d2beb70e6b2c.js.map +1 -0
- package/dist/chunk-actions.1f598fbe1ed8797b7703.js +2 -0
- package/dist/chunk-actions.1f598fbe1ed8797b7703.js.map +1 -0
- package/dist/chunk-code-editor.311af9f0f84338bb73c0.js +7 -0
- package/dist/chunk-code-editor.311af9f0f84338bb73c0.js.map +1 -0
- package/dist/chunk-docs-actions.c19755c23baf5cd8e09b.js +2 -0
- package/dist/chunk-docs-actions.c19755c23baf5cd8e09b.js.map +1 -0
- package/dist/chunk-vendor-icons.9ce8f3269ac4f0a81b33.js +1 -0
- package/dist/chunk-vendor-libphonenumber-js.6c24244e4bcd727f64d5.js +1 -0
- package/dist/chunk-vendor-quill.d2c4075d7a2f3dc521b9.js +21 -0
- package/dist/{f52e2798c3b260592cf35f3a20958d87.js → d04707d65591e86810ebc56d48b10810.js} +0 -0
- package/dist/{85fe85850b026b668c10d2c9e0e5e8c6.js → d1a58542777d072396d7cee5487304f9.js} +0 -0
- package/dist/{0536af8c74f6fdf2d45e5e8990ee60cc.js → d1efdca26800423a363b769b1834cfcf.js} +0 -0
- package/dist/{bffad0f26b7a14d73f338aefa2d2f9e5.js → d2a00e1726c71ca10fbaf4b9c4374458.js} +0 -0
- package/dist/{f7b04f07406ef16d88688a7ffb81ce3f.js → d2fe7592ff2fdda099b2b6355abe8c06.js} +0 -0
- package/dist/{1e33cb44dfab039b4a7e88a3ee1bbfe7.js → d30fa4070abd6929228505790744e180.js} +0 -0
- package/dist/{3baeab62d681338ba3287f0a50e5dad1.js → d43ad5f9bad9a042b49b2592c7639c28.js} +0 -0
- package/dist/{fffbc895129cdb3efeafa5b234743aa0.js → d542dda7308361c34af2afb9b70d755a.js} +0 -0
- package/dist/{c23b1f80ab9746b425f3848bdaacc144.js → d5a6140d581e5c4eb200259ce372f40b.js} +0 -0
- package/dist/{f5292be525fc36a337ce7bfb792070de.js → d5f79987405c2169278f8de37bcc9d05.js} +0 -0
- package/dist/{867fb2b26eef123915aff8634c0bbf4a.js → d78d3b050ea95b068380d975fd413fd7.js} +0 -0
- package/dist/{30314e1b4a51b1aed3766eadecde2a42.js → d79b3962938d65fb85c6f844e86d92d9.js} +0 -0
- package/dist/{5a8b5a01cd9dadacb661063269f44c66.js → d7b57d5ebdcade0ce5e047509e06861a.js} +0 -0
- package/dist/{9e69cb39701c3578226b39536edd4dd7.js → d7d616d4aa8fd3f51d681242853dcde9.js} +0 -0
- package/dist/{9360974ffacadb05145e2f6c1458f35b.js → d83f2acd25388452582e5a4c727255b0.js} +0 -0
- package/dist/{c02d976c2c838a2b5ad0e5dfd1facb75.js → da1c1b1569c4d5872c9a18c29f0b5c90.js} +0 -0
- package/dist/{43bd62d6b50d1253f782c9ae5be1593d.js → da55f4fe3daed3f79fc4565668ecf7dd.js} +0 -0
- package/dist/{5bd58f2ebad7e63ff72a891fb43e2b38.js → db8ca5cfb6fe4aaef215f116f6991784.js} +0 -0
- package/dist/{646c9322233a0ba128268dee916e5719.js → dbc87324ecf271d088a2ab0823de9c5d.js} +0 -0
- package/dist/{f120c3f4e008f9abcd3a576bd66dd315.js → dbd05051a3ecf6b10e2f7b8904153f2d.js} +0 -0
- package/dist/{b111a00f8f22708140c6fdbc26963155.js → dc1eb6c1c92d7067c72b82b2833a7d2c.js} +0 -0
- package/dist/{100f9b1846c1e1ecae19e0ca2fc8224c.js → dcb197c0214e800da9d9436dfc9437d6.js} +0 -0
- package/dist/{31459a657ac30dcaa54765c6d76d8c81.js → ddbc961769cd2ff4d4a7a136168ebf4c.js} +0 -0
- package/dist/{8833a126ef9d8892bfb372d227f7f088.js → de0fd4fd7c2d7a4887cbc99eed91f797.js} +0 -0
- package/dist/{0a5adf8110dfa37b8a75edf8cafb1dd7.js → df37029cdf8359ecac0aebdf4f257d03.js} +0 -0
- package/dist/{29a4e3548d286388c4d5e8f0670a4381.js → df5710d97a899b672060afaa8c4891c2.js} +0 -0
- package/dist/{58d885ab56201085ce55e8eb5d3f2ac2.js → dfb7dd1fab06b2403f76c23f80b15738.js} +0 -0
- package/dist/{446ad37d55a836cf56e5417fcc9b986f.js → e07a0b284934d3a0e8c02c508edc9df1.js} +0 -0
- package/dist/{adbb57fa182dce548204311d3be6dffa.js → e0adad8a8579bf99f3e22f7c214a5c64.js} +0 -0
- package/dist/{781aab91bdb94039619a5d6086109f80.js → e0e32c3798e8895695ce5b372a0c989f.js} +0 -0
- package/dist/{d7889907dbb51f58ceadb3e1eec03a5d.js → e2b38a8393be2cf23f3894ace3efb1c3.js} +0 -0
- package/dist/{b0ae5887d5b545dcdd5db18846651f7f.js → e3ba4b654313ae98884a6c9044197e09.js} +0 -0
- package/dist/{72d23326220bc76ce06b4c1c68efb378.js → e4565878df49fd4ce3edd3f1022c1695.js} +0 -0
- package/dist/{f61f1aaed3f32a7dabd977a6f47ecd5f.js → e4917fa7632b01d28e99304d32d989f7.js} +0 -0
- package/dist/{0870bcf868f8d64dc9a6226a6c8b341d.js → e4968d8264b40c14f123f28419eb456d.js} +0 -0
- package/dist/{c95085763daaf58802818ae50c902db8.js → e6070e43daf8a9e5f13f515a5a03e66c.js} +0 -0
- package/dist/{13b157cfddcb9a76ae0800b47a8f0122.js → e61779df91186b23e7adf2d1968b2708.js} +0 -0
- package/dist/{fa1618cda4da7d5362c381ea2d5f7321.js → e6ad50b520736b595970c9e07029c3f1.js} +0 -0
- package/dist/{7982ae381c10e501e9a46d8693deddf6.js → e6cf8898b285b71e2abe832717ac7060.js} +0 -0
- package/dist/{d08daa8e673c585e1311729dbcb63eb4.js → e6fae0b04a3000a57f22bb25325c8afe.js} +0 -0
- package/dist/{c8bdb139ff462c0e7dc4ba2f56a49318.js → e6fb5287a46e030336c006e3f50ade3a.js} +0 -0
- package/dist/{3cf64ec91a700bfa1dece0957c49c7dc.js → e7e1a807af3160b342e0a3550cf8f7c5.js} +0 -0
- package/dist/{57c2d2eb6a844a8c9ecd932c6d4067b0.js → e874d975c9128dc6eb9a513d088bed9f.js} +0 -0
- package/dist/{8a7d1e82245ba58033df533faadfbaf4.js → e8fa659263d5ca9e0d1be69c048133a8.js} +0 -0
- package/dist/{be2fbe775b19bdc18e4f78de18beb433.js → e97cfa120fde26da0359ca29afaf3171.js} +0 -0
- package/dist/{90643b9da87302fef490f3f48af806e2.js → eaa55a522fb2cb2f0287711f42344984.js} +0 -0
- package/dist/{c0b4cd50c3fcc1292b34cedf813a16dd.js → eba5ee3fb1f3e92af88c69e50b2a8fd1.js} +0 -0
- package/dist/{66fb250b0cba71f9e58d9c94c4d7341a.js → ec2d138afc9cc9e81c4c6ef36ed55228.js} +0 -0
- package/dist/{bd9ff502ba460f402b4e2005689402a7.js → ec32839f8f3353e66b85450525fa3114.js} +0 -0
- package/dist/{8e6a809082edab0aaf90b9eb118ae571.js → ecd02712f5a40fcdaa3bfa8190470024.js} +0 -0
- package/dist/{bb48e1051c32d32d425681e9200706bc.js → ecd37b343c4dcc8dac849b1c680dcbef.js} +0 -0
- package/dist/{b02513e1d0cc664936e1ba9cb5a923af.js → ecdb4966f685f3e44b1f28fae46827a3.js} +0 -0
- package/dist/{de385e48e4b7a8c5837c9a2fd07ede3e.js → ee694c1bcbdc9439e50f816c39fd1023.js} +0 -0
- package/dist/{60fc15a66fa7ba74ccd248f85b50fbe5.js → efc14cdf19554635e477781704353ec2.js} +0 -0
- package/dist/{a65a0bae3e5b73407d15ea6bbb08e515.js → f0548260c0ac6b0e7cdb8909df1a5333.js} +0 -0
- package/dist/{0c125a87d8efb9ce303b6b91783eb165.js → f0878cc386a608146dbc8fb3b6745c42.js} +0 -0
- package/dist/{119d8ff08e82b0f391f59f1fe657130f.js → f326f2f263b1498fedbe1d07d7254d10.js} +0 -0
- package/dist/{e337fbde626a0753b0b7f6caf3208266.js → f3c7b9d832aa442df3d140f7697b4f62.js} +0 -0
- package/dist/{01ac8e05b621fce247d8d553656903c6.js → f42342b39da2c42adc65ebcf52839f90.js} +0 -0
- package/dist/{8ee6948d963e299de55144b3c7a60c0a.js → f4c53706e1721b08e8b2f650c8bd35c4.js} +0 -0
- package/dist/{5ce9c9a26cf28c9ccdcf82388efacf29.js → f582d9feb91d31036d3dae4cdaea865f.js} +0 -0
- package/dist/{1295d4470d348d3ff8ea442b1dcef3d3.js → f5bea0e1099339b99b21ee2d3c0fc489.js} +0 -0
- package/dist/{c755e7fc08446566ee8dd3a8aa8fe43f.js → f7186078e00d958aa2b316483dfc7e1c.js} +0 -0
- package/dist/{0dc486b4415f7cbd7ddde8f32b6f12f1.js → f79630d85284a7f6dadc25c1d256af0a.js} +0 -0
- package/dist/{c0b4241b59cd6750a7d6ad4f3d019d84.js → f80efec9a63094f19edae0480a0f2cd8.js} +0 -0
- package/dist/{dcf8b9b721cab79d285ab33fe2154a58.js → f90003058d7087f15baa27b80bf08c1d.js} +0 -0
- package/dist/{4750f0ff62cbd59f35aac31b996194e6.js → f980fd09c34c277299e2d3f83aebdba5.js} +0 -0
- package/dist/{be267e990e45f420b52971b942b6cd36.js → fb59a7c154104a421146ab9e5bd71540.js} +0 -0
- package/dist/{2e6b449c270c4420523a24d1a806eb47.js → fd40b62490e412d27bc67e660aacae19.js} +0 -0
- package/dist/{242fb5a92733d151e9ca303fcd3ae7ff.js → fd5bc50b18c9f46380cbe5ec1ac2127b.js} +0 -0
- package/dist/{c98e5722b508d4eb3afcea637246de33.js → fd5e2efd3b2d047abe8473f99c650a35.js} +0 -0
- package/dist/{451c3753fb6dfc1f2de25cb7524f4bb2.js → fdf4d851b44839d8fdfa77b3419bce19.js} +0 -0
- package/dist/{f2cfc0e604350e23bfcd7c78165b1411.js → ffd3b83e8b5878f4785591ff54b1dfff.js} +0 -0
- package/dist/imgs/{tocco-circle.25b8cb1141417ffc7763e9309b5a36ec.svg → tocco-circle.7ab925bf473f813493f00f069ed9746e.svg} +0 -0
- package/dist/imgs/{tocco_red.6ab51a129d1195d204cd84e69da2f044.svg → tocco_red.cb14a8eb6c3356bd83b114c13267546d.svg} +0 -0
- package/dist/imgs/{tocco_white.8f9290d80aa3635828f36920cf13aa11.svg → tocco_white.5c80050a55945844e89ffaf71395e64b.svg} +0 -0
- package/dist/index.js +17 -14
- package/dist/index.js.map +1 -1
- package/jest.config.js +2 -6
- package/package.json +1 -1
- package/dist/chunk-182.5ec0e8acf24178d12ecf.js +0 -2
- package/dist/chunk-182.5ec0e8acf24178d12ecf.js.map +0 -1
- package/dist/chunk-346.865b1decda71d260e2ea.js +0 -20
- package/dist/chunk-346.865b1decda71d260e2ea.js.map +0 -1
- package/dist/chunk-36.e32fc64db3418764d411.js +0 -40
- package/dist/chunk-36.e32fc64db3418764d411.js.map +0 -1
- package/dist/chunk-404.9bc2425dfbf4ee21635e.js +0 -2
- package/dist/chunk-404.9bc2425dfbf4ee21635e.js.map +0 -1
- package/dist/chunk-669.ea90314a2e6355528ce7.js +0 -18
- package/dist/chunk-669.ea90314a2e6355528ce7.js.map +0 -1
- package/dist/chunk-744.cf1b11985b1acf8f8758.js +0 -7
- package/dist/chunk-744.cf1b11985b1acf8f8758.js.map +0 -1
- package/dist/chunk-817.46476531b6e7efc9219a.js +0 -2
- package/dist/chunk-817.46476531b6e7efc9219a.js.map +0 -1
- package/dist/chunk-82.856d20bcbc6eedcbd32f.js +0 -2
- package/dist/chunk-82.856d20bcbc6eedcbd32f.js.map +0 -1
- package/dist/chunk-872.a9273eaa81fc55df7a8b.js +0 -2
- package/dist/chunk-872.a9273eaa81fc55df7a8b.js.map +0 -1
- package/dist/chunk-actions.36f03e5e0bdd9b2974c7.js +0 -2
- package/dist/chunk-actions.36f03e5e0bdd9b2974c7.js.map +0 -1
- package/dist/chunk-code-editor.f6597326374cd04ca8c0.js +0 -7
- package/dist/chunk-code-editor.f6597326374cd04ca8c0.js.map +0 -1
- package/dist/chunk-docs-actions.04e0b787c292d57ebc24.js +0 -2
- package/dist/chunk-docs-actions.04e0b787c292d57ebc24.js.map +0 -1
- package/dist/chunk-vendor-icons.5d77807afe310d44ae38.js +0 -1
- package/dist/chunk-vendor-libphonenumber-js.3b24c3803f4a1418116b.js +0 -1
- package/dist/chunk-vendor-quill.1789cce485c0fe1c2550.js +0 -21
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./packages/admin/src/routes/entities/modules/path/actions.js","webpack:///./packages/admin/src/routes/entities/utils/url.js","webpack:///./packages/admin/src/routes/entities/modules/path/sagas.js","webpack:///./packages/admin/src/routes/entities/modules/path/reducer.js","webpack:///./packages/admin/src/routes/entities/modules/path/index.js","webpack:///./packages/admin/src/routes/entities/components/ErrorView/EntityErrorView.js","webpack:///./packages/admin/src/routes/entities/components/ErrorView/ErrorViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesOverview/EntitiesOverview.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesOverview/index.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/StyledComponents.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/ListView.js","webpack:///./packages/admin/src/routes/entities/components/DocsView/DocsView.js","webpack:///./packages/admin/src/routes/entities/components/DocsView/index.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/DocsViewAdapter.js","webpack:///./packages/admin/src/routes/entities/utils/relationPersistor.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/RelationBox.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/RelationsView.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/RelationViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/index.js","webpack:///./packages/admin/src/routes/entities/components/Action/LazyAction.js","webpack:///./packages/admin/src/routes/entities/components/EditView/EditView.js","webpack:///./packages/admin/src/routes/entities/components/EditView/EditViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/StyledComponents.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/DetailView.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/DetaiViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/ActionView/ActionView.js","webpack:///./packages/admin/src/routes/entities/components/ActionView/ActionViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntityRecordRoute/EntityRecordRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntityRecordRoute/index.js","webpack:///./packages/admin/src/routes/entities/components/CreateView/CreateView.js","webpack:///./packages/admin/src/routes/entities/components/CreateView/CreateViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/ListView/DocsViewAdapter.js","webpack:///./packages/admin/src/routes/entities/components/ListView/ListView.js","webpack:///./packages/admin/src/routes/entities/components/ListView/ListViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntityRoute/EntityRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntityRoute/index.js","webpack:///./packages/admin/src/routes/entities/components/Breadcrumbs/BreadcrumbsContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesRoute/EntitiesRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesRoute/EntitiesRouteContainer.js","webpack:///./packages/admin/src/routes/entities/route.js","webpack:///./packages/entity-detail/src/modules/entityDetail/actions.js","webpack:///./packages/entity-detail/src/modules/entityDetail/reducer.js","webpack:///./packages/entity-detail/src/modules/entityDetail/index.js","webpack:///./packages/entity-detail/src/util/api/entities.js","webpack:///./packages/entity-detail/src/util/modes.js","webpack:///./packages/entity-detail/src/components/ErrorItems/ErrorItems.js","webpack:///./packages/entity-detail/src/util/detailFooter/types.js","webpack:///./packages/entity-detail/src/util/detailFooter/helpers.js","webpack:///./packages/entity-detail/src/modules/entityDetail/sagas.js","webpack:///./packages/entity-detail/src/modules/reducers.js","webpack:///./node_modules/redux-form/es/getFormInitialValues.js","webpack:///./node_modules/redux-form/es/selectors/getFormInitialValues.js","webpack:///./packages/entity-detail/src/components/SubGrid/SubGrid.js","webpack:///./packages/entity-detail/src/components/SubGrid/index.js","webpack:///./packages/entity-detail/src/containers/SubGridContainer.js","webpack:///./packages/entity-detail/src/util/detailView/fromFieldFactories/subGrid.js","webpack:///./packages/entity-detail/src/components/ErrorItems/index.js","webpack:///./packages/entity-detail/src/components/DetailForm/StyledComponents.js","webpack:///./packages/entity-detail/src/components/DetailForm/SaveButton.js","webpack:///./packages/entity-detail/src/components/DetailForm/MarkButton.js","webpack:///./packages/entity-detail/src/components/DetailFooter/StyledComponents.js","webpack:///./packages/entity-detail/src/components/DetailFooter/FooterItem.js","webpack:///./packages/entity-detail/src/components/DetailFooter/TextValue.js","webpack:///./packages/entity-detail/src/components/DetailFooter/DetailFooterReduced.js","webpack:///./packages/entity-detail/src/components/DetailFooter/TimestampValue.js","webpack:///./packages/entity-detail/src/components/DetailFooter/DetailFooterFull.js","webpack:///./packages/entity-detail/src/components/DetailFooter/DetailFooter.js","webpack:///./packages/entity-detail/src/containers/DetailFooterContainer.js","webpack:///./packages/entity-detail/src/components/DetailForm/DetailForm.js","webpack:///./packages/entity-detail/src/containers/DetailFormContainer.js","webpack:///./packages/entity-detail/src/components/DetailView/DetailView.js","webpack:///./packages/entity-detail/src/containers/DetailViewContainer.js","webpack:///./packages/entity-detail/src/input.js","webpack:///./packages/entity-detail/src/customActions.js","webpack:///./packages/entity-detail/src/shortcuts.js","webpack:///./packages/entity-detail/src/main.js","webpack:///./packages/admin/node_modules/path-to-regexp/index.js"],"names":["setCurrentViewInfo","location","currentViewInfo","type","payload","updateBreadcrumbsInfo","path","breadcrumbsInfo","setRelations","relations","setRelationsInfo","relationsInfo","selectRelation","selectedRelation","getPathInfo","pathname","pathParts","res","pathToRegexp","exec","reduce","acc","pathPart","idx","name","parseResult","actionId","mainSagas","loadRoute","updateCurrentViewInfo","loadRouteInfo","initMultiRelations","reloadRelationsInfo","invalidateLastBreadcrumb","getLastBreadcrumbsPath","getLastEntityInPath","loadRelationInfos","entitiesPathSelector","state","entities","relationPathRegex","all","takeLatest","call","routeInfo","length","error","spawn","model","key","viewPersistor","level","deriveCurrentViewInfo","put","actions","deriveBreadcrumbs","breadcrumbs","routeInfos","entity","rest","baseModel","push","entityName","display","label","relation","splittedRelation","split","i","relationStringPart","parent","relationName","paths","targetEntity","relationModel","view","lastEntry","_omit","parentKey","reverseRelation","reverseRelationName","parentModel","map","filter","e","_pickBy","value","relationDisplay","show","relationsTransformed","Object","keys","k","_pick","sort","a","b","order","select","currentViewInfos","lastEntity","breadcrumbsPath","consoleLogger","Boolean","join","splittedEntities","match","resource","relationInfoResponse","body","ACTION_HANDLERS","reducerUtil","info","initialState","action","handler","prefix","title","description","ErrorView","id","message","values","connect","props","history","injectIntl","EntityErrorView","Typography","StyledLink","to","StyledRelationsViewWrapper","styled","isCollapsed","StyledPlaceHolder","theme","scale","StyledToggleCollapse","StyledToggleCollapseButton","Button","StyledPreviewBox","StyledRelationBoxes","StyledScrollbar","StyledPreviewLink","StyledRelationLinks","StyledRelationBox","selected","StyledRelationLabel","StyledSpan","ListView","emitAction","formName","showLink","navigationStrategy","onRowClick","entityBaseUrl","url","replace","onNavigateToCreate","goBack","searchFormType","selectionStyle","store","onStoreCreate","showActions","limit","React","entityKey","noLeftPadding","openResource","useState","folderKey","setFolderKey","fetchFolder","then","useEffect","sortable","rootNodes","embedded","disableViewPersistor","selectedRelations","icon","intl","msg","formatMessage","onClick","search","setRelation","count","aria-label","createPermission","RelationsView","toggleCollapse","_get","updateSelectedRelation","queryRelation","queryString","find","r","persistedSelectedRelation","RelationPreview","DocsViewAdapter","RelationBoxes","areEqual","prevProps","nextProps","js","mapActionCreators","actionEmitter","lazy","LoadMask","appId","LazyAction","ActionComponent","Suspense","fallback","StyledEntityDetailAppWrapper","chooseDocument","propagateRefresh","touched","setTouched","queryFormName","when","entityId","mode","onTouchedChange","navigateToCreateRelative","onEntityDeleted","onEntityUpdated","onRefresh","actionAppComponent","Action","onSubGridRowClick","EditView","StyledDetailViewContainer","StyledDetailViewLeft","StyledDetailViewRight","relationViewCollapsed","saveUserPreferences","setIsCollapsed","onSearchFormCollapsedChange","collapsed","preferences","userPreferences","DetailView","ActionView","setCurrentViewTitle","queryParams","queryStringUtil","selection","actionProperties","navigateBack","onSuccess","onError","onCancel","currentViewTitle","str","word","exact","render","component","Detail","Edit","Relations","Entity","dispatchEmittedAction","stateDefaultValues","isMultiReverseRelation","defaultValues","onEntityCreated","CreateView","searchFormCollapsed","searchFormPosition","tql","List","Create","Record","pathPrefix","currentView","Breadcrumbs","StyledWrapper","StyledContent","StyledBreadcrumbs","loadCurrentRoute","content","Overview","container","EntitiesRoute","reducers","combineReducers","sagas","SET_LAST_SAVE","setFormDefinition","formDefinition","loadDetailView","modelPaths","setEntity","submitForm","setLastSave","lastSave","Date","now","setEntityModel","entityModel","unloadDetailView","navigateToCreate","setFieldDefinitions","fieldDefinitions","navigateToAction","definition","setMarked","marked","updateEntity","createEntity","options","method","_paths","acceptedErrorCodes","acceptedStatusCodes","resp","errorCode","SubmissionError","form","errors","status","information","headers","get","pop","Error","ErrorItem","FormattedValue","StyledErrorItemWrapper","formErrors","output","elements","hasFieldErrors","hasValidatorErrors","hasRelatedEntityErrors","validatorErrors","relatedEntityErrorsCompact","outdatedError","selectUnit","updateTimestamp","timeStampValue","unit","titleId","sameEntity","ago","user","updateUser","el","NONE","REDUCED","FULL","getFooterType","useNiceFields","modes","types","getFooterPaths","keyField","autoComplete","onChange","loadDetailFormDefinition","loadEntity","loadEntityModel","updateFormSubmit","createFormSubmit","touchAllFields","handleSubmitError","getCurrentEntityState","submitValidate","getEntityForSubmit","getFormErrors","locationFieldFocus","focusErrorField","handleInvalidForm","fireTouched","showNotification","loadDisplayExpressions","loadRelationDisplays","enhanceEntityWithDisplayExpressions","enhanceEntityWithDisplays","loadData","loadMarked","updateMarked","reloadAfterAction","remoteEvent","asyncValidationStop","formInitialValueSelector","formId","initial","entityDetailSelector","entityDetail","FORM_ID","inputSelector","input","takeEvery","remoteEvents","debounce","formActionTypes","actionExtensions","fieldName","autoCompleteEndpoint","triggerField","response","getFormValues","formValues","currentFieldValue","formActions","meta","field","fieldDefinition","fd","formPaths","footerPaths","formDefaultValues","inputDefaultValues","defaultValuesFields","api","flattenEntity","externalEvents","createdEntityId","f","validationErrors","notification","duration","errorLogging","initialFormValues","initialValues","dirtyFields","dirtyFieldNames","getFormSyncErrors","getFormAsyncErrors","getFormSubmitErrors","focusField","element","document","getElementById","focus","errorField","locationField","locationMapping","postcode","firstErrorField","isValidSelector","actionTouched","stateTouched","titleResourceName","messageResourceName","__key","__model","result","relationFields","request","displayExpressions","componentType","displayExpressionsL","forEach","dE","dataType","displays","relationField","newValue","Array","isArray","v2","reset","markable","fork","keepDirty","keepValues","navigateToActionRelative","isCurrentEntity","event","entityDetailReducer","entityDetailSagas","_ref","getIn","getFormState","nonNullGetFormState","StyledListApp","SubGrid","formBase","detailFormName","formField","showSearchForm","gridName","defaultProps","SubGridContainer","undefined","StyledForm","StyledSaveButton","hasErrors","StyledActionSpan","colors","secondary","submitting","Popover","placement","data-cy","disabled","ink","look","pending","mouseOver","setMouseOver","stopPropagation","onMouseEnter","onMouseLeave","StyledFooterWrapper","colorizeText","StyledFooterItemWrapper","StyledFooterItemLabel","declareNoneWrappingText","StyledFooterItemValue","StyledTimestampValueWrapper","StyledTimestampRelativeValue","labelId","ValueComp","valueComponent","diffValue","create_timestamp","create_user","update_timestamp","update_user","version","DetailFooter","DetailFooterContainer","reduxForm","destroyOnUnmount","dirty","valid","anyTouched","formEl","useRef","customHooks","customRenderedActions","useMemo","save","actionDefinition","mark","onSubmit","preventDefault","onKeyDown","target","tagName","ref","fieldMappingType","readOnly","componentMapping","logError","_error","formInitialValues","getFormInitialValues","DetailForm","validateSingleton","_isEmpty","this","required","loadingText","DetailFormContainer","validate","getSyncValidation","asyncValidate","handledAsyncValidate","asyncBlurFields","fD","getDispatchActions","new","fullscreen","ctrl","alt","code","EXTERNAL_EVENTS","DetailViewContainer","initApp","events","publicPath","appFactory","formApp","SimpleFormApp","listApp","EntityListApp","customActions","appComponent","context","viewName","formData","detailApp","EntityDetailApp","keyDown","shortcuts","dispatchActions","app","textResourceModules","module","exports","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","whitelist","pathEscaped","m","escaped","offset","slice","prev","capture","group","modifier","c","indexOf","repeat","optional","pattern","escapeGroup","escapeString","substr","matches","data","encode","encodeURIComponent","token","segment","TypeError","j","test","String","flags","sensitive","strict","start","end","endsWith","concat","route","endToken","isEndDelimited","groups","source","regexpToRegexp","parts","arrayToRegexp","stringToRegexp"],"mappings":"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","file":"chunk-404.9bc2425dfbf4ee21635e.js","sourcesContent":["export const SET_CURRENT_VIEW_INFO = 'path/SET_CURRENT_VIEW_INFO'\nexport const LOAD_CURRENT_ROUTE = 'path/LOAD_CURRENT_ROUTE'\nexport const SET_BREADCRUMBS_INFO = 'path/SET_BREADCRUMBS_INFO'\nexport const UPDATE_BREADCRUMBS_INFO = 'path/UPDATE_BREADCRUMBS_INFO'\nexport const SET_RELATIONS = 'path/SET_RELATIONS'\nexport const SET_CURRENT_VIEW_TITLE = 'path/SET_CURRENT_VIEW_TITLE'\nexport const SET_RELATIONS_INFO = 'path/SET_RELATIONS_INFO'\nexport const PROPAGATE_REFRESH = 'path/PROPAGATE_REFRESH'\nexport const INVALIDATE_LAST_BREADCRUMB = 'path/INVALIDATE_LAST_BREADCRUMB'\nexport const SELECT_RELATION = 'path/SELECT_RELATION'\n\nexport const setCurrentViewInfo = (location, currentViewInfo) => ({\n type: SET_CURRENT_VIEW_INFO,\n payload: {\n location,\n currentViewInfo\n }\n})\n\nexport const loadCurrentRoute = location => ({\n type: LOAD_CURRENT_ROUTE,\n payload: {\n location\n }\n})\n\nexport const setBreadcrumbsInfo = breadcrumbsInfo => ({\n type: SET_BREADCRUMBS_INFO,\n payload: {\n breadcrumbsInfo\n }\n})\n\nexport const updateBreadcrumbsInfo = (path, breadcrumbsInfo) => ({\n type: UPDATE_BREADCRUMBS_INFO,\n payload: {\n path,\n breadcrumbsInfo\n }\n})\n\nexport const setRelations = relations => ({\n type: SET_RELATIONS,\n payload: {\n relations\n }\n})\n\nexport const setCurrentViewTitle = currentViewTitle => ({\n type: SET_CURRENT_VIEW_TITLE,\n payload: {\n currentViewTitle\n }\n})\n\nexport const setRelationsInfo = relationsInfo => ({\n type: SET_RELATIONS_INFO,\n payload: {\n relationsInfo\n }\n})\n\nexport const propagateRefresh = location => ({\n type: PROPAGATE_REFRESH,\n payload: {\n location\n }\n})\n\nexport const invalidateLastBreadcrumb = location => ({\n type: INVALIDATE_LAST_BREADCRUMB,\n payload: {\n location\n }\n})\n\nexport const selectRelation = selectedRelation => ({\n type: SELECT_RELATION,\n payload: {\n selectedRelation\n }\n})\n","import pathToRegexp from 'path-to-regexp'\n\nconst entityUrlRegex = '/e/:entity/:key?/:relation*/:view(list|detail|edit|create|relations|action)/:actionId?'\nconst actionUrlRegex = '/e/action/:actionId'\n\n/**\n * Returns an object with actionId, entity, key, relation and view for given url\n *\n * @param pathname {String} url / path starting with /e/\n */\nexport const getPathInfo = pathname => {\n const pathParts = []\n const re = pathToRegexp(entityUrlRegex, pathParts)\n const res = re.exec(pathname)\n\n if (res !== null) {\n return pathParts.reduce((acc, pathPart, idx) => {\n return {\n ...acc,\n [pathPart.name]: res[idx + 1]\n }\n }, {})\n }\n\n const actionPathRegex = pathToRegexp(actionUrlRegex, pathParts)\n const parseResult = actionPathRegex.exec(pathname)\n\n if (parseResult !== null) {\n return {\n actionId: parseResult[1]\n }\n }\n\n return null\n}\n","import {rest} from 'tocco-app-extensions'\nimport {viewPersistor, consoleLogger} from 'tocco-util'\nimport _pickBy from 'lodash/pickBy'\nimport _omit from 'lodash/omit'\nimport _pick from 'lodash/pick'\nimport {all, call, put, select, spawn, takeLatest} from 'redux-saga/effects'\n\nimport * as actions from './actions'\nimport {getPathInfo} from '../../utils/url'\n\nexport const entitiesPathSelector = state => state.entities.path\n\nconst relationPathRegex = /[^/]+\\/?[^/]+/g\nconst isEven = n => n % 2 === 0\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_CURRENT_ROUTE, loadRoute),\n takeLatest(actions.PROPAGATE_REFRESH, reloadRelationsInfo),\n takeLatest(actions.INVALIDATE_LAST_BREADCRUMB, invalidateLastBreadcrumb)\n ])\n}\n\nexport function* loadRoute({payload: {location}}) {\n const {pathname} = location\n\n const routeInfo = yield call(loadRouteInfo, pathname)\n\n if (routeInfo.length > 0) {\n const currentViewInfo = yield call(updateCurrentViewInfo, pathname, routeInfo)\n yield call(updateBreadcrumbsInfo, routeInfo)\n \n if (currentViewInfo.type === 'detail' && !currentViewInfo.error) {\n yield spawn(initMultiRelations, currentViewInfo.model, currentViewInfo.key)\n }\n\n yield call(viewPersistor.clearPersistedViews, currentViewInfo.level + 1)\n }\n}\n\nfunction* updateCurrentViewInfo(pathname, routeInfo) {\n const currentViewInfo = yield call(deriveCurrentViewInfo, pathname, routeInfo)\n yield put(actions.setCurrentViewInfo(pathname, currentViewInfo))\n return currentViewInfo\n}\n\nfunction* updateBreadcrumbsInfo(routeInfo) {\n const breadcrumbs = yield call(deriveBreadcrumbs, routeInfo)\n yield put(actions.setBreadcrumbsInfo(breadcrumbs))\n return breadcrumbs\n}\n\nexport function* loadRouteInfo(pathname) {\n const path = yield call(getPathInfo, pathname)\n const routeInfos = []\n\n if (path === null) {\n return routeInfos\n }\n\n if (path.entity) {\n let baseModel\n try {\n baseModel = yield call(rest.fetchModel, path.entity)\n routeInfos.push({\n type: 'list',\n model: baseModel\n })\n } catch (e) {\n routeInfos.push({\n type: 'list',\n error: {\n entityName: path.entity\n }\n })\n return routeInfos\n }\n\n if (path.key) {\n const entityExists = yield call(rest.entityExists, baseModel.name, path.key)\n\n if (entityExists) {\n const display = yield call(rest.fetchDisplay, baseModel.name, path.key)\n routeInfos.push({\n type: 'detail',\n key: path.key,\n model: baseModel,\n display\n })\n } else {\n routeInfos.push({\n type: 'detail',\n error: {\n entityName: baseModel.label,\n key: path.key\n }\n })\n\n return routeInfos\n }\n\n if (path.relation) {\n const splittedRelation = path.relation.split('/')\n\n for (let i = 0; i < splittedRelation.length; i++) {\n const relationStringPart = splittedRelation[i]\n\n const parent = routeInfos[routeInfos.length - 1]\n if (isEven(i)) {\n const relationName = relationStringPart\n const relation = parent.model.paths[relationName]\n if (!relation) {\n routeInfos.push({\n type: 'list',\n error: {\n relationName: relationName,\n entityName: parent.model.name\n }\n })\n return routeInfos\n }\n const targetEntity = relation.targetEntity\n\n const relationModel = yield call(rest.fetchModel, targetEntity)\n\n routeInfos.push({\n type: 'list',\n model: relationModel,\n relationName,\n parent\n })\n } else {\n const key = relationStringPart\n const model = parent.model\n const entityExists = yield call(rest.entityExists, model.name, key)\n\n if (entityExists) {\n const display = yield call(rest.fetchDisplay, model.name, key)\n routeInfos.push({\n type: 'detail',\n model,\n key,\n display,\n relationName: parent.relationName,\n parent: parent.parent\n })\n } else {\n routeInfos.push({\n type: 'detail',\n error: {\n entityName: model.name,\n key\n }\n })\n return routeInfos\n }\n }\n }\n }\n }\n\n if (path.view === 'create') {\n const entity = routeInfos[routeInfos.length - 1]\n const parent = routeInfos[routeInfos.length - 2]\n routeInfos.push({\n type: 'create',\n model: entity.model,\n parent,\n relationName: entity.relationName\n })\n } else if (path.actionId) {\n routeInfos.push({\n type: 'action',\n actionId: path.actionId\n })\n }\n } else if (path.actionId) {\n routeInfos.push({\n type: 'action',\n actionId: path.actionId\n })\n }\n\n return routeInfos\n}\n\nexport const deriveCurrentViewInfo = (pathname, routeInfo) => {\n const lastEntry = routeInfo[routeInfo.length - 1]\n const parent = lastEntry.parent\n\n return {\n ..._omit(lastEntry, ['parent']),\n pathname,\n level: routeInfo.length - 1,\n ...(parent && lastEntry.relationName && {\n parentKey: parent.key,\n reverseRelation: parent.model.paths[lastEntry.relationName].reverseRelationName,\n parentModel: parent.model\n })\n }\n}\n\nexport const deriveBreadcrumbs = routeInfos => {\n let path = ''\n return routeInfos.map(routeInfo => {\n if (routeInfo.error) {\n return {type: 'error'}\n }\n if (routeInfo.type === 'action') {\n return null\n }\n path = (path ? path + '/' : '') + (routeInfo.key ? routeInfo.key : routeInfo.relationName || routeInfo.model.name)\n return {\n type: routeInfo.type,\n display: routeInfo.display || routeInfo.model.label,\n path: path + '/' + routeInfo.type\n }\n }).filter(e => e)\n}\n\nexport function* initMultiRelations(model, key) {\n const relations = _pickBy(model.paths, (value, key) => value.relationDisplay && value.relationDisplay.show)\n\n const relationsTransformed = Object.keys(relations)\n .map(k =>\n _pick(relations[k],\n ['relationName', 'reverseRelationName', 'targetEntity', 'relationDisplay.label', 'relationDisplay.order']\n )\n )\n .sort((a, b) => a.relationDisplay.order > b.relationDisplay.order ? 1 : -1)\n\n yield put(actions.selectRelation(null))\n yield put(actions.setRelations(relationsTransformed))\n yield call(loadRelationInfos, model.name, key)\n}\n\nexport function* reloadRelationsInfo({payload: {location}}) {\n const {pathname} = location\n const {currentViewInfos} = yield select(entitiesPathSelector)\n const currentViewInfo = currentViewInfos[pathname]\n if (currentViewInfo.type === 'detail' && !currentViewInfo.error) {\n yield spawn(loadRelationInfos, currentViewInfo.model.name, currentViewInfo.key)\n yield put(actions.selectRelation(null))\n }\n}\n\nexport function* invalidateLastBreadcrumb({payload: {location}}) {\n const {pathname} = location\n\n const path = yield call(getPathInfo, pathname)\n\n if (path?.entity && path?.key) {\n try {\n const lastEntity = yield call(getLastEntityInPath, path)\n if (lastEntity) {\n const {entityName, key} = lastEntity\n yield call(rest.invalidateDisplay, entityName, key)\n const display = yield call(rest.fetchDisplay, entityName, key)\n\n yield put(actions.setCurrentViewInfo(pathname, {display}))\n \n const breadcrumbsPath = yield call(getLastBreadcrumbsPath, pathname)\n yield put(actions.updateBreadcrumbsInfo(breadcrumbsPath, {display}))\n }\n } catch (e) {\n // could not load model or delete cache\n consoleLogger.logError('breadcrumbs invalidation failed', e)\n }\n }\n}\n\nfunction* getLastBreadcrumbsPath(pathname) {\n const path = yield call(getPathInfo, pathname)\n\n if (path === null || !path.entity) {\n return ''\n }\n \n // concatenates defined path segments separated with a slash => ${entity}/${key}/${relation}/${view}\n return [path.entity, path.key, path.relation, path.view].filter(Boolean).join('/')\n}\n\nfunction* getLastEntityInPath(path) {\n if (!path || !path.entity || !path.key || path.view === 'action') {\n return null\n }\n\n const baseModel = yield call(rest.fetchModel, path.entity)\n \n if (!path.relation) {\n // no relations => base entity is the last entity\n return {entityName: baseModel.name, key: path.key}\n }\n\n const splittedEntities = path.relation.match(relationPathRegex)\n if (splittedEntities.length < 1) {\n return null\n }\n\n let parentModel = baseModel\n let lastEntity = null\n\n for (let i = 0; i < splittedEntities.length; i++) {\n const [relationName, key] = splittedEntities[i].split('/')\n const relation = parentModel.paths[relationName]\n \n if (!relation || !key) {\n // no key = no entity (e.g. list or create view)\n return null\n }\n\n parentModel = yield call(rest.fetchModel, relation.targetEntity)\n lastEntity = {entityName: parentModel.name, key}\n }\n\n return lastEntity\n}\n\nexport function* loadRelationInfos(model, key) {\n const resource = `client/entities/${model}/${key}/relations`\n const relationInfoResponse = yield call(rest.requestSaga, resource)\n const relationsInfo = relationInfoResponse.body.relations\n yield put(actions.setRelationsInfo(relationsInfo))\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nexport const setCurrentViewInfo = (state, {payload: {location, currentViewInfo}}) => ({\n ...state,\n currentViewInfos: {\n ...state.currentViewInfos,\n [location]: {\n ...state.currentViewInfos[location],\n ...currentViewInfo\n }\n }\n})\n\nexport const updateBreadcrumbsInfo = (state, {payload: {path, breadcrumbsInfo}}) => ({\n ...state,\n breadcrumbsInfo: state.breadcrumbsInfo.map(info => info.path === path ? {...info, ...breadcrumbsInfo} : info)\n})\n\nconst ACTION_HANDLERS = {\n [actions.SET_CURRENT_VIEW_INFO]: setCurrentViewInfo,\n [actions.SET_BREADCRUMBS_INFO]: reducerUtil.singleTransferReducer('breadcrumbsInfo'),\n [actions.UPDATE_BREADCRUMBS_INFO]: updateBreadcrumbsInfo,\n [actions.SET_RELATIONS]: reducerUtil.singleTransferReducer('relations'),\n [actions.SET_RELATIONS_INFO]: reducerUtil.singleTransferReducer('relationsInfo'),\n [actions.SET_CURRENT_VIEW_TITLE]: reducerUtil.singleTransferReducer('currentViewTitle'),\n [actions.SELECT_RELATION]: reducerUtil.singleTransferReducer('selectedRelation')\n}\n\nconst initialState = {\n currentViewInfos: {},\n breadcrumbsInfo: [],\n relations: null,\n relationsInfo: {},\n selectedRelation: null\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","import React from 'react'\nimport {FormattedMessage} from 'react-intl'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport ErrorView from '../../../../components/ErrorView'\n\nconst EntityErrorView = ({currentViewInfo}) => {\n const prefix = 'client.admin.entity.errorView.'\n const title = currentViewInfo.type === 'detail'\n ? 'detailTitle'\n : 'defaultTitle'\n\n const description = currentViewInfo.type === 'detail'\n ? 'detailDescription'\n : currentViewInfo.type === 'list' && currentViewInfo.error.relationName\n ? 'relationDescription'\n : 'listDescription'\n\n return <ErrorView\n title={<FormattedMessage id={prefix + title}/>}\n message={<FormattedMessage id={prefix + description} values={currentViewInfo.error}/>}/>\n}\n\nEntityErrorView.propTypes = {\n currentViewInfo: currentViewPropType\n}\n\nexport default EntityErrorView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport EntityErrorView from './EntityErrorView'\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps)(injectIntl(EntityErrorView))\n","import React from 'react'\nimport {AdminLink as StyledLink, Typography} from 'tocco-ui'\n\nconst EntitiesOverview = props => {\n return (\n <div>\n <Typography.H2>Entities Overview</Typography.H2>\n <Typography.Span>List of all available Entities</Typography.Span>\n <ul>\n <li><StyledLink to=\"/e/User\">User</StyledLink></li>\n <li><StyledLink to=\"/e/Address\">Address</StyledLink></li>\n </ul>\n </div>\n )\n}\n\nEntitiesOverview.propTypes = {\n}\n\nexport default EntitiesOverview\n","import EntitiesOverview from './EntitiesOverview'\n\nexport default EntitiesOverview\n","import styled from 'styled-components'\nimport {AdminLink as StyledLink, StyledSpan, theme, scale, StyledScrollbar, Button} from 'tocco-ui'\n\nexport const StyledRelationsViewWrapper = styled.div`\n display: ${({isCollapsed}) => isCollapsed ? 'none' : 'flex'};\n height: 100%;\n flex-direction: column;\n`\n\nexport const StyledPlaceHolder = styled.div`\n display: ${({isCollapsed}) => isCollapsed ? 'flex' : 'none'};\n flex: 1;\n height: 100%;\n width: 25px;\n background: ${theme.color('paper')};\n padding-top: ${scale.space(-1.5)};\n padding-left: ${scale.space(-2.5)};\n align-items: flex-start;\n\n &:hover {\n cursor: pointer;\n }\n`\n\nexport const StyledToggleCollapse = styled.div`\n display: flex;\n background-color: ${theme.color('paper')};\n padding-top: ${scale.space(-1.5)};\n padding-bottom: ${scale.space(-1.5)};\n`\n\nexport const StyledToggleCollapseButton = styled(Button)`\n font-size: ${scale.font(0)};\n padding: 0;\n margin-left: auto;\n\n &:hover,\n ${/* sc-selector */StyledPlaceHolder}:hover & {\n background-color: transparent;\n color: ${theme.color('secondaryLight')};\n }\n`\n\nexport const StyledPreviewBox = styled.div`\n background-color: ${theme.color('paper')};\n padding: ${scale.space(-1)};\n margin-top: 3px;\n display: flex;\n flex-direction: column;\n flex: 1;\n`\n\nexport const StyledRelationBoxes = styled.div`\n background-color: ${theme.color('paper')};\n padding: ${scale.space(-1)};\n display: grid;\n grid-template-columns: repeat(auto-fit, 170px);\n grid-gap: ${scale.space(-2)};\n justify-content: space-between;\n overflow-y: auto;\n align-content: flex-start;\n height: fit-content;\n min-height: 150px;\n max-height: 20%;\n ${StyledScrollbar}\n`\n\nexport const StyledPreviewLink = styled(StyledLink)`\n padding-left: ${scale.space(-0.5)};\n\n &:nth-child(2) {\n padding-left: 0;\n }\n`\n\nexport const StyledRelationLinks = styled.div`\n display: none;\n margin-left: auto;\n\n * {\n color: ${theme.color('text')};\n padding-left: ${scale.space(-4.5)};\n }\n`\n\nexport const StyledRelationBox = styled.div`\n border-radius: ${theme.radii('large')};\n padding: ${scale.space(-2.7)} ${scale.space(-1)};\n display: flex;\n background-color: ${({selected}) => selected && theme.color('secondary')};\n height: fit-content;\n\n &&& {\n * {\n color: ${({selected}) => selected && theme.color('paper')};\n box-sizing: initial;\n }\n }\n ${({selected}) => selected && `\n ${StyledRelationLinks} {\n display: flex;\n }\n `\n };\n\n // allow hover styles only on non-touch devices\n @media (hover: hover) and (pointer: fine) {\n &:hover ${StyledRelationLinks} {\n display: flex;\n }\n\n && {\n :hover{\n background-color: ${theme.color('secondaryLight')};\n\n * {\n color: ${theme.color('paper')};\n }\n cursor: pointer;\n }\n }\n\n ${/* sc-selector */StyledLink}:hover * {\n color: ${theme.color('secondary')};\n }\n }\n`\n\nexport const StyledRelationLabel = styled(StyledSpan)`\n && {\n max-width: 110px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport {viewPersistor} from 'tocco-util'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport {goBack} from '../../../../utils/routing'\n\nconst ListView = ({selectedRelation, currentViewInfo, match, history, emitAction}) => {\n return (\n <EntityListApp\n id={'preview' + selectedRelation.reverseRelationName + selectedRelation.targetEntity}\n key={selectedRelation.reverseRelationName + selectedRelation.targetEntity}\n entityName={selectedRelation.targetEntity}\n formName={selectedRelation.targetEntity}\n parent={{\n key: currentViewInfo.key,\n reverseRelationName: selectedRelation.reverseRelationName,\n model: currentViewInfo.model.name,\n relationName: selectedRelation.relationName\n }}\n showLink={true}\n navigationStrategy={navigationStrategy(history, match)}\n onRowClick={({id}) => {\n const entityBaseUrl = match.url.replace(/detail$/, '')\n history.push(`${entityBaseUrl}${selectedRelation.relationName}/${id}`)\n }}\n onNavigateToCreate={() => {\n const entityBaseUrl = goBack(match.url)\n history.push(entityBaseUrl + '/' + selectedRelation.relationName + '/create')\n }}\n searchFormType=\"simple\"\n selectionStyle=\"none\"\n store={viewPersistor.viewInfoSelector(history.location.pathname)[`store-${selectedRelation.relationName}`]}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(\n currentViewInfo.pathname,\n {[`store-${selectedRelation.relationName}`]: store},\n currentViewInfo.level\n )\n }}\n showActions={false}\n limit={15}\n emitAction={emitAction}\n />\n )\n}\n\nListView.propTypes = {\n selectedRelation: PropTypes.shape({\n reverseRelationName: PropTypes.string,\n targetEntity: PropTypes.string,\n relationName: PropTypes.string\n\n }).isRequired,\n currentViewInfo: currentViewPropType,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default React.memo(ListView)\n","import React, {useEffect, useState} from 'react'\nimport DocsBrowserApp from 'tocco-docs-browser/src/main'\nimport {rest} from 'tocco-app-extensions'\nimport PropTypes from 'prop-types'\n\nconst DocsView = ({entityName, entityKey, showActions, noLeftPadding, openResource}) => {\n const [folderKey, setFolderKey] = useState(null)\n\n const fetchFolder = async() => {\n rest.simpleRequest('entities/2.0/' + entityName + '/' + entityKey + '/entitydocs/folder')\n .then(res => {\n setFolderKey(res.body.key)\n })\n }\n\n useEffect(() => {\n fetchFolder()\n }, [])\n\n return folderKey\n && <DocsBrowserApp\n noLeftPadding={noLeftPadding}\n sortable={false}\n searchFormType=\"none\"\n rootNodes={[\n {\n key: folderKey,\n entityName: 'Folder'\n }\n ]}\n embedded={true}\n showActions={showActions}\n {...showActions === false ? {selectionStyle: 'none'} : {}}\n disableViewPersistor={true}\n {...openResource ? {openResource} : {}}\n />\n}\n\nDocsView.propTypes = {\n entityName: PropTypes.string.isRequired,\n entityKey: PropTypes.string.isRequired,\n showActions: PropTypes.bool.isRequired,\n noLeftPadding: PropTypes.bool,\n openResource: PropTypes.func\n}\n\nexport default DocsView\n","import DocsView from './DocsView'\n\nexport default DocsView\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport DocsView from '../DocsView'\nimport {currentViewPropType} from '../../utils/propTypes'\n\nconst DocsViewAdapter = ({currentViewInfo, history, selectedRelation}) =>\n <DocsView\n entityName={currentViewInfo.model.name}\n entityKey={currentViewInfo.key}\n showActions={false}\n noLeftPadding={true}\n history={history}\n openResource={location => {\n history.push(`${selectedRelation.relationName}/list#${location}`)\n }}\n />\n\nDocsViewAdapter.propTypes = {\n history: PropTypes.object.isRequired,\n selectedRelation: PropTypes.shape({\n relationName: PropTypes.string.isRequired\n }).isRequired,\n currentViewInfo: currentViewPropType\n}\n\nexport default DocsViewAdapter\n","const selectedRelations = {}\n\nexport const getRelation = entity => selectedRelations[entity]\n\nexport const setRelation = (entity, selectedRelation) => {\n selectedRelations[entity] = selectedRelation\n}\n","import React from 'react'\nimport {AdminLink as StyledLink, Icon} from 'tocco-ui'\nimport PropTypes from 'prop-types'\n\nimport {setRelation} from '../../utils/relationPersistor'\nimport {StyledRelationBox, StyledRelationLabel, StyledRelationLinks} from './StyledComponents'\n\nconst RelationBox = ({\n relation,\n history,\n match,\n relationsInfo,\n selectRelation,\n selectedRelation,\n intl,\n entityName\n}) => {\n const {\n relationName,\n targetEntity,\n relationDisplay\n } = relation\n\n const msg = id => intl.formatMessage({id})\n const hasCreateRights = () => relationsInfo[relationName]?.createPermission\n\n const getRelationCountLabel = () => relationsInfo[relationName]?.count > 0\n ? <StyledRelationLabel> ({relationsInfo[relationName].count})</StyledRelationLabel>\n : null\n\n const handleBoxClick = () => {\n selectRelation(relation)\n history.replace({\n search: `?relation=${relationName}`\n })\n setRelation(entityName, relationName)\n }\n\n return (\n <StyledRelationBox\n selected={selectedRelation?.relationName === relationName}\n onClick={handleBoxClick}\n >\n <StyledRelationLabel title={relationDisplay.label}>\n {relationDisplay.label}</StyledRelationLabel>{getRelationCountLabel()}\n <StyledRelationLinks>\n <StyledLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkView')}\n to={match.url.replace(/(relations|detail)$/, relationName)}>\n <Icon icon=\"arrow-right\"/>\n </StyledLink>\n {hasCreateRights() && targetEntity !== 'Resource'\n && <StyledLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkCreate')}\n to={match.url.replace(/(relations|detail)$/, relationName) + '/create'}>\n <Icon icon=\"plus\"/>\n </StyledLink>\n }\n </StyledRelationLinks>\n </StyledRelationBox>\n )\n}\n\nRelationBox.propTypes = {\n relation: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n relationsInfo: PropTypes.objectOf(PropTypes.shape({\n count: PropTypes.number,\n createPermission: PropTypes.bool\n })),\n intl: PropTypes.object.isRequired,\n selectRelation: PropTypes.func.isRequired,\n selectedRelation: PropTypes.object,\n entityName: PropTypes.string\n}\n\nexport default RelationBox\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {Icon, Typography} from 'tocco-ui'\nimport {js} from 'tocco-util'\nimport _get from 'lodash/get'\nimport queryString from 'query-string'\n\nimport {\n StyledPlaceHolder,\n StyledPreviewBox,\n StyledPreviewLink,\n StyledRelationBoxes,\n StyledRelationsViewWrapper,\n StyledToggleCollapse,\n StyledToggleCollapseButton\n} from './StyledComponents'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport ListView from './ListView'\nimport DocsViewAdapter from './DocsViewAdapter'\nimport RelationBox from './RelationBox'\nimport {getRelation} from '../../utils/relationPersistor'\n\nconst RelationsView = props => {\n const {\n history,\n match,\n currentViewInfo,\n relations,\n relationsInfo,\n emitAction,\n intl,\n isCollapsed,\n toggleCollapse,\n selectedRelation,\n selectRelation\n } = props\n const entityName = _get(currentViewInfo, 'model.name')\n\n const updateSelectedRelation = () => {\n if (relations?.length > 0) {\n const queryRelation = queryString.parse(history.location.search).relation\n if (queryRelation) {\n selectRelation(relations.find(r => r.relationName === queryRelation))\n } else {\n const persistedSelectedRelation = getRelation(entityName)\n if (persistedSelectedRelation) {\n selectRelation(relations.find(r => r.relationName === persistedSelectedRelation))\n } else {\n selectRelation(relations[0])\n }\n }\n }\n }\n\n useEffect(updateSelectedRelation, [relations])\n useEffect(() => !selectedRelation ? updateSelectedRelation() : null, [selectedRelation])\n\n if (!relations || relations.length === 0 || !currentViewInfo) {\n return null\n }\n\n const msg = id => intl.formatMessage({id})\n const hasCreateRights = relationName => relationsInfo[relationName]?.createPermission\n const RelationPreview = selectedRelation\n ? (selectedRelation.targetEntity === 'Resource' ? DocsViewAdapter : ListView)\n : () => <React.Fragment/>\n\n const RelationBoxes = relations.map(relation =>\n <RelationBox\n key={`relation-${relation.relationName}`}\n relation={relation}\n entityName={entityName}\n {...props}\n />\n )\n\n return <>\n <StyledRelationsViewWrapper isCollapsed={isCollapsed}>\n <StyledToggleCollapse>\n <StyledToggleCollapseButton icon=\"chevron-right\" onClick={toggleCollapse}/>\n </StyledToggleCollapse>\n <StyledRelationBoxes>\n {RelationBoxes}\n </StyledRelationBoxes>\n {selectedRelation\n && <StyledPreviewBox>\n <Typography.H4>\n {selectedRelation.relationDisplay.label}\n <StyledPreviewLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkView')}\n to={match.url.replace(/(relations|detail)$/, selectedRelation.relationName)}>\n <Icon icon=\"arrow-right\"/>\n </StyledPreviewLink>\n {hasCreateRights(selectedRelation.relationName) && selectedRelation.targetEntity !== 'Resource'\n && <StyledPreviewLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkCreate')}\n to={match.url.replace(/(relations|detail)$/, selectedRelation.relationName) + '/create'}>\n <Icon icon=\"plus\"/>\n </StyledPreviewLink>\n }\n </Typography.H4>\n <RelationPreview\n selectedRelation={selectedRelation}\n match={match}\n history={history}\n currentViewInfo={currentViewInfo}\n emitAction={emitAction}\n />\n </StyledPreviewBox>\n }\n </StyledRelationsViewWrapper>\n <StyledPlaceHolder onClick={toggleCollapse} isCollapsed={isCollapsed}>\n <StyledToggleCollapseButton icon={'chevron-left'} isCollapsed={isCollapsed}/>\n </StyledPlaceHolder>\n </>\n}\n\nRelationsView.propTypes = {\n history: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n relations: PropTypes.array,\n relationsInfo: PropTypes.objectOf(PropTypes.shape({\n count: PropTypes.number,\n createPermission: PropTypes.bool\n })),\n emitAction: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n isCollapsed: PropTypes.bool,\n toggleCollapse: PropTypes.func.isRequired,\n selectRelation: PropTypes.func.isRequired,\n selectedRelation: PropTypes.object\n}\n\nconst areEqual = (prevProps, nextProps) => {\n const diff = Object.keys(js.difference(prevProps, nextProps))\n return diff.length === 0\n}\n\nexport default React.memo(RelationsView, areEqual)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport RelationsView from './RelationsView'\nimport {selectRelation} from '../../modules/path/actions'\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n relations: state.entities.path.relations,\n relationsInfo: state.entities.path.relationsInfo,\n selectedRelation: state.entities.path.selectedRelation\n})\n\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action),\n selectRelation\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(RelationsView))\n","import RelationsView from './RelationViewContainer'\n\nexport default RelationsView\n","import React, {lazy, Suspense} from 'react'\nimport {connect} from 'react-redux'\nimport PropTypes from 'prop-types'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {LoadMask} from 'tocco-ui'\nimport {consoleLogger} from 'tocco-util'\n\nconst actions = {\n 'user-qr-action': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/UserQrAction')),\n 'input-edit': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/InputEdit')),\n 'resourcescheduler': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/ResourceScheduler')),\n 'show-output-jobs-action': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/ShowOutputJobsAction')),\n 'delete': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Delete')),\n 'merge': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Merge')),\n 'copy': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Copy')),\n 'documents': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Documents')),\n 'password-update': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/PasswordUpdate'))\n}\n\nconst renderLoader = () => <LoadMask/>\n\nconst LazyAction = props => {\n const {appId} = props\n const LazyAction = actions[appId]\n\n if (!LazyAction) {\n consoleLogger.logError(`no action found with id: ${appId}`)\n return null\n }\n\n const ActionComponent = connect(null, {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n })(LazyAction)\n\n return <Suspense fallback={renderLoader()}>\n <ActionComponent {...props}/>\n </Suspense>\n}\n\nLazyAction.propTypes = {\n appId: PropTypes.string.isRequired\n}\n\nexport default LazyAction\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {Prompt} from 'react-router'\nimport queryString from 'query-string'\nimport styled from 'styled-components'\nimport {scale, theme} from 'tocco-ui'\n\nimport {goBack} from '../../../../utils/routing'\nimport Action from '../Action'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\n\nexport const StyledEntityDetailAppWrapper = styled.div`\n margin: 0;\n background-color: ${theme.color('paper')};\n padding: 0 0 0 ${scale.space(0)};\n overflow: hidden;\n height: 100%;\n`\n\nconst EditView = props => {\n const {\n currentViewInfo,\n history,\n match,\n intl,\n chooseDocument,\n emitAction,\n propagateRefresh,\n invalidateLastBreadcrumb\n } = props\n\n const [touched, setTouched] = useState(false)\n const mode = 'update'\n\n if (!currentViewInfo || currentViewInfo.pathname !== history.location.pathname) {\n return null\n }\n\n const queryFormName = queryString.parse(location.search).formName\n\n const handleToucheChanged = ({touched}) => {\n setTouched(touched)\n }\n\n const navigateToCreateRelative = (relationName, state) => {\n if (relationName) {\n const entityBaseUrl = goBack(match.url, 1)\n history.push({\n pathname: `${entityBaseUrl}/${relationName}/create`,\n state\n })\n } else {\n const entityBaseUrl = goBack(match.url, 2)\n history.push({\n pathname: entityBaseUrl + '/create',\n state\n })\n }\n }\n\n const handleEntityDeleted = () => {\n const entityBaseUrl = goBack(match.url, 2)\n history.push(entityBaseUrl)\n }\n\n const handleEntityUpdated = () => {\n const location = history.location\n invalidateLastBreadcrumb(location)\n }\n\n const handleRefresh = () => {\n const location = history.location\n propagateRefresh(location)\n }\n\n const handleSubGridRowClick = ({id, relationName}) => {\n const entityBaseUrl = goBack(match.url)\n history.push(`${entityBaseUrl}/${relationName}/${id}`)\n }\n\n const entityName = currentViewInfo.model.name\n const msg = id => intl.formatMessage({id})\n\n return <StyledEntityDetailAppWrapper>\n <Prompt\n when={touched}\n message={location => {\n if (history.location.pathname !== location.pathname) {\n return msg('client.entity-browser.detail.confirmTouchedFormLeave')\n }\n\n return false\n }}\n />\n <EntityDetailApp\n entityName={entityName}\n entityId={currentViewInfo.key}\n formName={queryFormName || entityName}\n mode={mode}\n emitAction={emitAction}\n onTouchedChange = {handleToucheChanged}\n navigationStrategy={{...navigationStrategy(history, match), navigateToCreateRelative}}\n chooseDocument={chooseDocument}\n onEntityDeleted={handleEntityDeleted}\n onEntityUpdated={handleEntityUpdated}\n onRefresh={handleRefresh}\n actionAppComponent={Action}\n onSubGridRowClick={handleSubGridRowClick}\n />\n </StyledEntityDetailAppWrapper>\n}\n\nEditView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n chooseDocument: PropTypes.func.isRequired,\n emitAction: PropTypes.func.isRequired,\n propagateRefresh: PropTypes.func.isRequired,\n invalidateLastBreadcrumb: PropTypes.func.isRequired\n}\n\nexport default EditView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {chooseDocument} from 'tocco-docs-browser/src/modules/chooseDocument/actions'\n\nimport {propagateRefresh, invalidateLastBreadcrumb} from '../../modules/path/actions'\nimport EditView from './EditView'\n\nconst mapActionCreators = {\n chooseDocument,\n emitAction: action => actionEmitter.dispatchEmittedAction(action),\n propagateRefresh,\n invalidateLastBreadcrumb\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(EditView))\n","import styled from 'styled-components'\n\nexport const StyledDetailViewContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n\n .react-bs-container-body {\n height: auto !important;\n }\n`\n\nexport const StyledDetailViewLeft = styled.div`\n flex: 1;\n margin-right: 1rem;\n ${({isCollapsed}) => !isCollapsed\n && ` @media(max - width: 1024px) {\n flex: none;\n width: 40%;\n }`\n}\n`\n\nexport const StyledDetailViewRight = styled.div`\n flex: ${({isCollapsed}) => isCollapsed ? '0' : '1'};\n`\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\nimport RelationsView from '../RelationsView'\nimport EditView from '../EditView'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport {StyledDetailViewContainer, StyledDetailViewLeft, StyledDetailViewRight} from './StyledComponents'\n\nconst DetailView = ({match, history, currentViewInfo, relationViewCollapsed, saveUserPreferences}) => {\n const [isCollapsed, setIsCollapsed] = useState(false)\n const toggleCollapse = () => {\n setIsCollapsed(!isCollapsed)\n onSearchFormCollapsedChange(!isCollapsed)\n }\n\n useEffect(() => {\n setIsCollapsed(relationViewCollapsed)\n }, [relationViewCollapsed])\n\n const onSearchFormCollapsedChange = collapsed => {\n saveUserPreferences({'admin.detail.relationViewCollapsed': collapsed})\n }\n\n return (\n <StyledDetailViewContainer>\n <StyledDetailViewLeft isCollapsed={isCollapsed}>\n <EditView match={match} history={history}/>\n </StyledDetailViewLeft>\n <StyledDetailViewRight isCollapsed={isCollapsed}>\n <RelationsView match={match} history={history} isCollapsed={isCollapsed} toggleCollapse={toggleCollapse}/>\n </StyledDetailViewRight>\n </StyledDetailViewContainer>\n )\n}\n\nDetailView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n relationViewCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func.isRequired\n}\n\nexport default DetailView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport _get from 'lodash/get'\n\nimport DetailView from './DetailView'\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\nconst mapActionCreators = {\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n relationViewCollapsed: _get(state.preferences.userPreferences, 'admin.detail.relationViewCollapsed', false)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DetailView))\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {queryString as queryStringUtil, js} from 'tocco-util'\nimport _get from 'lodash/get'\n\nimport Action from '../Action'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport {goBack} from '../../../../utils/routing'\n\nconst ActionView = ({history, match, setCurrentViewTitle, currentViewInfo, intl}) => {\n const {location} = history\n useEffect(() => {\n if (currentViewInfo) {\n setCurrentViewTitle(intl.formatMessage({id: `client.actions.${currentViewInfo.actionId}.title`}))\n }\n\n return () => {\n setCurrentViewTitle(null)\n }\n }, [currentViewInfo])\n\n if (!currentViewInfo) {\n return null\n }\n\n const queryParams = queryStringUtil.fromQueryString(location.search)\n const selection = _get(location, 'state.selection', queryParams.actionProperties)\n const actionProperties = _get(location, 'state.definition.properties', queryParams.actionProperties)\n\n const navigateBack = () => {\n history.replace(goBack(match.url, 2))\n }\n\n return (\n <Action\n history={history}\n match={match}\n appId={currentViewInfo.actionId}\n selection={selection}\n actionProperties={actionProperties}\n navigationStrategy={navigationStrategy(history, match)}\n onSuccess={navigateBack}\n onError={navigateBack}\n onCancel={navigateBack}\n />\n )\n}\n\nActionView.propTypes = {\n intl: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n setCurrentViewTitle: PropTypes.func.isRequired,\n history: PropTypes.shape({\n replace: PropTypes.func.isRequired,\n location: PropTypes.shape({\n search: PropTypes.string,\n state: PropTypes.shape({\n selection: PropTypes.object,\n definition: PropTypes.shape({\n appId: PropTypes.string\n })\n })\n })\n }).isRequired,\n match: PropTypes.object\n}\n\nconst areEqual = (prevProps, nextProps) => {\n const diff = Object.keys(js.difference(prevProps, nextProps))\n return diff.length === 0\n}\n\nexport default React.memo(ActionView, areEqual)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport ActionView from './ActionView'\nimport {setCurrentViewTitle} from '../../modules/path/actions'\nconst mapActionCreators = {\n setCurrentViewTitle\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(ActionView))\n","/* eslint-disable max-len */\nimport React from 'react'\nimport {Redirect, Route, Switch} from 'react-router-dom'\nimport PropTypes from 'prop-types'\n\nimport Entity from '../../subroutes/entity'\nimport Relations from '../../subroutes/relations'\nimport Detail from '../../subroutes/detail'\nimport Edit from '../../subroutes/edit'\nimport Action from '../../subroutes/action'\n\nfunction wordCount(str, word) {\n return str.split(word).length - 1\n}\n\nconst EntityRecordRoute = ({match}) => {\n const count = wordCount(match.path, ':relation')\n\n return (\n <Switch>\n <Route exact path={`${match.url}`} render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/detail`}/>}/>\n <Route path={`${match.path}/detail`} component={Detail}/>\n <Route path={`${match.path}/edit`} component={Edit}/>\n <Route path={`${match.path}/relations`} component={Relations}/>\n <Route path={`${match.path}/action`} component={Action}/>\n <Route path={`${match.path}/:relation_${count}`} component={Entity}/>\n </Switch>\n )\n}\n\nEntityRecordRoute.propTypes = {\n match: PropTypes.object.isRequired\n}\n\nexport default EntityRecordRoute\n","import EntityRecordRoute from './EntityRecordRoute'\n\nexport default EntityRecordRoute\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport _get from 'lodash/get'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {Prompt} from 'react-router'\nimport styled from 'styled-components'\nimport {theme, scale} from 'tocco-ui'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\n\nconst StyledEntityDetailAppWrapper = styled.div`\n margin: 0;\n background-color: ${theme.color('paper')};\n padding: 0 0 0 ${scale.space(0)};\n overflow: hidden;\n height: 100%;\n`\n\nconst CreateView = props => {\n const {\n currentViewInfo,\n history,\n match,\n intl,\n chooseDocument,\n dispatchEmittedAction\n } = props\n const {location} = history\n const stateDefaultValues = _get(location, 'state.defaultValues', [])\n const [touched, setTouched] = useState(false)\n\n const mode = 'create'\n\n if (!currentViewInfo) {\n return null\n }\n const {model, reverseRelation, parentKey} = currentViewInfo\n const entityName = model.name\n\n const isMultiReverseRelation = _get(model, `paths.${reverseRelation}.multi`, false)\n\n const defaultValues = [\n ...((reverseRelation && parentKey)\n ? [{id: reverseRelation, value: isMultiReverseRelation ? [parentKey] : parentKey}]\n : []\n ),\n ...stateDefaultValues\n ]\n\n const handleEntityCreated = ({id}) => {\n setTouched(false)\n history.push(match.url.replace(/create$/, id))\n }\n\n const msg = id => intl.formatMessage({id})\n const handleToucheChanged = ({touched}) => setTouched(touched)\n\n return <StyledEntityDetailAppWrapper>\n <Prompt\n when={touched}\n message={msg('client.entity-browser.detail.confirmTouchedFormLeave')}\n />\n <EntityDetailApp\n entityName={entityName}\n formName={entityName}\n mode={mode}\n defaultValues={defaultValues}\n emitAction={action => {\n dispatchEmittedAction(action)\n }}\n navigationStrategy={navigationStrategy(history, match)}\n chooseDocument={chooseDocument}\n onEntityCreated={handleEntityCreated}\n onTouchedChange={handleToucheChanged}\n />\n </StyledEntityDetailAppWrapper>\n}\n\nCreateView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n chooseDocument: PropTypes.func.isRequired,\n dispatchEmittedAction: PropTypes.func.isRequired\n}\n\nexport default CreateView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {chooseDocument} from 'tocco-docs-browser/src/modules/chooseDocument/actions'\n\nimport CreateView from './CreateView'\n\nconst mapActionCreators = {\n chooseDocument,\n dispatchEmittedAction: actionEmitter.dispatchEmittedAction\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(CreateView))\n","import React from 'react'\n\nimport DocsView from '../DocsView'\nimport {currentViewPropType} from '../../utils/propTypes'\n\nconst DocsViewAdapter = ({currentViewInfo}) =>\n <DocsView\n noLeftPadding={false}\n entityName={currentViewInfo.parentModel.name}\n entityKey={currentViewInfo.parentKey}\n showActions={true}\n />\n\nDocsViewAdapter.propTypes = {\n currentViewInfo: currentViewPropType\n}\n\nexport default DocsViewAdapter\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport queryString from 'query-string'\nimport {viewPersistor} from 'tocco-util'\n\nimport Action from '../Action/LazyAction'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport DocsViewAdapter from './DocsViewAdapter'\n\nconst ListView = ({match, history, currentViewInfo, emitAction, searchFormCollapsed, saveUserPreferences}) => {\n if (!currentViewInfo) {\n return null\n }\n\n const queryParams = queryString.parse(history.location.search)\n\n const handleRowClick = ({id}) => {\n history.push(match.url.replace(/list$/, '') + id)\n }\n\n if (currentViewInfo.model.name === 'Resource') {\n return <DocsViewAdapter\n currentViewInfo={currentViewInfo}\n />\n }\n\n return (\n <EntityListApp\n emitAction={emitAction}\n limit={25}\n id={`${currentViewInfo.model.name}_list`}\n entityName={currentViewInfo.model.name}\n formName={queryParams.formName || currentViewInfo.model.name}\n onRowClick={handleRowClick}\n {...(currentViewInfo.reverseRelation && {\n parent: {\n key: currentViewInfo.parentKey,\n reverseRelationName: currentViewInfo.reverseRelation,\n model: currentViewInfo.parentModel.name\n }\n })}\n showLink={true}\n navigationStrategy={navigationStrategy(history, match)}\n searchFormPosition=\"left\"\n searchFormType=\"admin\"\n store={viewPersistor.viewInfoSelector(history.location.pathname).store}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(history.location.pathname, {store}, currentViewInfo.level)\n }}\n actionAppComponent={Action}\n tql={queryParams.tql}\n searchFormCollapsed={searchFormCollapsed}\n onSearchFormCollapsedChange={({collapsed}) => {\n saveUserPreferences({'admin.list.searchFormCollapsed': collapsed})\n }}\n />\n )\n}\n\nListView.propTypes = {\n match: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n persistedViewInfo: PropTypes.shape({\n store: PropTypes.object\n }),\n searchFormCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func\n}\n\nexport default ListView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport _get from 'lodash/get'\n\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\nimport ListView from './ListView'\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action),\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n searchFormCollapsed: _get(state.preferences.userPreferences, 'admin.list.searchFormCollapsed', false)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(ListView))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Redirect, Route, Switch} from 'react-router-dom'\n\nimport Record from '../../subroutes/record'\nimport Create from '../../subroutes/create'\nimport List from '../../subroutes/list'\nimport Action from '../../subroutes/action'\n\nconst EntityRoute = ({match}) => (\n <Switch>\n <Route exact path={match.url} render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/list`}/>}/>\n <Route path={`${match.path}/action/:id`} component={Action}/>\n <Route path={`${match.path}/list`} component={List}/>\n <Route path={`${match.path}/create`} component={Create}/>\n <Route path={`${match.path}/:key`} component={Record}/>\n </Switch>\n)\n\nEntityRoute.propTypes = {\n match: PropTypes.object.isRequired\n}\n\nexport default EntityRoute\n","import EntityRoute from './EntityRoute'\n\nexport default EntityRoute\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {Breadcrumbs} from 'tocco-ui'\n\nconst mapActionCreators = {\n\n}\n\nconst mapStateToProps = (state, props) => ({\n pathPrefix: '/e',\n breadcrumbsInfo: state.entities.path.breadcrumbsInfo,\n currentView: state.entities.path.currentViewTitle\n ? {\n display: state.entities.path.currentViewTitle,\n title: state.entities.path.currentViewTitle\n }\n : null\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Breadcrumbs))\n","import React, {useEffect} from 'react'\nimport {Route, Switch} from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport ErrorView from '../ErrorView'\nimport Overview from '../../subroutes/overview'\nimport Entity from '../../subroutes/entity'\nimport Action from '../../subroutes/action'\nimport Breadcrumbs from '../Breadcrumbs'\n\nconst StyledWrapper = styled.div`\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-areas:\n 'breadcrumbs'\n 'content';\n height: 100%;\n width: 100%;\n`\n\nconst StyledContent = styled.div`\n grid-area: content;\n overflow: hidden;\n`\n\nconst StyledBreadcrumbs = styled.div`\n grid-area: breadcrumbs;\n`\n\nconst EntitiesRoute = ({match, history, loadCurrentRoute, currentViewInfo}) => {\n const location = history.location\n\n useEffect(() => {\n loadCurrentRoute(location)\n }, [location])\n\n const content = currentViewInfo && currentViewInfo.error\n ? <ErrorView history={history}/>\n : <Switch>\n <Route\n path={`${match.url}/action/:actionId`}\n component={Action}\n />\n <Route\n path={`${match.url}/:entity`}\n component={Entity}\n />\n <Route exact path={match.url} component={Overview}/>\n </Switch>\n\n return <StyledWrapper>\n <StyledBreadcrumbs>\n <Breadcrumbs/>\n </StyledBreadcrumbs>\n <StyledContent>\n {content}\n </StyledContent>\n </StyledWrapper>\n}\n\nEntitiesRoute.propTypes = {\n loadCurrentRoute: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType\n}\n\nexport default EntitiesRoute\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport EntitiesRoute from './EntitiesRoute'\nimport {loadCurrentRoute} from '../../modules/path/actions'\n\nconst mapActionCreators = {\n loadCurrentRoute\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(EntitiesRoute))\n","import {combineReducers} from 'redux'\n\nimport sagas from './modules/path/sagas'\nimport path from './modules/path'\nimport EntitiesRoute from './components/EntitiesRoute'\n\nexport default {\n container: EntitiesRoute,\n reducers: {\n entities: combineReducers({path})\n },\n sagas: [sagas]\n}\n","export const SET_FORM_DEFINITION = 'entityDetail/SET_FORM_DEFINITION'\nexport const LOAD_DETAIL_VIEW = 'entityDetail/LOAD_DETAIL_VIEW'\nexport const SET_ENTITY = 'entityDetail/SET_ENTITY'\nexport const SUBMIT_FORM = 'entityDetail/SUBMIT_FORM'\nexport const SET_LAST_SAVE = 'entityDetail/SET_LAST_SAVE'\nexport const SET_ENTITY_MODEL = 'entityDetail/SET_ENTITY_MODEL'\nexport const UNLOAD_DETAIL_VIEW = 'entityDetail/UNLOAD_DETAIL_VIEW'\nexport const FIRE_TOUCHED = 'entityDetail/FIRE_TOUCHED'\nexport const SET_TOUCHED = 'entityDetail/SET_TOUCHED'\nexport const SET_ENTITY_NAME = 'entityDetail/SET_ENTITY_NAME'\nexport const SET_ENTITY_ID = 'entityDetail/SET_ENTITY_ID'\nexport const SET_MODE = 'entityDetail/SET_MODE'\nexport const SET_FORM_NAME = 'entityDetail/SET_FORM_NAME'\nexport const UPLOAD_DOCUMENT = 'entityDetail/UPLOAD_DOCUMENT'\nexport const SET_APP_ID = 'entityDetail/SET_APP_ID'\nexport const TOUCH_ALL_FIELDS = 'entityDetail/TOCH_ALL_FIELDS'\nexport const SET_DEFAULT_VALUES = 'entityDetail/SET_DEFAULT_VALUES'\nexport const NAVIGATE_TO_CREATE = 'entityDetail/NAVIGATE_TO_CREATE'\nexport const SET_FIELD_DEFINITIONS = 'entityDetail/SET_FIELD_DEFINITIONS'\nexport const NAVIGATE_TO_ACTION = 'entityDetail/NAVIGATE_TO_ACTION'\nexport const UPDATE_MARKED = 'entityDetail/UPDATE_MARKED'\nexport const SET_MARKED = 'entityDetail/SET_MARKED'\n\nexport const setFormDefinition = formDefinition => ({\n type: SET_FORM_DEFINITION,\n payload: {\n formDefinition\n }\n})\n\nexport const loadDetailView = (modelPaths, entityId) => ({\n type: LOAD_DETAIL_VIEW,\n payload: {\n modelPaths,\n entityId\n }\n})\n\nexport const setEntity = entity => ({\n type: SET_ENTITY,\n payload: {\n entity\n }\n})\n\nexport const submitForm = () => ({\n type: SUBMIT_FORM\n})\n\nexport const setLastSave = (lastSave = Date.now()) => ({\n type: SET_LAST_SAVE,\n payload: {\n lastSave\n }\n})\n\nexport const setEntityModel = entityModel => ({\n type: SET_ENTITY_MODEL,\n payload: {\n entityModel\n }\n})\n\nexport const unloadDetailView = () => ({\n type: UNLOAD_DETAIL_VIEW\n})\n\nexport const fireTouched = touched => ({\n type: FIRE_TOUCHED,\n payload: {\n touched\n }\n})\n\nexport const setTouched = touched => ({\n type: SET_TOUCHED,\n payload: {\n touched\n }\n})\n\nexport const setEntityName = entityName => ({\n type: SET_ENTITY_NAME,\n payload: {\n entityName\n }\n})\n\nexport const setEntityId = entityId => ({\n type: SET_ENTITY_ID,\n payload: {\n entityId\n }\n})\n\nexport const setMode = mode => ({\n type: SET_MODE,\n payload: {\n mode\n }\n})\nexport const setFormName = formName => ({\n type: SET_FORM_NAME,\n payload: {\n formName\n }\n})\n\nexport const setAppId = appId => ({\n type: SET_APP_ID,\n payload: {\n appId\n }\n})\n\nexport const touchAllFields = () => ({\n type: TOUCH_ALL_FIELDS\n})\n\nexport const setDefaultValues = defaultValues => ({\n type: SET_DEFAULT_VALUES,\n payload: {\n defaultValues\n }\n})\n\nexport const navigateToCreate = relationName => ({\n type: NAVIGATE_TO_CREATE,\n payload: {\n relationName\n }\n})\n\nexport const setFieldDefinitions = fieldDefinitions => ({\n type: SET_FIELD_DEFINITIONS,\n payload: {\n fieldDefinitions\n }\n})\n\nexport const navigateToAction = (definition, selection) => ({\n type: NAVIGATE_TO_ACTION,\n payload: {\n definition,\n selection\n }\n})\n\nexport const updateMarked = (entityName, entityId, marked) => ({\n type: UPDATE_MARKED,\n payload: {\n entityName,\n entityId,\n marked\n }\n})\n\nexport const setMarked = marked => ({\n type: SET_MARKED,\n payload: {\n marked\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_ENTITY_NAME]: reducerUtil.singleTransferReducer('entityName'),\n [actions.SET_FORM_NAME]: reducerUtil.singleTransferReducer('formName'),\n [actions.SET_ENTITY_ID]: reducerUtil.singleTransferReducer('entityId'),\n [actions.SET_MODE]: reducerUtil.singleTransferReducer('mode'),\n [actions.SET_FORM_DEFINITION]: reducerUtil.singleTransferReducer('formDefinition'),\n [actions.SET_ENTITY]: reducerUtil.singleTransferReducer('entity'),\n [actions.SET_LAST_SAVE]: reducerUtil.singleTransferReducer('lastSave'),\n [actions.SET_ENTITY_MODEL]: reducerUtil.singleTransferReducer('entityModel'),\n [actions.SET_TOUCHED]: reducerUtil.singleTransferReducer('touched'),\n [actions.SET_APP_ID]: reducerUtil.singleTransferReducer('appId'),\n [actions.SET_DEFAULT_VALUES]: reducerUtil.singleTransferReducer('defaultValues'),\n [actions.SET_FIELD_DEFINITIONS]: reducerUtil.singleTransferReducer('fieldDefinitions'),\n [actions.SET_MARKED]: reducerUtil.singleTransferReducer('marked')\n}\n\nconst initialState = {\n appId: '',\n entityName: '',\n entityId: '',\n formName: '',\n mode: '',\n formDefinition: {},\n entity: {},\n entityModel: {},\n touched: false,\n defaultValues: {},\n fieldDefinitions: [],\n marked: false\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {SubmissionError} from 'redux-form/es/SubmissionError'\nimport {form, rest} from 'tocco-app-extensions'\nimport {call} from 'redux-saga/effects'\n\nexport function* updateEntity(entity, paths = []) {\n const options = {\n method: 'PATCH',\n queryParams: {\n _paths: paths.join(',')\n },\n body: entity,\n acceptedErrorCodes: ['VALIDATION_FAILED'],\n acceptedStatusCodes: [404, 409]\n }\n const resource = `entities/2.0/${entity.model}/${entity.key}`\n const resp = yield call(rest.requestSaga, resource, options)\n\n if (resp.body.errorCode === 'VALIDATION_FAILED') {\n throw new SubmissionError(form.validationErrorToFormError(entity, resp.body.errors))\n }\n\n if (resp.status === 409 && resp.body.information) {\n throw new rest.InformationError(resp.body.information)\n }\n\n return resp.body\n}\n\nconst SUCCESSFUL_SAVED_STATUS = 201\n\nexport function* createEntity(entity, paths = []) {\n const options = {\n method: 'POST',\n queryParams: {\n _paths: paths.join(',')\n },\n body: entity,\n acceptedErrorCodes: ['VALIDATION_FAILED'],\n acceptedStatusCodes: [403, 409]\n }\n const resource = `entities/2.0/${entity.model}`\n const resp = yield call(rest.requestSaga, resource, options)\n\n if (resp.status === SUCCESSFUL_SAVED_STATUS) {\n const location = resp.headers.get('Location')\n const id = location.split('/').pop()\n return id\n } else {\n if (resp.body && resp.body.errorCode === 'VALIDATION_FAILED') {\n throw new SubmissionError(form.validationErrorToFormError(entity, resp.body.errors))\n }\n\n if (resp.status === 403) {\n throw new rest.ForbiddenException()\n }\n\n if (resp.status === 409 && resp.body.information) {\n throw new rest.InformationError(resp.body.information)\n }\n\n throw new Error('unexpected error during save', resp)\n }\n}\n","export default {\n CREATE: 'create',\n UPDATE: 'update'\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage, FormattedRelativeTime} from 'react-intl'\nimport {form} from 'tocco-app-extensions'\nimport Typography from 'tocco-ui/src/Typography'\nimport styled from 'styled-components'\nimport {FormattedValue, scale} from 'tocco-ui'\nimport {selectUnit} from '@formatjs/intl-utils'\n\nexport const ErrorItem = ({message}) =>\n <div>\n <FormattedValue type=\"html\" value={message}/>\n </div>\n\nErrorItem.propTypes = {\n message: PropTypes.string.isRequired\n}\n\nconst StyledErrorItemWrapper = styled.div`\n &:not(:last-child) {\n margin-bottom: ${scale.space(0.4)};\n }\n`\n\nconst ErrorItems = ({formErrors}) => {\n let output = null\n const elements = []\n\n const hasFieldErrors = form.formErrorsUtil.hasFieldErrors(formErrors)\n const hasValidatorErrors = form.formErrorsUtil.hasValidatorErrors(formErrors)\n const hasRelatedEntityErrors = form.formErrorsUtil.hasRelatedEntityErrors(formErrors)\n const validatorErrors = form.formErrorsUtil.getValidatorErrors(formErrors)\n const relatedEntityErrorsCompact = form.formErrorsUtil.getRelatedEntityErrorsCompact(formErrors)\n const hasOutdatedError = form.formErrorsUtil.hasOutdatedError(formErrors)\n\n if (hasOutdatedError) {\n const outdatedError = form.formErrorsUtil.getOutdatedError(formErrors)\n const {value: timeStampValue, unit} = selectUnit(new Date(outdatedError.updateTimestamp))\n\n const titleId = `client.entity-detail.${outdatedError.sameEntity ? 'outdated' : 'relatedOutdated'}ErrorTitle`\n\n elements.push(\n <StyledErrorItemWrapper key=\"outDatedError\">\n <Typography.H5>\n <FormattedMessage\n id={titleId}\n values={{\n model: outdatedError.model,\n key: outdatedError.key\n }}\n />\n </Typography.H5>\n <FormattedMessage\n id=\"client.entity-detail.outdatedErrorDescription\"\n values={{\n ago: <FormattedRelativeTime value={timeStampValue} unit={unit}/>,\n user: outdatedError.updateUser\n }}\n />\n </StyledErrorItemWrapper>\n )\n }\n\n if (hasFieldErrors) {\n elements.push(\n !hasValidatorErrors && !hasRelatedEntityErrors\n ? (\n <StyledErrorItemWrapper key=\"hasFieldErrors\">\n <FormattedMessage id=\"client.entity-detail.invalidFieldsError\"/>\n </StyledErrorItemWrapper>\n )\n : (\n <StyledErrorItemWrapper key=\"hasFieldErrors\">\n <Typography.H5>\n <FormattedMessage id=\"client.entity-detail.invalidFieldsError\"/>\n </Typography.H5>\n </StyledErrorItemWrapper>\n )\n )\n }\n\n if (hasValidatorErrors) {\n elements.push(\n <StyledErrorItemWrapper key=\"hasValidatorErrors\">\n <Typography.H5>\n <FormattedMessage id=\"client.entity-detail.validatorErrors\"/>\n </Typography.H5>\n {validatorErrors.map((message, idx) => <ErrorItem key={idx} message={message}/>\n )}\n </StyledErrorItemWrapper>\n )\n }\n\n if (hasRelatedEntityErrors) {\n elements.push(\n <StyledErrorItemWrapper key=\"hasRelatedEntityErrors\">\n <Typography.H5>\n <FormattedMessage id=\"client.entity-detail.invalidRelationErrors\"/>\n </Typography.H5>\n {relatedEntityErrorsCompact.map((message, idx) => <ErrorItem key={idx} message={message}/>\n )}\n </StyledErrorItemWrapper>\n )\n }\n\n if (elements.length > 0) {\n output = (\n <>\n {elements.map(el => el)}\n </>\n )\n }\n return output\n}\n\nErrorItems.propTypes = {\n formErrors: PropTypes.object\n}\n\nexport default ErrorItems\n","const types = {\n NONE: 'none',\n REDUCED: 'reduced',\n FULL: 'full'\n}\n\nexport default types\n","import modes from '../modes'\nimport types from './types'\n\nexport const getFooterType = (mode, entityModel) => {\n const {useNiceFields} = entityModel\n\n if (mode === modes.CREATE) {\n return types.NONE\n }\n\n return useNiceFields ? types.FULL : types.REDUCED\n}\n\nconst paths = ['create_timestamp', 'update_timestamp', 'create_user', 'update_user', 'version']\n\nexport const getFooterPaths = (mode, entityModel) => {\n const type = getFooterType(mode, entityModel)\n const keyField = entityModel.keyField\n switch (type) {\n case types.FULL:\n return [keyField, ...paths]\n case types.REDUCED:\n return [keyField]\n case types.NONE:\n default:\n return []\n }\n}\n","import React from 'react'\nimport {\n actions as formActions,\n getFormAsyncErrors,\n getFormSubmitErrors,\n getFormSyncErrors,\n getFormValues,\n isValid as isValidSelector\n} from 'redux-form'\nimport {SubmissionError} from 'redux-form/es/SubmissionError'\nimport * as formActionTypes from 'redux-form/es/actionTypes'\nimport {\n actions as actionExtensions,\n errorLogging,\n externalEvents,\n form,\n notification,\n remoteEvents,\n rest\n} from 'tocco-app-extensions'\nimport {api} from 'tocco-util'\nimport {all, call, debounce, fork, put, select, takeEvery, takeLatest} from 'redux-saga/effects'\nimport {selectUnit} from '@formatjs/intl-utils'\nimport {FormattedMessage, FormattedRelativeTime} from 'react-intl'\nimport _get from 'lodash/get'\n\nimport * as actions from './actions'\nimport {createEntity, updateEntity} from '../../util/api/entities'\nimport modes from '../../util/modes'\nimport {ErrorItem} from '../../components/ErrorItems/ErrorItems'\nimport {getFooterPaths} from '../../util/detailFooter/helpers'\n\nexport const formInitialValueSelector = (state, formId) => state.form[formId].initial\n\nexport const entityDetailSelector = state => state.entityDetail\n\nconst FORM_ID = 'detailForm'\n\nexport const inputSelector = state => state.input\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.LOAD_DETAIL_VIEW, loadDetailView),\n takeLatest(actions.UNLOAD_DETAIL_VIEW, unloadDetailView),\n takeLatest(actions.TOUCH_ALL_FIELDS, touchAllFields),\n takeEvery(actions.SUBMIT_FORM, submitForm),\n takeEvery(actions.FIRE_TOUCHED, fireTouched),\n takeEvery(actions.NAVIGATE_TO_CREATE, navigateToCreate),\n takeEvery(remoteEvents.REMOTE_EVENT, remoteEvent),\n takeLatest(actions.NAVIGATE_TO_ACTION, navigateToAction),\n debounce(500, formActionTypes.CHANGE, onChange),\n takeEvery(formActionTypes.STOP_ASYNC_VALIDATION, asyncValidationStop),\n takeLatest(actions.UPDATE_MARKED, updateMarked),\n takeLatest(actionExtensions.actions.ACTION_INVOKED, reloadAfterAction)\n ])\n}\n\nexport function* autoComplete(fieldName, autoCompleteEndpoint) {\n const options = {\n method: 'POST',\n body: {\n triggerField: fieldName,\n entity: yield call(getEntityForSubmit)\n },\n acceptedStatusCodes: [403]\n }\n\n const response = yield call(rest.requestSaga, autoCompleteEndpoint, options)\n const values = _get(response, 'body.values', [])\n const formValues = yield select(getFormValues(FORM_ID))\n\n yield all(Object.keys(values).map(fieldName => {\n const value = values[fieldName]\n const currentFieldValue = formValues[fieldName]\n if (value.mode === 'override' || (value.mode === 'if_empty' && form.isValueEmpty(currentFieldValue))) {\n return put(formActions.change(FORM_ID, fieldName, value.value))\n }\n return null\n }\n ))\n}\n\nexport function* onChange({meta}) {\n const {field} = meta\n const fieldDefinition = (yield (select(entityDetailSelector))).fieldDefinitions.find(fd => fd.id === field)\n if (fieldDefinition && fieldDefinition.autoCompleteEndpoint) {\n yield call(autoComplete, field, fieldDefinition.autoCompleteEndpoint)\n }\n}\n\nexport function* loadDetailFormDefinition(formName, mode) {\n const formDefinition = yield call(rest.fetchForm, formName, mode)\n yield put(actions.setFormDefinition(formDefinition))\n const fieldDefinitions = yield call(form.getFieldDefinitions, formDefinition)\n yield put(actions.setFieldDefinitions(fieldDefinitions))\n return {formDefinition, fieldDefinitions}\n}\n\nexport function* loadEntity(entityName, entityId, fieldDefinitions) {\n const formPaths = yield call(form.getUsedPaths, fieldDefinitions)\n const {mode, entityModel} = yield select(entityDetailSelector)\n const footerPaths = yield call(getFooterPaths, mode, entityModel)\n const paths = [...formPaths, ...footerPaths]\n const entity = yield call(rest.fetchEntity, entityName, entityId, {paths})\n yield put(actions.setEntity(entity))\n return entity\n}\n\nexport function* unloadDetailView() {\n yield put(actions.setEntity(null))\n yield put(formActions.destroy(FORM_ID))\n}\n\nexport function* loadEntityModel(entityName) {\n const entityModel = yield call(rest.fetchModel, entityName)\n yield put(actions.setEntityModel(entityModel))\n return entityModel\n}\n\nexport function* loadDetailView() {\n const {entityName, formName, mode, defaultValues} = yield select(entityDetailSelector)\n\n const model = yield call(loadEntityModel, entityName)\n const {fieldDefinitions} = yield call(loadDetailFormDefinition, formName, mode)\n\n if (mode === modes.CREATE) {\n yield put(actions.setEntity({paths: {}, model: entityName}))\n const formDefaultValues = yield call(form.getDefaultValues, fieldDefinitions)\n const inputDefaultValues = defaultValues ? yield call(form.transformInputValues, defaultValues, model) : {}\n const defaultValuesFields = {...formDefaultValues, ...inputDefaultValues}\n const flattenEntity = yield call(api.getFlattenEntity, {model: entityName})\n const formValues = yield call(form.entityToFormValues, {...flattenEntity, ...defaultValuesFields})\n yield put(formActions.initialize(FORM_ID, formValues))\n } else {\n yield call(loadData)\n }\n}\n\nexport function* updateFormSubmit(entity) {\n const updateResponse = yield call(updateEntity, entity)\n if (updateResponse.status === 404) {\n // record was most likely moved to another business unit\n yield put(externalEvents.fireExternalEvent('onEntityDeleted'))\n } else {\n yield call(loadData)\n\n yield put(externalEvents.fireExternalEvent('onEntityUpdated'))\n yield call(showNotification, 'success', 'saveSuccessfulTitle', 'saveSuccessfulMessage')\n yield put(actions.setLastSave())\n yield put(formActions.stopSubmit(FORM_ID))\n }\n}\n\nexport function* createFormSubmit(entity) {\n const createdEntityId = yield call(createEntity, entity)\n yield put(externalEvents.fireExternalEvent('onEntityCreated', {id: createdEntityId}))\n yield call(showNotification, 'success', 'createSuccessfulTitle', 'createSuccessfulMessage')\n}\n\nexport function* touchAllFields() {\n const {fieldDefinitions} = yield select(entityDetailSelector)\n yield put(formActions.touch(FORM_ID, ...(fieldDefinitions.map(f => form.transformFieldName(f.path || f.id)))))\n}\n\nexport function* handleSubmitError(error) {\n if (error instanceof SubmissionError) {\n yield put(formActions.stopSubmit(FORM_ID, error.errors))\n yield call(handleInvalidForm)\n\n const validationErrors = yield call(form.formErrorsUtil.getValidatorErrors, error.errors)\n const message = (validationErrors && validationErrors.length > 0\n ? validationErrors.join('<br>')\n : 'client.entity-detail.saveAbortedMessage')\n\n yield put(notification.toaster({\n type: 'warning',\n title: 'client.entity-detail.saveAbortedTitle',\n body: () => <ErrorItem message={message}/>,\n duration: 5000\n }))\n } else if (error instanceof rest.InformationError) {\n yield put(notification.toaster({\n type: 'info',\n title: 'client.entity-detail.saveAbortedTitle',\n body: error.message\n }))\n yield put(formActions.stopSubmit(FORM_ID))\n } else if (error instanceof rest.ForbiddenException) {\n yield put(notification.toaster({\n type: 'error',\n title: 'client.entity-detail.saveAbortedTitle',\n body: 'client.entity-detail.noPermission'\n }))\n yield put(formActions.stopSubmit(FORM_ID))\n } else if (error instanceof rest.ClientQuestionCancelledException) {\n yield put(formActions.stopSubmit(FORM_ID))\n } else {\n yield put(errorLogging.logError(\n 'client.common.unexpectedError',\n 'client.entity-detail.saveError',\n error))\n yield put(formActions.stopSubmit(FORM_ID))\n }\n}\n\nexport function* getCurrentEntityState() {\n const formValues = yield select(getFormValues(FORM_ID))\n const initialFormValues = yield select(formInitialValueSelector, FORM_ID)\n const {mode} = yield select(entityDetailSelector)\n const initialValues = mode === modes.CREATE ? {} : initialFormValues\n const dirtyFields = yield call(form.getDirtyFields, initialValues, formValues, mode === modes.CREATE)\n\n return {\n formValues,\n initialValues,\n mode,\n dirtyFields\n }\n}\n\nexport function* submitValidate() {\n const {formValues, initialValues, mode} = yield call(getCurrentEntityState)\n yield call(form.submitValidation, formValues, initialValues, mode)\n}\n\nexport function* getEntityForSubmit() {\n const {formValues, dirtyFields} = yield call(getCurrentEntityState)\n const flattenEntity = yield call(form.formValuesToFlattenEntity, formValues)\n const dirtyFieldNames = dirtyFields.map(fieldName => form.transformFieldNameBack(fieldName))\n return yield call(api.toEntity, flattenEntity, dirtyFieldNames)\n}\n\nexport function* getPaths() {\n const {fieldDefinitions} = yield select(entityDetailSelector)\n return yield call(form.getUsedPaths, fieldDefinitions)\n}\n\nexport function* getFormErrors() {\n return {\n ...(yield select(getFormSyncErrors(FORM_ID))),\n ...(yield select(getFormAsyncErrors(FORM_ID))),\n ...(yield select(getFormSubmitErrors(FORM_ID)))\n }\n}\n\nexport function focusField(fieldName) {\n const element = document.getElementById(form.getFieldId(FORM_ID, fieldName))\n if (element) {\n element.focus()\n return true\n }\n\n return false\n}\n\nexport function* locationFieldFocus(errorField) {\n const {fieldDefinitions} = yield select(entityDetailSelector)\n const locationField = fieldDefinitions\n .find(f => f.locationMapping && f.locationMapping.postcode === errorField)\n yield call(focusField, locationField.id)\n}\n\nexport function* focusErrorField() {\n const formErrors = yield call(getFormErrors)\n const firstErrorField = yield call(form.formErrorsUtil.getFirstErrorField, formErrors)\n if (firstErrorField) {\n const focusSet = yield call(focusField, firstErrorField)\n\n if (!focusSet) {\n yield call(locationFieldFocus, firstErrorField)\n }\n }\n}\n\nexport function* handleInvalidForm() {\n yield call(touchAllFields)\n yield call(focusErrorField)\n}\n\nexport function* submitForm() {\n try {\n const isValid = yield select(isValidSelector(FORM_ID))\n if (!isValid) {\n yield call(handleInvalidForm)\n } else {\n yield put(formActions.startSubmit(FORM_ID))\n const {mode} = yield select(entityDetailSelector)\n yield call(submitValidate)\n const entity = yield call(getEntityForSubmit)\n if (mode === modes.UPDATE) {\n yield call(updateFormSubmit, entity)\n } else if (mode === modes.CREATE) {\n yield call(createFormSubmit, entity)\n }\n }\n } catch (error) {\n yield call(handleSubmitError, error)\n }\n}\n\nexport function* fireTouched({payload}) {\n const {touched: actionTouched} = payload\n const {touched: stateTouched} = yield select(entityDetailSelector)\n\n if (actionTouched !== stateTouched) {\n yield put(externalEvents.fireExternalEvent('onTouchedChange', {\n touched: actionTouched\n }))\n yield put(actions.setTouched(actionTouched))\n }\n}\n\nexport function* showNotification(type, titleResourceName, messageResourceName) {\n yield put(notification.toaster({\n type,\n title: `client.entity-detail.${titleResourceName}`,\n body: `client.entity-detail.${messageResourceName}`\n }\n ))\n}\n\nexport function* loadDisplayExpressions(formName, mode, paths, entities) {\n if (paths && paths.length > 0) {\n const keys = entities.map(e => e.__key)\n const entityName = entities[0].__model\n const result = yield call(rest.fetchDisplayExpressions, formName, mode, keys, paths, entityName)\n return result\n }\n}\n\nexport function* loadRelationDisplays(relationFields, entities) {\n if (relationFields && relationFields.length > 0) {\n const request = yield call(api.getPathDisplayRequest, entities, relationFields, {})\n return yield call(rest.fetchDisplays, request)\n }\n}\n\nexport function* enhanceEntityWithDisplayExpressions(entity) {\n const {fieldDefinitions, formName, mode} = yield select(entityDetailSelector)\n const displayExpressions = fieldDefinitions.filter(f => f.componentType === 'display').map(f => f.id)\n const displayExpressionsL = yield call(loadDisplayExpressions, formName, mode, displayExpressions, [entity])\n if (displayExpressionsL) {\n Object.keys(displayExpressionsL[entity.__key]).forEach(dE => {\n entity[dE] = displayExpressionsL[entity.__key][dE]\n })\n }\n}\n\nexport function* enhanceEntityWithDisplays(entity) {\n const {fieldDefinitions} = yield select(entityDetailSelector)\n const relationFields = fieldDefinitions.filter(f => api.relationFieldTypes.includes(f.dataType)).map(f => f.path)\n\n const displays = yield call(loadRelationDisplays, relationFields, [entity])\n\n relationFields.forEach(relationField => {\n const value = entity[relationField]\n if (value) {\n const newValue = Array.isArray(value)\n ? value.map(v2 => ({...v2, display: displays[v2.model][v2.key]}))\n : {...value, display: displays[value.model][value.key]}\n entity[relationField] = newValue\n }\n })\n}\n\nexport function* loadData(reset = true) {\n const {entityName, entityId, fieldDefinitions, entityModel} = yield select(entityDetailSelector)\n\n if (entityModel.markable === true) {\n yield fork(loadMarked, entityName, entityId)\n }\n\n const entity = yield call(loadEntity, entityName, entityId, fieldDefinitions)\n const flattenEntity = yield call(api.getFlattenEntity, entity)\n\n yield call(enhanceEntityWithDisplayExpressions, flattenEntity)\n yield call(enhanceEntityWithDisplays, flattenEntity)\n\n const formValues = yield call(form.entityToFormValues, flattenEntity)\n const options = reset ? {} : {keepDirty: true, keepValues: false}\n yield put(formActions.initialize(FORM_ID, formValues, options))\n}\n\nexport function* loadMarked(entityName, entityId) {\n const marked = yield call(rest.fetchMarked, entityName, entityId)\n yield put(actions.setMarked(marked))\n}\n\nexport function* updateMarked({payload: {entityName, entityId, marked}}) {\n yield put(actions.setMarked(marked))\n yield call(rest.setMarked, entityName, entityId, marked)\n}\n\nexport function* reloadAfterAction({payload}) {\n const {definition} = payload\n if (definition.id !== 'delete') {\n yield call(loadData, true)\n yield put(externalEvents.fireExternalEvent('onRefresh'))\n }\n}\n\nexport function* navigateToCreate({payload}) {\n const {navigationStrategy} = yield select(inputSelector)\n yield call(navigationStrategy.navigateToCreateRelative, payload.relationName)\n}\n\nexport function* navigateToAction({payload}) {\n const {definition, selection} = payload\n const {navigationStrategy} = yield select(inputSelector)\n yield call(navigationStrategy.navigateToActionRelative, definition, selection)\n}\n\nexport const isCurrentEntity = (event, entityName, entityId) =>\n !!event.payload.entities.find(entity => entity.entityName === entityName && entity.key === entityId)\n || (event.payload.parent && event.payload.parent.model === entityName && event.payload.parent.key === entityId)\n\nexport function* remoteEvent(action) {\n const event = action.payload.event\n const {entityName, entityId} = yield select(entityDetailSelector)\n\n if (isCurrentEntity(event, entityName, entityId)) {\n switch (event.type) {\n case 'entity-delete-event':\n yield put(externalEvents.fireExternalEvent('onEntityDeleted'))\n break\n case 'entity-update-event':\n yield call(loadData, false)\n break\n }\n }\n}\n\nexport function* asyncValidationStop({payload}) {\n if (payload) {\n const hasOutdatedError = form.formErrorsUtil.hasOutdatedError(payload)\n if (hasOutdatedError) {\n const outdatedError = form.formErrorsUtil.getOutdatedError(payload)\n const {value: timeStampValue, unit} = selectUnit(new Date(outdatedError.updateTimestamp))\n const titleId = `client.entity-detail.${outdatedError.sameEntity ? 'outdated' : 'relatedOutdated'}ErrorTitle`\n\n yield put(notification.toaster({\n type: 'warning',\n key: 'outdated-warning',\n title: <FormattedMessage\n id={titleId}\n values={{\n model: outdatedError.model,\n key: outdatedError.key\n }}\n />,\n body: <FormattedMessage\n id=\"client.entity-detail.outdatedErrorDescription\"\n values={{\n ago: <FormattedRelativeTime value={timeStampValue} unit={unit}/>,\n user: outdatedError.updateUser\n }}\n />\n }))\n }\n }\n}\n","import {reducer as form} from 'redux-form'\n\nimport entityDetailReducer, {sagas as entityDetailSagas} from './entityDetail'\n\nexport default {\n entityDetail: entityDetailReducer,\n form\n}\n\nexport const sagas = [\n entityDetailSagas\n]\n","import createGetFormInitialValues from './selectors/getFormInitialValues';\nimport plain from './structure/plain';\nexport default createGetFormInitialValues(plain);","export default function createGetFormInitialValues(_ref) {\n var getIn = _ref.getIn;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return getIn(nonNullGetFormState(state), form + \".initial\");\n };\n };\n}","import PropTypes from 'prop-types'\nimport React from 'react'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport styled from 'styled-components'\nimport {viewPersistor} from 'tocco-util'\n\nconst StyledListApp = styled.div`\n width: 100%;\n`\n\nconst SubGrid = props => {\n const formBase = `${props.detailFormName}_${props.formField.path}`\n const id = `${props.appId}-subgrid-${props.entityName}-${props.entityKey}-${props.formField.reverseRelation}`\n\n return (\n <StyledListApp>\n <EntityListApp\n id={id}\n entityName={props.formField.targetEntity}\n formName={formBase}\n limit={props.limit}\n searchFormType={props.showSearchForm ? 'basic' : 'none'}\n navigationStrategy={props.navigationStrategy}\n showLink={true}\n onRowClick={e => {\n if (props.onRowClick) {\n props.onRowClick({\n id: e.id,\n gridName: props.formField.path,\n relationName: props.formField.path\n })\n }\n }}\n onNavigateToCreate={() => {\n props.navigateToCreate(props.formField.path)\n }}\n parent={{\n key: props.entityKey,\n reverseRelationName: props.formField.reverseRelation,\n model: props.entityName,\n relationName: props.formField.path\n }}\n emitAction={props.emitAction}\n store={viewPersistor.viewInfoSelector(id).store}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(id, {store})\n }}\n />\n </StyledListApp>\n )\n}\n\nSubGrid.defaultProps = {\n limit: 5\n}\n\nSubGrid.propTypes = {\n entityKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n entityName: PropTypes.string.isRequired,\n detailFormName: PropTypes.string.isRequired,\n formField: PropTypes.shape({\n path: PropTypes.string,\n targetEntity: PropTypes.string,\n reverseRelation: PropTypes.string\n }).isRequired,\n onRowClick: PropTypes.func,\n navigateToCreate: PropTypes.func.isRequired,\n showSubGridsCreateButton: PropTypes.bool,\n appId: PropTypes.string,\n showSearchForm: PropTypes.bool,\n limit: PropTypes.number,\n emitAction: PropTypes.func.isRequired,\n navigationStrategy: PropTypes.objectOf(PropTypes.func)\n}\n\nexport default SubGrid\n","import SubGrid from './SubGrid'\n\nexport default SubGrid\n","import {connect} from 'react-redux'\nimport {externalEvents, actionEmitter} from 'tocco-app-extensions'\n\nimport SubGrid from '../components/SubGrid'\nimport {navigateToCreate} from './../modules/entityDetail/actions'\n\nconst mapStateToProps = (state, props) => ({\n appId: state.entityDetail.appId,\n entityKey: state.entityDetail.entity.key,\n entityName: state.entityDetail.entity.model,\n detailFormName: state.entityDetail.formDefinition.id,\n navigationStrategy: state.input.navigationStrategy\n})\n\nconst mapActionCreators = {\n onRowClick: e => externalEvents.fireExternalEvent('onSubGridRowClick', {\n id: e.id,\n gridName: e.gridName,\n relationName: e.relationName\n }),\n navigateToCreate,\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(SubGrid)\n","import React from 'react'\n\nimport SubGridContainer from '../../../containers/SubGridContainer'\n\nexport default (formField, key) => (\n <SubGridContainer\n key={key}\n formField={formField}\n showSearchForm={formField.showSearchForm}\n limit={formField.limit || undefined}\n />\n)\n","import ErrorItems from './ErrorItems'\n\nexport default ErrorItems\n","import styled from 'styled-components'\nimport {Button, scale, theme, StyledScrollbar} from 'tocco-ui'\n\nexport const StyledForm = styled.form`\n display: flex;\n flex-direction: column;\n padding-bottom: ${scale.space(-0.5)};\n height: 100%;\n overflow-y: auto;\n ${StyledScrollbar}\n`\n\nexport const StyledSaveButton = styled(Button)`\n ${({hasErrors}) => hasErrors && `\n background-color: ${theme.color('paper')};\n `}\n display: block;\n`\n\nexport const StyledActionWrapper = styled.div`\n ${StyledSaveButton} {\n width: 100%;\n max-width: fit-content;\n justify-content: center;\n box-sizing: border-box;\n\n > * {\n overflow: hidden;\n }\n }\n`\n\nexport const StyledActionSpan = styled.span`\n cursor: pointer;\n display: flex;\n height: 100%;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n &:hover {\n color: ${theme.color('secondaryLight')};\n }\n ${({marked, theme}) => marked && `color: ${theme.colors.secondary};`}\n`\n","import {Popover} from 'tocco-ui'\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\nimport modes from '../../util/modes'\nimport ErrorItems from '../ErrorItems'\nimport {StyledSaveButton} from './StyledComponents'\n\nconst SaveButton = ({\n submitting,\n mode,\n intl,\n hasErrors,\n formErrors,\n icon\n}) => {\n const msg = id => (intl.formatMessage({id}))\n\n return (\n <Popover\n content={hasErrors ? <ErrorItems formErrors={formErrors}/> : null}\n placement=\"bottom\">\n <StyledSaveButton\n data-cy=\"detail-form_submit-button\"\n id=\"detail-save_button\"\n disabled={submitting}\n ink=\"primary\"\n label={msg(`client.entity-detail.${mode === modes.CREATE ? 'create' : 'save'}`)}\n look={hasErrors ? 'flat' : 'raised'}\n pending={submitting}\n type=\"submit\"\n hasErrors={hasErrors}\n icon={hasErrors ? 'exclamation' : icon}\n />\n </Popover>\n )\n}\n\nSaveButton.propTypes = {\n intl: PropTypes.object.isRequired,\n submitting: PropTypes.bool,\n mode: PropTypes.oneOf(Object.values(modes)),\n hasErrors: PropTypes.bool,\n formErrors: PropTypes.object,\n icon: PropTypes.string\n}\n\nexport default SaveButton\n","import {Icon, Typography} from 'tocco-ui'\nimport React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {connect} from 'react-redux'\n\nimport {updateMarked} from '../../modules/entityDetail/actions'\nimport {StyledActionSpan} from './StyledComponents'\n\nconst MarkButton = ({entityName, entityId, marked, updateMarked}) => {\n const [mouseOver, setMouseOver] = useState(false)\n\n useEffect(() => {\n if (!marked) {\n setMouseOver(false) // reset mouse over to false to show empty star when user unmarks even if still hovering\n }\n }, [marked])\n\n const handleClick = e => {\n e.stopPropagation()\n updateMarked(entityName, entityId, !marked)\n }\n\n return <Typography.Span>\n <StyledActionSpan\n marked={marked}\n onClick={handleClick}\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}>\n <Icon icon={marked || mouseOver ? 'star-full' : 'star'}/>\n </StyledActionSpan>\n </Typography.Span>\n}\n\nMarkButton.propTypes = {\n entityName: PropTypes.string.isRequired,\n entityId: PropTypes.string.isRequired,\n marked: PropTypes.bool.isRequired,\n updateMarked: PropTypes.func.isRequired\n}\n\nconst mapActionCreators = {\n updateMarked\n}\n\nconst mapStateToProps = state => ({\n entityName: state.entityDetail.entityName,\n entityId: state.entityDetail.entityId,\n marked: state.entityDetail.marked\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(MarkButton)\n","import styled from 'styled-components'\nimport {colorizeText, StyledSpan, theme, scale} from 'tocco-ui'\nimport {declareNoneWrappingText} from 'tocco-ui/src/utilStyles'\n\nexport const StyledFooterWrapper = styled.div`\n max-width: 650px;\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: ${scale.font(0)};\n margin-right: ${scale.font(0)};\n\n && {\n * {\n color: ${colorizeText.shade2};\n font-size: ${scale.font(-0.8)};\n }\n }\n`\n\nexport const StyledFooterItemWrapper = styled.div`\n display: flex;\n`\nexport const StyledFooterItemLabel = styled(StyledSpan)`\n && {\n margin-right: ${scale.space(-1.37)};\n font-weight: ${theme.fontWeight('bold')};\n ${declareNoneWrappingText}\n }\n`\n\nexport const StyledFooterItemValue = styled.span`\n flex: 1;\n overflow: hidden;\n`\n\nexport const StyledTimestampValueWrapper = styled.span`\n display: flex;\n`\n\nexport const StyledTimestampRelativeValue = styled(StyledSpan)`\n && {\n margin-left: ${scale.space(-1.37)};\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\n\nimport {StyledFooterItemWrapper, StyledFooterItemLabel, StyledFooterItemValue} from './StyledComponents'\n\nconst FooterItem = ({labelId, valueComponent: ValueComp}) => (\n <StyledFooterItemWrapper>\n <StyledFooterItemLabel><FormattedMessage id={labelId}/>:</StyledFooterItemLabel>\n <StyledFooterItemValue><ValueComp/></StyledFooterItemValue>\n </StyledFooterItemWrapper>\n)\n\nFooterItem.propTypes = {\n labelId: PropTypes.string.isRequired,\n valueComponent: PropTypes.func.isRequired\n}\n\nexport default FooterItem\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Typography} from 'tocco-ui'\n\nconst TextValue = ({value}) => <Typography.Span>{value}</Typography.Span>\n\nTextValue.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired\n}\n\nexport default TextValue\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {StyledFooterWrapper} from './StyledComponents'\nimport FooterItem from './FooterItem'\nimport TextValue from './TextValue'\n\nconst DetailFooterReduced = ({\n entity,\n keyField\n}) => (\n <StyledFooterWrapper>\n <div>\n <FooterItem\n labelId=\"client.entity-detail.footer.key\"\n valueComponent={() => <TextValue value={entity.paths[keyField].value}/>}/>\n </div>\n </StyledFooterWrapper>\n)\n\nDetailFooterReduced.propTypes = {\n entity: PropTypes.object.isRequired,\n keyField: PropTypes.string.isRequired\n}\n\nexport default DetailFooterReduced\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedValue} from 'tocco-ui'\nimport {FormattedRelativeTime} from 'react-intl'\nimport {selectUnit} from '@formatjs/intl-utils'\n\nimport {StyledTimestampRelativeValue, StyledTimestampValueWrapper} from './StyledComponents'\n\nconst TimestampValue = ({value}) => {\n const {value: diffValue, unit} = selectUnit(new Date(value))\n\n return <StyledTimestampValueWrapper>\n <FormattedValue value={value} type=\"datetime\"/>\n <StyledTimestampRelativeValue>\n (<FormattedRelativeTime value={diffValue} unit={unit}/>)\n </StyledTimestampRelativeValue>\n </StyledTimestampValueWrapper>\n}\n\nTimestampValue.propTypes = {\n value: PropTypes.string.isRequired\n}\n\nexport default TimestampValue\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {StyledFooterWrapper} from './StyledComponents'\nimport FooterItem from './FooterItem'\nimport TimestampValue from './TimestampValue'\nimport TextValue from './TextValue'\n\nconst DetailFooterFull = ({\n entity,\n keyField\n}) => (\n <StyledFooterWrapper>\n <div>\n <FooterItem\n labelId=\"client.entity-detail.footer.created\"\n valueComponent={() => <TimestampValue value={entity.paths.create_timestamp.value}/>}/>\n <FooterItem\n labelId=\"client.entity-detail.footer.by\"\n valueComponent={() => <TextValue value={entity.paths.create_user.value}/>}/>\n </div>\n <div>\n <FooterItem\n labelId=\"client.entity-detail.footer.updated\"\n valueComponent={() => <TimestampValue value={entity.paths.update_timestamp.value}/>}/>\n <FooterItem\n labelId=\"client.entity-detail.footer.by\"\n valueComponent={() => <TextValue value={entity.paths.update_user.value}/>}/>\n </div>\n <div>\n <FooterItem\n labelId=\"client.entity-detail.footer.version\"\n valueComponent={() => <TextValue value={entity.paths.version.value}/>}/>\n <FooterItem\n labelId=\"client.entity-detail.footer.key\"\n valueComponent={() => <TextValue value={entity.paths[keyField].value}/>}/>\n </div>\n </StyledFooterWrapper>\n)\n\nDetailFooterFull.propTypes = {\n entity: PropTypes.object.isRequired,\n keyField: PropTypes.string.isRequired\n}\n\nexport default DetailFooterFull\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {getFooterType} from '../../util/detailFooter/helpers'\nimport types from '../../util/detailFooter/types'\nimport DetailFooterReduced from './DetailFooterReduced'\nimport DetailFooterFull from './DetailFooterFull'\n\nconst DetailFooter = ({mode, entity, entityModel}) => {\n const type = getFooterType(mode, entityModel)\n\n switch (type) {\n case types.FULL:\n return <DetailFooterFull entity={entity} keyField={entityModel.keyField}/>\n case types.REDUCED:\n return <DetailFooterReduced entity={entity} keyField={entityModel.keyField}/>\n case types.NONE:\n default:\n return null\n }\n}\n\nDetailFooter.propTypes = {\n mode: PropTypes.string.isRequired,\n entity: PropTypes.object.isRequired,\n entityModel: PropTypes.object.isRequired\n}\n\nexport default DetailFooter\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport DetailFooter from '../components/DetailFooter/DetailFooter'\n\nconst mapStateToProps = state => ({\n mode: state.entityDetail.mode,\n entity: state.entityDetail.entity,\n entityModel: state.entityDetail.entityModel\n})\n\nexport default connect(mapStateToProps)(injectIntl(DetailFooter))\n","import PropTypes from 'prop-types'\nimport React, {useEffect, useMemo, useRef} from 'react'\nimport {reduxForm} from 'redux-form'\nimport {form} from 'tocco-app-extensions'\nimport {react as customHooks} from 'tocco-util'\n\nimport SubGrid from '../../util/detailView/fromFieldFactories/subGrid'\nimport SaveButton from './SaveButton'\nimport MarkButton from './MarkButton'\nimport {StyledForm} from './StyledComponents'\nimport DetailFooterContainer from '../../containers/DetailFooterContainer'\n\nconst DetailForm = props => {\n const {\n fireTouched,\n dirty,\n intl,\n submitting,\n mode,\n formErrors,\n valid,\n submitForm,\n entity,\n formDefinition,\n formValues,\n anyTouched,\n form: formName\n } = props\n\n const formEl = useRef(null)\n\n useEffect(() => {\n fireTouched(dirty && anyTouched)\n }, [dirty, anyTouched])\n\n customHooks.useAutofocus(formEl)\n\n const customRenderedActions = useMemo(() => (\n {\n save: actionDefinition =>\n <SaveButton\n intl={intl}\n submitting={submitting}\n mode={mode}\n hasErrors={!valid && anyTouched}\n formErrors={formErrors}\n {...actionDefinition}\n />,\n mark: actionDefinition => <MarkButton {...actionDefinition}/>\n }\n ), [submitting, mode, valid, anyTouched, formErrors])\n\n const handleSubmit = event => {\n event.preventDefault()\n submitForm()\n }\n\n const handleKeyPress = event => {\n if (event.key === 'Enter' && event.target.tagName !== 'TEXTAREA') {\n event.preventDefault() // disable save on enter key down\n }\n }\n\n return <StyledForm\n onSubmit={handleSubmit}\n onKeyDown={handleKeyPress}\n ref={formEl}\n >\n <form.FormBuilder\n entity={entity}\n formName={formName}\n formDefinition={formDefinition}\n formValues={formValues}\n fieldMappingType={formDefinition.readOnly ? 'readonly' : 'editable'}\n mode={mode}\n componentMapping={{[form.componentTypes.SUB_TABLE]: SubGrid}}\n customRenderedActions={customRenderedActions}\n />\n <DetailFooterContainer/>\n </StyledForm>\n}\n\nDetailForm.propTypes = {\n intl: PropTypes.object.isRequired,\n mode: PropTypes.oneOf(['update', 'create']),\n submitForm: PropTypes.func.isRequired,\n formDefinition: PropTypes.object.isRequired,\n entity: PropTypes.object.isRequired,\n form: PropTypes.string.isRequired,\n touch: PropTypes.func.isRequired,\n formValues: PropTypes.object,\n submitting: PropTypes.bool,\n formErrors: PropTypes.object,\n valid: PropTypes.bool,\n dirty: PropTypes.bool,\n lastSave: PropTypes.number,\n fireTouched: PropTypes.func.isRequired,\n anyTouched: PropTypes.bool\n}\n\nexport default reduxForm({\n form: 'detailForm',\n destroyOnUnmount: false\n})(DetailForm)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport _get from 'lodash/get'\nimport {\n getFormValues,\n getFormInitialValues,\n getFormSyncErrors,\n getFormAsyncErrors,\n getFormSubmitErrors\n} from 'redux-form'\nimport {errorLogging} from 'tocco-app-extensions'\n\nimport DetailForm from '../components/DetailForm/DetailForm'\nimport {\n unloadDetailView,\n submitForm,\n fireTouched\n} from '../modules/entityDetail/actions'\n\nconst mapActionCreators = {\n unloadDetailView,\n submitForm,\n fireTouched,\n logError: errorLogging.logError\n}\n\nconst getFormGeneralErrors = formName =>\n state => (\n _get(state, `form.${formName}.error`, {})\n )\n\nconst mapStateToProps = state => ({\n formDefinition: state.entityDetail.formDefinition,\n entity: state.entityDetail.entity,\n formValues: getFormValues('detailForm')(state),\n formErrors: {\n ...getFormSyncErrors('detailForm')(state),\n ...getFormAsyncErrors('detailForm')(state),\n ...getFormSubmitErrors('detailForm')(state),\n _error: getFormGeneralErrors('detailForm')(state)\n },\n formInitialValues: getFormInitialValues('detailForm')(state),\n lastSave: state.entityDetail.lastSave\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DetailForm))\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport _isEmpty from 'lodash/isEmpty'\nimport {form} from 'tocco-app-extensions'\nimport {LoadMask} from 'tocco-ui'\n\nimport modes from '../../util/modes'\nimport DetailFormContainer from '../../containers/DetailFormContainer'\n\nclass DetailView extends React.Component {\n componentWillUnmount() {\n this.props.unloadDetailView()\n }\n\n handledAsyncValidate = formValues =>\n form.asyncValidation(\n formValues,\n this.props.mode === modes.CREATE ? {} : this.props.formInitialValues,\n this.props.fieldDefinitions,\n this.props.mode\n )\n\n getSyncValidation = () => {\n if (!this.validateSingleton && !_isEmpty(this.props.fieldDefinitions)) {\n this.validateSingleton = form.syncValidation(this.props.fieldDefinitions)\n }\n return this.validateSingleton\n }\n\n msg = id => this.props.intl.formatMessage({id})\n\n render() {\n const props = this.props\n\n return (\n <LoadMask\n required={[props.formInitialValues]}\n loadingText={this.msg('client.entity-detail.loadingText')}\n >\n <DetailFormContainer\n mode={this.props.mode}\n validate={this.getSyncValidation()}\n asyncValidate={this.handledAsyncValidate}\n asyncBlurFields={this.props.fieldDefinitions.map(fD => fD.path)}\n />\n </LoadMask>\n )\n }\n}\n\nexport default DetailView\n\nDetailView.propTypes = {\n intl: PropTypes.object.isRequired,\n mode: PropTypes.oneOf(['update', 'create']),\n loadDetailView: PropTypes.func.isRequired,\n unloadDetailView: PropTypes.func.isRequired,\n logError: PropTypes.func.isRequired,\n entityModel: PropTypes.object.isRequired,\n fieldDefinitions: PropTypes.arrayOf(\n PropTypes.shape({\n path: PropTypes.string,\n id: PropTypes.string,\n validation: PropTypes.object\n })\n ).isRequired,\n entityName: PropTypes.string.isRequired,\n entityId: PropTypes.string,\n formInitialValues: PropTypes.shape({\n initial: PropTypes.objectOf(PropTypes.string)\n })\n}\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {getFormInitialValues} from 'redux-form'\nimport {errorLogging} from 'tocco-app-extensions'\n\nimport {\n loadDetailView,\n unloadDetailView\n} from '../modules/entityDetail/actions'\nimport DetailView from '../components/DetailView/DetailView'\n\nconst mapActionCreators = {\n loadDetailView,\n unloadDetailView,\n logError: errorLogging.logError\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n entityName: state.entityDetail.entityName,\n entityId: state.entityDetail.entityId,\n entityModel: state.entityDetail.entityModel,\n fieldDefinitions: state.entityDetail.fieldDefinitions,\n mode: state.entityDetail.mode,\n formInitialValues: getFormInitialValues('detailForm')(state)\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DetailView))\n","import {\n loadDetailView,\n setEntityName,\n setEntityId,\n setFormName,\n setMode,\n setAppId,\n setDefaultValues\n} from './modules/entityDetail/actions'\n\nexport const getDispatchActions = input => ([\n setEntityName(input.entityName),\n setEntityId(input.entityId ? input.entityId : null),\n setMode(input.mode),\n setFormName(input.formName),\n setAppId(input.id),\n setDefaultValues(input.defaultValues),\n loadDetailView()\n])\n","import {put} from 'redux-saga/effects'\n\nimport {navigateToCreate, navigateToAction} from './modules/entityDetail/actions'\n\nexport default {\n new: function* () {\n yield put(navigateToCreate())\n },\n fullscreen: function* (definition, selection) {\n yield put(navigateToAction(definition, selection))\n }\n}\n","import {submitForm} from './modules/entityDetail/actions'\n\nexport default [\n {\n ctrl: true,\n alt: true,\n code: 'KeyS',\n actions: [submitForm()]\n }\n]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {navigationStrategy, reducer as reducerUtil} from 'tocco-util'\nimport {\n actionEmitter,\n actions,\n appFactory,\n errorLogging,\n externalEvents,\n formData,\n keyDown,\n notification\n} from 'tocco-app-extensions'\nimport SimpleFormApp from 'tocco-simple-form/src/main'\nimport EntityListApp from 'tocco-entity-list/src/main'\n\nimport reducers, {sagas} from './modules/reducers'\nimport DetailViewContainer from './containers/DetailViewContainer'\nimport {getDispatchActions} from './input'\nimport customActions from './customActions'\nimport shortcuts from './shortcuts'\n\nconst packageName = 'entity-detail'\n\nconst EXTERNAL_EVENTS = [\n 'onSubGridRowClick',\n 'onEntityCreated',\n 'onEntityUpdated',\n 'onEntityDeleted',\n 'onTouchedChange',\n 'onRefresh',\n 'emitAction'\n]\n\nconst initApp = (id, input, events = {}, publicPath) => {\n const content = <DetailViewContainer/>\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n actionEmitter.addToStore(store, events.emitAction)\n errorLogging.addToStore(store, false)\n notification.addToStore(store, false)\n actions.addToStore(store,\n {\n formApp: SimpleFormApp,\n listApp: EntityListApp,\n customActions,\n appComponent: input.actionAppComponent,\n navigationStrategy: input.navigationStrategy,\n context: {\n viewName: 'detail',\n formName: input.formName\n }\n }\n )\n formData.addToStore(store, {\n listApp: EntityListApp,\n detailApp: EntityDetailApp,\n navigationStrategy: input.navigationStrategy,\n chooseDocument: input.chooseDocument\n })\n keyDown.addToStore(store, shortcuts)\n\n const dispatchActions = getDispatchActions(input)\n\n const app = appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n events,\n actions: dispatchActions,\n publicPath,\n textResourceModules: ['component', 'common', 'entity-list', 'entity-detail']\n }\n )\n\n if (module.hot) {\n module.hot.accept('./modules/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n return app\n}\n\n(() => {\n if (__DEV__ && __PACKAGE_NAME__ === 'entity-detail') {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').default\n fetchMock.config.overwriteRoutes = false\n\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n\n const listFetchMocks = require('tocco-entity-list/src/dev/fetchMocks').default\n listFetchMocks('entity-list', fetchMock)\n\n fetchMock.spy()\n }\n\n const app = initApp('id', input)\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nclass EntityDetailApp extends React.Component {\n constructor(props) {\n super(props)\n\n const events = EXTERNAL_EVENTS.reduce((events, event) => {\n if (props[event]) {\n events[event] = props[event]\n }\n return events\n }, {})\n\n this.app = initApp(props.id, props, events)\n }\n\n render() {\n return this.app.component\n }\n}\n\nEntityDetailApp.propTypes = {\n entityName: PropTypes.string.isRequired,\n formName: PropTypes.string.isRequired,\n mode: PropTypes.oneOf(['update', 'create']),\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {}),\n navigationStrategy: navigationStrategy.propTypes,\n chooseDocument: PropTypes.func,\n actionAppComponent: PropTypes.func\n}\n\nexport default EntityDetailApp\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n"],"sourceRoot":""}
|