tocco-admin 0.5.35 → 0.5.39
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 +49 -0
- package/dist/00280aae09f2a71c1ab46c7cfb9f491c.js +1 -0
- package/dist/01ac8e05b621fce247d8d553656903c6.js +1 -0
- package/dist/02703e133100c3be64cfec414d4db706.js +1 -0
- package/dist/03276b6288c255cf1682f53ec11bb5a2.js +1 -0
- package/dist/036680d9c1d332cf478c5823cd2a47db.js +1 -0
- package/dist/0536af8c74f6fdf2d45e5e8990ee60cc.js +1 -0
- package/dist/06d453ace473034cd357edb758d539ab.js +1 -0
- package/dist/0768225f873adf5f103dcb714f17783d.js +1 -0
- package/dist/07c0a60b390501dfbb57219d5c8fbc1a.js +1 -0
- package/dist/07c26a67fe6aa27f701c6fb03a7bbafd.js +1 -0
- package/dist/0870bcf868f8d64dc9a6226a6c8b341d.js +1 -0
- package/dist/09195a75bcf8a7ac579281ac2ed5954a.js +1 -0
- package/dist/09ec1e19429e9349a4f69e00cdc89509.js +1 -0
- package/dist/0a4b12234fd7cba4d7c62207e4835f4c.js +1 -0
- package/dist/0a5adf8110dfa37b8a75edf8cafb1dd7.js +1 -0
- package/dist/0b56e82ae05b7ec2022e1cb35b8b6e10.js +1 -0
- package/dist/0bd6d25a3183a767309cd45cd8b8f347.js +1 -0
- package/dist/0c125a87d8efb9ce303b6b91783eb165.js +1 -0
- package/dist/0c2b3b3b66a73e289e2ca47cf22ef150.js +1 -0
- package/dist/0cbaf3ecc6b20dbc83c2164e9a1eac02.js +1 -0
- package/dist/0dc486b4415f7cbd7ddde8f32b6f12f1.js +1 -0
- package/dist/0dd0f45c3dde9af3fcf9706e6a2a1edd.js +1 -0
- package/dist/0f908578998bc65a3c374078edd4d880.js +1 -0
- package/dist/100f9b1846c1e1ecae19e0ca2fc8224c.js +1 -0
- package/dist/1084edaced97872890c9d87a9944cdcd.js +1 -0
- package/dist/119d8ff08e82b0f391f59f1fe657130f.js +1 -0
- package/dist/1295d4470d348d3ff8ea442b1dcef3d3.js +1 -0
- package/dist/1365ff3d277ebdab408e6aeec886cf08.js +1 -0
- package/dist/13b157cfddcb9a76ae0800b47a8f0122.js +1 -0
- package/dist/142d258626093a8c3187029538e32bbc.js +1 -0
- package/dist/144991c48dbba89bfe10e886aaaed32a.js +1 -0
- package/dist/155500be4d3113e94dca99f997defb7a.js +1 -0
- package/dist/1570e695c448e6a4f3a6bdf0372b58f0.js +1 -0
- package/dist/15abe309c5ecbc579dccc79beb041fd8.js +1 -0
- package/dist/167a62ec377adafbeb4bbb1cef73250d.js +1 -0
- package/dist/17c85759d562794da4d2ff11f1b9b3bd.js +1 -0
- package/dist/1840080076c4078d157a5b05d0d95551.js +1 -0
- package/dist/18a893070398343ab529fdb7b62f1b6d.js +1 -0
- package/dist/19a2b55271f405d0b97fad53c9d5ec2d.js +1 -0
- package/dist/1afe87852eca4b28294075c659ff8c45.js +1 -0
- package/dist/1c9874850164cfdaa7e1d212d09124a7.js +1 -0
- package/dist/1cb8df3a3416707163473b1ee9268faf.js +1 -0
- package/dist/1d837e2c9de35cbb09a85208da4a0d8a.js +1 -0
- package/dist/1de3569bf4cf2463628d69ecd92150ca.js +1 -0
- package/dist/1e33cb44dfab039b4a7e88a3ee1bbfe7.js +1 -0
- package/dist/1f03c9a69a8b9f79bcb7a338963f80c8.js +1 -0
- package/dist/1f1abd5e247cf6b2e9a3db6303277572.js +1 -0
- package/dist/1f7235986d23e6842cc54ba78816f16d.js +1 -0
- package/dist/2031467f3d02be43b638c5e3ccba3996.js +1 -0
- package/dist/20b003ac07f216a490981c397b91a117.js +1 -0
- package/dist/20f8061729d26f9786679bbf7af0b87a.js +1 -0
- package/dist/214a729dcea91ee8a56f8ef43e17243a.js +1 -0
- package/dist/219db9db1df39ce8cf197c72cb643801.js +1 -0
- package/dist/21c12c627149bdfc030e3de47acde151.js +1 -0
- package/dist/21dca974f7343f200597e43a55766c6e.js +1 -0
- package/dist/21e63141d475afcb7d4fd1fac1da934b.js +1 -0
- package/dist/223593fe8dd78b83f22808f9aad86ae9.js +1 -0
- package/dist/22812e27a1f54c0a4ff744a444a32d6c.js +1 -0
- package/dist/22b1c8bf4c2bdd7e438f832b888c75e4.js +1 -0
- package/dist/22d4f336d4fbe548273812e6e4cd345e.js +1 -0
- package/dist/2334a9d0e81f9aa6df36e30a4158e213.js +1 -0
- package/dist/242fb5a92733d151e9ca303fcd3ae7ff.js +1 -0
- package/dist/243d8101969c933d25388b5287bb3425.js +1 -0
- package/dist/2681042a598b029b51d51f7669b81c4d.js +1 -0
- package/dist/2839e845bd0cf60f35f3a8ca90a5ee22.js +1 -0
- package/dist/28f7c5b28bbad7b0bac0cc3cc5b89bad.js +1 -0
- package/dist/294fbc5b00264d6215dd8ff838dc2999.js +1 -0
- package/dist/29a4e3548d286388c4d5e8f0670a4381.js +1 -0
- package/dist/2a7b2ac7dc47105609001b93c25190b8.js +1 -0
- package/dist/2ac58492ad5a1b5244deb0fef1e5a773.js +1 -0
- package/dist/2bba99eb717e1aa22e45284a964ca73f.js +1 -0
- package/dist/2dea096a03cd8f864db5f06e9f0113e5.js +1 -0
- package/dist/2e6b449c270c4420523a24d1a806eb47.js +1 -0
- package/dist/2f1b71c04ca88bae69f1798880dbc985.js +1 -0
- package/dist/2fe13737434324ed67582ac97d484c54.js +1 -0
- package/dist/30314e1b4a51b1aed3766eadecde2a42.js +1 -0
- package/dist/3045404d52d03253c81822bdf760cfd1.js +1 -0
- package/dist/31459a657ac30dcaa54765c6d76d8c81.js +1 -0
- package/dist/318f90759f2ff0d2a437350e87578172.js +1 -0
- package/dist/31bcb02e59d84ce2e38b85616a0b44db.js +1 -0
- package/dist/31f3f1c32b27587832d28b634351325c.js +1 -0
- package/dist/330543be2120b9dcc9bec41ba5e05805.js +1 -0
- package/dist/33856f6eaf3444eaff9e4e5d3fe810c8.js +1 -0
- package/dist/34f05dc84111ffe37a1d5b5aacff7488.js +1 -0
- package/dist/35858a47038a7be957df49854e8e5eea.js +1 -0
- package/dist/35dc4119f9e28cb9baba1475537460bb.js +1 -0
- package/dist/37bc2ca46b9a9d40678a3cd05d50e397.js +1 -0
- package/dist/37e37aa178d97ffcd94eeee1e1a25967.js +1 -0
- package/dist/38528de2a5c097da375fd0a076667441.js +1 -0
- package/dist/38a696bcfe6021b6442e70b6d3017b93.js +1 -0
- package/dist/398b591b6e9b2ae73dde100bca36f84a.js +1 -0
- package/dist/3a969f15f742add3d383e55d0ceb3d25.js +1 -0
- package/dist/3baeab62d681338ba3287f0a50e5dad1.js +1 -0
- package/dist/3c58f68d787710c79906a2cd6d248295.js +1 -0
- package/dist/3cab7110c6a090f72c540dcc1cfbe3b5.js +1 -0
- package/dist/3cce0c7e1a8e1148f97de59a4b1ee73f.js +1 -0
- package/dist/3cd86defa6e36c165ae673afab6b5eab.js +1 -0
- package/dist/3cf64ec91a700bfa1dece0957c49c7dc.js +1 -0
- package/dist/3e6808cd6eefd1be1040403985581374.js +1 -0
- package/dist/3e6cde7f6a3d84c5cff5127be1c019f3.js +1 -0
- package/dist/3f9e3ae9d4ee540b9fb067b6fd29d529.js +1 -0
- package/dist/4037e6d4b18e3e286dec455cc63c1d17.js +1 -0
- package/dist/40505d6c2f34fc08502d3e596573c7f8.js +1 -0
- package/dist/40ba797ae7e4433f9847cd2c68bfbdf7.js +1 -0
- package/dist/413ec783ae29da56e8bdabae45457f91.js +1 -0
- package/dist/4190490a8257bdfcce6e2bd4f0634086.js +1 -0
- package/dist/41f85ea0c545f0539b6ae2753eb1f79c.js +1 -0
- package/dist/4263ed179f5b2268965e1157074583e8.js +1 -0
- package/dist/4339a83a0599fb43f59642dffbdbe8f5.js +1 -0
- package/dist/434a5902436fc0f4bac913f7ae1471c6.js +1 -0
- package/dist/43a9bcfc200d80676bc68fe9a3c8ab6d.js +1 -0
- package/dist/43bd62d6b50d1253f782c9ae5be1593d.js +1 -0
- package/dist/43dab3876e6402fc9ae359a033683cc4.js +1 -0
- package/dist/446ad37d55a836cf56e5417fcc9b986f.js +1 -0
- package/dist/4474c9775d04684871043fae3501ec66.js +1 -0
- package/dist/44e6d883ecccba28d8adf592cb83e01b.js +1 -0
- package/dist/451c3753fb6dfc1f2de25cb7524f4bb2.js +1 -0
- package/dist/46bac1e89f220258537c533035a6e263.js +1 -0
- package/dist/4705b919138245a5b454d25f8e418435.js +1 -0
- package/dist/4750f0ff62cbd59f35aac31b996194e6.js +1 -0
- package/dist/47bc1cf488af29738e21d8b5f4c8766b.js +1 -0
- package/dist/47cd5c7d174e6b624e55510c4e503600.js +1 -0
- package/dist/47ecd829f86e48857a05b2189ee9c097.js +1 -0
- package/dist/4ab6dffb1b7255cc39ef77a35eb53293.js +1 -0
- package/dist/4c23cecd95c406d71cbe8fe49ad3ab6c.js +1 -0
- package/dist/4cbd6f8a4f52821c1d3476139078797d.js +1 -0
- package/dist/4d694d41a0c1b3eaad752a8352c5661c.js +1 -0
- package/dist/4e4d407bd6bf0ce7bfc869f7eb6e93d3.js +1 -0
- package/dist/4e9e0e943cacfdf9d350ba0c59bfb53b.js +1 -0
- package/dist/4ee6db42bdfd31631aaa20c2a02cf90e.js +1 -0
- package/dist/4f30f5432d9bfb925c918a6870451fef.js +1 -0
- package/dist/5094b30d2471cc7312746173d8a4bb25.js +1 -0
- package/dist/51e6918f996813eafa4b1491d9dd343b.js +1 -0
- package/dist/51e6ccd3ea9d7443949b155b113eebd5.js +1 -0
- package/dist/51fd63020e12665fab2b755ae7a901d4.js +1 -0
- package/dist/540bba54b49ea7a6ec513270449132db.js +1 -0
- package/dist/553aa6bb3b625428f4df57f5885d50f3.js +1 -0
- package/dist/5540bb93f39dcb670a0f9b4e4b793d02.js +1 -0
- package/dist/57c2d2eb6a844a8c9ecd932c6d4067b0.js +1 -0
- package/dist/57c7c145c720f31f3749b658e3769833.js +1 -0
- package/dist/587c674b536ffaf75df5db37c7b67c4a.js +1 -0
- package/dist/58d885ab56201085ce55e8eb5d3f2ac2.js +1 -0
- package/dist/58f38fb5c5d8da84e75bd48f7d501d59.js +1 -0
- package/dist/59457eef0e0be735680874d74c13e469.js +1 -0
- package/dist/5a8b5a01cd9dadacb661063269f44c66.js +1 -0
- package/dist/5bd58f2ebad7e63ff72a891fb43e2b38.js +1 -0
- package/dist/5c5f571e7b4ac9500fa21c5abd909c27.js +1 -0
- package/dist/5ce9c9a26cf28c9ccdcf82388efacf29.js +1 -0
- package/dist/5d2589bbfd66894e296ec080a28d70e1.js +1 -0
- package/dist/5e4dd0452f14cf5dbb02a7dc7d9dda76.js +1 -0
- package/dist/5e62ca244220154bbcae2a7eb2c50e0f.js +1 -0
- package/dist/5e9314c1c0d4e5f4cb7a3f80fc01530c.js +1 -0
- package/dist/5eeee1acc01b04328cf42db0715bb7f5.js +1 -0
- package/dist/5f6f5026d13b2a9b884a8144a119cf9e.js +1 -0
- package/dist/60fc15a66fa7ba74ccd248f85b50fbe5.js +1 -0
- package/dist/611cab878498fbf52880d2323991f3d7.js +1 -0
- package/dist/61cc56da80a76731283878abc3b13761.js +1 -0
- package/dist/628b24103fca421515ec8724d12f026f.js +1 -0
- package/dist/63ccb1f1a27a2bf6271f40d3082186f4.js +1 -0
- package/dist/642f5bce034554539cc93a5b965e730a.js +1 -0
- package/dist/646323ed2e6bfb9e711785e109cf8d5f.js +1 -0
- package/dist/646c9322233a0ba128268dee916e5719.js +1 -0
- package/dist/6477e8f75e2259e66e943bdef7b9e4a7.js +1 -0
- package/dist/64a7727963416cd27ab100d1dfff8168.js +1 -0
- package/dist/64f93b6b093bba4147485023263cf65f.js +1 -0
- package/dist/66670f2c1f5e7c4e531007e89bb85355.js +1 -0
- package/dist/66fb250b0cba71f9e58d9c94c4d7341a.js +1 -0
- package/dist/68cf9a0e1eaff7cc991e970a855108f8.js +1 -0
- package/dist/697c2df91bf7c729d317c620a3cd77bd.js +1 -0
- package/dist/6d9ca7a980db8fa74e39b1ff3b0c75cd.js +1 -0
- package/dist/6dafd4eb9102ea47229a42a24d40f457.js +1 -0
- package/dist/6ddf5e6270865af626321055852c6cb5.js +1 -0
- package/dist/6e4d1075690c1f17775f02251592ac60.js +1 -0
- package/dist/6e88d3943f4c3a068493aad131cd4898.js +1 -0
- package/dist/6e9ca56e0fa3e784eab3da45f8d0d8ac.js +1 -0
- package/dist/6ed72418f4fa5f71dee7780ac5bb95e0.js +1 -0
- package/dist/6f0543453c605ea6d673a3bd31dd1090.js +1 -0
- package/dist/6f783ca6efdcb90ccde9175312f6558d.js +1 -0
- package/dist/70647aa39b1179b9db672c874eaf3a9e.js +1 -0
- package/dist/7074e18e67a10875c827b6cfe2665b83.js +1 -0
- package/dist/7150c52abe226d317116208cfe9fdc88.js +1 -0
- package/dist/727184c92f9da8d8b0c013fd79cf32fe.js +1 -0
- package/dist/72d23326220bc76ce06b4c1c68efb378.js +1 -0
- package/dist/72d2343e3b39f8b214aa614fea10c9ab.js +1 -0
- package/dist/740ff6a6e968e50d530fde5e13064fd7.js +1 -0
- package/dist/74973bbb728e661679e49a16773535a4.js +1 -0
- package/dist/749b5fd2f9c2f584602aae4564fa1400.js +1 -0
- package/dist/781aab91bdb94039619a5d6086109f80.js +1 -0
- package/dist/78999d905693a14a2c4677977ba222fb.js +1 -0
- package/dist/79701bbf8c5436771916d9af708ae8ec.js +1 -0
- package/dist/7982ae381c10e501e9a46d8693deddf6.js +1 -0
- package/dist/7a679adc4e97aa2dab36bf2b4f37b6d3.js +1 -0
- package/dist/7af5865535fb306e7d0364a9ff81f389.js +1 -0
- package/dist/7bdb2e4d3bc51d15863aa7be6e0a23a9.js +1 -0
- package/dist/7cef38946c33fa981d6d2c86c62428e0.js +1 -0
- package/dist/7d46cd8e5efaac33d5bf823ed4268841.js +1 -0
- package/dist/7e89c064ec09f955a6c3ffbfb96908a2.js +1 -0
- package/dist/7e98c4d98664d6f7bcc52a07f21a1f9f.js +1 -0
- package/dist/7f10fe526aec57bd522af77ea6ac2b62.js +1 -0
- package/dist/7f63b670b51e07bd9a30869b68ada191.js +1 -0
- package/dist/8043595ccf704fc61e7e3e4c7c7e77a5.js +1 -0
- package/dist/81096321488be75b81be9dbd40d9bb24.js +1 -0
- package/dist/8120c57dbca7501da3ecf702c811f16f.js +1 -0
- package/dist/81350551f7c2ff74244535aaff56dd11.js +1 -0
- package/dist/817d52a47a4657b8a4dab79e057f5fb0.js +1 -0
- package/dist/81be1aff3c1cfa0531037ebab355abbb.js +1 -0
- package/dist/82ce99851e7fc39e91603bc3320fe6d2.js +1 -0
- package/dist/833b242747fd7b098d46011e4289bc3f.js +1 -0
- package/dist/83ea78d42f1a8e5f7346f3a30140ebfb.js +1 -0
- package/dist/84f75bf9ddb5400925d2a043a2013cec.js +1 -0
- package/dist/852f3a4ec9ee58d75bd55c85161bb68f.js +1 -0
- package/dist/85f71b723441bcf428b8abed1fc8f56f.js +1 -0
- package/dist/85fe85850b026b668c10d2c9e0e5e8c6.js +1 -0
- package/dist/867fb2b26eef123915aff8634c0bbf4a.js +1 -0
- package/dist/8681f562786fa45bebe8ee7ed2461026.js +1 -0
- package/dist/86dfc095a8bb97b2b6d94b798ebcdc61.js +1 -0
- package/dist/8770a939f7943a9fc6ef55f01bbf58b4.js +1 -0
- package/dist/8833a126ef9d8892bfb372d227f7f088.js +1 -0
- package/dist/8870430db332faf22d90e12f1620ee84.js +1 -0
- package/dist/88d5efab68c7526ad2ad4196932adb03.js +1 -0
- package/dist/88f2b86b79781364b99947d07d3c3469.js +1 -0
- package/dist/89859a411a50c90f1e669deaf8a6775f.js +1 -0
- package/dist/89a47a0051ac0b3885ef8af2476526f0.js +1 -0
- package/dist/8a50c9e16faa7bc5e88b7261601fbea3.js +1 -0
- package/dist/8a7d1e82245ba58033df533faadfbaf4.js +1 -0
- package/dist/8afcf3a037a7f37f9c0bbad01507d73b.js +1 -0
- package/dist/8bdbab2f0d58195a7d509ad6fbe02966.js +1 -0
- package/dist/8c8877c66a2c6404ed17f0f364f2f229.js +1 -0
- package/dist/8dec848a9d34e3804976ae4a589fbc4f.js +1 -0
- package/dist/8e6a809082edab0aaf90b9eb118ae571.js +1 -0
- package/dist/8e7a3ed0365cf37663cd6432382b9f87.js +1 -0
- package/dist/8e81f51d2e7be98e9e45fe93239c7e99.js +1 -0
- package/dist/8e9de0496ec7e61744c335d3156e3e91.js +1 -0
- package/dist/8ee6948d963e299de55144b3c7a60c0a.js +1 -0
- package/dist/8f69fc81a83ba318eca7dbae6c6eba75.js +1 -0
- package/dist/902223f10df9241dca67a311e6be82d2.js +1 -0
- package/dist/90643b9da87302fef490f3f48af806e2.js +1 -0
- package/dist/908119c25a234151c8c7c1a97005c866.js +1 -0
- package/dist/91832748c8f066b07af2341ccc6dd5b1.js +1 -0
- package/dist/91c0f3f78f13aefc3168b4ef28ff49db.js +1 -0
- package/dist/92cf63e9a949f08d97a74d9ed17392ed.js +1 -0
- package/dist/9360974ffacadb05145e2f6c1458f35b.js +1 -0
- package/dist/94a0179602c94d55621a35e41c97ed5c.js +1 -0
- package/dist/94a5c40baab0f2df8b43889ed5fb6b8a.js +1 -0
- package/dist/957cecf7fe593e179b14e2cb8795819c.js +1 -0
- package/dist/983ddc3115fae8e0dfd108d799662892.js +1 -0
- package/dist/985b400088bf5e23fb83e70d9948eccb.js +1 -0
- package/dist/998c5f13555e18b42e9bf826578b2e16.js +1 -0
- package/dist/99b756405f919e9022e6a4e3579dd5ee.js +1 -0
- package/dist/99f6bcba35fb277563c6362f3caab715.js +1 -0
- package/dist/9abcc804fa38b6d05e62a10cb8dbb668.js +1 -0
- package/dist/9c202aefac35a5ff49d3d3795e9932bc.js +1 -0
- package/dist/9c2b91bc7cd844308f5a746886a7d573.js +1 -0
- package/dist/9cf3be7669b89ac4036cd07c9baf7e13.js +1 -0
- package/dist/9d0f4f65be2f50ad54488089f126feda.js +1 -0
- package/dist/9e357a97da26127713394684a51946b8.js +1 -0
- package/dist/9e69cb39701c3578226b39536edd4dd7.js +1 -0
- package/dist/9e875d25eb6d80340adac0cfc35700c1.js +1 -0
- package/dist/a026164ca1f6f157fcb0f5f6bfd4abce.js +1 -0
- package/dist/a036e6a0313d9a77375018f2ac758d6b.js +1 -0
- package/dist/a06ea1f6e485f67413d6cb34d7cc3515.js +1 -0
- package/dist/a07f2b025030bd4f277803aea0e6a539.js +1 -0
- package/dist/a26463d029a2515171748a1ebcca53c3.js +1 -0
- package/dist/a28e3425f856992a4e5e4b0d448316cd.js +1 -0
- package/dist/a311e02008e0f00a37305a12d479159a.js +1 -0
- package/dist/a33f52a5f1ea0162305f99d63235f807.js +1 -0
- package/dist/a477d7b35783dd10040a243a84c86a0c.js +1 -0
- package/dist/a5cb31cfb4711ef14999198f0d35eaf3.js +1 -0
- package/dist/a65a0bae3e5b73407d15ea6bbb08e515.js +1 -0
- package/dist/a71d8ecb9a2a4b35fcd828bb970e7e84.js +1 -0
- package/dist/a84f565fc5473f112281550ea6c2ccf4.js +1 -0
- package/dist/a93bbe4d82b7f6cc642b7ebc38f4df5d.js +1 -0
- package/dist/aa1233d5e8262d6c87d7e17025479ac1.js +1 -0
- package/dist/aa2f98073a8d9f266f3928b5d9c457d1.js +1 -0
- package/dist/ab16c1237e6e04bbf0024ee2bae42130.js +1 -0
- package/dist/acc30207efba7ab5b7b509b599f37e6f.js +1 -0
- package/dist/acc4ded8b9debce27f884c9cce5bf63c.js +1 -0
- package/dist/acc7448b80728a73c9a4046b3ec4407f.js +1 -0
- package/dist/adbb57fa182dce548204311d3be6dffa.js +1 -0
- package/dist/af45a0eba37254fde00bc0845dc16954.js +1 -0
- package/dist/b02513e1d0cc664936e1ba9cb5a923af.js +1 -0
- package/dist/b02e760aa00b054a6e53138426bd9411.js +1 -0
- package/dist/b048c40cfb4768fc6b65a121049f0b9e.js +1 -0
- package/dist/b0ae5887d5b545dcdd5db18846651f7f.js +1 -0
- package/dist/b0fc54e0e936c84253a30c9b39cfd9bf.js +1 -0
- package/dist/b111a00f8f22708140c6fdbc26963155.js +1 -0
- package/dist/b131314d1ea62fa7bba91a4da8360298.js +1 -0
- package/dist/b26738d581e044c69f7a4392906e6843.js +1 -0
- package/dist/b435aebcb57d65080cfd510e0a9d5d9d.js +1 -0
- package/dist/b49c9a9ab619e46a7ba6f9f89c800589.js +1 -0
- package/dist/b4bd28ac3a7935d0c52a6cb19c89aced.js +1 -0
- package/dist/b518725b1ee5b4ba27eec173687966f0.js +1 -0
- package/dist/b69a91688637c9acd4bcce30598faeee.js +1 -0
- package/dist/b830d88aa22a866a208be27af90526a7.js +1 -0
- package/dist/ba07c8c1ca6ea903fd0f0379db66ea1e.js +1 -0
- package/dist/bae95bdb1bbcc0969e0e40fb72539df3.js +1 -0
- package/dist/bb3e0098a11d21ca01d6e44c2e39f90b.js +1 -0
- package/dist/bb48e1051c32d32d425681e9200706bc.js +1 -0
- package/dist/bb9282d93d3ae9d53870a66627f8c797.js +1 -0
- package/dist/bbd62124f6d03e01eb4332f55ead999d.js +1 -0
- package/dist/bc26ab0797e975ba01e701683935864b.js +1 -0
- package/dist/bd33197d8c34bf6387e39130c28f8342.js +1 -0
- package/dist/bd98610e395f3b4c7915cf3fbe854f6f.js +1 -0
- package/dist/bd9ff502ba460f402b4e2005689402a7.js +1 -0
- package/dist/be267e990e45f420b52971b942b6cd36.js +1 -0
- package/dist/be2fbe775b19bdc18e4f78de18beb433.js +1 -0
- package/dist/bef8dd4d998c8a971c0c8a9eb298470d.js +1 -0
- package/dist/bf06f353bf67ef497b65afe567e7f294.js +1 -0
- package/dist/bffad0f26b7a14d73f338aefa2d2f9e5.js +1 -0
- package/dist/c02d976c2c838a2b5ad0e5dfd1facb75.js +1 -0
- package/dist/c0b4241b59cd6750a7d6ad4f3d019d84.js +1 -0
- package/dist/c0b4cd50c3fcc1292b34cedf813a16dd.js +1 -0
- package/dist/c0f91d067bd4f665ec7b85a632e3168d.js +1 -0
- package/dist/c23b1f80ab9746b425f3848bdaacc144.js +1 -0
- package/dist/c24de6963d7d00c269db34091059e06d.js +1 -0
- package/dist/c2b469d0ddb280bda5f621563579725d.js +1 -0
- package/dist/c2c0e5fa8323e2c5c1f54f20afda51b8.js +1 -0
- package/dist/c38a3226f3858a47ba9fb788dc7b44fc.js +1 -0
- package/dist/c3b0cd15adcc12a549e7ac5d165ac1f4.js +1 -0
- package/dist/c56ad0a02cde76fcd540a7f7db5eca1e.js +1 -0
- package/dist/c5d7c4a345a7bb4c84ee8ced7322a8db.js +1 -0
- package/dist/c6d4a590e14107a8a5ad505d66241032.js +1 -0
- package/dist/c6f608398c43e25821557ee65cda5e58.js +1 -0
- package/dist/c755e7fc08446566ee8dd3a8aa8fe43f.js +1 -0
- package/dist/c7d3b0afe7600a632fbf44ee8d84996e.js +1 -0
- package/dist/c7fb0ccebacccfb5c2f7b2f6023ebe4a.js +1 -0
- package/dist/c806ba4f0026195e7907bfb62d00b502.js +1 -0
- package/dist/c8bdb139ff462c0e7dc4ba2f56a49318.js +1 -0
- package/dist/c95085763daaf58802818ae50c902db8.js +1 -0
- package/dist/c98e5722b508d4eb3afcea637246de33.js +1 -0
- package/dist/c9e10cf9c0a5a1dee23414b7bc709a11.js +1 -0
- package/dist/ca1483809659f6c87cc6f588891d2bd4.js +1 -0
- package/dist/cb5e8b8ede9cae0b8fb986da038763e3.js +1 -0
- package/dist/ce73c3243f61524d76000c4ace94f2bb.js +1 -0
- package/dist/ceadf1677ee2a5b133bac039155145ec.js +1 -0
- package/dist/cf0a04afa21ac9ba23a1de0416a03105.js +1 -0
- package/dist/cf1f6c842a1ec0af6b00ce1859dce6d5.js +1 -0
- package/dist/cf6e250c7df1f6206ad0330880821dca.js +1 -0
- package/dist/chunk-215.fff39767c95996b4de4d.js +2 -0
- package/dist/chunk-215.fff39767c95996b4de4d.js.map +1 -0
- package/dist/chunk-346.865b1decda71d260e2ea.js +20 -0
- package/dist/chunk-346.865b1decda71d260e2ea.js.map +1 -0
- package/dist/chunk-404.13695a51db7223d614da.js +2 -0
- package/dist/chunk-404.13695a51db7223d614da.js.map +1 -0
- package/dist/{chunk-vendor-flatpickr.137a4f12e1ce7db82305.js → chunk-669.ea90314a2e6355528ce7.js} +3 -2
- package/dist/chunk-669.ea90314a2e6355528ce7.js.map +1 -0
- package/dist/chunk-744.cf1b11985b1acf8f8758.js +7 -0
- package/dist/chunk-744.cf1b11985b1acf8f8758.js.map +1 -0
- package/dist/chunk-817.46476531b6e7efc9219a.js +2 -0
- package/dist/chunk-817.46476531b6e7efc9219a.js.map +1 -0
- package/dist/chunk-82.856d20bcbc6eedcbd32f.js +2 -0
- package/dist/chunk-82.856d20bcbc6eedcbd32f.js.map +1 -0
- package/dist/chunk-872.a9273eaa81fc55df7a8b.js +2 -0
- package/dist/chunk-872.a9273eaa81fc55df7a8b.js.map +1 -0
- package/dist/chunk-actions.36f03e5e0bdd9b2974c7.js +2 -0
- package/dist/chunk-actions.36f03e5e0bdd9b2974c7.js.map +1 -0
- package/dist/chunk-code-editor.f6597326374cd04ca8c0.js +7 -0
- package/dist/chunk-code-editor.f6597326374cd04ca8c0.js.map +1 -0
- package/dist/chunk-docs-actions.ef86e48f48f3c697c1ec.js +2 -0
- package/dist/chunk-docs-actions.ef86e48f48f3c697c1ec.js.map +1 -0
- package/dist/chunk-vendor-icons.627e759cd9f60ab5c5f5.js +1 -0
- package/dist/{chunk-vendor-quill.bcff7a1213d0e7ba09f1.js → chunk-vendor-quill.1789cce485c0fe1c2550.js} +1 -1
- package/dist/d04b75913eb7152475e4db038e643095.js +1 -0
- package/dist/d08030a8f6057b63643bacf4cee162b0.js +1 -0
- package/dist/d08daa8e673c585e1311729dbcb63eb4.js +1 -0
- package/dist/d27d5c5480c14bffe9ffc07fec3a806d.js +1 -0
- package/dist/d2e30554e6939a2542e5135fff541daa.js +1 -0
- package/dist/d345689433789d4b690fa2d03b1d83ee.js +1 -0
- package/dist/d465c0a35c6ef244bf587b0e6bdb4019.js +1 -0
- package/dist/d47938906a471dea833a3b57991c7124.js +1 -0
- package/dist/d70ab0885fcc546aaf5eee0c5fca6278.js +1 -0
- package/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js +1 -0
- package/dist/d754905fe54aac6f3c350df34f51a0b6.js +1 -0
- package/dist/d7889907dbb51f58ceadb3e1eec03a5d.js +1 -0
- package/dist/d7cdf8e31755f70cd564c742feec3be0.js +1 -0
- package/dist/d7f9c3bcea90f112bc7cac6559dcb00c.js +1 -0
- package/dist/d9a00ccd64f554cd458b3d6f6c66f465.js +1 -0
- package/dist/da06d4429e8bccd9ef90b16ebe49354b.js +1 -0
- package/dist/da1719655627488c0c1afaa1379e2c1d.js +1 -0
- package/dist/dad7909925cdea4ce193d5c14a13abf3.js +1 -0
- package/dist/db7eff370e6f80152653db4bc1c65285.js +1 -0
- package/dist/dc5f6600785254887cbe9c35ce55e769.js +1 -0
- package/dist/dcb084d6aacfa517923dd3a94e3b9af5.js +1 -0
- package/dist/dcf8b9b721cab79d285ab33fe2154a58.js +1 -0
- package/dist/dd40dfc7840568927fdef65087a233ed.js +1 -0
- package/dist/dde12e6c2c05d17c95ed0a94da234b3b.js +1 -0
- package/dist/de385e48e4b7a8c5837c9a2fd07ede3e.js +1 -0
- package/dist/de581fe10be3ac282fa6abc2f8171551.js +1 -0
- package/dist/e0476257d7657264e527f7a1f1ecbece.js +1 -0
- package/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js +1 -0
- package/dist/e1cbafb3a5880cd8e5532e2acf8b6998.js +1 -0
- package/dist/e1dbe800b2d3f5d74b2b5480ea2b897a.js +1 -0
- package/dist/e2792218bae78a6aef6764de4e61fd82.js +1 -0
- package/dist/e337fbde626a0753b0b7f6caf3208266.js +1 -0
- package/dist/e393bf5358fc198ca07e518900b24311.js +1 -0
- package/dist/e4d51c8b4202d444cb39db4e7642d7d9.js +1 -0
- package/dist/e53ab2ed7040ddd0541d4795f8d224e9.js +1 -0
- package/dist/e6c2b11f457b5aa71fd08de4ae738c3f.js +1 -0
- package/dist/e745f8fb4f054a3f5b66ccad100a1217.js +1 -0
- package/dist/e8250271e7641960341ae2ac170af4ac.js +1 -0
- package/dist/e9f63cc0a627466e1096f848ff476ca5.js +1 -0
- package/dist/ea5c101c16108be8cf1522aae5736f5f.js +1 -0
- package/dist/eb6f00b565c6441d02346354a0ef64ce.js +1 -0
- package/dist/ee0650a4d7fd0181d898e58648474a26.js +1 -0
- package/dist/ef2640638453d7df3e7e1659d1f67105.js +1 -0
- package/dist/efa2aae8c65855514b0ca66c4fe1cc68.js +1 -0
- package/dist/efc508c36f4e417ec6bd5ec72989443b.js +1 -0
- package/dist/f102c542cd35eef623ab82b087af2f14.js +1 -0
- package/dist/f120c3f4e008f9abcd3a576bd66dd315.js +1 -0
- package/dist/f2195d2eae3dbef7e3798e115209dcd7.js +1 -0
- package/dist/f2cfc0e604350e23bfcd7c78165b1411.js +1 -0
- package/dist/f35e34e60520cef0b0dbba2bc2931941.js +1 -0
- package/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js +1 -0
- package/dist/f3b6993cd8f9bbdd1d5ad68a5e1cdf70.js +1 -0
- package/dist/f457edce8a9809fa16aab3c8e695bf38.js +1 -0
- package/dist/f4ee92824c023ab7278694588c9c40f1.js +1 -0
- package/dist/f50d7c4ce743ce495230d19bd33fefab.js +1 -0
- package/dist/f5292be525fc36a337ce7bfb792070de.js +1 -0
- package/dist/f52e2798c3b260592cf35f3a20958d87.js +1 -0
- package/dist/f5dda2fc10c4a825f922a439633d70ea.js +1 -0
- package/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js +1 -0
- package/dist/f7443e8232a7e4289b9f2ed4a512750c.js +1 -0
- package/dist/f7b04f07406ef16d88688a7ffb81ce3f.js +1 -0
- package/dist/f80c6eb0f52a68464b21211240e3d6e6.js +1 -0
- package/dist/f88127ad8950e3c94c3af6c65a7120fa.js +1 -0
- package/dist/f913332fa21973f354fcb5b680811e56.js +1 -0
- package/dist/f95dc04dc50d90d0555ca3561e75c4c2.js +1 -0
- package/dist/fa1618cda4da7d5362c381ea2d5f7321.js +1 -0
- package/dist/faf460076b3383fdc3ecc224068964cf.js +1 -0
- package/dist/fb41d9c741510992c10cc1deb4e9f269.js +1 -0
- package/dist/fb4580529d9585e912b7142f6b62cae4.js +1 -0
- package/dist/fe4de7aeda3abed04c238956a8565de4.js +1 -0
- package/dist/fe51d45583c0425b00c9a784727072e0.js +1 -0
- package/dist/fe56e099960b1f5a3ac7143e245f7ce1.js +1 -0
- package/dist/fe58209a4ef163863b95ab289a69cdaf.js +1 -0
- package/dist/fe5fd32b764aa22fde63925ac549a9c9.js +1 -0
- package/dist/fffbc895129cdb3efeafa5b234743aa0.js +1 -0
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-322.1a602064fbfb22a5a7d0.js +0 -2
- package/dist/chunk-322.1a602064fbfb22a5a7d0.js.map +0 -1
- package/dist/chunk-564.dc6ec2a0e64e928cbe39.js +0 -2
- package/dist/chunk-564.dc6ec2a0e64e928cbe39.js.map +0 -1
- package/dist/chunk-82.3247bc18e2ce1c9526c4.js +0 -2
- package/dist/chunk-82.3247bc18e2ce1c9526c4.js.map +0 -1
- package/dist/chunk-894.58313a4b8efa74b80173.js +0 -25
- package/dist/chunk-894.58313a4b8efa74b80173.js.map +0 -1
- package/dist/chunk-actions.e503c18f1601b650fe22.js +0 -2
- package/dist/chunk-actions.e503c18f1601b650fe22.js.map +0 -1
- package/dist/chunk-docs-actions.4d26a36c311792924a4d.js +0 -2
- package/dist/chunk-docs-actions.4d26a36c311792924a4d.js.map +0 -1
- package/dist/chunk-vendor-fontawesome.16c50d38361e83bc0ae8.js +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./packages/admin/src/routes/docs/components/DocsBrowserApp/DocsBrowserApp.js","webpack:///./packages/admin/src/routes/docs/components/DocsBrowserApp/DocsBrowserAppContainer.js","webpack:///./packages/admin/src/routes/docs/route.js","webpack:///./packages/delete/src/modules/delete/actions.js","webpack:///./packages/delete/src/modules/delete/reducer.js","webpack:///./packages/delete/src/utils/deleteRequestParser.js","webpack:///./packages/delete/src/modules/delete/sagas.js","webpack:///./packages/delete/src/modules/reducers.js","webpack:///./packages/tocco-ui/src/SignalBox/StyledSignalBox.js","webpack:///./packages/tocco-ui/src/SignalBox/SignalBox.js","webpack:///./packages/delete/src/components/InfoPart/LinkPopOver.js","webpack:///./packages/delete/src/components/InfoPart/InfoPart.js","webpack:///./packages/delete/src/components/Dialog/StyledComponents.js","webpack:///./packages/delete/src/components/Dialog/Dialog.js","webpack:///./packages/delete/src/components/Dialog/DialogContainer.js","webpack:///./packages/delete/src/components/DeleteProgress/StyledComponents.js","webpack:///./packages/delete/src/components/DeleteProgress/DeleteProgress.js","webpack:///./packages/delete/src/components/DeleteProgress/DeleteProgressContainer.js","webpack:///./packages/delete/src/components/DeleteProgress/index.js","webpack:///./packages/delete/src/components/Delete/Delete.js","webpack:///./packages/delete/src/components/Delete/DeleteContainer.js","webpack:///./packages/delete/src/components/Delete/index.js","webpack:///./packages/delete/src/main.js","webpack:///./packages/docs-browser/src/components/Action/actions/CreateDomain.js","webpack:///./packages/docs-browser/src/components/Action/actions/CreateFolder.js","webpack:///./packages/docs-browser/src/components/Action/actions/Delete.js","webpack:///./packages/docs-browser/src/components/Action/actions/Edit.js","webpack:///./packages/docs-browser/src/components/Action/actions/Move.js","webpack:///./packages/docs-browser/src/components/Action/actions/MoveContainer.js","webpack:///./packages/docs-browser/src/utils/getDetailFormName.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:///./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/tocco-ui/src/BurgerButton/framerMotionFeatures.js","webpack:///./packages/tocco-ui/src/DatePicker/useDatePickr.js","webpack:///./packages/tocco-ui/src/DatePicker/StyledDatePicker.js","webpack:///./packages/tocco-ui/src/DatePicker/DatePicker.js","webpack:///./packages/tocco-ui/src/Icon/FontAwesomeAdapter.js","webpack:///./packages/tocco-ui/src/Icon/ToccoIcons.js","webpack:///./packages/tocco-ui/src/Icon/Icon.js","webpack:///./packages/tocco-ui/src/LoadingSpinner/LoadingSpinner.js","webpack:///./packages/tocco-util/src/selection/selectionTypes.js","webpack:///./packages/tocco-util/src/selection/selection.js","webpack:///./packages/tocco-util/src/selection/proptype.js","webpack:///./packages/tocco-util/src/selection/index.js","webpack:///./node_modules/history/DOMUtils.js","webpack:///./node_modules/history/LocationUtils.js","webpack:///./node_modules/history/PathUtils.js","webpack:///./node_modules/history/createHashHistory.js","webpack:///./node_modules/history/createMemoryHistory.js","webpack:///./node_modules/history/createTransitionManager.js"],"names":["ListLink","entityName","entityKeys","children","rootNodes","map","key","StyledLink","to","JSON","stringify","target","props","queryParams","queryString","history","location","search","navigationStrategy","DetailLink","parse","searchFormCollapsed","onSearchFormCollapsedChange","collapsed","saveUserPreferences","mapActionCreators","container","connect","state","_get","preferences","userPreferences","injectIntl","DocsBrowserApp","setDeleteDialogInfo","dialogInfo","type","payload","doDelete","setEntitiesToDelete","entitiesToDelete","ACTION_HANDLERS","reducerUtil","initialState","deletingInProgress","deleteStatus","transformRootEntity","rootEntities","entity","applyKeys","rootEntity","entityLabel","includes","split","entityNameReal","keyReal","keys","isEntityDeletable","entityToDelete","affectedEntities","find","affectedEntity","getDialogInfo","response","currentBuId","reduce","acc","deletable","relatedAttr","rootEntitiesDeletable","rootEntitiesNotDeletable","relatedEntities","keysOtherBu","businessUnitId","Array","from","Set","transformRelatedEntities","relatedDeletable","relatedNotDeletable","hasUnreadableEntities","e","unreadableEntities","getEntitiesToDelete","deleteEntityPropType","PropTypes","isRequired","getDeleteBodyFromSelection","getDeleteEndpoint","loadDialogInfo","onCancel","mainSagas","inputSelector","input","textResourceSelector","intl","messages","entitiesToDeleteSelector","del","select","selection","call","selectionUtil","rest","entities","entityModel","customDeleteEndpoint","body","deleteEndpoint","all","method","deleteResponse","principal","currentBusinessUnit","id","put","actions","acceptedStatusCodes","textResources","ok","Object","deletedEntities","remoteEvents","externalEvents","message","status","information","takeLatest","action","handler","sagas","deleteSagas","ALLOWED_CONDITIONS","design","COLORS","theme","shadeColor","StyledSignalBox","styled","condition","getColor","scale","StyledSignalListItem","propTypes","SignalBox","title","Typography","React","child","meta","defaultProps","relatedEntity","maxCountLink","length","content","values","count","Popover","placement","NonBreakingText","entries","rootEntityName","prev","curr","linkText","Count","slice","Content","StyledSectionWrapper","StyledButtonsWrapper","StyledButton","Button","onClick","disabled","every","ink","Dialog","StyledIconWrapper","size","DeleteProgress","useEffect","LoadMask","required","loadingText","formatMessage","Delete","EXTERNAL_EVENTS","initApp","events","publicPath","store","appFactory","reducers","actionEmitter","emitAction","handleNotifications","notification","textResourceModules","DeleteApp","event","component","context","onSuccess","parent","getNode","pathname","defaultValues","model","value","formName","getDetailFormName","mode","onEntityCreated","toaster","ids","entityKey","push","entityId","onEntityUpdated","onEntityDeleted","initialize","moveElements","MoveContainer","isWaiting","docs","move","domainTypes","businessUnit","onError","initialNode","initialParent","useState","setParent","getCustomLocation","Error","memoryHistory","initialLocation","getInitialLocation","listLimit","selectionStyle","searchFormType","disableViewPersistor","getListFormName","onListParentChange","embedded","noLeftPadding","sortable","look","_isEqual","detailFormNames","SET_LAST_SAVE","setFormDefinition","formDefinition","loadDetailView","modelPaths","setEntity","submitForm","setLastSave","lastSave","Date","now","setEntityModel","unloadDetailView","navigateToCreate","relationName","setFieldDefinitions","fieldDefinitions","navigateToAction","definition","setMarked","marked","appId","touched","updateEntity","createEntity","paths","options","_paths","join","acceptedErrorCodes","resource","resp","errorCode","SubmissionError","form","errors","headers","get","pop","ErrorItem","decode","StyledErrorItemWrapper","formErrors","output","elements","hasFieldErrors","hasValidatorErrors","hasRelatedEntityErrors","validatorErrors","relatedEntityErrorsCompact","outdatedError","selectUnit","updateTimestamp","timeStampValue","unit","titleId","sameEntity","ago","user","updateUser","idx","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","takeEvery","debounce","formActionTypes","actionExtensions","fieldName","autoCompleteEndpoint","triggerField","getFormValues","formValues","currentFieldValue","formActions","field","fieldDefinition","fd","formPaths","footerPaths","formDefaultValues","inputDefaultValues","defaultValuesFields","api","flattenEntity","createdEntityId","f","path","error","validationErrors","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","filter","componentType","displayExpressionsL","forEach","dE","dataType","displays","relationField","newValue","isArray","v2","display","reset","markable","fork","keepDirty","keepValues","navigateToCreateRelative","navigateToActionRelative","isCurrentEntity","entityDetailReducer","entityDetailSagas","StyledListApp","SubGrid","formBase","detailFormName","formField","reverseRelation","targetEntity","limit","showSearchForm","showLink","onRowClick","gridName","onNavigateToCreate","reverseRelationName","viewPersistor","onStoreCreate","SubGridContainer","undefined","StyledForm","StyledScrollbar","StyledSaveButton","hasErrors","StyledActionSpan","colors","secondary","submitting","icon","data-cy","label","pending","mouseOver","setMouseOver","stopPropagation","onMouseEnter","onMouseLeave","StyledFooterWrapper","colorizeText","StyledFooterItemWrapper","StyledFooterItemLabel","StyledSpan","declareNoneWrappingText","StyledFooterItemValue","StyledTimestampValueWrapper","StyledTimestampRelativeValue","labelId","ValueComp","valueComponent","diffValue","FormattedValue","create_timestamp","create_user","update_timestamp","update_user","version","DetailFooter","DetailFooterContainer","reduxForm","destroyOnUnmount","dirty","valid","anyTouched","formEl","useRef","useLayoutEffect","firstInput","current","querySelector","customRenderedActions","useMemo","save","actionDefinition","mark","onSubmit","preventDefault","onKeyDown","tagName","ref","fieldMappingType","readOnly","componentMapping","logError","_error","formInitialValues","getFormInitialValues","DetailForm","DetailView","validateSingleton","_isEmpty","this","msg","DetailFormContainer","validate","getSyncValidation","asyncValidate","handledAsyncValidate","asyncBlurFields","fD","getDispatchActions","new","fullscreen","ctrl","alt","code","DetailViewContainer","formApp","SimpleFormApp","listApp","EntityListApp","customActions","appComponent","actionAppComponent","viewName","formData","detailApp","EntityDetailApp","keyDown","shortcuts","dispatchActions","app","localeMap","German","French","Italian","handleOnChange","selectedDates","toISOString","useDatePickr","config","flatpickrInstance","setflatpickrInstance","fontFamily","locale","flatpickrOptions","calendarLocale","wrap","altInput","enableTime","defaultDate","appendTo","flatpickr","calendarContainer","style","initializeFlatPickr","destroy","StyledWrapper","DatePicker","wrapperElement","data-wrap","data-toggle","data-input","aria-label","withTheme","library","faChevronDoubleLeft","faChevronDoubleRight","faChevronRight","faChevronLeft","faChevronUp","faChevronDown","faGlobe","faPlus","faFolder","faFolders","faStar","faStarSolid","faTimes","faArrowRight","faArrowLeft","faFile","faFileAlt","faFileCode","faFileCsv","faFileExcel","faFileExport","faFileImport","faFilePdf","faFileSpreadsheet","faIdBadge","faCheck","faExclamation","faCircle","faCheckCircle","faGoogle","faFacebook","faFacebookF","faDropbox","faMicrosoft","faJira","faApple","faBars","faExternalLink","faPhone","faMapMarked","faSearch","faCog","faInfo","faHorizontalRule","faSync","faSquareFull","faCompress","faBook","faSortUp","faSortDown","faQuestionCircle","faEllipsisV","faMinus","faTimesCircle","faInfoCircle","faExclamationCircle","faTrash","faList","faSquare","faBell","faArrowToBottom","faArrowToTop","faSquareSolid","faBox","faBoxOpen","faNewspaper","faComment","faSave","faPen","faPaperclip","faAddressCard","faMailBulk","faSitemap","faBarcodeAlt","faAbacus","faCalendarCheck","faPhoneLaptop","faTasks","faChalkboardTeacher","faUsers","faChevronDoubleDown","faChevronDoubleUp","replace","color","fixedWidth","fill","d","icons","logo","height","aria-hidden","role","xmlns","viewBox","office","enableBackground","ToccoIcons","iconLibsFactories","fa","iconMap","toc","Icon","mapping","iconFactory","lib","fontSize","spin","faCircleNotch","ID","QUERY","getEntities","fetchEntities","selectionTypes","query","consoleLogger","propType","propName","componentName","exports","__esModule","canUseDOM","window","createElement","addEventListener","node","listener","attachEvent","removeEventListener","detachEvent","getConfirmation","callback","confirm","supportsHistory","ua","navigator","userAgent","indexOf","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","locationsAreEqual","createLocation","_extends","assign","i","arguments","source","prototype","hasOwnProperty","_resolvePathname2","_interopRequireDefault","_valueEqual2","_PathUtils","obj","default","currentLocation","parsePath","charAt","hash","decodeURI","URIError","a","b","addLeadingSlash","stripLeadingSlash","substr","hasBasename","prefix","RegExp","test","stripBasename","stripTrailingSlash","hashIndex","searchIndex","createPath","_warning2","_invariant2","_LocationUtils","_createTransitionManager2","_DOMUtils","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","getHashPath","href","substring","pushHashPath","replaceHashPath","globalHistory","canGoWithoutReload","_props$getUserConfirm","getUserConfirmation","_props$hashType","hashType","basename","_HashPathCoders$hashT","getDOMLocation","transitionManager","setState","nextState","notifyListeners","forceNextPop","ignorePath","handleHashChange","encodedPath","prevLocation","handlePop","confirmTransitionTo","revertPop","fromLocation","toLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","createHref","prevIndex","nextPaths","n","goBack","goForward","listenerCount","checkDOMListeners","isBlocked","block","prompt","unblock","setPrompt","listen","unlisten","appendListener","_typeof","Symbol","iterator","constructor","clamp","lowerBound","upperBound","Math","min","max","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","_props$keyLength","keyLength","createKey","random","toString","index","entry","nextIndex","nextEntries","splice","canGo","_warning","listeners","nextPrompt","fn","isActive","apply","item","_len","args","_key"],"mappings":"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","file":"chunk-docs-actions.4d26a36c311792924a4d.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport DocsBrowser from 'tocco-docs-browser/src/main'\nimport {AdminLink as StyledLink} from 'tocco-ui'\nimport queryString from 'query-string'\n\nimport {DetailLink} from '../../../entities/utils/navigationStrategy'\n\nexport const ListLink = ({entityName, entityKeys, children}) => {\n const rootNodes = entityKeys.map(key => ({entityName, key}))\n return <StyledLink to={`/docs?rootNodes=${JSON.stringify(rootNodes)}`} target=\"_blank\">{children}</StyledLink>\n}\n\nListLink.propTypes = {\n entityName: PropTypes.string.isRequired,\n children: PropTypes.any.isRequired,\n entityKeys: PropTypes.arrayOf(PropTypes.string)\n}\n\nconst DocsBrowserApp = props => {\n const queryParams = queryString.parse(props.history.location.search)\n\n return <DocsBrowser\n {...props}\n navigationStrategy={{\n ListLink,\n DetailLink\n }}\n {...queryParams.rootNodes && {rootNodes: JSON.parse(queryParams.rootNodes)}}\n searchFormCollapsed={props.searchFormCollapsed}\n onSearchFormCollapsedChange={({collapsed}) => {\n props.saveUserPreferences({'admin.list.searchFormCollapsed': collapsed})\n }}\n />\n}\n\nDocsBrowserApp.propTypes = {\n history: PropTypes.object.isRequired,\n searchFormCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func\n}\n\nexport default DocsBrowserApp\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport _get from 'lodash/get'\n\nimport DocsBrowserApp from './DocsBrowserApp'\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\n\nconst mapActionCreators = {\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n searchFormCollapsed: _get(state.preferences.userPreferences, 'admin.list.searchFormCollapsed', null)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DocsBrowserApp))\n","import DocsBrowserApp from './components/DocsBrowserApp'\n\nexport default {\n container: DocsBrowserApp\n}\n","export const LOAD_DIALOG_INFO = 'root/LOAD_DIALOG_INFO'\nexport const SET_DIALOG_INFO = 'delete/SET_DELETE_DIALOG_INFO'\nexport const DO_DELETE = 'delete/DO_DELETE'\nexport const SET_DELETING_IN_PROGRESS = 'delete/SET_DELETING_IN_PROGRESS'\nexport const ON_CANCEL = 'delete/ON_CANCEL'\nexport const SET_ENTITIES_TO_DELETE = 'delete/SET_ENTITIES_TO_DELETE'\n\nexport const\n loadDialogInfo = () => ({\n type: LOAD_DIALOG_INFO\n })\n\nexport const setDeleteDialogInfo = dialogInfo => ({\n type: SET_DIALOG_INFO,\n payload: {\n dialogInfo\n }\n})\n\nexport const doDelete = () => ({\n type: DO_DELETE\n})\n\nexport const setDeletingInProgress = deletingInProgress => ({\n type: SET_DELETING_IN_PROGRESS,\n payload: {\n deletingInProgress\n }\n})\n\nexport const onCancel = () => ({\n type: ON_CANCEL\n})\n\nexport const setEntitiesToDelete = entitiesToDelete => ({\n type: SET_ENTITIES_TO_DELETE,\n payload: {\n entitiesToDelete\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_DIALOG_INFO]: reducerUtil.singleTransferReducer('dialogInfo'),\n [actions.SET_ENTITIES_TO_DELETE]: reducerUtil.singleTransferReducer('entitiesToDelete'),\n [actions.SET_DELETING_IN_PROGRESS]: reducerUtil.singleTransferReducer('deletingInProgress')\n}\n\nconst initialState = {\n dialogInfo: null,\n entitiesToDelete: null,\n deletingInProgress: 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 _get from 'lodash/get'\nimport PropTypes from 'prop-types'\n\nconst deleteStatus = {\n DELETABLE: 'DELETABLE',\n DENIED_BY_CASCADE: 'DENIED_BY_CASCADE',\n NO_DELETE_PERMISSION: 'NO_DELETE_PERMISSION'\n}\n\nconst transformRelatedEntities = (relatedEntities, entityToDelete, deletable, currentBuId) => ({\n ...entityToDelete.affectedEntities.reduce((acc, affectedEntity) => ({\n ...acc,\n ...(deletable || affectedEntity.deleteStatus !== deleteStatus.DELETABLE\n ? {\n [affectedEntity.entityName]: {\n ..._get(acc,\n affectedEntity.entityName,\n {keys: [], keysOtherBu: [], entityLabel: affectedEntity.entityLabel}\n ),\n ...(affectedEntity.businessUnitId === null || affectedEntity.businessUnitId === currentBuId\n ? {\n keys: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keys'], []), affectedEntity.key])\n )\n }\n : {\n keysOtherBu: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keysOtherBu'], []), affectedEntity.key])\n )\n }\n )\n }\n }\n : {}\n )\n }), {...relatedEntities})\n})\n\nconst transformRootEntity = (rootEntities, entity, applyKeys = true) => {\n const {entityName, entityLabel, key} = entity.rootEntity\n if (key.includes('/')) {\n const [entityNameReal, keyReal] = key.split('/')\n return {\n ...rootEntities,\n [entityNameReal]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityNameReal, 'keys'], []), ...(applyKeys ? [keyReal] : [])]\n }\n }\n } else {\n return {\n ...rootEntities,\n [entityName]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityName, 'keys'], []), ...(applyKeys ? [key] : [])]\n }\n }\n }\n}\n\nconst isEntityDeletable = entityToDelete =>\n entityToDelete.rootEntity.deleteStatus === deleteStatus.DELETABLE\n && !entityToDelete.affectedEntities.find(affectedEntity => affectedEntity.deleteStatus !== deleteStatus.DELETABLE)\n\nexport const getDialogInfo = (response, currentBuId) => {\n const {entitiesToDelete} = response\n\n return entitiesToDelete.reduce((acc, entityToDelete) => {\n const deletable = isEntityDeletable(entityToDelete)\n const relatedAttr = deletable ? 'relatedDeletable' : 'relatedNotDeletable'\n return {\n ...acc,\n rootEntitiesDeletable: transformRootEntity(acc.rootEntitiesDeletable, entityToDelete, deletable),\n ...!deletable && {rootEntitiesNotDeletable: transformRootEntity(acc.rootEntitiesNotDeletable, entityToDelete)},\n [relatedAttr]: transformRelatedEntities(acc[relatedAttr], entityToDelete, deletable, currentBuId)\n }\n },\n {\n rootEntitiesDeletable: {},\n rootEntitiesNotDeletable: {},\n relatedDeletable: {},\n relatedNotDeletable: {},\n hasUnreadableEntities: !!entitiesToDelete.find(e => e.unreadableEntities)\n })\n}\n\nexport const getEntitiesToDelete = ({entitiesToDelete}) => ({\n entityName: _get(entitiesToDelete, '[0].rootEntity.entityName'),\n keys: entitiesToDelete.reduce((acc, entityToDelete) => [\n ...acc,\n ...(isEntityDeletable(entityToDelete) ? [entityToDelete.rootEntity.key] : [])\n ]\n , [])\n})\n\nexport const deleteEntityPropType = PropTypes.shape({\n entityLabel: PropTypes.string,\n keys: PropTypes.arrayOf(PropTypes.string),\n keysOtherBu: PropTypes.arrayOf(PropTypes.string)\n})\n\nexport const deleteInfoPropType = PropTypes.shape({\n rootEntitiesDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n rootEntitiesNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n hasUnreadableEntities: PropTypes.bool\n})\n","import {takeLatest, all, call, put, select} from 'redux-saga/effects'\nimport {rest, externalEvents} from 'tocco-app-extensions'\nimport {selection as selectionUtil} from 'tocco-util'\n\nimport * as actions from './actions'\nimport {getDialogInfo, getEntitiesToDelete} from '../../utils/deleteRequestParser'\n\nexport const inputSelector = state => state.input\nexport const textResourceSelector = state => state.intl.messages\nexport const entitiesToDeleteSelector = state => state.del.entitiesToDelete\n\nexport function* getDeleteBodyFromSelection() {\n const {selection} = yield select(inputSelector)\n\n const entities = yield call(selectionUtil.getEntities, selection, rest.fetchEntities)\n\n return {\n entityModel: entities.entityName,\n keys: entities.keys\n }\n}\n\nexport function* getDeleteEndpoint() {\n const {customDeleteEndpoint} = yield select(inputSelector)\n return customDeleteEndpoint || 'client/delete'\n}\n\nexport function* loadDialogInfo() {\n const body = yield call(getDeleteBodyFromSelection)\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const [deleteResponse, principal] = yield all([\n call(rest.requestSaga, `${deleteEndpoint}/dialog`, {method: 'POST', body}),\n call(rest.fetchPrincipal)\n ])\n\n const dialogInfo = yield call(getDialogInfo, deleteResponse.body, principal.currentBusinessUnit.id)\n yield put(actions.setDeleteDialogInfo(dialogInfo))\n\n const entitiesToDelete = yield call(getEntitiesToDelete, deleteResponse.body)\n yield put(actions.setEntitiesToDelete(entitiesToDelete))\n}\n\nexport function* doDelete() {\n const entitiesToDelete = yield select(entitiesToDeleteSelector)\n\n yield put(actions.setDeletingInProgress(true))\n const body = {\n entityModel: entitiesToDelete.entityName,\n keys: entitiesToDelete.keys\n }\n\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const response = yield call(rest.requestSaga, deleteEndpoint, {\n method: 'POST',\n body,\n acceptedStatusCodes: [409]\n })\n\n const textResources = yield select(textResourceSelector)\n if (response.ok) {\n const {body} = response\n\n const entities = Object.keys(body.deletedEntities).reduce((acc, entityName) => {\n return [\n ...acc,\n ...body.deletedEntities[entityName].map(key => ({entityName, key}))\n ]\n }, [])\n\n const remoteEvents = [{\n type: 'entity-delete-event',\n payload: {\n entities\n }\n }]\n\n yield put(externalEvents.fireExternalEvent('onSuccess', {\n message: textResources['client.delete.successfullyMessage'],\n remoteEvents\n }))\n } else {\n if (response.status === 409 && response.body.information) {\n yield put(externalEvents.fireExternalEvent('onError', {message: response.body.information}))\n } else {\n yield put(externalEvents.fireExternalEvent('onError', {message: textResources['client.delete.errorMessage']}))\n }\n }\n}\n\nexport function* onCancel() {\n yield put(externalEvents.fireExternalEvent('onCancel'))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_DIALOG_INFO, loadDialogInfo),\n takeLatest(actions.DO_DELETE, doDelete),\n takeLatest(actions.ON_CANCEL, onCancel)\n ])\n}\n","import del, {sagas as deleteSagas} from './delete'\n\nexport default {\n del\n}\n\nexport const sagas = [\n deleteSagas\n]\n","import _get from 'lodash/get'\nimport styled from 'styled-components'\n\nimport {StyledSignalListItem} from '../SignalList'\nimport {\n design,\n scale,\n shadeColor,\n theme\n} from '../utilStyles'\n\nconst ALLOWED_CONDITIONS = [\n design.condition.BASE,\n design.condition.DANGER,\n design.condition.SUCCESS,\n design.condition.WARNING\n]\n\nconst COLORS = {\n [design.condition.DANGER]: theme.color('signal.danger.paper'),\n [design.condition.SUCCESS]: theme.color('signal.success.paper'),\n [design.condition.WARNING]: theme.color('signal.warning.paper'),\n [design.condition.BASE]: props => shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst getColor = props => {\n const color = COLORS[props.condition]\n return color || shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst StyledSignalBox = styled.div`\n && {\n background-color: ${props => getColor(props)};\n padding: ${scale.space(-1)};\n margin-bottom: ${scale.space(-1)};\n border-radius: ${theme.radii('radii.regular')};\n\n &:last-child {\n margin-bottom: 0;\n }\n\n ${StyledSignalListItem} {\n color: inherit;\n }\n }\n`\n\nStyledSignalBox.propTypes = {\n condition: design.oneOfPropTypeAndCompletelyMapped(ALLOWED_CONDITIONS, COLORS)\n}\n\nexport {\n ALLOWED_CONDITIONS,\n StyledSignalBox as default\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport StyledSignalBox, {ALLOWED_CONDITIONS} from './StyledSignalBox'\nimport Typography from '../Typography'\nimport {design} from '../utilStyles'\n\n/**\n * Emphasize important information by context. Group them by utilizing several instances of <SignalBox/>.\n */\nconst SignalBox = props =>\n <StyledSignalBox condition={props.condition}>\n {props.title && <Typography.H5>{props.title}</Typography.H5>}\n {React.Children.map(props.children, child => React.cloneElement(child))}\n {props.meta && <Typography.Small>{props.meta}</Typography.Small>}\n </StyledSignalBox>\n\nSignalBox.defaultProps = {\n condition: design.condition.BASE\n}\n\nSignalBox.propTypes = {\n /**\n * Prefer <SignalList.List/> and <SignalList.Item/> to list items over any other typographic component.\n */\n children: PropTypes.node,\n /**\n * Background is colorized according condition. Default value is 'base'.\n * Possible values: base|danger|success|warning\n */\n condition: PropTypes.oneOf(ALLOWED_CONDITIONS),\n /**\n * Add loosely related but still important information as meta text (e.g. date, id, type).\n */\n meta: PropTypes.string,\n /**\n * Summarize information from whole signal box concise.\n */\n title: PropTypes.string\n}\n\nexport default SignalBox\n","import React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {Popover, Typography} from 'tocco-ui'\nimport PropTypes from 'prop-types'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst LinkPopOver = ({relatedEntity, children, maxCountLink}) => {\n if (relatedEntity.keys.length < maxCountLink && relatedEntity.keysOtherBu.length === 0) {\n return children\n }\n\n const content = <>\n {relatedEntity.keys.length > maxCountLink\n && <Typography.P>\n <FormattedMessage id=\"client.delete.tooManyRecords\"/>\n </Typography.P>\n }\n {relatedEntity.keysOtherBu.length > 0\n && <Typography.P>\n <FormattedMessage id=\"client.delete.recordInOtherBU\" values={{count: relatedEntity.keysOtherBu.length}}/>\n </Typography.P>\n }\n </>\n\n return <Popover\n content={content}\n placement=\"top\"\n >\n {children}\n </Popover>\n}\n\nLinkPopOver.propTypes = {\n relatedEntity: deleteEntityPropType.isRequired,\n maxCountLink: PropTypes.number.isRequired,\n children: PropTypes.element\n}\n\nexport default LinkPopOver\n","import React from 'react'\nimport {Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport LinkPopOver from './LinkPopOver'\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst NonBreakingText = styled.span`\n white-space: nowrap;\n`\n\nconst InfoPart = ({rootEntities, relatedEntities, maxCountLink, navigationStrategy}) => (\n <Typography.Span>\n <Typography.B>\n {\n Object.entries(rootEntities).map(([rootEntityName, rootEntity]) => (\n <span key={`root-entity-${rootEntityName}`}>\n {rootEntity.entityLabel} ({rootEntity.keys.length > 0 && navigationStrategy.ListLink\n ? <navigationStrategy.ListLink\n entityName={rootEntityName}\n entityKeys={rootEntity.keys}\n >\n {rootEntity.keys.length}\n </navigationStrategy.ListLink>\n : <Typography.Span>{rootEntity.keys.length}</Typography.Span>\n })</span>\n )).reduce((prev, curr) => [prev, ', ', curr])}\n </Typography.B>\n {\n Object.keys(relatedEntities).length > 0\n && <>\n <span> / </span>\n {Object.keys(relatedEntities).map(entityName => {\n const relatedEntity = relatedEntities[entityName]\n const linkText = [...relatedEntity.keys, ...relatedEntity.keysOtherBu].length\n\n const Count = relatedEntity.keys.length > 0 && navigationStrategy.ListLink\n ? <navigationStrategy.ListLink\n entityName={entityName}\n entityKeys={relatedEntity.keys.slice(0, maxCountLink)}\n >\n {linkText}\n </navigationStrategy.ListLink>\n : <Typography.Span>{linkText}</Typography.Span>\n\n const Content = <LinkPopOver relatedEntity={relatedEntity} maxCountLink={maxCountLink}>{Count}</LinkPopOver>\n\n return <React.Fragment\n key={'entity-info-' + entityName}>\n <NonBreakingText>{relatedEntity.entityLabel} ({Content})</NonBreakingText>\n </React.Fragment>\n }).reduce((prev, curr) => [prev, ', ', curr])}\n </>\n }\n\n </Typography.Span>\n)\n\nInfoPart.propTypes = {\n rootEntities: PropTypes.objectOf(\n PropTypes.shape({\n entityLabel: PropTypes.string.isRequired,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired\n })).isRequired,\n relatedEntities: PropTypes.objectOf(deleteEntityPropType).isRequired,\n maxCountLink: PropTypes.number,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default InfoPart\n","import styled from 'styled-components'\nimport {StyledButton, scale} from 'tocco-ui'\n\nexport const StyledSectionWrapper = styled.div`\n padding-top: ${scale.space(0.6)};\n`\n\nexport const StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Button, Typography, SignalBox} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\nimport {FormattedMessage} from 'react-intl'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledSectionWrapper, StyledButtonsWrapper} from './StyledComponents'\n\nconst Dialog = ({\n dialogInfo: {\n rootEntitiesDeletable,\n rootEntitiesNotDeletable,\n relatedDeletable,\n relatedNotDeletable,\n hasUnreadableEntities\n }, doDelete, onCancel, navigationStrategy\n}) => <>\n <Typography.P><FormattedMessage id=\"client.delete.confirmText\"/></Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={rootEntitiesDeletable}\n relatedEntities={relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n {Object.keys(rootEntitiesNotDeletable).length > 0\n && <StyledSectionWrapper>\n <Typography.P><FormattedMessage id=\"client.delete.textNotDeletable\"/></Typography.P>\n <InfoPart\n key=\"infopart-notdeletable\"\n rootEntities={rootEntitiesNotDeletable}\n relatedEntities={relatedNotDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </StyledSectionWrapper>\n }\n {hasUnreadableEntities\n && <StyledSectionWrapper>\n <SignalBox\n condition=\"warning\">\n <Typography.Span><FormattedMessage id=\"client.delete.unreadableEntities\"/></Typography.Span>\n </SignalBox>\n </StyledSectionWrapper>\n }\n <StyledSectionWrapper>\n <StyledButtonsWrapper>\n <Button\n onClick={doDelete}\n disabled={Object.keys(rootEntitiesDeletable).every(entity => rootEntitiesDeletable[entity].keys.length === 0)}\n >\n <FormattedMessage id=\"client.delete.deleteButton\"/>\n </Button>\n <Button\n ink=\"primary\"\n onClick={onCancel}\n >\n <FormattedMessage id=\"client.delete.cancelButton\"/>\n </Button>\n </StyledButtonsWrapper>\n </StyledSectionWrapper>\n </>\n\nDialog.propTypes = {\n onCancel: PropTypes.func.isRequired,\n doDelete: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default Dialog\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport {doDelete, onCancel} from '../../modules/delete/actions'\nimport Dialog from './Dialog'\n\nconst mapActionCreators = {\n doDelete,\n onCancel\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Dialog))\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledIconWrapper = styled.div`\n margin-bottom: ${scale.space(0.2)};\n`\n","import React from 'react'\nimport {LoadingSpinner, Typography} from 'tocco-ui'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledIconWrapper} from './StyledComponents'\n\nconst DeleteProgress = ({dialogInfo, navigationStrategy}) => {\n return <>\n <StyledIconWrapper>\n <LoadingSpinner size=\"30px\"/>\n </StyledIconWrapper>\n <Typography.P><FormattedMessage id=\"client.delete.deleteInProgress\"/></Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={dialogInfo.rootEntitiesDeletable}\n relatedEntities={dialogInfo.relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </>\n}\n\nDeleteProgress.propTypes = {\n dialogInfo: deleteInfoPropType.isRequired,\n intl: PropTypes.object.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default DeleteProgress\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport {doDelete} from '../../modules/delete/actions'\nimport DeleteProgress from './DeleteProgress'\n\nconst mapActionCreators = {\n doDelete\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DeleteProgress))\n","import DeleteProgress from './DeleteProgressContainer'\n\nexport default DeleteProgress\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {LoadMask} from 'tocco-ui'\n\nimport Dialog from '../Dialog'\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport DeleteProgress from '../DeleteProgress'\n\nconst Delete = ({loadDialogInfo, dialogInfo, deletingInProgress, intl}) => {\n useEffect(() => {\n loadDialogInfo()\n }, [])\n\n const msg = id => intl.formatMessage({id})\n\n if (deletingInProgress) {\n return <DeleteProgress/>\n }\n\n return (\n <LoadMask\n required={[dialogInfo]}\n loadingText={msg('client.delete.loadingText')}\n >\n {dialogInfo && <Dialog/>}\n </LoadMask>\n )\n}\n\nDelete.propTypes = {\n loadDialogInfo: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType,\n deletingInProgress: PropTypes.bool,\n intl: PropTypes.object.isRequired\n}\n\nexport default Delete\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport Delete from './Delete'\nimport {loadDialogInfo} from '../../modules/delete/actions'\n\nconst mapActionCreators = {\n loadDialogInfo\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n deletingInProgress: state.del.deletingInProgress\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Delete))\n","import Delete from './DeleteContainer'\n\nexport default Delete\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {reducer as reducerUtil, selection} from 'tocco-util'\nimport {actionEmitter, appFactory, externalEvents, notification} from 'tocco-app-extensions'\n\nimport reducers, {sagas} from './modules/reducers'\nimport Delete from './components/Delete'\n\nconst packageName = 'delete'\n\nconst EXTERNAL_EVENTS = [\n 'onSuccess',\n 'onCancel',\n 'onError',\n 'emitAction'\n]\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <Delete/>\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n }\n )\n}\n\n(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\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 const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n fetchMock.spy()\n }\n\n const app = initApp(packageName, input)\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 appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nconst DeleteApp = props => {\n const events = EXTERNAL_EVENTS.reduce((acc, event) => ({\n ...acc,\n ...(props[event] ? {[event]: props[event]} : {})\n }), {})\n\n return initApp('delete', props, events).component\n}\n\nDeleteApp.propTypes = {\n selection: selection.propType.isRequired,\n customDeleteEndpoint: PropTypes.string\n}\n\nexport default DeleteApp\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {injectIntl} from 'react-intl'\n\nimport getNode from '../../../utils/getNode'\nimport getDetailFormName from '../../../utils/getDetailFormName'\n\nconst CreateDomain = ({context, onSuccess, intl, emitAction}) => {\n const emitActionBarrier = action => {\n if (action.payload && action.payload.toaster\n && action.payload.toaster.title !== 'client.entity-detail.createSuccessfulTitle') {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [{\n type: 'entity-create-event',\n payload: {\n entities: [{\n entityName: 'Docs_list_item',\n key: `Domain/${id}`\n }]\n }\n }]\n\n onSuccess({\n message: intl.formatMessage({id: 'client.docs-browser.createDomainSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(context.history.location.pathname)\n const defaultValues = parent\n ? [\n {id: `rel${parent.model}`, value: parent.key}\n ]\n : []\n\n const formName = getDetailFormName(context, 'Domain')\n\n return <EntityDetailApp\n entityName=\"Domain\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n}\n\nCreateDomain.propTypes = {\n context: PropTypes.shape({\n history: PropTypes.shape({\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired\n }).isRequired\n }).isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default injectIntl(CreateDomain)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {injectIntl} from 'react-intl'\n\nimport getNode from '../../../utils/getNode'\nimport getDetailFormName from '../../../utils/getDetailFormName'\n\nconst CreateFolder = ({context, onSuccess, intl, emitAction}) => {\n const emitActionBarrier = action => {\n if (action.payload && action.payload.toaster\n && action.payload.toaster.title !== 'client.entity-detail.createSuccessfulTitle') {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [{\n type: 'entity-create-event',\n payload: {\n entities: [{\n entityName: 'Docs_list_item',\n key: `Folder/${id}`\n }]\n }\n }]\n\n onSuccess({\n message: intl.formatMessage({id: 'client.docs-browser.createFolderSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(context.history.location.pathname)\n const defaultValues = parent\n ? [\n {id: `rel${parent.model}`, value: parent.key}\n ]\n : []\n\n const formName = getDetailFormName(context, 'Folder')\n\n return <EntityDetailApp\n entityName=\"Folder\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n}\n\nCreateFolder.propTypes = {\n context: PropTypes.shape({\n history: PropTypes.shape({\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired\n }).isRequired\n }).isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default injectIntl(CreateFolder)\n","import React from 'react'\nimport DeleteApp from 'tocco-delete/src/main'\n\nexport default props => <DeleteApp {...props} customDeleteEndpoint={'documents/delete'}/>\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {selection} from 'tocco-util'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\n\nconst EditAction = ({selection, onSuccess, onCancel, intl, context, emitAction}) => {\n const emitActionBarrier = action => {\n if (action.payload && action.payload.title !== 'client.entity-detail.saveSuccessfulTitle') {\n emitAction(action)\n }\n }\n\n const [entityName, entityKey] = selection.ids[0].split('/')\n\n if (entityName === 'Resource') {\n context.history.push(`/docs/doc/${entityKey}/detail`)\n onCancel()\n }\n\n const handleEntityUpdated = () => {\n const remoteEvents = [{\n type: 'entity-update-event',\n payload: {\n entities: [{\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }]\n }\n }]\n\n onSuccess({\n message: null,\n remoteEvents\n })\n }\n\n const handleEntityDeleted = () => {\n const remoteEvents = [{\n type: 'entity-delete-event',\n payload: {\n entities: [{\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }]\n }\n }]\n\n onSuccess({\n message: null,\n remoteEvents\n })\n }\n\n const formName = getDetailFormName(context, entityName)\n\n return <EntityDetailApp\n entityName={entityName}\n formName={formName}\n entityId={entityKey}\n mode=\"update\"\n onEntityUpdated={handleEntityUpdated}\n onEntityDeleted={handleEntityDeleted}\n emitAction={emitActionBarrier}\n />\n}\n\nEditAction.propTypes = {\n selection: selection.propType,\n context: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired\n }).isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default injectIntl(EditAction)\n","import React, {useEffect, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {selection} from 'tocco-util'\nimport {Button, LoadMask, StyledButton} from 'tocco-ui'\nimport styled from 'styled-components'\nimport _isEqual from 'lodash/isEqual'\n\nimport DocsBrowser from '../../../main'\nimport getNode from '../../../utils/getNode'\n\nconst StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n\nexport const MoveAction = ({\n selection,\n onSuccess,\n onError,\n context,\n initialize,\n moveElements,\n isWaiting,\n domainTypes,\n rootNodes,\n businessUnit,\n emitAction\n}) => {\n const initialNode = getNode(context.history.location.pathname)\n const initialParent = {model: 'Docs_list_item', key: `${initialNode.model}/${initialNode.key}`}\n const [parent, setParent] = useState(initialParent)\n\n useEffect(() => {\n initialize(selection, onSuccess, onError)\n }, [])\n\n const getCustomLocation = (model, key) => {\n switch (model) {\n case 'Domain':\n return `/docs/domain/${key}/list`\n case 'Folder':\n return `/docs/folder/${key}/list`\n case 'Resource':\n return\n default:\n throw new Error(`Unexpected model: ${model}`)\n }\n }\n\n const getInitialLocation = () => {\n if (parent === null) {\n return null\n }\n const [model, key] = parent.key.split('/')\n return getCustomLocation(model, key)\n }\n\n return <LoadMask required={[!isWaiting]}>\n <DocsBrowser\n memoryHistory={true}\n initialLocation={getInitialLocation()}\n listLimit={10}\n selectionStyle=\"none\"\n searchFormType=\"none\"\n disableViewPersistor={true}\n getListFormName={parent => parent === null ? 'Move_root_docs_list_item' : 'Move_docs_list_item'}\n onListParentChange={parent => setParent(parent)}\n getCustomLocation={getCustomLocation}\n navigationStrategy={{}}\n embedded={true}\n emitAction={emitAction}\n noLeftPadding={true}\n domainTypes={domainTypes}\n rootNodes={rootNodes}\n businessUnit={businessUnit}\n sortable={false}\n />\n <StyledButtonsWrapper>\n <Button\n onClick={() => moveElements(parent.key, selection.ids)}\n look=\"raised\"\n ink=\"primary\"\n disabled={parent === null || _isEqual(parent, initialParent)}\n >\n <FormattedMessage id=\"client.actions.dms-move.button\"/>\n </Button>\n </StyledButtonsWrapper>\n </LoadMask>\n}\n\nMoveAction.propTypes = {\n selection: selection.propType,\n onSuccess: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n context: PropTypes.shape({\n history: PropTypes.shape({\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired\n }).isRequired\n }).isRequired\n }).isRequired,\n initialize: PropTypes.func.isRequired,\n moveElements: PropTypes.func.isRequired,\n isWaiting: PropTypes.bool.isRequired,\n domainTypes: PropTypes.arrayOf(PropTypes.string),\n rootNodes: PropTypes.arrayOf(PropTypes.shape({\n entityName: PropTypes.string,\n key: PropTypes.string\n })),\n businessUnit: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n","import React from 'react'\nimport {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport {initialize, moveElements} from '../../../modules/move/actions'\nimport {MoveAction} from './Move'\n\nconst mapActionCreators = {\n initialize,\n moveElements\n}\n\nconst mapStateToProps = state => ({\n isWaiting: state.docs.move.isWaiting,\n domainTypes: state.input.domainTypes,\n rootNodes: state.input.rootNodes,\n businessUnit: state.input.businessUnit\n})\n\nconst MoveContainer = connect(mapStateToProps, mapActionCreators)(MoveAction)\n\nexport default injectIntl(props => <MoveContainer {...props}/>)\n","const getDetailFormName = (context, entityName) =>\n context.detailFormNames && context.detailFormNames[entityName]\n ? context.detailFormNames[entityName]\n : `Dms${entityName}`\n\nexport default getDetailFormName\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: [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 === 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 {scale} from 'tocco-ui'\nimport {selectUnit} from '@formatjs/intl-utils'\nimport {decode} from 'html-entities'\n\nexport const ErrorItem = ({message}) =>\n <div>\n {decode(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.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, false)\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 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, useLayoutEffect, useMemo, useRef} from 'react'\nimport {reduxForm} from 'redux-form'\nimport {form} from 'tocco-app-extensions'\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 useLayoutEffect(() => {\n const firstInput = formEl.current.querySelector('input:not([disabled]),textarea:not([disabled])')\n\n if (firstInput != null) {\n firstInput.focus()\n }\n }, [])\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 {reducer as reducerUtil, navigationStrategy} from 'tocco-util'\nimport {\n appFactory,\n notification,\n errorLogging,\n actionEmitter,\n externalEvents,\n actions,\n formData,\n keyDown\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 '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 })\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 actionAppComponent: PropTypes.func\n}\n\nexport default EntityDetailApp\n","import {domAnimation} from 'framer-motion'\nexport default domAnimation\n","import {useEffect, useState} from 'react'\nimport '!style-loader!css-loader!flatpickr/dist/themes/light.css'\nimport flatpickr from 'flatpickr'\nimport {German} from 'flatpickr/dist/l10n/de.js'\nimport {French} from 'flatpickr/dist/l10n/fr.js'\nimport {Italian} from 'flatpickr/dist/l10n/it.js'\n\nconst localeMap = {\n 'de-CH': German,\n 'de': German,\n 'fr': French,\n 'it': Italian\n}\n\nconst handleOnChange = onChange => selectedDates => {\n if (selectedDates && selectedDates.length > 0) {\n onChange(selectedDates[0].toISOString())\n } else {\n onChange(null)\n }\n}\n\nconst initializeFlatPickr = (element, {onChange, value, fontFamily, locale, flatpickrOptions}) => {\n const calendarLocale = localeMap[locale]\n\n const options = {\n ...(calendarLocale ? {locale: calendarLocale} : {}),\n wrap: true,\n onChange: handleOnChange(onChange),\n altInput: false,\n enableTime: false,\n defaultDate: value,\n appendTo: element.current,\n\n ...(localeMap[locale] && {locale: localeMap[locale]}),\n ...flatpickrOptions\n }\n\n const flatpickrInstance = flatpickr(element.current, options)\n\n if (fontFamily) {\n flatpickrInstance.calendarContainer.style.fontFamily = fontFamily\n }\n\n return flatpickrInstance\n}\n\nexport const useDatePickr = (element, config) => {\n const [flatpickrInstance, setflatpickrInstance] = useState(null)\n useEffect(() => {\n if (element) {\n setflatpickrInstance(initializeFlatPickr(element, config))\n }\n\n return () => {\n if (flatpickrInstance) {\n flatpickrInstance.destroy()\n }\n }\n }, [element, config.locale, config.value])\n}\n","import styled from 'styled-components'\n\nimport {scale} from '../utilStyles'\n\nexport const StyledWrapper = styled.div`\n cursor: pointer;\n\n .flatpickr-calendar.open {\n margin-top: ${scale.space(1.2)};\n }\n\n .flatpickr-calendar.arrowTop:before,\n .flatpickr-calendar.arrowTop:after {\n left: 83%;\n }\n`\n","import React, {useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport {withTheme} from 'styled-components'\n\nimport {theme} from '../utilStyles'\nimport {useDatePickr} from './useDatePickr'\nimport {StyledWrapper} from './StyledDatePicker'\n\nexport const DatePicker = props => {\n const {value, children, intl, onChange} = props\n const wrapperElement = useRef(null)\n const locale = intl.locale\n const msg = id => intl.formatMessage({id})\n\n const fontFamily = theme.fontFamily('regular')(props)\n\n useDatePickr(wrapperElement, {value, onChange, fontFamily, locale})\n\n return (\n <>\n <StyledWrapper\n data-wrap\n ref={wrapperElement}\n >\n <div data-toggle>\n <input\n style={{display: 'none'}}\n type=\"text\"\n data-input\n aria-label={msg('client.component.datePicker.label')}\n />\n {children}\n </div>\n </StyledWrapper>\n </>\n )\n}\n\nDatePicker.propTypes = {\n /**\n * Any content to wrap a onclick around to open a calendar\n */\n children: PropTypes.node.isRequired,\n /**\n * Function triggered on every date selection. First parameter is the picked date as iso string.\n */\n onChange: PropTypes.func.isRequired,\n /**\n * To set the selected date from outside the component.\n */\n value: PropTypes.any,\n intl: PropTypes.object.isRequired\n}\n\nexport default withTheme(injectIntl(DatePicker))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport _get from 'lodash/get'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {library} from '@fortawesome/fontawesome-svg-core'\nimport {\n faSquare as faSquareSolid, faSquareFull, faStar as faStarSolid, faPaperclip\n} from '@fortawesome/pro-solid-svg-icons'\nimport {\n faTimes, faCircle, faHorizontalRule, faSync, faMinus, faTimesCircle, faInfoCircle,\n faCheckCircle, faExclamationCircle, faTrash, faList, faPhone, faSearch, faFolder,\n faExternalLink, faChevronDoubleRight, faChevronDoubleLeft, faChevronRight, faChevronLeft, faChevronUp, faChevronDown,\n faPlus, faGlobe, faFileExcel, faFilePdf, faFile, faSortDown, faSortUp, faArrowRight, faArrowLeft, faQuestionCircle,\n faCog, faFolders, faStar, faFileAlt, faFileCode, faFileCsv, faFileExport, faFileImport, faFileSpreadsheet, faIdBadge,\n faCheck, faMapMarked, faBars, faInfo, faCompress, faBook, faEllipsisV, faSquare, faExclamation, faBell,\n faArrowToBottom, faArrowToTop, faBox, faBoxOpen, faNewspaper, faComment, faSave, faPen, faAddressCard,\n faMailBulk, faSitemap, faBarcodeAlt, faAbacus, faCalendarCheck, faPhoneLaptop, faTasks, faChalkboardTeacher, faUsers,\n faChevronDoubleDown, faChevronDoubleUp\n} from '@fortawesome/pro-light-svg-icons'\nimport {\n faApple, faDropbox, faFacebook, faFacebookF, faGoogle, faJira, faMicrosoft\n} from '@fortawesome/free-brands-svg-icons'\n\n(() => {\n library.add(\n faChevronDoubleLeft, faChevronDoubleRight, faChevronRight,\n faChevronLeft, faChevronUp, faChevronDown, faGlobe, faPlus, faFolder, faFolders, faStar, faStarSolid,\n faTimes, faArrowRight, faArrowLeft, faFile, faFileAlt, faFileCode, faFileCsv, faFileExcel, faFileExport,\n faFileImport, faFilePdf, faFileSpreadsheet, faIdBadge, faCheck, faExclamation, faCircle,\n faCheckCircle, faGoogle, faFacebook, faFacebookF, faDropbox, faMicrosoft, faJira, faApple, faBars, faExternalLink,\n faPhone, faMapMarked, faSearch, faCog, faInfo, faHorizontalRule, faSync, faSquareFull,\n faCompress, faBook, faSortUp, faSortDown, faQuestionCircle, faEllipsisV, faMinus, faTimesCircle, faInfoCircle,\n faExclamationCircle, faTrash, faList, faSquare, faBell, faArrowToBottom, faArrowToTop, faSquareSolid, faBox,\n faBoxOpen, faNewspaper, faComment, faSave, faPen, faPaperclip, faAddressCard,\n faMailBulk, faSitemap, faBarcodeAlt, faAbacus, faCalendarCheck, faPhoneLaptop, faTasks,\n faChalkboardTeacher, faUsers, faChevronDoubleDown, faChevronDoubleUp)\n})()\n\n/**\n * The following icons are solely used to support custom display expressions and should not be removed: faSquareSolid\n */\n\nconst FontAwesomeAdapter = ({\n icon,\n style\n}) =>\n <FontAwesomeIcon\n icon={icon.includes(',') ? icon.replace(/\\s+/, '').split(',') : icon}\n style={style}\n {..._get(style, 'color') && {color: style.color}}\n fixedWidth\n />\n\nFontAwesomeAdapter.propTypes = {\n icon: PropTypes.string.isRequired,\n style: PropTypes.object\n}\n\nexport default FontAwesomeAdapter\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport _get from 'lodash/get'\n\nconst icons = {\n logo: style => (\n <svg height={_get(style, 'fontSize', 20)} {...style} aria-hidden=\"true\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d={`M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 \n 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z`}\n />\n </svg>\n ),\n office: style => {\n return <svg height={_get(style, 'fontSize', 20)} {...style} aria-hidden=\"true\" role=\"img\"\n enableBackground=\"new 0 0 2075 2499.8\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 2075 2499.8\">\n <path\n fill=\"currentColor\"\n d={`m0 2016.6v-1519.8l1344.4-496.8 730.6 233.7v2045.9l-730.6 220.3-1344.4-483.3 1344.4 \n 161.8v-1769.2l-876.8 204.6v1198.3z`}\n />\n </svg>\n }\n}\n\nconst ToccoIcons = ({icon, style}) =>\n icons[icon](style)\n\nToccoIcons.propTypes = {\n icon: PropTypes.string.isRequired,\n style: PropTypes.object\n}\n\nexport default ToccoIcons\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport mapping from './mapping'\nimport FontAwesomeAdapter from './FontAwesomeAdapter'\nimport ToccoIcons from './ToccoIcons'\n\nconst iconLibsFactories = {\n fa: (iconMap, props) => <FontAwesomeAdapter {...props} icon={iconMap.id}/>,\n toc: (iconMap, props) => <ToccoIcons {...props} icon={iconMap.id}/>\n}\n\nexport const Icon = props => {\n const iconMap = mapping[props.icon]\n\n if (!iconMap) {\n return null\n }\n\n const iconFactory = iconLibsFactories[iconMap.lib]\n return iconFactory ? iconFactory(iconMap, props) : null\n}\n\nIcon.propTypes = {\n /**\n * id of icon. Full list can be found in mapping.json file or showcase deployment.\n */\n icon: PropTypes.string.isRequired,\n /**\n * CSS Styles object. Color property can be used to colorize the icon and fontSize for the size.\n */\n style: PropTypes.objectOf(PropTypes.string)\n}\n\nexport default Icon\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport {faCircleNotch} from '@fortawesome/pro-solid-svg-icons'\n\n/**\n * Spinner that indicates a loading process\n */\nconst LoadingSpinner = ({size, style}) => (\n <FontAwesomeIcon\n {...style}\n style={{fontSize: size}}\n spin\n icon={faCircleNotch}\n />\n)\n\nLoadingSpinner.propTypes = {\n /**\n * Specify width and height.\n */\n size: PropTypes.string,\n /**\n * css properties object. color can be used to set the color of the spinner\n */\n style: PropTypes.object\n}\n\nexport default LoadingSpinner\n","export default {\n ID: 'ID',\n QUERY: 'QUERY'\n}\n","import {call} from 'redux-saga/effects'\n\nimport consoleLogger from '../consoleLogger'\nimport selectionTypes from './selectionTypes'\n\nconst limit = 100000\n/**\n * Helper to get all entitiy keys of a selection.\n * @param {object} selection - selection object\n * @param {function} fetchEntities - rest helper function\n * @returns {object} Object containing entityName and an array of keys (limited if selection is query)\n */\nexport function* getEntities(selection, fetchEntities) {\n const {entityName} = selection\n if (selection.type === selectionTypes.QUERY) {\n const entities = yield call(fetchEntities, selection.entityName, {...selection.query, limit})\n\n if (entities.length > limit) {\n yield call(consoleLogger.logError, `Selected records exceed limit of ${limit}`)\n }\n\n return {\n entityName,\n keys: entities.map(e => e.key)\n }\n }\n\n return {\n entityName,\n keys: selection.ids\n }\n}\n","import PropTypes from 'prop-types'\n\nimport selectionTypes from './selectionTypes'\n\nexport default PropTypes.shape({\n entityName: PropTypes.string.isRequired,\n ids: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.ID && !props.selection[propName]) {\n return new Error(`Selection.ids prop not defined. Component: ${componentName}'.`)\n }\n },\n query: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.QUERY && !props.selection[propName]) {\n return new Error(`Selection.query prop not defined. Component: ${componentName}'.`)\n }\n },\n type: PropTypes.oneOf(Object.keys(selectionTypes)).isRequired,\n count: PropTypes.number\n})\n","import {getEntities} from './selection'\nimport propType from './proptype'\nimport selectionTypes from './selectionTypes'\nexport default {\n getEntities,\n propType,\n selectionTypes\n}\n","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nvar getConfirmation = exports.getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nvar supportsPopStateOnHashChange = exports.supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nvar isExtraneousPopstateEvent = exports.isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.createLocation = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _resolvePathname = require('resolve-pathname');\n\nvar _resolvePathname2 = _interopRequireDefault(_resolvePathname);\n\nvar _valueEqual = require('value-equal');\n\nvar _valueEqual2 = _interopRequireDefault(_valueEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createLocation = exports.createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = (0, _PathUtils.parsePath)(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = (0, _resolvePathname2.default)(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && (0, _valueEqual2.default)(a.state, b.state);\n};","'use strict';\n\nexports.__esModule = true;\nvar addLeadingSlash = exports.addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar stripLeadingSlash = exports.stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nvar hasBasename = exports.hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nvar stripBasename = exports.stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nvar stripTrailingSlash = exports.stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _DOMUtils = require('./DOMUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + (0, _PathUtils.stripLeadingSlash)(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: _PathUtils.stripLeadingSlash,\n decodePath: _PathUtils.addLeadingSlash\n },\n slash: {\n encodePath: _PathUtils.addLeadingSlash,\n decodePath: _PathUtils.addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n (0, _invariant2.default)(_DOMUtils.canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? _DOMUtils.getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n (0, _warning2.default)(!basename || (0, _PathUtils.hasBasename)(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = (0, _PathUtils.stripBasename)(path, basename);\n\n return (0, _LocationUtils.createLocation)(path);\n };\n\n var transitionManager = (0, _createTransitionManager2.default)();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && (0, _LocationUtils.locationsAreEqual)(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === (0, _PathUtils.createPath)(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf((0, _PathUtils.createPath)(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf((0, _PathUtils.createPath)(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [(0, _PathUtils.createPath)(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + (0, _PathUtils.createPath)(location));\n };\n\n var push = function push(path, state) {\n (0, _warning2.default)(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = (0, _LocationUtils.createLocation)(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = (0, _PathUtils.createPath)(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf((0, _PathUtils.createPath)(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n (0, _warning2.default)(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n (0, _warning2.default)(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = (0, _LocationUtils.createLocation)(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = (0, _PathUtils.createPath)(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf((0, _PathUtils.createPath)(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n (0, _warning2.default)(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexports.default = createHashHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = (0, _createTransitionManager2.default)();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? (0, _LocationUtils.createLocation)(entry, undefined, createKey()) : (0, _LocationUtils.createLocation)(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = _PathUtils.createPath;\n\n var push = function push(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexports.default = createMemoryHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n (0, _warning2.default)(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n (0, _warning2.default)(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexports.default = createTransitionManager;"],"sourceRoot":""}
|