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,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunktocco_admin=self.webpackChunktocco_admin||[]).push([[564],{89564:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>un});var r=n(14890),o=n(59713),a=n.n(o),c=n(87757),i=n.n(c),s=n(7026),l=n(58239),u=n(35937),p=n.n(u),d=n(57557),f=n.n(d),m=n(78718),h=n.n(m),y=n(34857),v=function(e,t){return{type:"path/SET_CURRENT_VIEW_INFO",payload:{location:e,currentViewInfo:t}}},g=function(e){return{type:"path/SET_RELATIONS",payload:{relations:e}}},E=function(e){return{type:"path/SET_RELATIONS_INFO",payload:{relationsInfo:e}}},b=n(11494),w=n.n(b);function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?x(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var P=function(e){var t=[],n=w()("/e/:entity/:key?/:relation*/:view(list|detail|edit|create|relations|action)/:actionId?",t).exec(e);if(null!==n)return t.reduce((function(e,t,r){return Z(Z({},e),{},a()({},t.name,n[r+1]))}),{});var r=w()("/e/action/:actionId",t).exec(e);return null!==r?{actionId:r[1]}:null};function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?S(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var k=i().mark(I),R=i().mark(T),C=i().mark(D),A=i().mark(j),N=i().mark(V);function I(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,y.$6)([(0,y.Fm)("path/LOAD_CURRENT_ROUTE",T)]);case 2:case"end":return e.stop()}}),k)}function T(e){var t,n,r,o,a;return i().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return t=e.payload.location,n=t.pathname,c.next=4,(0,y.RE)(D,n);case 4:if(!((r=c.sent).length>0)){c.next=21;break}return c.next=8,(0,y.RE)(_,n,r);case 8:return o=c.sent,c.next=11,(0,y.gz)(v(n,o));case 11:return c.next=13,(0,y.RE)(F,r);case 13:return a=c.sent,c.next=16,(0,y.gz)({type:"path/SET_BREADCRUMBS_INFO",payload:{breadcrumbsInfo:a}});case 16:if("detail"!==o.type||o.error){c.next=19;break}return c.next=19,(0,y.Cs)(j,o.model,o.key);case 19:return c.next=21,(0,y.RE)(l.Z.clearPersistedViews,o.level+1);case 21:case"end":return c.stop()}}),R)}function D(e){var t,n,r,o,a,c,l,u,p,d,f,m,h,v,g,E,b;return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,(0,y.RE)(P,e);case 2:if(t=i.sent,n=[],null!==t){i.next=6;break}return i.abrupt("return",n);case 6:if(!t.entity){i.next=70;break}return i.prev=7,i.next=10,(0,y.RE)(s.Z.fetchModel,t.entity);case 10:r=i.sent,n.push({type:"list",model:r}),i.next=18;break;case 14:return i.prev=14,i.t0=i.catch(7),n.push({type:"list",error:{entityName:t.entity}}),i.abrupt("return",n);case 18:if(!t.key){i.next=67;break}return i.next=21,(0,y.RE)(s.Z.entityExists,r.name,t.key);case 21:if(!i.sent){i.next=29;break}return i.next=25,(0,y.RE)(s.Z.fetchDisplay,r.name,t.key);case 25:o=i.sent,n.push({type:"detail",key:t.key,model:r,display:o}),i.next=31;break;case 29:return n.push({type:"detail",error:{entityName:r.label,key:t.key}}),i.abrupt("return",n);case 31:if(!t.relation){i.next=67;break}a=t.relation.split("/"),c=0;case 34:if(!(c<a.length)){i.next=67;break}if(l=a[c],u=n[n.length-1],c%2!=0){i.next=50;break}if(p=l,d=u.model.paths[p]){i.next=43;break}return n.push({type:"list",error:{relationName:p,entityName:u.model.name}}),i.abrupt("return",n);case 43:return f=d.targetEntity,i.next=46,(0,y.RE)(s.Z.fetchModel,f);case 46:m=i.sent,n.push({type:"list",model:m,relationName:p,parent:u}),i.next=64;break;case 50:return h=l,v=u.model,i.next=54,(0,y.RE)(s.Z.entityExists,r.name,t.key);case 54:if(!i.sent){i.next=62;break}return i.next=58,(0,y.RE)(s.Z.fetchDisplay,v.name,h);case 58:g=i.sent,n.push({type:"detail",model:v,key:h,display:g,relationName:u.relationName,parent:u.parent}),i.next=64;break;case 62:return n.push({type:"detail",error:{entityName:v.name,key:h}}),i.abrupt("return",n);case 64:c++,i.next=34;break;case 67:"create"===t.view?(E=n[n.length-1],b=n[n.length-2],n.push({type:"create",model:E.model,parent:b,relationName:E.relationName})):t.actionId&&n.push({type:"action",actionId:t.actionId}),i.next=71;break;case 70:t.actionId&&n.push({type:"action",actionId:t.actionId});case 71:return i.abrupt("return",n);case 72:case"end":return i.stop()}}),C,null,[[7,14]])}var _=function(e,t){var n=t[t.length-1],r=n.parent;return O(O({},f()(n,["parent"])),{},{pathname:e,level:t.length-1},r&&n.relationName&&{parentKey:r.key,reverseRelation:r.model.paths[n.relationName].reverseRelationName,parentModel:r.model})},F=function(e){var t="";return e.map((function(e){return e.error?{type:"error"}:"action"===e.type?null:(t=(t?t+"/":"")+(e.key?e.key:e.relationName||e.model.name),{type:e.type,display:e.display||e.model.label,path:t+"/"+e.type})})).filter((function(e){return e}))};function j(e,t){var n,r;return i().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return n=p()(e.paths,(function(e,t){return e.relationDisplay&&e.relationDisplay.show})),r=Object.keys(n).map((function(e){return h()(n[e],["relationName","reverseRelationName","targetEntity","relationDisplay.label","relationDisplay.order"])})).sort((function(e,t){return e.relationDisplay.order>t.relationDisplay.order?1:-1})),o.next=4,(0,y.gz)(g(r));case 4:return o.next=6,(0,y.RE)(V,e.name,t);case 6:case"end":return o.stop()}}),A)}function V(e,t){var n,r,o;return i().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return n="client/entities/".concat(e,"/").concat(t,"/relations"),a.next=3,(0,y.RE)(s.Z.requestSaga,n);case 3:return r=a.sent,o=r.body.relations,a.next=7,(0,y.gz)(E(o));case 7:case"end":return a.stop()}}),N)}var L,M=n(60954);function z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function U(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?z(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var $=(L={},a()(L,"path/SET_CURRENT_VIEW_INFO",(function(e,t){var n=t.payload,r=n.location,o=n.currentViewInfo;return U(U({},e),{},{currentViewInfos:U(U({},e.currentViewInfos),{},a()({},r,o))})})),a()(L,"path/SET_BREADCRUMBS_INFO",M.Z.singleTransferReducer("breadcrumbsInfo")),a()(L,"path/SET_RELATIONS",M.Z.singleTransferReducer("relations")),a()(L,"path/SET_RELATIONS_INFO",M.Z.singleTransferReducer("relationsInfo")),a()(L,"path/SET_CURRENT_VIEW_TITLE",M.Z.singleTransferReducer("currentViewTitle")),L),W={currentViewInfos:{},breadcrumbsInfo:[],relations:null,relationsInfo:{}};const H=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:W,t=arguments.length>1?arguments[1]:void 0,n=$[t.type];return n?n(e,t):e};var B=n(37703),q=n(74806),K=n(28655),Y=n.n(K),G=n(63804),Q=n.n(G),J=n(29580),X=(n(22982),n(18117)),ee=n(44012),te=n(49492);const ne=function(e){var t=e.currentViewInfo,n="client.admin.entity.errorView.",r="detail"===t.type?"detailTitle":"defaultTitle",o="detail"===t.type?"detailDescription":"list"===t.type&&t.error.relationName?"relationDescription":"listDescription";return Q().createElement(te.Z,{title:Q().createElement(ee.Z,{id:n+r}),message:Q().createElement(ee.Z,{id:n+o,values:t.error})})};const re=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname]}}))((0,q.ZP)(ne));var oe=n(45376),ae=n(53622),ce=Q().createElement("div",null,Q().createElement(oe.ZP.H2,null,"Entities Overview"),Q().createElement(oe.ZP.Span,null,"List of all available Entities"),Q().createElement("ul",null,Q().createElement("li",null,Q().createElement(ae.Z,{to:"/e/User"},"User")),Q().createElement("li",null,Q().createElement(ae.Z,{to:"/e/Address"},"Address"))));const ie=function(e){return ce};var se=n(28941),le=n(63038),ue=n.n(le),pe=n(84187),de=n(38007),fe=n(17563),me=n(27361),he=n.n(me),ye=n(93038),ve=n(41804),ge=n(49245),Ee=n(16828),be=n(72277);function we(){var e=Y()(["\n && {\n max-width: 110px;\n }\n"]);return we=function(){return e},e}function xe(){var e=Y()(["\n border-radius: ",";\n padding: "," ",";\n display: flex;\n background-color: ",";\n height: fit-content;\n\n &&& {\n * {\n color: ",";\n box-sizing: initial;\n }\n }\n ",";\n\n // allow hover styles only on non-touch devices\n @media (hover: hover) and (pointer: fine) {\n &:hover "," {\n display: flex;\n }\n\n && {\n :hover{\n background-color: ",";\n\n * {\n color: ",";\n }\n cursor: pointer;\n }\n }\n\n ",":hover * {\n color: ",";\n }\n }\n"]);return xe=function(){return e},e}function Ze(){var e=Y()(["\n display: none;\n margin-left: auto;\n\n * {\n color: ",";\n padding-left: ",";\n }\n"]);return Ze=function(){return e},e}function Pe(){var e=Y()(["\n padding-left: ",";\n\n &:nth-child(2) {\n padding-left: 0;\n }\n"]);return Pe=function(){return e},e}function Se(){var e=Y()(["\n background-color: ",";\n padding: ",";\n display: grid;\n grid-template-columns: repeat(auto-fit, 170px);\n grid-gap: ",";\n justify-content: space-between;\n overflow-y: auto;\n align-content: flex-start;\n height: fit-content;\n min-height: 150px;\n max-height: 20%;\n ","\n"]);return Se=function(){return e},e}function Oe(){var e=Y()(["\n background-color: ",";\n padding: ",";\n margin-top: 3px;\n display: flex;\n flex-direction: column;\n flex: 1;\n"]);return Oe=function(){return e},e}function ke(){var e=Y()(["\n font-size: ",";\n padding: 0;\n margin-left: auto;\n\n &:hover,\n ",":hover & {\n background-color: transparent;\n color: ",";\n }\n"]);return ke=function(){return e},e}function Re(){var e=Y()(["\n display: flex;\n background-color: ",";\n padding-top: ",";\n padding-bottom: ",";\n"]);return Re=function(){return e},e}function Ce(){var e=Y()(["\n display: ",";\n flex: 1;\n height: 100%;\n width: 25px;\n background: ",";\n padding-top: ",";\n padding-left: ",";\n\n &:hover {\n cursor: pointer;\n }\n"]);return Ce=function(){return e},e}function Ae(){var e=Y()(["\n display: ",";\n height: 100%;\n flex-direction: column;\n"]);return Ae=function(){return e},e}var Ne=X.ZP.div(Ae(),(function(e){return e.isCollapsed?"none":"flex"})),Ie=X.ZP.div(Ce(),(function(e){return e.isCollapsed?"flex":"none"}),ye.Z.color("paper"),ve.Z.space(-1.5),ve.Z.space(-2.5)),Te=X.ZP.div(Re(),ye.Z.color("paper"),ve.Z.space(-1.5),ve.Z.space(-1.5)),De=(0,X.ZP)(ge.Z)(ke(),ve.Z.font(0),Ie,ye.Z.color("secondaryLight")),_e=X.ZP.div(Oe(),ye.Z.color("paper"),ve.Z.space(-1)),Fe=X.ZP.div(Se(),ye.Z.color("paper"),ve.Z.space(-1),ve.Z.space(-2),Ee.C),je=(0,X.ZP)(ae.Z)(Pe(),ve.Z.space(-.5)),Ve=X.ZP.div(Ze(),ye.Z.color("text"),ve.Z.space(-4.5)),Le=X.ZP.div(xe(),ye.Z.radii("large"),ve.Z.space(-2.7),ve.Z.space(-1),(function(e){return e.selected&&ye.Z.color("secondary")}),(function(e){return e.selected&&ye.Z.color("paper")}),(function(e){return e.selected&&"\n ".concat(Ve," {\n display: flex;\n }\n ")}),Ve,ye.Z.color("secondaryLight"),ye.Z.color("paper"),ae.Z,ye.Z.color("secondary")),Me=(0,X.ZP)(be.Fe)(we()),ze={},Ue=n(230),$e=n(31089),We=n(7813),He=function(e){var t=e.selectedRelation,n=e.currentViewInfo,r=e.match,o=e.history,c=e.emitAction;return Q().createElement(Ue.Z,{id:"preview"+t.reverseRelationName+t.targetEntity,key:t.reverseRelationName+t.targetEntity,entityName:t.targetEntity,formName:t.targetEntity,parent:{key:n.key,reverseRelationName:t.reverseRelationName,model:n.model.name,relationName:t.relationName},showLink:!0,navigationStrategy:(0,$e.ZP)(o,r),onRowClick:function(e){var n=e.id,a=r.url.replace(/detail$/,"");o.push("".concat(a).concat(t.relationName,"/").concat(n))},onNavigateToCreate:function(){var e=(0,We.H)(r.url);o.push(e+"/"+t.relationName+"/create")},searchFormType:"simple",selectionStyle:"none",store:l.Z.viewInfoSelector(o.location.pathname)["store-".concat(t.relationName)],onStoreCreate:function(e){l.Z.persistViewInfo(n.pathname,a()({},"store-".concat(t.relationName),e),n.level)},showActions:!1,limit:15,emitAction:c})};const Be=Q().memo(He);var qe=n(67154),Ke=n.n(qe),Ye=n(48926),Ge=n.n(Ye),Qe=n(599);const Je=function(e){var t=e.entityName,n=e.entityKey,r=e.showActions,o=e.noLeftPadding,a=e.openResource,c=(0,G.useState)(null),l=ue()(c,2),u=l[0],p=l[1],d=function(){var e=Ge()(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s.Z.simpleRequest("entities/2.0/"+t+"/"+n+"/entitydocs/folder").then((function(e){p(e.body.key)}));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,G.useEffect)((function(){d()}),[]),u&&Q().createElement(Qe.Z,Ke()({noLeftPadding:o,sortable:!1,searchFormType:"none",rootNodes:[{key:u,entityName:"Folder"}],embedded:!0,showActions:r},!1===r?{selectionStyle:"none"}:{},{disableViewPersistor:!0},a?{openResource:a}:{}))};const Xe=function(e){var t=e.currentViewInfo,n=e.history,r=e.selectedRelation;return Q().createElement(Je,{entityName:t.model.name,entityKey:t.key,showActions:!1,noLeftPadding:!0,history:n,openResource:function(e){n.push("".concat(r.relationName,"/list#").concat(e))}})};var et=Q().createElement(Q().Fragment,null),tt=Q().createElement(pe.Z,{icon:"arrow-right"}),nt=Q().createElement(pe.Z,{icon:"plus"}),rt=Q().createElement(pe.Z,{icon:"arrow-right"}),ot=Q().createElement(pe.Z,{icon:"plus"}),at=function(e){var t=e.history,n=e.match,r=e.currentViewInfo,o=e.relations,a=e.relationsInfo,c=e.emitAction,i=e.intl,s=e.isCollapsed,l=e.toggleCollapse,u=(0,G.useState)(null),p=ue()(u,2),d=p[0],f=p[1],m=he()(r,"model.name");(0,G.useEffect)((function(){if(o&&o.length>0){var e=fe.parse(t.location.search).relation;if(e)f(o.find((function(t){return t.relationName===e})));else{var n=ze[m];f(n?o.find((function(e){return e.relationName===n})):o[0])}}}),[o]);var h=function(e){return i.formatMessage({id:e})};if(!o||0===o.length||!r)return null;var y=function(e){return a[e]&&a[e].createPermission},v=d?"Resource"===d.targetEntity?Xe:Be:function(){return et};return Q().createElement(Q().Fragment,null,Q().createElement(Ne,{isCollapsed:s},Q().createElement(Te,null,Q().createElement(De,{icon:"chevron-right",onClick:l})),Q().createElement(Fe,null,o.map((function(e){return Q().createElement(Le,{key:"relation-".concat(e.relationName),selected:d&&e.relationName===d.relationName,onClick:function(){f(e),t.replace({search:"?relation="+e.relationName}),function(e,t){ze[e]=t}(m,e.relationName)}},Q().createElement(Me,{title:e.relationDisplay.label},e.relationDisplay.label),(r=e.relationName,a[r]&&a[r].count>0?Q().createElement(Me,null," (",a[r].count,")"):null),Q().createElement(Ve,null,Q().createElement(ae.Z,{"aria-label":h("client.admin.entities.relationsView.relationLinkView"),to:n.url.replace(/(relations|detail)$/,e.relationName)},tt),y(e.relationName)&&"Resource"!==e.targetEntity&&Q().createElement(ae.Z,{"aria-label":h("client.admin.entities.relationsView.relationLinkCreate"),to:n.url.replace(/(relations|detail)$/,e.relationName)+"/create"},nt)));var r}))),d&&Q().createElement(_e,null,Q().createElement(oe.ZP.H4,null,d.relationDisplay.label,Q().createElement(je,{"aria-label":h("client.admin.entities.relationsView.relationLinkView"),to:n.url.replace(/(relations|detail)$/,d.relationName)},rt),y(d.relationName)&&"Resource"!==d.targetEntity&&Q().createElement(je,{"aria-label":h("client.admin.entities.relationsView.relationLinkCreate"),to:n.url.replace(/(relations|detail)$/,d.relationName)+"/create"},ot)),Q().createElement(v,{selectedRelation:d,match:n,history:t,currentViewInfo:r,emitAction:c}))),Q().createElement(Ie,{onClick:l,isCollapsed:s},Q().createElement(De,{icon:"chevron-left",isCollapsed:s})))},ct=function(e,t){return 0===Object.keys(de.Z.difference(e,t)).length};const it=Q().memo(at,ct);var st={emitAction:function(e){return se.Z.dispatchEmittedAction(e)}};const lt=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname],relations:e.entities.path.relations,relationsInfo:e.entities.path.relationsInfo}}),st)((0,q.ZP)(it));var ut=n(50744),pt=n(44166),dt=n(25450),ft={"user-qr-action":(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,51787))})),"input-edit":(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,86684))})),resourcescheduler:(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,28247))})),"show-output-jobs-action":(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,67030))})),delete:(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,9830))})),merge:(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,51393))})),copy:(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,18858))})),documents:(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,21185))})),"password-update":(0,G.lazy)((function(){return Promise.all([n.e(36),n.e(141),n.e(107)]).then(n.bind(n,68653))}))},mt=Q().createElement(pt.Z,null);const ht=function(e){var t=e.appId,n=ft[t];if(!n)return dt.Z.logError("no action found with id: ".concat(t)),null;var r=(0,B.connect)(null,{emitAction:function(e){return se.Z.dispatchEmittedAction(e)}})(n);return Q().createElement(G.Suspense,{fallback:mt},Q().createElement(r,e))};function yt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?yt(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):yt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function gt(){var e=Y()(["\n margin: 0;\n background-color: ",";\n padding: 0 0 0 ",";\n overflow: hidden;\n height: 100%;\n"]);return gt=function(){return e},e}var Et=X.ZP.div(gt(),ye.Z.color("paper"),ve.Z.space(0));const bt=function(e){var t=e.currentViewInfo,n=e.history,r=e.match,o=e.intl,a=e.emitAction,c=(0,G.useState)(!1),i=ue()(c,2),s=i[0],l=i[1];if(!t||t.pathname!==n.location.pathname)return null;var u=fe.parse(location.search).formName,p=t.model.name;return Q().createElement(Et,null,Q().createElement(J.NL,{when:s,message:function(e){return n.location.pathname!==e.pathname&&(t="client.entity-browser.detail.confirmTouchedFormLeave",o.formatMessage({id:t}));var t}}),Q().createElement(ut.Z,{entityName:p,entityId:t.key,formName:u||p,mode:"update",emitAction:a,onTouchedChange:function(e){var t=e.touched;l(t)},navigationStrategy:vt(vt({},(0,$e.ZP)(n,r)),{},{navigateToCreateRelative:function(e,t){if(e){var o=(0,We.H)(r.url,1);n.push({pathname:"".concat(o,"/").concat(e,"/create"),state:t})}else{var a=(0,We.H)(r.url,2);n.push({pathname:a+"/create",state:t})}}}),onEntityDeleted:function(){var e=(0,We.H)(r.url,2);n.push(e)},actionAppComponent:ht,onSubGridRowClick:function(e){var t=e.id,o=e.relationName,a=(0,We.H)(r.url);n.push("".concat(a,"/").concat(o,"/").concat(t))}}))};var wt={emitAction:function(e){return se.Z.dispatchEmittedAction(e)}};const xt=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname]}}),wt)((0,q.ZP)(bt));function Zt(){var e=Y()(["\n flex: ",";\n"]);return Zt=function(){return e},e}function Pt(){var e=Y()(["\n flex: 1;\n margin-right: 1rem;\n ","\n"]);return Pt=function(){return e},e}function St(){var e=Y()(["\n display: flex;\n flex-direction: row;\n height: 100%;\n\n .react-bs-container-body {\n height: auto !important;\n }\n"]);return St=function(){return e},e}var Ot=X.ZP.div(St()),kt=X.ZP.div(Pt(),(function(e){return!e.isCollapsed&&" @media(max - width: 1024px) {\n flex: none;\n width: 40%;\n }"})),Rt=X.ZP.div(Zt(),(function(e){return e.isCollapsed?"0":"1"}));const Ct=function(e){var t=e.match,n=e.history,r=(e.currentViewInfo,e.relationViewCollapsed),o=e.saveUserPreferences,a=(0,G.useState)(!1),c=ue()(a,2),i=c[0],s=c[1];(0,G.useEffect)((function(){s(r)}),[r]);var l=function(e){o({"admin.detail.relationViewCollapsed":e})};return Q().createElement(Ot,null,Q().createElement(kt,{isCollapsed:i},Q().createElement(xt,{match:t,history:n})),Q().createElement(Rt,{isCollapsed:i},Q().createElement(lt,{match:t,history:n,isCollapsed:i,toggleCollapse:function(){s(!i),l(!i)}})))};var At=n(94844),Nt={saveUserPreferences:At.RK};const It=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname],relationViewCollapsed:he()(e.preferences.userPreferences,"admin.detail.relationViewCollapsed",!1)}}),Nt)((0,q.ZP)(Ct));var Tt=n(79327),Dt=function(e){var t=e.history,n=e.match,r=e.setCurrentViewTitle,o=e.currentViewInfo,a=e.intl,c=t.location;if((0,G.useEffect)((function(){return o&&r(a.formatMessage({id:"client.actions.".concat(o.actionId,".title")})),function(){r(null)}}),[o]),!o)return null;var i=Tt.Z.fromQueryString(c.search),s=he()(c,"state.selection",i.actionProperties),l=he()(c,"state.definition.properties",i.actionProperties),u=function(){t.replace((0,We.H)(n.url,2))};return Q().createElement(ht,{history:t,match:n,appId:o.actionId,selection:s,actionProperties:l,navigationStrategy:(0,$e.ZP)(t,n),onSuccess:u,onError:u,onCancel:u})},_t=function(e,t){return 0===Object.keys(de.Z.difference(e,t)).length};const Ft=Q().memo(Dt,_t);var jt={setCurrentViewTitle:function(e){return{type:"path/SET_CURRENT_VIEW_TITLE",payload:{currentViewTitle:e}}}};const Vt=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname]}}),jt)((0,q.ZP)(Ft));const Lt=function(e){var t,n,r=e.match,o=(t=r.path,n=":relation",t.split(n).length-1);return Q().createElement(J.rs,null,Q().createElement(J.AW,{exact:!0,path:"".concat(r.url),render:function(e){var t=e.match;return Q().createElement(J.l_,{to:"".concat(t.url.replace(/\/$/,""),"/detail")})}}),Q().createElement(J.AW,{path:"".concat(r.path,"/detail"),component:It}),Q().createElement(J.AW,{path:"".concat(r.path,"/edit"),component:xt}),Q().createElement(J.AW,{path:"".concat(r.path,"/relations"),component:lt}),Q().createElement(J.AW,{path:"".concat(r.path,"/action"),component:Vt}),Q().createElement(J.AW,{path:"".concat(r.path,"/:relation_").concat(o),component:Qt}))};var Mt=n(319),zt=n.n(Mt);function Ut(){var e=Y()(["\n margin: 0;\n background-color: ",";\n padding: 0 0 0 ",";\n overflow: hidden;\n height: 100%;\n"]);return Ut=function(){return e},e}var $t=X.ZP.div(Ut(),ye.Z.color("paper"),ve.Z.space(0));const Wt=function(e){var t=e.currentViewInfo,n=e.history,r=e.match,o=e.intl,a=e.dispatchEmittedAction,c=n.location,i=he()(c,"state.defaultValues",[]),s=(0,G.useState)(!1),l=ue()(s,2),u=l[0],p=l[1];if(!t)return null;var d,f=t.model,m=t.reverseRelation,h=t.parentKey,y=f.name,v=he()(f,"paths.".concat(m,".multi"),!1),g=[].concat(zt()(m&&h?[{id:m,value:v?[h]:h}]:[]),zt()(i));return Q().createElement($t,null,Q().createElement(J.NL,{when:u,message:(d="client.entity-browser.detail.confirmTouchedFormLeave",o.formatMessage({id:d}))}),Q().createElement(ut.Z,{entityName:y,formName:y,mode:"create",defaultValues:g,emitAction:function(e){a(e)},navigationStrategy:(0,$e.ZP)(n,r),onEntityCreated:function(e){var t=e.id;p(!1),n.push(r.url.replace(/create$/,t))},onTouchedChange:function(e){var t=e.touched;return p(t)}}))};var Ht={dispatchEmittedAction:se.Z.dispatchEmittedAction};const Bt=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname]}}),Ht)((0,q.ZP)(Wt));const qt=function(e){var t=e.currentViewInfo;return Q().createElement(Je,{noLeftPadding:!1,entityName:t.parentModel.name,entityKey:t.parentKey,showActions:!0})};const Kt=function(e){var t=e.match,n=e.history,r=e.currentViewInfo,o=e.emitAction,a=e.searchFormCollapsed,c=e.saveUserPreferences;if(!r)return null;var i=fe.parse(n.location.search);return"Resource"===r.model.name?Q().createElement(qt,{currentViewInfo:r}):Q().createElement(Ue.Z,Ke()({emitAction:o,limit:25,id:"".concat(r.model.name,"_list"),entityName:r.model.name,formName:i.formName||r.model.name,onRowClick:function(e){var r=e.id;n.push(t.url.replace(/list$/,"")+r)}},r.reverseRelation&&{parent:{key:r.parentKey,reverseRelationName:r.reverseRelation,model:r.parentModel.name}},{showLink:!0,navigationStrategy:(0,$e.ZP)(n,t),searchFormPosition:"left",searchFormType:"admin",store:l.Z.viewInfoSelector(n.location.pathname).store,onStoreCreate:function(e){l.Z.persistViewInfo(n.location.pathname,{store:e},r.level)},actionAppComponent:ht,tql:i.tql,searchFormCollapsed:a,onSearchFormCollapsedChange:function(e){var t=e.collapsed;c({"admin.list.searchFormCollapsed":t})}}))};var Yt={emitAction:function(e){return se.Z.dispatchEmittedAction(e)},saveUserPreferences:At.RK};const Gt=(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname],searchFormCollapsed:he()(e.preferences.userPreferences,"admin.list.searchFormCollapsed",!1)}}),Yt)((0,q.ZP)(Kt));const Qt=function(e){var t=e.match;return Q().createElement(J.rs,null,Q().createElement(J.AW,{exact:!0,path:t.url,render:function(e){var t=e.match;return Q().createElement(J.l_,{to:"".concat(t.url.replace(/\/$/,""),"/list")})}}),Q().createElement(J.AW,{path:"".concat(t.path,"/action/:id"),component:Vt}),Q().createElement(J.AW,{path:"".concat(t.path,"/list"),component:Gt}),Q().createElement(J.AW,{path:"".concat(t.path,"/create"),component:Bt}),Q().createElement(J.AW,{path:"".concat(t.path,"/:key"),component:Lt}))};var Jt=n(6300);const Xt=(0,B.connect)((function(e,t){return{pathPrefix:"/e",breadcrumbsInfo:e.entities.path.breadcrumbsInfo,currentView:e.entities.path.currentViewTitle?{display:e.entities.path.currentViewTitle,title:e.entities.path.currentViewTitle}:null}}),{})((0,q.ZP)(Jt.Z));function en(){var e=Y()(["\n grid-area: breadcrumbs;\n"]);return en=function(){return e},e}function tn(){var e=Y()(["\n grid-area: content;\n overflow: hidden;\n"]);return tn=function(){return e},e}function nn(){var e=Y()(["\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-areas:\n 'breadcrumbs'\n 'content';\n height: 100%;\n width: 100%;\n"]);return nn=function(){return e},e}var rn=X.ZP.div(nn()),on=X.ZP.div(tn()),an=X.ZP.div(en()),cn=Q().createElement(an,null,Q().createElement(Xt,null));const sn=function(e){var t=e.match,n=e.history,r=e.loadCurrentRoute,o=e.currentViewInfo,a=n.location;(0,G.useEffect)((function(){r(a)}),[a]);var c=o&&o.error?Q().createElement(re,{history:n}):Q().createElement(J.rs,null,Q().createElement(J.AW,{path:"".concat(t.url,"/action/:actionId"),component:Vt}),Q().createElement(J.AW,{path:"".concat(t.url,"/:entity"),component:Qt}),Q().createElement(J.AW,{exact:!0,path:t.url,component:ie}));return Q().createElement(rn,null,cn,Q().createElement(on,null,c))};var ln={loadCurrentRoute:function(e){return{type:"path/LOAD_CURRENT_ROUTE",payload:{location:e}}}};const un={container:(0,B.connect)((function(e,t){return{currentViewInfo:e.entities.path.currentViewInfos[t.history.location.pathname]}}),ln)((0,q.ZP)(sn)),reducers:{entities:(0,r.UY)({path:H})},sagas:[I]}},599:(e,t,n)=>{"use strict";n.d(t,{Z:()=>cn});var r=n(34575),o=n.n(r),a=n(93913),c=n.n(a),i=n(2205),s=n.n(i),l=n(78585),u=n.n(l),p=n(29754),d=n.n(p),f=n(63804),m=n.n(f),h=(n(45697),n(28941)),y=n(89520),v=n(88892),g=n(76772),E=n(72048),b=n(22151),w=n(7026),x=n(52540),Z=n(83682),P=n(29580),S=n(50872),O=n(35937),k=n.n(O),R=n(18446),C=n.n(R),A=n(41609),N=n.n(A),I=n(14890),T=n(87757),D=n.n(T),_=n(34857),F=n(1662),j=function(e){return{type:"docs/path/SET_BREADCRUMBS",payload:{breadcrumbs:e}}},V=D().mark(H),L=D().mark(B),M=D().mark(q),z=D().mark(K),U=function(e,t){return e.intl.messages[t]||t},$=function(e){return e.docs.path},W=function(e){return e.input.rootNodes};function H(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.Ys)(U,"client.docs-browser.breadcrumbs.start");case 2:return e.t0=e.sent,e.t1={display:e.t0,path:"",type:"list"},e.next=6,(0,_.Ys)(U,"client.docs-browser.breadcrumbs.searchResults");case 6:return e.t2=e.sent,e.t3={display:e.t2,path:"",type:"list"},e.abrupt("return",[e.t1,e.t3]);case 9:case"end":return e.stop()}}),V)}function B(e){var t,n,r,o,a,c;return D().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload.location,n=(0,F.Z)(t),i.next=4,(0,_.Ys)($);case 4:if(!i.sent.searchMode||n){i.next=11;break}return i.next=8,(0,_.RE)(H);case 8:r=i.sent,i.next=21;break;case 11:return o=n?"documents/".concat(n.model,"/").concat(n.key,"/breadcrumbs"):"documents/breadcrumbs",i.next=14,(0,_.RE)(q);case 14:return i.t0=i.sent,i.t1={rootnodes:i.t0},a={queryParams:i.t1},i.next=19,(0,_.RE)(w.Z.requestSaga,o,a);case 19:c=i.sent,r=c.body.breadcrumbs;case 21:return i.next=23,(0,_.gz)(j(r));case 23:case"end":return i.stop()}}),L)}function q(){var e;return D().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,(0,_.Ys)(W);case 2:return e=t.sent,t.abrupt("return",Array.isArray(e)&&e.length>0?e.map((function(e){return"".concat(e.entityName,"/").concat(e.key)})).join(","):null);case 4:case"end":return t.stop()}}),M)}function K(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.Fm)("docs/path/LOAD_BREADCRUMBS",B)]);case 2:case"end":return e.stop()}}),z)}var Y,G=n(59713),Q=n.n(G),J=n(60954),X=(Y={},Q()(Y,"docs/path/SET_BREADCRUMBS",J.Z.singleTransferReducer("breadcrumbs")),Q()(Y,"docs/path/SET_SEARCH_MODE",J.Z.singleTransferReducer("searchMode")),Y),ee={breadcrumbs:[],searchMode:!1};var te=D().mark(ne);function ne(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.rM)(K)]);case 2:case"end":return e.stop()}}),te)}const re=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ee,t=arguments.length>1?arguments[1]:void 0,n=X[t.type];return n?n(e,t):e};var oe=n(25450),ae=n(44586);function ce(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ie(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return c=e.done,e},e:function(e){i=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(i)throw a}}}}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var se=D().mark(fe),le=D().mark(me),ue=D().mark(he),pe=function(e){return e.docs.create.dialog},de=function(e,t){return e.intl.messages[t]};function fe(e){var t,n,r,o,a,c,i,s,l,u,p;return D().wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload,n=t.files,r=t.isDirectory,d.next=3,(0,_.RE)(ae.Z);case 3:return o=d.sent,d.next=6,(0,_.gz)(b.Z.blockingInfo(o,r?"client.docs-browser.uploadInProgressDirectory":n.length>1?"client.docs-browser.uploadInProgressMultiple":"client.docs-browser.uploadInProgress",null));case 6:return d.next=8,(0,_.Ys)(pe);case 8:return a=d.sent,c=a.location,i=a.onSuccess,s=a.onError,d.prev=12,d.next=15,(0,_.RE)(me,c,n);case 15:return l=d.sent,u=[{type:"entity-create-event",payload:{entities:l.body.items.filter((function(e){return 201===e.status})).map((function(e){return{entityName:e.bean.model,key:e.bean.key}}))}}],d.next=19,(0,_.gz)(b.Z.removeBlockingInfo(o));case 19:return p=r?"client.docs-browser.uploadSuccessfulDirectory":"client.docs-browser.uploadSuccessful",d.t0=i,d.next=23,(0,_.Ys)(de,p);case 23:d.t1=d.sent,d.t2=u,d.t3={message:d.t1,remoteEvents:d.t2},(0,d.t0)(d.t3),d.next=40;break;case 29:return d.prev=29,d.t4=d.catch(12),oe.Z.logError("Failed to upload files",d.t4),d.next=34,(0,_.gz)(b.Z.removeBlockingInfo(o));case 34:return d.t5=s,d.next=37,(0,_.Ys)(de,"client.docs-browser.uploadFailed");case 37:d.t6=d.sent,d.t7={message:d.t6},(0,d.t5)(d.t7);case 40:case"end":return d.stop()}}),se,null,[[12,29]])}function me(e,t){var n,r,o,a,c,i,s;return D().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:if(n=(0,F.Z)(e)){l.next=3;break}return l.abrupt("return");case 3:r=new FormData,o=ce(t);try{for(o.s();!(a=o.n()).done;)c=a.value,r.append("files",c)}catch(e){o.e(e)}finally{o.f()}return i="documents/".concat(n.model,"/").concat(n.key),s={method:"POST",body:r},l.next=10,(0,_.RE)(w.Z.requestSaga,i,s);case 10:return l.abrupt("return",l.sent);case 11:case"end":return l.stop()}}),le)}function he(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.ib)("docs/create/FILES_SELECTED",fe)]);case 2:case"end":return e.stop()}}),ue)}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ve(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){Q()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ge=Q()({},"docs/create/OPEN_DIALOG",(function(e,t){var n=t.payload,r=n.location,o=n.directory,a=n.onSuccess,c=n.onError;return ve(ve({},e),{},{dialog:{instanceCount:e.dialog.instanceCount+1,directory:o,location:r,onSuccess:a,onError:c}})})),Ee={dialog:{instanceCount:0,directory:!1,location:null,onSuccess:null,onError:null}};var be=D().mark(we);function we(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.rM)(he)]);case 2:case"end":return e.stop()}}),be)}const xe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ee,t=arguments.length>1?arguments[1]:void 0,n=ge[t.type];return n?n(e,t):e};var Ze=Q()({},"docs/list/SET_SEARCH_FORM_COLLAPSED",J.Z.singleTransferReducer("searchFormCollapsed")),Pe={searchFormCollapsed:null};const Se=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pe,t=arguments.length>1?arguments[1]:void 0,n=Ze[t.type];return n?n(e,t):e};var Oe=D().mark(Ce),ke=D().mark(Ae),Re=D().mark(Ne);function Ce(e){var t;return D().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.next=3,(0,_.gz)(E.Z.fireExternalEvent("onListParentChange",t.parent));case 3:case"end":return n.stop()}}),Oe)}function Ae(e){var t;return D().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.next=3,(0,_.gz)(E.Z.fireExternalEvent("onSearchFormCollapsedChange",t.collapsed));case 3:case"end":return n.stop()}}),ke)}function Ne(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.Fm)("docs/list/CHANGE_LIST_PARENT",Ce),(0,_.Fm)("docs/list/CHANGE_SEARCH_FORM_COLLAPSED",Ae)]);case 2:case"end":return e.stop()}}),Re)}var Ie,Te=n(31167),De=n(30023),_e=D().mark(Me),Fe=D().mark(ze),je=D().mark(Ue),Ve=function(e){return e.docs.move.input},Le=function(e,t){return e.intl.messages[t]};function Me(e){var t,n,r,o,a;return D().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return t=e.payload,n="documents/move",r={method:"POST",acceptedStatusCodes:[400],body:{targetEntityKey:t.target,selectedEntityKeys:t.selected}},c.next=5,(0,_.gz)(De.p0(!0));case 5:return c.next=7,(0,_.RE)(w.Z.requestSaga,n,r);case 7:if(204!==(o=c.sent).status){c.next=13;break}return c.next=11,(0,_.RE)(ze);case 11:c.next=19;break;case 13:return c.next=15,(0,_.gz)(De.p0(!1));case 15:return a="client.actions.dms-move.failed.message","VALIDATION_FAILED"===o.body.errorCode&&(a=Te.Z.getErrorCompact(o.body.errors)),c.next=19,(0,_.gz)(b.Z.toaster({type:"error",title:"client.actions.dms-move.failed.title",body:a}));case 19:case"end":return c.stop()}}),_e)}function ze(){var e,t,n,r;return D().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,(0,_.Ys)(Ve);case 2:return e=o.sent,t=e.selection,n=e.onSuccess,r=[{type:"entity-update-event",payload:{entities:t.ids.map((function(e){return{entityName:"Docs_list_item",key:e}}))}}],o.t0=n,o.next=9,(0,_.Ys)(Le,"client.docs-browser.moveSuccessful");case 9:return o.t1=o.sent,o.t2=r,o.t3={message:o.t1,remoteEvents:o.t2},(0,o.t0)(o.t3),o.next=15,(0,_.gz)(De.xv());case 15:case"end":return o.stop()}}),Fe)}function Ue(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.Fm)(De.uI,Me)]);case 2:case"end":return e.stop()}}),je)}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function We(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){Q()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var He=(Ie={},Q()(Ie,De.qh,(function(e,t){var n=t.payload,r=n.selection,o=n.onSuccess,a=n.onError;return We(We({},e),{},{input:{selection:r,onSuccess:o,onError:a}})})),Q()(Ie,De.FV,J.Z.singleTransferReducer("isWaiting")),Q()(Ie,De.F$,(function(){return We({},Be)})),Ie),Be={isWaiting:!1,input:{selection:null,onSuccess:null,onError:null}};var qe=D().mark(Ke);function Ke(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.$6)([(0,_.rM)(Ue)]);case 2:case"end":return e.stop()}}),qe)}const Ye=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Be,t=arguments.length>1?arguments[1]:void 0,n=He[t.type];return n?n(e,t):e},Ge={docs:(0,I.UY)({path:re,create:xe,list:Se,move:Ye})};var Qe=[ne,we,Ne,Ke],Je=n(37703),Xe=n(74806),et=n(67154),tt=n.n(et),nt=n(63038),rt=n.n(nt),ot=n(18117),at=n(93038),ct=n(58239),it=n(44166),st=n(84187),lt={"dms-create-folder":(0,f.lazy)((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,11625))})),"dms-create-domain":(0,f.lazy)((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,53285))})),"dms-edit":(0,f.lazy)((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,65290))})),"dms-move":(0,f.lazy)((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,75517))})),delete:(0,f.lazy)((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,45052))}))},ut=m().createElement(it.Z,null);const pt=function(e){var t=e.appId,n=lt[t];if(!n)return oe.Z.logError("no action found with id: ".concat(t)),null;var r=(0,Je.connect)(null,{emitAction:function(e){return h.Z.dispatchEmittedAction(e)}})(n);return m().createElement(f.Suspense,{fallback:ut},m().createElement(r,e))};const dt=function(e){var t,n,r=e.instanceCount,o=e.directory,a=e.onChange,c=(0,f.useRef)(),i=(t=r,n=(0,f.useRef)(),(0,f.useEffect)((function(){n.current=t})),n.current);(0,f.useEffect)((function(){c.current&&r>i&&c.current.click()}));return m().createElement("input",tt()({type:"file",ref:c,style:{display:"none"},onChange:function(e){var t=e.target.files;t&&t.length>0&&a&&a(t,o),e.target.value=null},multiple:!0},o?{webkitdirectory:"true",directory:"true"}:{}))};var ft={onChange:function(e,t){return{type:"docs/create/FILES_SELECTED",payload:{files:e,isDirectory:t}}}};const mt=(0,Je.connect)((function(e){return{instanceCount:e.docs.create.dialog.instanceCount,directory:e.docs.create.dialog.directory}}),ft)(dt);var ht=n(28655),yt=n.n(ht),vt=n(41804);function gt(){var e=yt()(["\n font-size: ",";\n display: inline-block;\n margin-right: ",";\n"]);return gt=function(){return e},e}function Et(){var e=yt()(["\n display: flex;\n align-items: center;\n"]);return Et=function(){return e},e}var bt=ot.ZP.div(Et()),wt=ot.ZP.span(gt(),vt.Z.font(1),vt.Z.space(-2)),xt=/^\/docs\/?$/;const Zt=function(e){return xt.test(e)};var Pt=m().lazy((function(){return n.e(141).then(n.bind(n,39901))})),St=m().createElement(it.Z,null),Ot=m().createElement(mt,null);const kt=function(e){var t=e.history,n=e.match,r=e.domainTypes,o=e.rootNodes,a=e.navigationStrategy,c=e.changeListParent,i=e.onSearchChange,s=e.emitAction,l=e.openFileDialog,u=e.limit,p=e.searchFormType,d=e.selectionStyle,h=e.getCustomLocation,y=e.disableViewPersistor,v=e.getListFormName,g=e.domainDetailFormName,E=e.folderDetailFormName,b=e.showActions,w=e.sortable,x=e.searchMode,Z=e.openResource,P=e.searchFormCollapsed,S=e.changeSearchFormCollapsed,O=(0,f.useReducer)((function(e){return e+1}),0),k=rt()(O,2),R=k[0],C=k[1],A="entity-list-".concat(R),N=(0,f.useState)([]),I=rt()(N,2),T=I[0],_=I[1],F=(0,f.useMemo)((function(){return function(e){if(e.params&&e.params.model){var t=e.params.model.charAt(0).toUpperCase()+e.params.model.slice(1),n=e.params.key;return{model:"Docs_list_item",key:"".concat(t,"/").concat(n)}}return null}(n)}),[n.params]),j=!F&&o?o.map((function(e){return"".concat(e.entityName,"/").concat(e.key)})):null,V=(0,f.useMemo)((function(){return v?v(F,j):function(e,t){return e?"Docs_list_item":t?"Root_docs_list_item_specific":"Root_docs_list_item"}(F,j)}),[n.params,v]),L=(0,f.useRef)(!1),M=(0,f.useRef)(x);M.current=x,(0,f.useEffect)((function(){return L.current=!0,function(){return L.current=!1}})),(0,f.useEffect)((function(){c(F),_([])}),[F]);var z=F||j?null:function(e){return Array.isArray(e)&&e.length>0?"exists(relDomain_type where IN(unique_id, ".concat(e.map((function(e){return'"'.concat(e,'"')})).join(","),"))"):null}(r),U=D().mark((function e(n,r,o,a,c,i,s){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:!1,l(t.location.pathname,!1,i,s);case 2:case"end":return e.stop()}}),e)})),$=D().mark((function e(n,r,o,a,c,i,s){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:!0,l(t.location.pathname,!0,i,s);case 2:case"end":return e.stop()}}),e)})),W=y?void 0:Zt(t.location.pathname)?ct.Z.viewInfoSelector("search").store:null;return m().createElement(m().Fragment,null,m().createElement(f.Suspense,{fallback:St},m().createElement(Pt,{key:A,id:"documents",entityName:"Docs_list_item",formName:V,limit:u||25,onRowClick:function(e){var n=e.id;if(M.current&&Zt(t.location.pathname)){if(!ct.Z.viewInfoSelector("search").store){var r=ct.Z.viewInfoSelector(A).store;ct.Z.persistViewInfo("search",{store:r})}C()}var o=n.split("/"),a=rt()(o,2),c=a[0],i=a[1],s=h?h(c,i):function(e,t){switch(e){case"Domain":return"/docs/domain/".concat(t,"/list");case"Folder":return"/docs/folder/".concat(t,"/list");case"Resource":return"/docs/doc/".concat(t,"/detail");default:throw new Error("Unexpected model: ".concat(e))}}(c,i);s&&(Z&&"Resource"===c?Z(s):t.push(s))},searchFormPosition:"left",searchFormType:p||"admin",parent:F,onSearchChange:function(e){L.current&&i(e)},store:W,onStoreCreate:function(e){y||ct.Z.persistViewInfo(A,{store:e})},cellRenderers:{"dms-label-with-icon":function(e,t,n){return m().createElement(bt,null,m().createElement(wt,null,m().createElement(st.Z,{icon:e.icon})),m().createElement("span",null,n(t.children[0])))},"dms-actions":function(e,t,n){return m().createElement(bt,null,t.children.filter((function(t){return!t.dmsEntityModel||t.dmsEntityModel===e.type})).map((function(e){return n(e)})))}},emitAction:s,actionAppComponent:pt,contextParams:{history:t,detailFormNames:{Domain:g,Folder:E}},customActions:{"upload-document":U,"upload-directory":$},navigationStrategy:a,tql:z,keys:j,selectionStyle:d||"multi_explicit",onSelectChange:_,selection:T,showActions:b,sortable:w,searchFormCollapsed:P,onSearchFormCollapsedChange:S})),Ot)};var Rt={changeListParent:function(e){return{type:"docs/list/CHANGE_LIST_PARENT",payload:{parent:e}}},changeSearchFormCollapsed:function(e){return{type:"docs/list/CHANGE_SEARCH_FORM_COLLAPSED",payload:{collapsed:e}}}};const Ct=(0,Je.connect)((function(e){return{domainTypes:e.input.domainTypes,rootNodes:e.input.rootNodes,limit:e.input.listLimit,searchFormType:e.input.searchFormType,selectionStyle:e.input.selectionStyle,getCustomLocation:e.input.getCustomLocation,disableViewPersistor:e.input.disableViewPersistor,getListFormName:e.input.getListFormName,domainDetailFormName:e.input.domainDetailFormName,folderDetailFormName:e.input.folderDetailFormName,showActions:e.input.showActions,sortable:e.input.sortable,openResource:e.input.openResource,searchFormCollapsed:e.docs.list.searchFormCollapsed}}),Rt)((0,Xe.ZP)(kt));function At(){var e=yt()(["\n height: 100%;\n background-color: ",";\n padding-left: ",";\n overflow-y: hidden;\n"]);return At=function(){return e},e}var Nt=ot.ZP.div(At(),at.Z.color("paper"),vt.Z.space(.5)),It=m().lazy((function(){return Promise.all([n.e(198),n.e(141)]).then(n.bind(n,1388))})),Tt=m().createElement(it.Z,null);const Dt=function(e){var t=e.match,n=e.history,r=e.breadcrumbs,o=e.formName,a=e.navigationStrategy,c=e.emitAction;return m().createElement(Nt,null,m().createElement(f.Suspense,{fallback:Tt},m().createElement(It,{entityName:"Resource",entityId:t.params.key,formName:o||"DmsResource",mode:"update",actionAppComponent:pt,navigationStrategy:a,emitAction:c,onEntityDeleted:function(){var e=r.slice().reverse().find((function(e){return"list"===e.type})),t="/docs/".concat(e.path);n.push(t)}})))};var _t={emitAction:function(e){return h.Z.dispatchEmittedAction(e)}};const Ft=(0,Je.connect)((function(e){return{breadcrumbs:e.docs.path.breadcrumbs,formName:e.input.documentDetailFormName}}),_t)((0,Xe.ZP)(Dt));var jt=n(6300);const Vt=(0,Je.connect)((function(e){return{pathPrefix:"/docs",breadcrumbsInfo:e.docs.path.breadcrumbs}}),{})((0,Xe.ZP)(jt.Z));var Lt=n(16828);function Mt(){var e=yt()(["\n grid-area: breadcrumbs;\n ","\n"]);return Mt=function(){return e},e}function zt(){var e=yt()(["\n grid-area: content;\n overflow-x: hidden;\n ","\n"]);return zt=function(){return e},e}function Ut(){var e=yt()(["\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-areas:\n 'breadcrumbs'\n 'content';\n height: 100%;\n width: 100%;\n"]);return Ut=function(){return e},e}var $t=ot.ZP.div(Ut()),Wt=ot.ZP.div(zt(),Lt.C),Ht=ot.ZP.div(Mt(),(function(e){return e.noLeftPadding&&"\n > div {\n padding-left: 0;\n }\n "}));const Bt=(0,ot.Zz)((function(e){var t=e.history,n=e.searchMode,r=e.navigationStrategy,o=e.setSearchMode,a=e.loadBreadcrumbs,c=e.emitAction,i=e.openFileDialog,s=e.theme,l=e.embedded,u=e.noLeftPadding,p=(0,f.useReducer)((function(e){return e+1}),0),d=rt()(p,2),h=d[0],y=d[1],v=(0,P.TH)(),g=(0,f.useRef)(n);g.current=n,(0,f.useEffect)((function(){a(v.pathname)}));var E=function(){g.current&&(ct.Z.clearPersistedViews(),o(!1),a(v.pathname),y())},b=function(e){e.query&&e.query.hasUserChanges?(o(!0),t.push("/docs/"),a(v.pathname)):Zt(t.location.pathname)&&E()},w="docs-view-".concat(h);return m().createElement($t,null,m().createElement(Ht,{noLeftPadding:u},m().createElement(Vt,tt()({},l?{backgroundColor:at.Z.color("paper")({theme:s})}:{},{onClick:function(e){""===e.path&&E()}}))),m().createElement(Wt,null,m().createElement(P.rs,null,m().createElement(P.AW,{exact:!0,path:"/docs/doc/:key/detail",render:function(e){var n=e.match;return m().createElement(Ft,{match:n,history:t,navigationStrategy:r})}}),m().createElement(P.AW,{exact:!0,path:["/docs/:model/:key/list","/docs"],render:function(e){var o=e.match;return m().createElement(Ct,{key:w,history:t,match:o,navigationStrategy:r,onSearchChange:b,emitAction:c,openFileDialog:i,searchMode:n})}}))))}));var qt={loadBreadcrumbs:function(e){return{type:"docs/path/LOAD_BREADCRUMBS",payload:{location:e}}},setSearchMode:function(e){return{type:"docs/path/SET_SEARCH_MODE",payload:{searchMode:e}}},emitAction:function(e){return h.Z.dispatchEmittedAction(e)},openFileDialog:function(e,t,n,r){return{type:"docs/create/OPEN_DIALOG",payload:{location:e,directory:t,onSuccess:n,onError:r}}}};const Kt=(0,Je.connect)((function(e){return{searchMode:e.docs.path.searchMode,navigationStrategy:e.input.navigationStrategy,embedded:e.input.embedded,noLeftPadding:e.input.noLeftPadding}}),qt)((0,Xe.ZP)(Bt));var Yt=n(319),Gt=n.n(Yt),Qt=function(e){return Jt.reduce((function(t,n){return void 0!==e[n.name]&&t.push(n.action.apply(n,Gt()(n.argsFactory(e)))),t}),[])},Jt=[{name:"searchFormCollapsed",action:function(e){return{type:"docs/list/SET_SEARCH_FORM_COLLAPSED",payload:{searchFormCollapsed:e}}},argsFactory:function(e){return[e.searchFormCollapsed]}}];function Xt(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=d()(e);if(t){var o=d()(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return u()(this,n)}}var en=["onListParentChange","openResource","onSearchFormCollapsedChange"],tn=function(e,t){return e.intl.messages[t]||t},nn=function(e,t){return(t?Z.Z:x.Z)({getUserConfirmation:function(t,n){var r=e.getState(),o=tn(r,"client.common.ok"),a=tn(r,"client.common.cancel"),c=b.Z.confirm("",t,o,a,(function(){return n(!0)}),(function(){return n(!1)}));e.dispatch(c)}})},rn=m().createElement(b.Z.Notifications,null),on=m().createElement(S.Z,null),an=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,o=y.Z.createStore(Ge,Qe,t,"docs-browser");E.Z.addToStore(o,n),h.Z.addToStore(o),g.Z.addToStore(o,!0,["console","remote","notification"]);var a=!n.emitAction;b.Z.addToStore(o,a),v.Z.addToStore(o),t.businessUnit&&w.Z.setBusinessUnit(t.businessUnit);var c=t.history||nn(o,t.memoryHistory);t.initialLocation&&c.push(t.initialLocation);var i=Array.isArray(t.rootNodes)&&1===t.rootNodes.length&&"Resource"!==t.rootNodes[0].entityName?t.rootNodes[0]:null,s=i?"/docs/".concat(i.entityName.toLowerCase(),"/").concat(i.key,"/list"):"/docs",l=m().createElement(P.F0,{history:c},a&&rn,on,m().createElement(Kt,{history:c}),m().createElement(P.AW,{exact:!0,path:"/"},m().createElement(P.l_,{to:s})),i&&m().createElement(P.AW,{exact:!0,path:"/docs"},m().createElement(P.l_,{to:s})));return y.Z.createApp("docs-browser",l,o,{input:t,events:n,actions:Qt(t),publicPath:r,textResourceModules:["component","common","actions","entity-list","entity-detail","docs-browser"]})};const cn=function(e){s()(n,e);var t=Xt(n);function n(e){var r;return o()(this,n),(r=t.call(this,e)).app=an("docs-browser",e,function(e){return en.reduce((function(t,n){return e[n]&&(t[n]=e[n]),t}),{})}(e)),r}return c()(n,[{key:"componentDidUpdate",value:function(e){var t=this,n=k()(this.props,(function(t,n){return!C()(t,e[n])}));N()(n)||Qt(n).forEach((function(e){t.app.store.dispatch(e)}))}},{key:"render",value:function(){return this.app.component}}]),n}(m().Component)},30023:(e,t,n)=>{"use strict";n.d(t,{qh:()=>r,uI:()=>o,FV:()=>a,F$:()=>c,j2:()=>i,w6:()=>s,p0:()=>l,xv:()=>u});var r="docs/move/INITIALIZE",o="docs/move/MOVE_ELEMENTS",a="docs/move/SET_WAITING",c="docs/move/CLOSE",i=function(e,t,n){return{type:r,payload:{selection:e,onSuccess:t,onError:n}}},s=function(e,t){return{type:o,payload:{target:e,selected:t}}},l=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return{type:a,payload:{isWaiting:e}}},u=function(){return{type:c}}},1662:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=/^\/docs\/doc\/(\d+)\/detail$/,o=/^\/docs\/(domain|folder)\/(\d+)\/list$/;const a=function(e){return function(e){var t=r.exec(e);return t&&t.length>=2?{model:"Resource",key:t[1]}:null}(e)||function(e){var t=o.exec(e);return t&&t.length>=3?{model:t[1].charAt(0).toUpperCase()+t[1].slice(1),key:t[2]}:null}(e)}},11494:e=>{e.exports=s,e.exports.parse=n,e.exports.compile=function(e,t){return r(n(e,t))},e.exports.tokensToFunction=r,e.exports.tokensToRegExp=i;var t=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function n(e,n){for(var r,c=[],i=0,s=0,l="",u=n&&n.delimiter||"/",p=n&&n.whitelist||void 0,d=!1;null!==(r=t.exec(e));){var f=r[0],m=r[1],h=r.index;if(l+=e.slice(s,h),s=h+f.length,m)l+=m[1],d=!0;else{var y="",v=r[2],g=r[3],E=r[4],b=r[5];if(!d&&l.length){var w=l.length-1,x=l[w];(!p||p.indexOf(x)>-1)&&(y=x,l=l.slice(0,w))}l&&(c.push(l),l="",d=!1);var Z="+"===b||"*"===b,P="?"===b||"*"===b,S=g||E,O=y||u;c.push({name:v||i++,prefix:y,delimiter:O,optional:P,repeat:Z,pattern:S?a(S):"[^"+o(O===u?O:O+u)+"]+?"})}}return(l||s<e.length)&&c.push(l+e.substr(s)),c}function r(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"==typeof e[n]&&(t[n]=new RegExp("^(?:"+e[n].pattern+")$"));return function(n,r){for(var o="",a=r&&r.encode||encodeURIComponent,c=0;c<e.length;c++){var i=e[c];if("string"!=typeof i){var s,l=n?n[i.name]:void 0;if(Array.isArray(l)){if(!i.repeat)throw new TypeError('Expected "'+i.name+'" to not repeat, but got array');if(0===l.length){if(i.optional)continue;throw new TypeError('Expected "'+i.name+'" to not be empty')}for(var u=0;u<l.length;u++){if(s=a(l[u],i),!t[c].test(s))throw new TypeError('Expected all "'+i.name+'" to match "'+i.pattern+'"');o+=(0===u?i.prefix:i.delimiter)+s}}else if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if(!i.optional)throw new TypeError('Expected "'+i.name+'" to be '+(i.repeat?"an array":"a string"))}else{if(s=a(String(l),i),!t[c].test(s))throw new TypeError('Expected "'+i.name+'" to match "'+i.pattern+'", but got "'+s+'"');o+=i.prefix+s}}else o+=i}return o}}function o(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function a(e){return e.replace(/([=!:$/()])/g,"\\$1")}function c(e){return e&&e.sensitive?"":"i"}function i(e,t,n){for(var r=(n=n||{}).strict,a=!1!==n.start,i=!1!==n.end,s=n.delimiter||"/",l=[].concat(n.endsWith||[]).map(o).concat("$").join("|"),u=a?"^":"",p=0;p<e.length;p++){var d=e[p];if("string"==typeof d)u+=o(d);else{var f=d.repeat?"(?:"+d.pattern+")(?:"+o(d.delimiter)+"(?:"+d.pattern+"))*":d.pattern;t&&t.push(d),d.optional?d.prefix?u+="(?:"+o(d.prefix)+"("+f+"))?":u+="("+f+")?":u+=o(d.prefix)+"("+f+")"}}if(i)r||(u+="(?:"+o(s)+")?"),u+="$"===l?"$":"(?="+l+")";else{var m=e[e.length-1],h="string"==typeof m?m[m.length-1]===s:void 0===m;r||(u+="(?:"+o(s)+"(?="+l+"))?"),h||(u+="(?="+o(s)+"|"+l+")")}return new RegExp(u,c(n))}function s(e,t,r){return e instanceof RegExp?function(e,t){if(!t)return e;var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,pattern:null});return e}(e,t):Array.isArray(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(s(e[o],t,n).source);return new RegExp("(?:"+r.join("|")+")",c(n))}(e,t,r):function(e,t,r){return i(n(e,r),t,r)}(e,t,r)}}}]);
|
|
2
|
-
//# sourceMappingURL=chunk-564.dc6ec2a0e64e928cbe39.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./packages/admin/src/routes/entities/modules/path/actions.js","webpack:///./packages/admin/src/routes/entities/utils/url.js","webpack:///./packages/admin/src/routes/entities/modules/path/sagas.js","webpack:///./packages/admin/src/routes/entities/modules/path/reducer.js","webpack:///./packages/admin/src/routes/entities/modules/path/index.js","webpack:///./packages/admin/src/routes/entities/components/ErrorView/EntityErrorView.js","webpack:///./packages/admin/src/routes/entities/components/ErrorView/ErrorViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesOverview/EntitiesOverview.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesOverview/index.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/StyledComponents.js","webpack:///./packages/admin/src/routes/entities/utils/relationPersistor.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/ListView.js","webpack:///./packages/admin/src/routes/entities/components/DocsView/DocsView.js","webpack:///./packages/admin/src/routes/entities/components/DocsView/index.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/DocsViewAdapter.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/RelationsView.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/RelationViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/RelationsView/index.js","webpack:///./packages/admin/src/routes/entities/components/Action/LazyAction.js","webpack:///./packages/admin/src/routes/entities/components/EditView/EditView.js","webpack:///./packages/admin/src/routes/entities/components/EditView/EditViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/StyledComponents.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/DetailView.js","webpack:///./packages/admin/src/routes/entities/components/DetailView/DetaiViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/ActionView/ActionView.js","webpack:///./packages/admin/src/routes/entities/components/ActionView/ActionViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntityRecordRoute/EntityRecordRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntityRecordRoute/index.js","webpack:///./packages/admin/src/routes/entities/components/CreateView/CreateView.js","webpack:///./packages/admin/src/routes/entities/components/CreateView/CreateViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/ListView/DocsViewAdapter.js","webpack:///./packages/admin/src/routes/entities/components/ListView/ListView.js","webpack:///./packages/admin/src/routes/entities/components/ListView/ListViewContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntityRoute/EntityRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntityRoute/index.js","webpack:///./packages/admin/src/routes/entities/components/Breadcrumbs/BreadcrumbsContainer.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesRoute/EntitiesRoute.js","webpack:///./packages/admin/src/routes/entities/components/EntitiesRoute/EntitiesRouteContainer.js","webpack:///./packages/admin/src/routes/entities/route.js","webpack:///./packages/docs-browser/src/modules/path/actions.js","webpack:///./packages/docs-browser/src/modules/path/sagas.js","webpack:///./packages/docs-browser/src/modules/path/reducer.js","webpack:///./packages/docs-browser/src/modules/path/index.js","webpack:///./packages/docs-browser/src/modules/create/sagas.js","webpack:///./packages/docs-browser/src/modules/create/actions.js","webpack:///./packages/docs-browser/src/modules/create/reducer.js","webpack:///./packages/docs-browser/src/modules/create/index.js","webpack:///./packages/docs-browser/src/modules/list/actions.js","webpack:///./packages/docs-browser/src/modules/list/reducer.js","webpack:///./packages/docs-browser/src/modules/list/index.js","webpack:///./packages/docs-browser/src/modules/list/sagas.js","webpack:///./packages/docs-browser/src/modules/move/sagas.js","webpack:///./packages/docs-browser/src/modules/move/reducer.js","webpack:///./packages/docs-browser/src/modules/move/index.js","webpack:///./packages/docs-browser/src/modules/reducers.js","webpack:///./packages/docs-browser/src/components/Action/LazyAction.js","webpack:///./packages/docs-browser/src/components/FileInput/FileInput.js","webpack:///./packages/docs-browser/src/components/FileInput/FileInputContainer.js","webpack:///./packages/docs-browser/src/components/DocsView/StyledComponents.js","webpack:///./packages/docs-browser/src/utils/isRootLocation.js","webpack:///./packages/docs-browser/src/components/DocsView/DocsView.js","webpack:///./packages/docs-browser/src/components/DocsView/DocsViewContainer.js","webpack:///./packages/docs-browser/src/components/DocumentView/StyledComponents.js","webpack:///./packages/docs-browser/src/components/DocumentView/DocumentView.js","webpack:///./packages/docs-browser/src/components/DocumentView/DocumentViewContainer.js","webpack:///./packages/docs-browser/src/containers/BreadcrumbsContainer.js","webpack:///./packages/docs-browser/src/components/DocsBrowser/StyledComponents.js","webpack:///./packages/docs-browser/src/components/DocsBrowser/DocsBrowser.js","webpack:///./packages/docs-browser/src/components/DocsBrowser/DocsBrowserContainer.js","webpack:///./packages/docs-browser/src/input.js","webpack:///./packages/docs-browser/src/main.js","webpack:///./packages/docs-browser/src/modules/move/actions.js","webpack:///./packages/docs-browser/src/utils/getNode.js","webpack:///./packages/admin/node_modules/path-to-regexp/index.js"],"names":["setCurrentViewInfo","location","currentViewInfo","type","payload","setRelations","relations","setRelationsInfo","relationsInfo","getPathInfo","pathname","pathParts","res","pathToRegexp","exec","reduce","acc","pathPart","idx","name","parseResult","actionId","mainSagas","loadRoute","loadRouteInfo","initMultiRelations","loadRelationInfos","all","takeLatest","call","routeInfo","length","deriveCurrentViewInfo","put","actions","deriveBreadcrumbs","breadcrumbs","breadcrumbsInfo","error","spawn","model","key","viewPersistor","level","path","routeInfos","entity","rest","baseModel","push","entityName","display","label","relation","splittedRelation","split","i","relationStringPart","parent","relationName","paths","targetEntity","relationModel","view","lastEntry","_omit","parentKey","reverseRelation","reverseRelationName","parentModel","map","filter","e","_pickBy","value","relationDisplay","show","relationsTransformed","Object","keys","k","_pick","sort","a","b","order","resource","relationInfoResponse","body","ACTION_HANDLERS","state","currentViewInfos","reducerUtil","initialState","action","handler","prefix","title","description","ErrorView","id","message","values","connect","props","entities","history","injectIntl","EntityErrorView","Typography","StyledLink","to","StyledRelationsViewWrapper","styled","isCollapsed","StyledPlaceHolder","theme","scale","StyledToggleCollapse","StyledToggleCollapseButton","Button","StyledPreviewBox","StyledRelationBox","StyledScrollbar","StyledPreviewLink","RelationLinks","RelationBox","selected","RelationLabel","StyledSpan","selectedRelations","ListView","selectedRelation","match","emitAction","formName","showLink","navigationStrategy","onRowClick","entityBaseUrl","url","replace","onNavigateToCreate","goBack","searchFormType","selectionStyle","store","onStoreCreate","showActions","limit","React","entityKey","noLeftPadding","openResource","useState","folderKey","setFolderKey","fetchFolder","then","useEffect","sortable","rootNodes","embedded","disableViewPersistor","icon","RelationsView","intl","toggleCollapse","selectRelation","_get","queryRelation","queryString","search","find","r","persistedSelectedRelation","msg","formatMessage","hasCreateRights","createPermission","RelationPreview","DocsViewAdapter","onClick","setRelation","count","aria-label","areEqual","prevProps","nextProps","js","mapActionCreators","actionEmitter","lazy","LoadMask","appId","LazyAction","consoleLogger","ActionComponent","Suspense","fallback","StyledEntityDetailAppWrapper","touched","setTouched","queryFormName","when","entityId","mode","onTouchedChange","navigateToCreateRelative","onEntityDeleted","actionAppComponent","Action","onSubGridRowClick","EditView","StyledDetailViewContainer","StyledDetailViewLeft","StyledDetailViewRight","relationViewCollapsed","saveUserPreferences","setIsCollapsed","onSearchFormCollapsedChange","collapsed","preferences","userPreferences","DetailView","ActionView","setCurrentViewTitle","queryParams","queryStringUtil","selection","actionProperties","navigateBack","onSuccess","onError","onCancel","currentViewTitle","str","word","exact","render","component","Detail","Edit","Relations","Entity","dispatchEmittedAction","stateDefaultValues","isMultiReverseRelation","defaultValues","onEntityCreated","CreateView","searchFormCollapsed","searchFormPosition","tql","List","Create","Record","pathPrefix","currentView","Breadcrumbs","StyledWrapper","StyledContent","StyledBreadcrumbs","loadCurrentRoute","content","Overview","container","EntitiesRoute","reducers","combineReducers","sagas","setBreadcrumbs","getSearchBreadcrumbs","loadBreadcrumbs","getRootNodesParam","textResourceSelector","messages","docsPathSelector","docs","rootNodesSelector","input","select","node","getNode","searchMode","rootnodes","options","result","Array","isArray","join","fork","moduleSagas","handleFilesSelected","createDocuments","dialogSelector","create","dialog","files","isDirectory","uuid","blockingInfoId","notification","response","remoteEvents","items","item","status","bean","msgId","formData","FormData","file","append","f","method","takeEvery","directory","instanceCount","changeListParent","changeSearchFormCollapsed","externalEvents","moveElements","setDone","inputSelector","move","acceptedStatusCodes","targetEntityKey","target","selectedEntityKeys","errorCode","validation","errors","ids","isWaiting","list","pathSagas","createSagas","listSagas","moveSagas","ref","onChange","fileInput","useRef","prevInstanceCount","current","click","style","multiple","webkitdirectory","FileInput","StyledContentWrapper","StyledIconWrapper","ROOT_PATH_REGEX","test","LazyListApp","domainTypes","onSearchChange","openFileDialog","getCustomLocation","getListFormName","domainDetailFormName","folderDetailFormName","useReducer","x","entityListNumber","forceEntityListUpdate","entityListKey","setSelection","useMemo","params","charAt","toUpperCase","slice","getParent","getFormName","mounted","searchModeRef","getTql","handleUploadDocument","definition","config","handleUploadDirectory","undefined","isRootLocation","searchStore","Error","getDefaultLocation","cellRenderers","rowData","column","cellRenderer","children","c","dmsEntityModel","contextParams","detailFormNames","Domain","Folder","customActions","onSelectChange","listLimit","DocsView","StyledDocumentViewWrapper","LazyDetailApp","lastList","reverse","breadcrumb","lastListUrl","documentDetailFormName","DocumentView","withTheme","setSearchMode","docsViewNumber","forceDocsViewUpdate","useLocation","resetSearchMode","handleSearchChange","query","hasUserChanges","backgroundColor","themeUtil","breadcrumbsItem","DocsBrowser","getDispatchActions","actionSettings","actionSetting","argsFactory","EXTERNAL_EVENTS","createHistory","memoryHistory","createMemoryHistory","createHashHistory","getUserConfirmation","confirmCallback","getState","okText","cancelText","dispatch","GlobalStyles","initApp","events","publicPath","appFactory","errorLogging","handleNotifications","cache","businessUnit","initialLocation","singleRootNode","startUrl","toLowerCase","textResourceModules","DocsBrowserApp","app","event","getEvents","changedProps","this","_isEqual","_isEmpty","forEach","INITIALIZE","MOVE_ELEMENTS","SET_WAITING","CLOSE","initialize","setWaiting","close","DOC_PATH_REGEX","PARENT_PATH_REGEX","docMatches","getResourceNode","parentMatches","getParentNode","module","exports","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","whitelist","pathEscaped","m","escaped","offset","prev","capture","group","modifier","indexOf","repeat","optional","pattern","escapeGroup","escapeString","substr","matches","data","encode","encodeURIComponent","token","segment","TypeError","j","String","flags","sensitive","strict","start","end","endsWith","concat","route","endToken","isEndDelimited","groups","source","regexpToRegexp","parts","arrayToRegexp","stringToRegexp"],"mappings":"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","file":"chunk-564.dc6ec2a0e64e928cbe39.js","sourcesContent":["export const SET_CURRENT_VIEW_INFO = 'path/SET_CURRENT_VIEW_INFO'\nexport const LOAD_CURRENT_ROUTE = 'path/LOAD_CURRENT_ROUTE'\nexport const SET_BREADCRUMBS_INFO = 'path/SET_BREADCRUMBS_INFO'\nexport const SET_RELATIONS = 'path/SET_RELATIONS'\nexport const SET_CURRENT_VIEW_TITLE = 'path/SET_CURRENT_VIEW_TITLE'\nexport const SET_RELATIONS_INFO = 'path/SET_RELATIONS_INFO'\n\nexport const setCurrentViewInfo = (location, currentViewInfo) => ({\n type: SET_CURRENT_VIEW_INFO,\n payload: {\n location,\n currentViewInfo\n }\n})\n\nexport const loadCurrentRoute = location => ({\n type: LOAD_CURRENT_ROUTE,\n payload: {\n location\n }\n})\n\nexport const setBreadcrumbsInfo = breadcrumbsInfo => ({\n type: SET_BREADCRUMBS_INFO,\n payload: {\n breadcrumbsInfo\n }\n})\n\nexport const setRelations = relations => ({\n type: SET_RELATIONS,\n payload: {\n relations\n }\n})\n\nexport const setCurrentViewTitle = currentViewTitle => ({\n type: SET_CURRENT_VIEW_TITLE,\n payload: {\n currentViewTitle\n }\n})\n\nexport const setRelationsInfo = relationsInfo => ({\n type: SET_RELATIONS_INFO,\n payload: {\n relationsInfo\n }\n})\n","import pathToRegexp from 'path-to-regexp'\n\nconst entityUrlRegex = '/e/:entity/:key?/:relation*/:view(list|detail|edit|create|relations|action)/:actionId?'\nconst actionUrlRegex = '/e/action/:actionId'\n\n/**\n * Returns an object with actionId, entity, key, relation and view for given url\n *\n * @param pathname {String} url / path starting with /e/\n */\nexport const getPathInfo = pathname => {\n const pathParts = []\n const re = pathToRegexp(entityUrlRegex, pathParts)\n const res = re.exec(pathname)\n\n if (res !== null) {\n return pathParts.reduce((acc, pathPart, idx) => {\n return {\n ...acc,\n [pathPart.name]: res[idx + 1]\n }\n }, {})\n }\n\n const actionPathRegex = pathToRegexp(actionUrlRegex, pathParts)\n const parseResult = actionPathRegex.exec(pathname)\n\n if (parseResult !== null) {\n return {\n actionId: parseResult[1]\n }\n }\n\n return null\n}\n","import {rest} from 'tocco-app-extensions'\nimport {viewPersistor} from 'tocco-util'\nimport _pickBy from 'lodash/pickBy'\nimport _omit from 'lodash/omit'\nimport _pick from 'lodash/pick'\nimport {takeLatest, all, call, put, spawn} from 'redux-saga/effects'\n\nimport * as actions from './actions'\nimport {getPathInfo} from '../../utils/url'\n\nconst isEven = n => n % 2 === 0\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_CURRENT_ROUTE, loadRoute)\n ])\n}\n\nexport function* loadRoute({payload: {location}}) {\n const {pathname} = location\n\n const routeInfo = yield call(loadRouteInfo, pathname)\n\n if (routeInfo.length > 0) {\n const currentViewInfo = yield call(deriveCurrentViewInfo, pathname, routeInfo)\n\n yield put(actions.setCurrentViewInfo(pathname, currentViewInfo))\n\n const breadcrumbs = yield call(deriveBreadcrumbs, routeInfo)\n yield put(actions.setBreadcrumbsInfo(breadcrumbs))\n\n if (currentViewInfo.type === 'detail' && !currentViewInfo.error) {\n yield spawn(initMultiRelations, currentViewInfo.model, currentViewInfo.key)\n }\n\n yield call(viewPersistor.clearPersistedViews, currentViewInfo.level + 1)\n }\n}\n\nexport function* loadRouteInfo(pathname) {\n const path = yield call(getPathInfo, pathname)\n const routeInfos = []\n\n if (path === null) {\n return routeInfos\n }\n\n if (path.entity) {\n let baseModel\n try {\n baseModel = yield call(rest.fetchModel, path.entity)\n routeInfos.push({\n type: 'list',\n model: baseModel\n })\n } catch (e) {\n routeInfos.push({\n type: 'list',\n error: {\n entityName: path.entity\n }\n })\n return routeInfos\n }\n\n if (path.key) {\n const entityExists = yield call(rest.entityExists, baseModel.name, path.key)\n\n if (entityExists) {\n const display = yield call(rest.fetchDisplay, baseModel.name, path.key)\n routeInfos.push({\n type: 'detail',\n key: path.key,\n model: baseModel,\n display\n })\n } else {\n routeInfos.push({\n type: 'detail',\n error: {\n entityName: baseModel.label,\n key: path.key\n }\n })\n\n return routeInfos\n }\n\n if (path.relation) {\n const splittedRelation = path.relation.split('/')\n\n for (let i = 0; i < splittedRelation.length; i++) {\n const relationStringPart = splittedRelation[i]\n\n const parent = routeInfos[routeInfos.length - 1]\n if (isEven(i)) {\n const relationName = relationStringPart\n const relation = parent.model.paths[relationName]\n if (!relation) {\n routeInfos.push({\n type: 'list',\n error: {\n relationName: relationName,\n entityName: parent.model.name\n }\n })\n return routeInfos\n }\n const targetEntity = relation.targetEntity\n\n const relationModel = yield call(rest.fetchModel, targetEntity)\n\n routeInfos.push({\n type: 'list',\n model: relationModel,\n relationName,\n parent\n })\n } else {\n const key = relationStringPart\n const model = parent.model\n const entityExists = yield call(rest.entityExists, baseModel.name, path.key)\n\n if (entityExists) {\n const display = yield call(rest.fetchDisplay, model.name, key)\n routeInfos.push({\n type: 'detail',\n model,\n key,\n display,\n relationName: parent.relationName,\n parent: parent.parent\n })\n } else {\n routeInfos.push({\n type: 'detail',\n error: {\n entityName: model.name,\n key\n }\n })\n return routeInfos\n }\n }\n }\n }\n }\n\n if (path.view === 'create') {\n const entity = routeInfos[routeInfos.length - 1]\n const parent = routeInfos[routeInfos.length - 2]\n routeInfos.push({\n type: 'create',\n model: entity.model,\n parent,\n relationName: entity.relationName\n })\n } else if (path.actionId) {\n routeInfos.push({\n type: 'action',\n actionId: path.actionId\n })\n }\n } else if (path.actionId) {\n routeInfos.push({\n type: 'action',\n actionId: path.actionId\n })\n }\n\n return routeInfos\n}\n\nexport const deriveCurrentViewInfo = (pathname, routeInfo) => {\n const lastEntry = routeInfo[routeInfo.length - 1]\n const parent = lastEntry.parent\n\n return {\n ..._omit(lastEntry, ['parent']),\n pathname,\n level: routeInfo.length - 1,\n ...(parent && lastEntry.relationName && {\n parentKey: parent.key,\n reverseRelation: parent.model.paths[lastEntry.relationName].reverseRelationName,\n parentModel: parent.model\n })\n }\n}\n\nexport const deriveBreadcrumbs = routeInfos => {\n let path = ''\n return routeInfos.map(routeInfo => {\n if (routeInfo.error) {\n return {type: 'error'}\n }\n if (routeInfo.type === 'action') {\n return null\n }\n path = (path ? path + '/' : '') + (routeInfo.key ? routeInfo.key : routeInfo.relationName || routeInfo.model.name)\n return {\n type: routeInfo.type,\n display: routeInfo.display || routeInfo.model.label,\n path: path + '/' + routeInfo.type\n }\n }).filter(e => e)\n}\n\nexport function* initMultiRelations(model, key) {\n const relations = _pickBy(model.paths, (value, key) => value.relationDisplay && value.relationDisplay.show)\n\n const relationsTransformed = Object.keys(relations)\n .map(k =>\n _pick(relations[k],\n ['relationName', 'reverseRelationName', 'targetEntity', 'relationDisplay.label', 'relationDisplay.order']\n )\n )\n .sort((a, b) => a.relationDisplay.order > b.relationDisplay.order ? 1 : -1)\n\n yield put(actions.setRelations(relationsTransformed))\n yield call(loadRelationInfos, model.name, key)\n}\n\nexport function* loadRelationInfos(model, key) {\n const resource = `client/entities/${model}/${key}/relations`\n const relationInfoResponse = yield call(rest.requestSaga, resource)\n const relationsInfo = relationInfoResponse.body.relations\n yield put(actions.setRelationsInfo(relationsInfo))\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nexport const setCurrentViewInfo = (state, {payload: {location, currentViewInfo}}) => ({\n ...state,\n currentViewInfos: {\n ...state.currentViewInfos,\n [location]: currentViewInfo\n }\n})\n\nconst ACTION_HANDLERS = {\n [actions.SET_CURRENT_VIEW_INFO]: setCurrentViewInfo,\n [actions.SET_BREADCRUMBS_INFO]: reducerUtil.singleTransferReducer('breadcrumbsInfo'),\n [actions.SET_RELATIONS]: reducerUtil.singleTransferReducer('relations'),\n [actions.SET_RELATIONS_INFO]: reducerUtil.singleTransferReducer('relationsInfo'),\n [actions.SET_CURRENT_VIEW_TITLE]: reducerUtil.singleTransferReducer('currentViewTitle')\n}\n\nconst initialState = {\n currentViewInfos: {},\n breadcrumbsInfo: [],\n relations: null,\n relationsInfo: {}\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","import React from 'react'\nimport {FormattedMessage} from 'react-intl'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport ErrorView from '../../../../components/ErrorView'\n\nconst EntityErrorView = ({currentViewInfo}) => {\n const prefix = 'client.admin.entity.errorView.'\n const title = currentViewInfo.type === 'detail'\n ? 'detailTitle'\n : 'defaultTitle'\n\n const description = currentViewInfo.type === 'detail'\n ? 'detailDescription'\n : currentViewInfo.type === 'list' && currentViewInfo.error.relationName\n ? 'relationDescription'\n : 'listDescription'\n\n return <ErrorView\n title={<FormattedMessage id={prefix + title}/>}\n message={<FormattedMessage id={prefix + description} values={currentViewInfo.error}/>}/>\n}\n\nEntityErrorView.propTypes = {\n currentViewInfo: currentViewPropType\n}\n\nexport default EntityErrorView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport EntityErrorView from './EntityErrorView'\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps)(injectIntl(EntityErrorView))\n","import React from 'react'\nimport {AdminLink as StyledLink, Typography} from 'tocco-ui'\n\nconst EntitiesOverview = props => {\n return (\n <div>\n <Typography.H2>Entities Overview</Typography.H2>\n <Typography.Span>List of all available Entities</Typography.Span>\n <ul>\n <li><StyledLink to=\"/e/User\">User</StyledLink></li>\n <li><StyledLink to=\"/e/Address\">Address</StyledLink></li>\n </ul>\n </div>\n )\n}\n\nEntitiesOverview.propTypes = {\n}\n\nexport default EntitiesOverview\n","import EntitiesOverview from './EntitiesOverview'\n\nexport default EntitiesOverview\n","import styled from 'styled-components'\nimport {AdminLink as StyledLink, StyledSpan, theme, scale, StyledScrollbar, Button} from 'tocco-ui'\n\nexport const StyledRelationsViewWrapper = styled.div`\n display: ${({isCollapsed}) => isCollapsed ? 'none' : 'flex'};\n height: 100%;\n flex-direction: column;\n`\n\nexport const StyledPlaceHolder = styled.div`\n display: ${({isCollapsed}) => isCollapsed ? 'flex' : 'none'};\n flex: 1;\n height: 100%;\n width: 25px;\n background: ${theme.color('paper')};\n padding-top: ${scale.space(-1.5)};\n padding-left: ${scale.space(-2.5)};\n\n &:hover {\n cursor: pointer;\n }\n`\n\nexport const StyledToggleCollapse = styled.div`\n display: flex;\n background-color: ${theme.color('paper')};\n padding-top: ${scale.space(-1.5)};\n padding-bottom: ${scale.space(-1.5)};\n`\n\nexport const StyledToggleCollapseButton = styled(Button)`\n font-size: ${scale.font(0)};\n padding: 0;\n margin-left: auto;\n\n &:hover,\n ${/* sc-selector */StyledPlaceHolder}:hover & {\n background-color: transparent;\n color: ${theme.color('secondaryLight')};\n }\n`\n\nexport const StyledPreviewBox = styled.div`\n background-color: ${theme.color('paper')};\n padding: ${scale.space(-1)};\n margin-top: 3px;\n display: flex;\n flex-direction: column;\n flex: 1;\n`\n\nexport const StyledRelationBox = styled.div`\n background-color: ${theme.color('paper')};\n padding: ${scale.space(-1)};\n display: grid;\n grid-template-columns: repeat(auto-fit, 170px);\n grid-gap: ${scale.space(-2)};\n justify-content: space-between;\n overflow-y: auto;\n align-content: flex-start;\n height: fit-content;\n min-height: 150px;\n max-height: 20%;\n ${StyledScrollbar}\n`\n\nexport const StyledPreviewLink = styled(StyledLink)`\n padding-left: ${scale.space(-0.5)};\n\n &:nth-child(2) {\n padding-left: 0;\n }\n`\n\nexport const RelationLinks = styled.div`\n display: none;\n margin-left: auto;\n\n * {\n color: ${theme.color('text')};\n padding-left: ${scale.space(-4.5)};\n }\n`\n\nexport const RelationBox = styled.div`\n border-radius: ${theme.radii('large')};\n padding: ${scale.space(-2.7)} ${scale.space(-1)};\n display: flex;\n background-color: ${({selected}) => selected && theme.color('secondary')};\n height: fit-content;\n\n &&& {\n * {\n color: ${({selected}) => selected && theme.color('paper')};\n box-sizing: initial;\n }\n }\n ${({selected}) => selected && `\n ${RelationLinks} {\n display: flex;\n }\n `\n };\n\n // allow hover styles only on non-touch devices\n @media (hover: hover) and (pointer: fine) {\n &:hover ${RelationLinks} {\n display: flex;\n }\n\n && {\n :hover{\n background-color: ${theme.color('secondaryLight')};\n\n * {\n color: ${theme.color('paper')};\n }\n cursor: pointer;\n }\n }\n\n ${/* sc-selector */StyledLink}:hover * {\n color: ${theme.color('secondary')};\n }\n }\n`\n\nexport const RelationLabel = styled(StyledSpan)`\n && {\n max-width: 110px;\n }\n`\n","const selectedRelations = {}\n\nexport const getRelation = entity => selectedRelations[entity]\n\nexport const setRelation = (entity, selectedRelation) => {\n selectedRelations[entity] = selectedRelation\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport {viewPersistor} from 'tocco-util'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport {goBack} from '../../../../utils/routing'\n\nconst ListView = ({selectedRelation, currentViewInfo, match, history, emitAction}) => {\n return (\n <EntityListApp\n id={'preview' + selectedRelation.reverseRelationName + selectedRelation.targetEntity}\n key={selectedRelation.reverseRelationName + selectedRelation.targetEntity}\n entityName={selectedRelation.targetEntity}\n formName={selectedRelation.targetEntity}\n parent={{\n key: currentViewInfo.key,\n reverseRelationName: selectedRelation.reverseRelationName,\n model: currentViewInfo.model.name,\n relationName: selectedRelation.relationName\n }}\n showLink={true}\n navigationStrategy={navigationStrategy(history, match)}\n onRowClick={({id}) => {\n const entityBaseUrl = match.url.replace(/detail$/, '')\n history.push(`${entityBaseUrl}${selectedRelation.relationName}/${id}`)\n }}\n onNavigateToCreate={() => {\n const entityBaseUrl = goBack(match.url)\n history.push(entityBaseUrl + '/' + selectedRelation.relationName + '/create')\n }}\n searchFormType=\"simple\"\n selectionStyle=\"none\"\n store={viewPersistor.viewInfoSelector(history.location.pathname)[`store-${selectedRelation.relationName}`]}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(\n currentViewInfo.pathname,\n {[`store-${selectedRelation.relationName}`]: store},\n currentViewInfo.level\n )\n }}\n showActions={false}\n limit={15}\n emitAction={emitAction}\n />\n )\n}\n\nListView.propTypes = {\n selectedRelation: PropTypes.shape({\n reverseRelationName: PropTypes.string,\n targetEntity: PropTypes.string,\n relationName: PropTypes.string\n\n }).isRequired,\n currentViewInfo: currentViewPropType,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default React.memo(ListView)\n","import React, {useEffect, useState} from 'react'\nimport DocsBrowserApp from 'tocco-docs-browser/src/main'\nimport {rest} from 'tocco-app-extensions'\nimport PropTypes from 'prop-types'\n\nconst DocsView = ({entityName, entityKey, showActions, noLeftPadding, openResource}) => {\n const [folderKey, setFolderKey] = useState(null)\n\n const fetchFolder = async() => {\n rest.simpleRequest('entities/2.0/' + entityName + '/' + entityKey + '/entitydocs/folder')\n .then(res => {\n setFolderKey(res.body.key)\n })\n }\n\n useEffect(() => {\n fetchFolder()\n }, [])\n\n return folderKey\n && <DocsBrowserApp\n noLeftPadding={noLeftPadding}\n sortable={false}\n searchFormType=\"none\"\n rootNodes={[\n {\n key: folderKey,\n entityName: 'Folder'\n }\n ]}\n embedded={true}\n showActions={showActions}\n {...showActions === false ? {selectionStyle: 'none'} : {}}\n disableViewPersistor={true}\n {...openResource ? {openResource} : {}}\n />\n}\n\nDocsView.propTypes = {\n entityName: PropTypes.string.isRequired,\n entityKey: PropTypes.string.isRequired,\n showActions: PropTypes.bool.isRequired,\n noLeftPadding: PropTypes.bool,\n openResource: PropTypes.func\n}\n\nexport default DocsView\n","import DocsView from './DocsView'\n\nexport default DocsView\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport DocsView from '../DocsView'\nimport {currentViewPropType} from '../../utils/propTypes'\n\nconst DocsViewAdapter = ({currentViewInfo, history, selectedRelation}) =>\n <DocsView\n entityName={currentViewInfo.model.name}\n entityKey={currentViewInfo.key}\n showActions={false}\n noLeftPadding={true}\n history={history}\n openResource={location => {\n history.push(`${selectedRelation.relationName}/list#${location}`)\n }}\n />\n\nDocsViewAdapter.propTypes = {\n history: PropTypes.object.isRequired,\n selectedRelation: PropTypes.shape({\n relationName: PropTypes.string.isRequired\n }).isRequired,\n currentViewInfo: currentViewPropType\n}\n\nexport default DocsViewAdapter\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {AdminLink as StyledLink, Icon, Typography} from 'tocco-ui'\nimport {js} from 'tocco-util'\nimport queryString from 'query-string'\nimport _get from 'lodash/get'\n\nimport {\n RelationBox,\n RelationLabel,\n RelationLinks,\n StyledPreviewBox,\n StyledRelationBox,\n StyledRelationsViewWrapper,\n StyledToggleCollapse,\n StyledToggleCollapseButton,\n StyledPlaceHolder,\n StyledPreviewLink\n} from './StyledComponents'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport {getRelation, setRelation} from '../../utils/relationPersistor'\nimport ListView from './ListView'\nimport DocsViewAdapter from './DocsViewAdapter'\n\nconst RelationsView = ({\n history,\n match,\n currentViewInfo,\n relations,\n relationsInfo,\n emitAction,\n intl,\n isCollapsed,\n toggleCollapse\n}) => {\n const [selectedRelation, selectRelation] = useState(null)\n const entityName = _get(currentViewInfo, 'model.name')\n useEffect(\n () => {\n if (relations && relations.length > 0) {\n const queryRelation = queryString.parse(history.location.search).relation\n if (queryRelation) {\n selectRelation(relations.find(r => r.relationName === queryRelation))\n } else {\n const persistedSelectedRelation = getRelation(entityName)\n if (persistedSelectedRelation) {\n selectRelation(relations.find(r => r.relationName === persistedSelectedRelation))\n } else {\n selectRelation(relations[0])\n }\n }\n }\n },\n [relations]\n )\n\n const msg = id => intl.formatMessage({id})\n\n const getRelationCountLabel = relationName => relationsInfo[relationName] && relationsInfo[relationName].count > 0\n ? <RelationLabel> ({relationsInfo[relationName].count})</RelationLabel>\n : null\n\n if (!relations || relations.length === 0 || !currentViewInfo) {\n return null\n }\n\n const hasCreateRights = relationName => relationsInfo[relationName] && relationsInfo[relationName].createPermission\n\n const RelationPreview = selectedRelation\n ? (selectedRelation.targetEntity === 'Resource' ? DocsViewAdapter : ListView)\n : () => <React.Fragment/>\n\n return <>\n <StyledRelationsViewWrapper isCollapsed={isCollapsed}>\n <StyledToggleCollapse>\n <StyledToggleCollapseButton icon=\"chevron-right\" onClick={toggleCollapse}/>\n </StyledToggleCollapse>\n <StyledRelationBox>\n {relations.map(relation => (\n <RelationBox\n key={`relation-${relation.relationName}`}\n selected={selectedRelation && relation.relationName === selectedRelation.relationName}\n onClick={() => {\n selectRelation(relation)\n history.replace({\n search: '?relation=' + relation.relationName\n })\n setRelation(entityName, relation.relationName)\n }}\n >\n <RelationLabel title={relation.relationDisplay.label}>\n {relation.relationDisplay.label}</RelationLabel>{getRelationCountLabel(relation.relationName)}\n <RelationLinks>\n <StyledLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkView')}\n to={match.url.replace(/(relations|detail)$/, relation.relationName)}>\n <Icon icon=\"arrow-right\"/>\n </StyledLink>\n {hasCreateRights(relation.relationName) && relation.targetEntity !== 'Resource'\n && <StyledLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkCreate')}\n to={match.url.replace(/(relations|detail)$/, relation.relationName) + '/create'}>\n <Icon icon=\"plus\"/>\n </StyledLink>\n }\n </RelationLinks>\n </RelationBox>\n ))}\n </StyledRelationBox>\n\n {selectedRelation\n && <StyledPreviewBox>\n <Typography.H4>\n {selectedRelation.relationDisplay.label}\n <StyledPreviewLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkView')}\n to={match.url.replace(/(relations|detail)$/, selectedRelation.relationName)}>\n <Icon icon=\"arrow-right\"/>\n </StyledPreviewLink>\n {hasCreateRights(selectedRelation.relationName) && selectedRelation.targetEntity !== 'Resource'\n && <StyledPreviewLink\n aria-label={msg('client.admin.entities.relationsView.relationLinkCreate')}\n to={match.url.replace(/(relations|detail)$/, selectedRelation.relationName) + '/create'}>\n <Icon icon=\"plus\"/>\n </StyledPreviewLink>\n }\n </Typography.H4>\n <RelationPreview\n selectedRelation={selectedRelation}\n match={match}\n history={history}\n currentViewInfo={currentViewInfo}\n emitAction={emitAction}\n />\n </StyledPreviewBox>\n }\n </StyledRelationsViewWrapper>\n <StyledPlaceHolder onClick={toggleCollapse} isCollapsed={isCollapsed}>\n <StyledToggleCollapseButton icon={'chevron-left'} isCollapsed={isCollapsed}/>\n </StyledPlaceHolder>\n </>\n}\n\nRelationsView.propTypes = {\n history: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n relations: PropTypes.array,\n relationsInfo: PropTypes.objectOf(PropTypes.shape({\n count: PropTypes.number,\n createPermission: PropTypes.bool\n })),\n emitAction: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n isCollapsed: PropTypes.bool,\n toggleCollapse: PropTypes.func.isRequired\n}\n\nconst areEqual = (prevProps, nextProps) => {\n const diff = Object.keys(js.difference(prevProps, nextProps))\n return diff.length === 0\n}\n\nexport default React.memo(RelationsView, areEqual)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport RelationsView from './RelationsView'\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n relations: state.entities.path.relations,\n relationsInfo: state.entities.path.relationsInfo\n})\n\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(RelationsView))\n","import RelationsView from './RelationViewContainer'\n\nexport default RelationsView\n","import React, {lazy, Suspense} from 'react'\nimport {connect} from 'react-redux'\nimport PropTypes from 'prop-types'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {LoadMask} from 'tocco-ui'\nimport {consoleLogger} from 'tocco-util'\n\nconst actions = {\n 'user-qr-action': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/UserQrAction')),\n 'input-edit': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/InputEdit')),\n 'resourcescheduler': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/ResourceScheduler')),\n 'show-output-jobs-action': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/ShowOutputJobsAction')),\n 'delete': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Delete')),\n 'merge': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Merge')),\n 'copy': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Copy')),\n 'documents': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/Documents')),\n 'password-update': lazy(() => import(/* webpackChunkName: \"actions\" */'./actions/PasswordUpdate'))\n}\n\nconst renderLoader = () => <LoadMask/>\n\nconst LazyAction = props => {\n const {appId} = props\n const LazyAction = actions[appId]\n\n if (!LazyAction) {\n consoleLogger.logError(`no action found with id: ${appId}`)\n return null\n }\n\n const ActionComponent = connect(null, {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n })(LazyAction)\n\n return <Suspense fallback={renderLoader()}>\n <ActionComponent {...props}/>\n </Suspense>\n}\n\nLazyAction.propTypes = {\n appId: PropTypes.string.isRequired\n}\n\nexport default LazyAction\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {Prompt} from 'react-router'\nimport queryString from 'query-string'\nimport styled from 'styled-components'\nimport {theme, scale} from 'tocco-ui'\n\nimport {goBack} from '../../../../utils/routing'\nimport Action from '../Action'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\n\nexport const StyledEntityDetailAppWrapper = styled.div`\n margin: 0;\n background-color: ${theme.color('paper')};\n padding: 0 0 0 ${scale.space(0)};\n overflow: hidden;\n height: 100%;\n`\n\nconst EditView = props => {\n const {\n currentViewInfo,\n history,\n match,\n intl,\n emitAction\n } = props\n\n const [touched, setTouched] = useState(false)\n const mode = 'update'\n\n if (!currentViewInfo || currentViewInfo.pathname !== history.location.pathname) {\n return null\n }\n\n const queryFormName = queryString.parse(location.search).formName\n\n const handleToucheChanged = ({touched}) => {\n setTouched(touched)\n }\n\n const navigateToCreateRelative = (relationName, state) => {\n if (relationName) {\n const entityBaseUrl = goBack(match.url, 1)\n history.push({\n pathname: `${entityBaseUrl}/${relationName}/create`,\n state\n })\n } else {\n const entityBaseUrl = goBack(match.url, 2)\n history.push({\n pathname: entityBaseUrl + '/create',\n state\n })\n }\n }\n\n const handleEntityDeleted = () => {\n const entityBaseUrl = goBack(match.url, 2)\n history.push(entityBaseUrl)\n }\n\n const handleSubGridRowClick = ({id, relationName}) => {\n const entityBaseUrl = goBack(match.url)\n history.push(`${entityBaseUrl}/${relationName}/${id}`)\n }\n\n const entityName = currentViewInfo.model.name\n const msg = id => intl.formatMessage({id})\n\n return <StyledEntityDetailAppWrapper>\n <Prompt\n when={touched}\n message={location => {\n if (history.location.pathname !== location.pathname) {\n return msg('client.entity-browser.detail.confirmTouchedFormLeave')\n }\n\n return false\n }}\n />\n <EntityDetailApp\n entityName={entityName}\n entityId={currentViewInfo.key}\n formName={queryFormName || entityName}\n mode={mode}\n emitAction={emitAction}\n onTouchedChange = {handleToucheChanged}\n navigationStrategy={{...navigationStrategy(history, match), navigateToCreateRelative}}\n onEntityDeleted={handleEntityDeleted}\n actionAppComponent={Action}\n onSubGridRowClick={handleSubGridRowClick}\n />\n </StyledEntityDetailAppWrapper>\n}\n\nEditView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default EditView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport EditView from './EditView'\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(EditView))\n","import styled from 'styled-components'\n\nexport const StyledDetailViewContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n\n .react-bs-container-body {\n height: auto !important;\n }\n`\n\nexport const StyledDetailViewLeft = styled.div`\n flex: 1;\n margin-right: 1rem;\n ${({isCollapsed}) => !isCollapsed\n && ` @media(max - width: 1024px) {\n flex: none;\n width: 40%;\n }`\n}\n`\n\nexport const StyledDetailViewRight = styled.div`\n flex: ${({isCollapsed}) => isCollapsed ? '0' : '1'};\n`\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\nimport RelationsView from '../RelationsView'\nimport EditView from '../EditView'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport {StyledDetailViewContainer, StyledDetailViewLeft, StyledDetailViewRight} from './StyledComponents'\n\nconst DetailView = ({match, history, currentViewInfo, relationViewCollapsed, saveUserPreferences}) => {\n const [isCollapsed, setIsCollapsed] = useState(false)\n const toggleCollapse = () => {\n setIsCollapsed(!isCollapsed)\n onSearchFormCollapsedChange(!isCollapsed)\n }\n\n useEffect(() => {\n setIsCollapsed(relationViewCollapsed)\n }, [relationViewCollapsed])\n\n const onSearchFormCollapsedChange = collapsed => {\n saveUserPreferences({'admin.detail.relationViewCollapsed': collapsed})\n }\n\n return (\n <StyledDetailViewContainer>\n <StyledDetailViewLeft isCollapsed={isCollapsed}>\n <EditView match={match} history={history}/>\n </StyledDetailViewLeft>\n <StyledDetailViewRight isCollapsed={isCollapsed}>\n <RelationsView match={match} history={history} isCollapsed={isCollapsed} toggleCollapse={toggleCollapse}/>\n </StyledDetailViewRight>\n </StyledDetailViewContainer>\n )\n}\n\nDetailView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n relationViewCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func.isRequired\n}\n\nexport default DetailView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport _get from 'lodash/get'\n\nimport DetailView from './DetailView'\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\nconst mapActionCreators = {\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n relationViewCollapsed: _get(state.preferences.userPreferences, 'admin.detail.relationViewCollapsed', false)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DetailView))\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {queryString as queryStringUtil, js} from 'tocco-util'\nimport _get from 'lodash/get'\n\nimport Action from '../Action'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport {goBack} from '../../../../utils/routing'\n\nconst ActionView = ({history, match, setCurrentViewTitle, currentViewInfo, intl}) => {\n const {location} = history\n useEffect(() => {\n if (currentViewInfo) {\n setCurrentViewTitle(intl.formatMessage({id: `client.actions.${currentViewInfo.actionId}.title`}))\n }\n\n return () => {\n setCurrentViewTitle(null)\n }\n }, [currentViewInfo])\n\n if (!currentViewInfo) {\n return null\n }\n\n const queryParams = queryStringUtil.fromQueryString(location.search)\n const selection = _get(location, 'state.selection', queryParams.actionProperties)\n const actionProperties = _get(location, 'state.definition.properties', queryParams.actionProperties)\n\n const navigateBack = () => {\n history.replace(goBack(match.url, 2))\n }\n\n return (\n <Action\n history={history}\n match={match}\n appId={currentViewInfo.actionId}\n selection={selection}\n actionProperties={actionProperties}\n navigationStrategy={navigationStrategy(history, match)}\n onSuccess={navigateBack}\n onError={navigateBack}\n onCancel={navigateBack}\n />\n )\n}\n\nActionView.propTypes = {\n intl: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n setCurrentViewTitle: PropTypes.func.isRequired,\n history: PropTypes.shape({\n replace: PropTypes.func.isRequired,\n location: PropTypes.shape({\n search: PropTypes.string,\n state: PropTypes.shape({\n selection: PropTypes.object,\n definition: PropTypes.shape({\n appId: PropTypes.string\n })\n })\n })\n }).isRequired,\n match: PropTypes.object\n}\n\nconst areEqual = (prevProps, nextProps) => {\n const diff = Object.keys(js.difference(prevProps, nextProps))\n return diff.length === 0\n}\n\nexport default React.memo(ActionView, areEqual)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport ActionView from './ActionView'\nimport {setCurrentViewTitle} from '../../modules/path/actions'\nconst mapActionCreators = {\n setCurrentViewTitle\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(ActionView))\n","/* eslint-disable max-len */\nimport React from 'react'\nimport {Redirect, Route, Switch} from 'react-router-dom'\nimport PropTypes from 'prop-types'\n\nimport Entity from '../../subroutes/entity'\nimport Relations from '../../subroutes/relations'\nimport Detail from '../../subroutes/detail'\nimport Edit from '../../subroutes/edit'\nimport Action from '../../subroutes/action'\n\nfunction wordCount(str, word) {\n return str.split(word).length - 1\n}\n\nconst EntityRecordRoute = ({match}) => {\n const count = wordCount(match.path, ':relation')\n\n return (\n <Switch>\n <Route exact path={`${match.url}`} render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/detail`}/>}/>\n <Route path={`${match.path}/detail`} component={Detail}/>\n <Route path={`${match.path}/edit`} component={Edit}/>\n <Route path={`${match.path}/relations`} component={Relations}/>\n <Route path={`${match.path}/action`} component={Action}/>\n <Route path={`${match.path}/:relation_${count}`} component={Entity}/>\n </Switch>\n )\n}\n\nEntityRecordRoute.propTypes = {\n match: PropTypes.object.isRequired\n}\n\nexport default EntityRecordRoute\n","import EntityRecordRoute from './EntityRecordRoute'\n\nexport default EntityRecordRoute\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport _get from 'lodash/get'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {Prompt} from 'react-router'\nimport styled from 'styled-components'\nimport {theme, scale} from 'tocco-ui'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\n\nconst StyledEntityDetailAppWrapper = styled.div`\n margin: 0;\n background-color: ${theme.color('paper')};\n padding: 0 0 0 ${scale.space(0)};\n overflow: hidden;\n height: 100%;\n`\n\nconst CreateView = props => {\n const {\n currentViewInfo,\n history,\n match,\n intl,\n dispatchEmittedAction\n } = props\n const {location} = history\n const stateDefaultValues = _get(location, 'state.defaultValues', [])\n const [touched, setTouched] = useState(false)\n\n const mode = 'create'\n\n if (!currentViewInfo) {\n return null\n }\n const {model, reverseRelation, parentKey} = currentViewInfo\n const entityName = model.name\n\n const isMultiReverseRelation = _get(model, `paths.${reverseRelation}.multi`, false)\n\n const defaultValues = [\n ...((reverseRelation && parentKey)\n ? [{id: reverseRelation, value: isMultiReverseRelation ? [parentKey] : parentKey}]\n : []\n ),\n ...stateDefaultValues\n ]\n\n const handleEntityCreated = ({id}) => {\n setTouched(false)\n history.push(match.url.replace(/create$/, id))\n }\n\n const msg = id => intl.formatMessage({id})\n const handleToucheChanged = ({touched}) => setTouched(touched)\n\n return <StyledEntityDetailAppWrapper>\n <Prompt\n when={touched}\n message={msg('client.entity-browser.detail.confirmTouchedFormLeave')}\n />\n <EntityDetailApp\n entityName={entityName}\n formName={entityName}\n mode={mode}\n defaultValues={defaultValues}\n emitAction={action => {\n dispatchEmittedAction(action)\n }}\n navigationStrategy={navigationStrategy(history, match)}\n onEntityCreated={handleEntityCreated}\n onTouchedChange={handleToucheChanged}\n />\n </StyledEntityDetailAppWrapper>\n}\n\nCreateView.propTypes = {\n intl: PropTypes.object,\n match: PropTypes.object,\n history: PropTypes.object,\n currentViewInfo: currentViewPropType,\n dispatchEmittedAction: PropTypes.func.isRequired\n}\n\nexport default CreateView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport CreateView from './CreateView'\n\nconst mapActionCreators = {\n\n dispatchEmittedAction: actionEmitter.dispatchEmittedAction\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(CreateView))\n","import React from 'react'\n\nimport DocsView from '../DocsView'\nimport {currentViewPropType} from '../../utils/propTypes'\n\nconst DocsViewAdapter = ({currentViewInfo}) =>\n <DocsView\n noLeftPadding={false}\n entityName={currentViewInfo.parentModel.name}\n entityKey={currentViewInfo.parentKey}\n showActions={true}\n />\n\nDocsViewAdapter.propTypes = {\n currentViewInfo: currentViewPropType\n}\n\nexport default DocsViewAdapter\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport queryString from 'query-string'\nimport {viewPersistor} from 'tocco-util'\n\nimport Action from '../Action/LazyAction'\nimport {currentViewPropType} from '../../utils/propTypes'\nimport navigationStrategy from '../../utils/navigationStrategy'\nimport DocsViewAdapter from './DocsViewAdapter'\n\nconst ListView = ({match, history, currentViewInfo, emitAction, searchFormCollapsed, saveUserPreferences}) => {\n if (!currentViewInfo) {\n return null\n }\n\n const queryParams = queryString.parse(history.location.search)\n\n const handleRowClick = ({id}) => {\n history.push(match.url.replace(/list$/, '') + id)\n }\n\n if (currentViewInfo.model.name === 'Resource') {\n return <DocsViewAdapter\n currentViewInfo={currentViewInfo}\n />\n }\n\n return (\n <EntityListApp\n emitAction={emitAction}\n limit={25}\n id={`${currentViewInfo.model.name}_list`}\n entityName={currentViewInfo.model.name}\n formName={queryParams.formName || currentViewInfo.model.name}\n onRowClick={handleRowClick}\n {...(currentViewInfo.reverseRelation && {\n parent: {\n key: currentViewInfo.parentKey,\n reverseRelationName: currentViewInfo.reverseRelation,\n model: currentViewInfo.parentModel.name\n }\n })}\n showLink={true}\n navigationStrategy={navigationStrategy(history, match)}\n searchFormPosition=\"left\"\n searchFormType=\"admin\"\n store={viewPersistor.viewInfoSelector(history.location.pathname).store}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(history.location.pathname, {store}, currentViewInfo.level)\n }}\n actionAppComponent={Action}\n tql={queryParams.tql}\n searchFormCollapsed={searchFormCollapsed}\n onSearchFormCollapsedChange={({collapsed}) => {\n saveUserPreferences({'admin.list.searchFormCollapsed': collapsed})\n }}\n />\n )\n}\n\nListView.propTypes = {\n match: PropTypes.object.isRequired,\n emitAction: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType,\n persistedViewInfo: PropTypes.shape({\n store: PropTypes.object\n }),\n searchFormCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func\n}\n\nexport default ListView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport _get from 'lodash/get'\n\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\nimport ListView from './ListView'\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action),\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname],\n searchFormCollapsed: _get(state.preferences.userPreferences, 'admin.list.searchFormCollapsed', false)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(ListView))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Redirect, Route, Switch} from 'react-router-dom'\n\nimport Record from '../../subroutes/record'\nimport Create from '../../subroutes/create'\nimport List from '../../subroutes/list'\nimport Action from '../../subroutes/action'\n\nconst EntityRoute = ({match}) => (\n <Switch>\n <Route exact path={match.url} render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/list`}/>}/>\n <Route path={`${match.path}/action/:id`} component={Action}/>\n <Route path={`${match.path}/list`} component={List}/>\n <Route path={`${match.path}/create`} component={Create}/>\n <Route path={`${match.path}/:key`} component={Record}/>\n </Switch>\n)\n\nEntityRoute.propTypes = {\n match: PropTypes.object.isRequired\n}\n\nexport default EntityRoute\n","import EntityRoute from './EntityRoute'\n\nexport default EntityRoute\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {Breadcrumbs} from 'tocco-ui'\n\nconst mapActionCreators = {\n\n}\n\nconst mapStateToProps = (state, props) => ({\n pathPrefix: '/e',\n breadcrumbsInfo: state.entities.path.breadcrumbsInfo,\n currentView: state.entities.path.currentViewTitle\n ? {\n display: state.entities.path.currentViewTitle,\n title: state.entities.path.currentViewTitle\n }\n : null\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Breadcrumbs))\n","import React, {useEffect} from 'react'\nimport {Route, Switch} from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport {currentViewPropType} from '../../utils/propTypes'\nimport ErrorView from '../ErrorView'\nimport Overview from '../../subroutes/overview'\nimport Entity from '../../subroutes/entity'\nimport Action from '../../subroutes/action'\nimport Breadcrumbs from '../Breadcrumbs'\n\nconst StyledWrapper = styled.div`\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-areas:\n 'breadcrumbs'\n 'content';\n height: 100%;\n width: 100%;\n`\n\nconst StyledContent = styled.div`\n grid-area: content;\n overflow: hidden;\n`\n\nconst StyledBreadcrumbs = styled.div`\n grid-area: breadcrumbs;\n`\n\nconst EntitiesRoute = ({match, history, loadCurrentRoute, currentViewInfo}) => {\n const location = history.location\n\n useEffect(() => {\n loadCurrentRoute(location)\n }, [location])\n\n const content = currentViewInfo && currentViewInfo.error\n ? <ErrorView history={history}/>\n : <Switch>\n <Route\n path={`${match.url}/action/:actionId`}\n component={Action}\n />\n <Route\n path={`${match.url}/:entity`}\n component={Entity}\n />\n <Route exact path={match.url} component={Overview}/>\n </Switch>\n\n return <StyledWrapper>\n <StyledBreadcrumbs>\n <Breadcrumbs/>\n </StyledBreadcrumbs>\n <StyledContent>\n {content}\n </StyledContent>\n </StyledWrapper>\n}\n\nEntitiesRoute.propTypes = {\n loadCurrentRoute: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n currentViewInfo: currentViewPropType\n}\n\nexport default EntitiesRoute\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport EntitiesRoute from './EntitiesRoute'\nimport {loadCurrentRoute} from '../../modules/path/actions'\n\nconst mapActionCreators = {\n loadCurrentRoute\n}\n\nconst mapStateToProps = (state, props) => ({\n currentViewInfo: state.entities.path.currentViewInfos[props.history.location.pathname]\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(EntitiesRoute))\n","import {combineReducers} from 'redux'\n\nimport sagas from './modules/path/sagas'\nimport path from './modules/path'\nimport EntitiesRoute from './components/EntitiesRoute'\n\nexport default {\n container: EntitiesRoute,\n reducers: {\n entities: combineReducers({path})\n },\n sagas: [sagas]\n}\n","export const LOAD_BREADCRUMBS = 'docs/path/LOAD_BREADCRUMBS'\nexport const SET_BREADCRUMBS = 'docs/path/SET_BREADCRUMBS'\nexport const SET_SEARCH_MODE = 'docs/path/SET_SEARCH_MODE'\n\nexport const loadBreadcrumbs = location => ({\n type: LOAD_BREADCRUMBS,\n payload: {\n location\n }\n})\n\nexport const setBreadcrumbs = breadcrumbs => ({\n type: SET_BREADCRUMBS,\n payload: {\n breadcrumbs\n }\n})\n\nexport const setSearchMode = searchMode => ({\n type: SET_SEARCH_MODE,\n payload: {\n searchMode\n }\n})\n","import {rest} from 'tocco-app-extensions'\nimport {takeLatest, all, call, put, select} from 'redux-saga/effects'\n\nimport getNode from '../../utils/getNode'\nimport * as actions from './actions'\n\nexport const textResourceSelector = (state, key) => state.intl.messages[key] || key\nexport const docsPathSelector = state => state.docs.path\nexport const rootNodesSelector = state => state.input.rootNodes\n\nexport function* getSearchBreadcrumbs() {\n return [{\n display: yield select(textResourceSelector, 'client.docs-browser.breadcrumbs.start'),\n path: '',\n type: 'list'\n }, {\n display: yield select(textResourceSelector, 'client.docs-browser.breadcrumbs.searchResults'),\n path: '',\n type: 'list'\n }]\n}\n\nexport function* loadBreadcrumbs({payload: {location}}) {\n const node = getNode(location)\n const pathState = yield select(docsPathSelector)\n\n let breadcrumbs\n\n if (pathState.searchMode && !node) {\n breadcrumbs = yield call(getSearchBreadcrumbs)\n } else {\n const url = node ? `documents/${node.model}/${node.key}/breadcrumbs` : 'documents/breadcrumbs'\n const options = {\n queryParams: {\n rootnodes: yield call(getRootNodesParam)\n }\n }\n const result = yield call(rest.requestSaga, url, options)\n breadcrumbs = result.body.breadcrumbs\n }\n\n yield put(actions.setBreadcrumbs(breadcrumbs))\n}\n\nfunction* getRootNodesParam() {\n const rootNodes = yield select(rootNodesSelector)\n return Array.isArray(rootNodes) && rootNodes.length > 0\n ? rootNodes.map(node => `${node.entityName}/${node.key}`).join(',')\n : null\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_BREADCRUMBS, loadBreadcrumbs)\n ])\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_BREADCRUMBS]: reducerUtil.singleTransferReducer('breadcrumbs'),\n [actions.SET_SEARCH_MODE]: reducerUtil.singleTransferReducer('searchMode')\n}\n\nconst initialState = {\n breadcrumbs: [],\n searchMode: 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 {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","import {all, takeEvery, call, put, select} from 'redux-saga/effects'\nimport {rest, notification} from 'tocco-app-extensions'\nimport {consoleLogger} from 'tocco-util'\nimport {v4 as uuid} from 'uuid'\n\nimport getNode from '../../utils/getNode'\nimport * as actions from './actions'\n\nexport const dialogSelector = state => state.docs.create.dialog\nexport const textResourceSelector = (state, key) => state.intl.messages[key]\n\nconst CREATED_STATUS = 201\n\nexport function* handleFilesSelected({payload: {files, isDirectory}}) {\n const blockingInfoId = yield call(uuid)\n yield put(notification.blockingInfo(\n blockingInfoId,\n isDirectory\n ? 'client.docs-browser.uploadInProgressDirectory'\n : files.length > 1\n ? 'client.docs-browser.uploadInProgressMultiple'\n : 'client.docs-browser.uploadInProgress',\n null\n ))\n\n const {location, onSuccess, onError} = yield select(dialogSelector)\n\n try {\n const response = yield call(createDocuments, location, files)\n\n const remoteEvents = [{\n type: 'entity-create-event',\n payload: {\n entities: response.body.items\n .filter(item => item.status === CREATED_STATUS)\n .map(item => ({\n entityName: item.bean.model,\n key: item.bean.key\n }))\n }\n }]\n\n yield put(notification.removeBlockingInfo(blockingInfoId))\n\n const msgId = isDirectory ? 'client.docs-browser.uploadSuccessfulDirectory' : 'client.docs-browser.uploadSuccessful'\n onSuccess({\n message: yield select(textResourceSelector, msgId),\n remoteEvents\n })\n } catch (e) {\n consoleLogger.logError('Failed to upload files', e)\n yield put(notification.removeBlockingInfo(blockingInfoId))\n onError({\n message: yield select(textResourceSelector, 'client.docs-browser.uploadFailed')\n })\n }\n}\n\nexport function* createDocuments(location, files) {\n const node = getNode(location)\n\n if (!node) {\n return\n }\n\n const formData = new FormData()\n for (const file of files) {\n formData.append('files', file)\n }\n\n const resource = `documents/${node.model}/${node.key}`\n const options = {\n method: 'POST',\n body: formData\n }\n\n return yield call(rest.requestSaga, resource, options)\n}\n\nexport default function* mainSagas() {\n yield all([\n takeEvery(actions.FILES_SELECTED, handleFilesSelected)\n ])\n}\n","export const OPEN_DIALOG = 'docs/create/OPEN_DIALOG'\nexport const FILES_SELECTED = 'docs/create/FILES_SELECTED'\n\nexport const openDialog = (location, directory, onSuccess, onError) => ({\n type: OPEN_DIALOG,\n payload: {\n location,\n directory,\n onSuccess,\n onError\n }\n})\n\nexport const filesSelected = (files, isDirectory) => ({\n type: FILES_SELECTED,\n payload: {\n files,\n isDirectory\n }\n})\n","import * as actions from './actions'\n\nconst openDialog = (state, {payload: {location, directory, onSuccess, onError}}) => ({\n ...state,\n dialog: {\n instanceCount: state.dialog.instanceCount + 1,\n directory,\n location,\n onSuccess,\n onError\n }\n})\n\nconst ACTION_HANDLERS = {\n [actions.OPEN_DIALOG]: openDialog\n}\n\nconst initialState = {\n dialog: {\n instanceCount: 0,\n directory: false,\n location: null,\n onSuccess: null,\n onError: null\n }\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","export const CHANGE_LIST_PARENT = 'docs/list/CHANGE_LIST_PARENT'\nexport const CHANGE_SEARCH_FORM_COLLAPSED = 'docs/list/CHANGE_SEARCH_FORM_COLLAPSED'\nexport const SET_SEARCH_FORM_COLLAPSED = 'docs/list/SET_SEARCH_FORM_COLLAPSED'\n\nexport const changeListParent = parent => ({\n type: CHANGE_LIST_PARENT,\n payload: {\n parent\n }\n})\n\nexport const changeSearchFormCollapsed = collapsed => ({\n type: CHANGE_SEARCH_FORM_COLLAPSED,\n payload: {\n collapsed\n }\n})\n\nexport const setSearchFormCollapsed = searchFormCollapsed => ({\n type: SET_SEARCH_FORM_COLLAPSED,\n payload: {\n searchFormCollapsed\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_SEARCH_FORM_COLLAPSED]: reducerUtil.singleTransferReducer('searchFormCollapsed')\n}\n\nconst initialState = {\n searchFormCollapsed: null\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import sagas from './sagas'\nimport reducer from './reducer'\n\nexport {sagas}\n\nexport default reducer\n","import {all, put, takeLatest} from 'redux-saga/effects'\nimport {externalEvents} from 'tocco-app-extensions'\n\nimport * as actions from './actions'\n\nexport function* changeListParent({payload}) {\n yield put(externalEvents.fireExternalEvent('onListParentChange', payload.parent))\n}\n\nexport function* changeSearchFormCollapsed({payload}) {\n yield put(externalEvents.fireExternalEvent('onSearchFormCollapsedChange', payload.collapsed))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.CHANGE_LIST_PARENT, changeListParent),\n takeLatest(actions.CHANGE_SEARCH_FORM_COLLAPSED, changeSearchFormCollapsed)\n ])\n}\n","import {takeLatest, all, call, put, select} from 'redux-saga/effects'\nimport {notification, rest} from 'tocco-app-extensions'\nimport {validation} from 'tocco-util'\n\nimport * as actions from './actions'\n\nexport const inputSelector = state => state.docs.move.input\nexport const textResourceSelector = (state, key) => state.intl.messages[key]\n\nexport function* moveElements({payload}) {\n const resource = 'documents/move'\n const options = {\n method: 'POST',\n acceptedStatusCodes: [400],\n body: {\n targetEntityKey: payload.target,\n selectedEntityKeys: payload.selected\n }\n }\n\n yield put(actions.setWaiting(true))\n const response = yield call(rest.requestSaga, resource, options)\n\n if (response.status === 204) {\n yield call(setDone)\n } else {\n yield put(actions.setWaiting(false))\n let message = 'client.actions.dms-move.failed.message'\n if (response.body.errorCode === 'VALIDATION_FAILED') {\n message = validation.getErrorCompact(response.body.errors)\n }\n yield put(notification.toaster({type: 'error', title: 'client.actions.dms-move.failed.title', body: message}))\n }\n}\n\nexport function* setDone() {\n const {selection, onSuccess} = yield select(inputSelector)\n\n const remoteEvents = [{\n type: 'entity-update-event',\n payload: {\n entities: selection.ids.map(id => ({\n entityName: 'Docs_list_item',\n key: id\n }))\n }\n }]\n\n onSuccess({\n message: yield select(textResourceSelector, 'client.docs-browser.moveSuccessful'),\n remoteEvents\n })\n\n yield put(actions.close())\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.MOVE_ELEMENTS, moveElements)\n ])\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialize = (state, {payload: {selection, onSuccess, onError}}) => ({\n ...state,\n input: {\n selection,\n onSuccess,\n onError\n }\n})\n\nconst close = () => ({\n ...initialState\n})\n\nconst ACTION_HANDLERS = {\n [actions.INITIALIZE]: initialize,\n [actions.SET_WAITING]: reducerUtil.singleTransferReducer('isWaiting'),\n [actions.CLOSE]: close\n}\n\nconst initialState = {\n isWaiting: false,\n input: {\n selection: null,\n onSuccess: null,\n onError: null\n }\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","import {combineReducers} from 'redux'\n\nimport path, {sagas as pathSagas} from './path'\nimport create, {sagas as createSagas} from './create'\nimport list, {sagas as listSagas} from './list'\nimport move, {sagas as moveSagas} from './move'\n\nexport default {\n docs: combineReducers({path, create, list, move})\n}\n\nexport const sagas = [pathSagas, createSagas, listSagas, moveSagas]\n","import React, {lazy, Suspense} from 'react'\nimport {connect} from 'react-redux'\nimport PropTypes from 'prop-types'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {LoadMask} from 'tocco-ui'\nimport {consoleLogger} from 'tocco-util'\n\nconst actions = {\n 'dms-create-folder': lazy(() => import(/* webpackChunkName: \"docs-actions\" */'./actions/CreateFolder')),\n 'dms-create-domain': lazy(() => import(/* webpackChunkName: \"docs-actions\" */'./actions/CreateDomain')),\n 'dms-edit': lazy(() => import(/* webpackChunkName: \"docs-actions\" */'./actions/Edit')),\n 'dms-move': lazy(() => import(/* webpackChunkName: \"docs-actions\" */'./actions/MoveContainer')),\n 'delete': lazy(() => import(/* webpackChunkName: \"docs-actions\" */'./actions/Delete'))\n}\n\nconst renderLoader = () => <LoadMask/>\n\nconst LazyAction = props => {\n const {appId} = props\n const LazyAction = actions[appId]\n\n if (!LazyAction) {\n consoleLogger.logError(`no action found with id: ${appId}`)\n return null\n }\n\n const ActionComponent = connect(null, {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n })(LazyAction)\n\n return <Suspense fallback={renderLoader()}>\n <ActionComponent\n {...props}\n />\n </Suspense>\n}\n\nLazyAction.propTypes = {\n appId: PropTypes.string.isRequired\n}\n\nexport default LazyAction\n","import React, {useRef, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\nconst usePrevious = value => {\n const ref = useRef()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n\nconst FileInput = ({instanceCount, directory, onChange}) => {\n const fileInput = useRef()\n\n const prevInstanceCount = usePrevious(instanceCount)\n\n useEffect(() => {\n if (fileInput.current && instanceCount > prevInstanceCount) {\n fileInput.current.click()\n }\n })\n\n const handleChange = e => {\n const files = e.target.files\n if (files && files.length > 0 && onChange) {\n onChange(files, directory)\n }\n e.target.value = null\n }\n \n return <input\n type=\"file\"\n ref={fileInput}\n style={{display: 'none'}}\n onChange={handleChange}\n multiple {...(directory ? {webkitdirectory: 'true', directory: 'true'} : {})}\n />\n}\n\nFileInput.propTypes = {\n instanceCount: PropTypes.number.isRequired,\n directory: PropTypes.bool,\n onChange: PropTypes.func\n}\n\nexport default FileInput\n","import {connect} from 'react-redux'\n\nimport FileInput from './FileInput'\nimport {filesSelected} from '../../modules/create/actions'\n\nconst mapActionCreators = {\n onChange: filesSelected\n}\n\nconst mapStateToProps = state => ({\n instanceCount: state.docs.create.dialog.instanceCount,\n directory: state.docs.create.dialog.directory\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(FileInput)\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledContentWrapper = styled.div`\n display: flex;\n align-items: center;\n`\n\nexport const StyledIconWrapper = styled.span`\n font-size: ${scale.font(1)};\n display: inline-block;\n margin-right: ${scale.space(-2)};\n`\n","const ROOT_PATH_REGEX = /^\\/docs\\/?$/\n\nconst isRootLocation = pathname => ROOT_PATH_REGEX.test(pathname)\n\nexport default isRootLocation\n","import React, {Suspense, useEffect, useMemo, useReducer, useRef, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {viewPersistor} from 'tocco-util'\nimport {Icon, LoadMask} from 'tocco-ui'\nimport {searchFormTypePropTypes} from 'tocco-entity-list/src/util/searchFormTypes'\nimport {selectionStylePropType} from 'tocco-entity-list/src/util/selectionStyles'\n\nimport Action from '../Action'\nimport FileInput from '../FileInput'\nimport {StyledContentWrapper, StyledIconWrapper} from './StyledComponents'\nimport isRootLocation from '../../utils/isRootLocation'\n\nexport const getParent = match => {\n if (match.params && match.params.model) {\n const model = match.params.model.charAt(0).toUpperCase() + match.params.model.slice(1)\n const key = match.params.key\n const fullKey = `${model}/${key}`\n return {\n model: 'Docs_list_item',\n key: fullKey // e.g. \"Domain/118\"\n }\n }\n return null\n}\n\nexport const getTql = domainTypes =>\n Array.isArray(domainTypes)\n && domainTypes.length > 0\n ? `exists(relDomain_type where IN(unique_id, ${domainTypes.map(type => `\"${type}\"`).join(',')}))`\n : null\n\nexport const getFormName = (parent, keys) => parent\n ? 'Docs_list_item'\n : keys\n ? 'Root_docs_list_item_specific'\n : 'Root_docs_list_item'\n\nexport const getDefaultLocation = (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 `/docs/doc/${key}/detail`\n default:\n throw new Error(`Unexpected model: ${model}`)\n }\n}\n\nconst LazyListApp = React.lazy(() => import('./LazyListApp'))\n\nconst DocsView = props => {\n const {\n history,\n match,\n domainTypes,\n rootNodes,\n navigationStrategy,\n changeListParent,\n onSearchChange,\n emitAction,\n openFileDialog,\n limit,\n searchFormType,\n selectionStyle,\n getCustomLocation,\n disableViewPersistor,\n getListFormName,\n domainDetailFormName,\n folderDetailFormName,\n showActions,\n sortable,\n searchMode,\n openResource,\n searchFormCollapsed,\n changeSearchFormCollapsed\n } = props\n // eslint-disable-next-line no-unused-vars\n const [entityListNumber, forceEntityListUpdate] = useReducer(x => x + 1, 0)\n\n const entityListKey = `entity-list-${entityListNumber}`\n\n const [selection, setSelection] = useState([])\n const parent = useMemo(() => getParent(match), [match.params])\n\n const keys = !parent && rootNodes ? rootNodes.map(node => `${node.entityName}/${node.key}`) : null\n const formName = useMemo(() => getListFormName\n ? getListFormName(parent, keys)\n : getFormName(parent, keys)\n , [match.params, getListFormName])\n\n const mounted = useRef(false)\n const searchModeRef = useRef(searchMode)\n\n searchModeRef.current = searchMode\n\n useEffect(() => {\n mounted.current = true\n return () => (mounted.current = false)\n })\n\n useEffect(() => {\n changeListParent(parent)\n setSelection([])\n }, [parent])\n\n const handleRowClick = ({id}) => {\n if (searchModeRef.current && isRootLocation(history.location.pathname)) {\n if (!viewPersistor.viewInfoSelector('search').store) {\n // persist search store to allow a \"go back to search\"\n const searchStore = viewPersistor.viewInfoSelector(entityListKey).store\n viewPersistor.persistViewInfo('search', {store: searchStore})\n }\n forceEntityListUpdate()\n }\n\n const [model, key] = id.split('/')\n const location = getCustomLocation ? getCustomLocation(model, key) : getDefaultLocation(model, key)\n\n if (location) {\n if (openResource && model === 'Resource') {\n openResource(location)\n } else {\n history.push(location)\n }\n }\n }\n\n const tql = !parent && !keys ? getTql(domainTypes) : null\n\n const handleUploadDocument = function* (definition, selection, parent, params, config, onSuccess, onError) {\n const directory = false\n openFileDialog(history.location.pathname, directory, onSuccess, onError)\n }\n\n const handleUploadDirectory = function* (definition, selection, parent, params, config, onSuccess, onError) {\n const directory = true\n openFileDialog(history.location.pathname, directory, onSuccess, onError)\n }\n\n const handleSearch = e => {\n if (mounted.current) {\n onSearchChange(e)\n }\n }\n\n const store = disableViewPersistor\n ? undefined\n : isRootLocation(history.location.pathname)\n ? viewPersistor.viewInfoSelector('search').store\n : null\n\n return (\n <>\n <Suspense fallback={<LoadMask/>}>\n <LazyListApp\n key={entityListKey}\n id=\"documents\"\n entityName=\"Docs_list_item\"\n formName={formName}\n limit={limit || 25}\n onRowClick={handleRowClick}\n searchFormPosition=\"left\"\n searchFormType={searchFormType || 'admin'}\n parent={parent}\n onSearchChange={handleSearch}\n store={store}\n onStoreCreate={store => {\n if (!disableViewPersistor) {\n viewPersistor.persistViewInfo(entityListKey, {store})\n }\n }}\n cellRenderers={{\n 'dms-label-with-icon': (rowData, column, cellRenderer) => (\n <StyledContentWrapper>\n <StyledIconWrapper>\n <Icon icon={rowData.icon}/>\n </StyledIconWrapper>\n <span>{cellRenderer(column.children[0])}</span>\n </StyledContentWrapper>\n ),\n 'dms-actions': (rowData, column, cellRenderer) => {\n return (<StyledContentWrapper>\n {column.children\n .filter(c => !c.dmsEntityModel || c.dmsEntityModel === rowData.type)\n .map(c => cellRenderer(c))}\n </StyledContentWrapper>\n )\n }\n }}\n emitAction={emitAction}\n actionAppComponent={Action}\n contextParams={{\n history,\n detailFormNames: {\n Domain: domainDetailFormName,\n Folder: folderDetailFormName\n }\n }}\n customActions={{\n 'upload-document': handleUploadDocument,\n 'upload-directory': handleUploadDirectory\n }}\n navigationStrategy={navigationStrategy}\n tql={tql}\n keys={keys}\n selectionStyle={selectionStyle || 'multi_explicit'}\n onSelectChange={setSelection}\n selection={selection}\n showActions={showActions}\n sortable={sortable}\n searchFormCollapsed={searchFormCollapsed}\n onSearchFormCollapsedChange={changeSearchFormCollapsed}\n />\n </Suspense>\n <FileInput/>\n </>\n )\n}\n\nDocsView.propTypes = {\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n navigationStrategy: PropTypes.object,\n domainTypes: PropTypes.arrayOf(PropTypes.string),\n rootNodes: PropTypes.arrayOf(PropTypes.shape({\n entityName: PropTypes.string,\n key: PropTypes.string\n })),\n changeListParent: PropTypes.func.isRequired,\n onSearchChange: PropTypes.func.isRequired,\n emitAction: PropTypes.func.isRequired,\n openFileDialog: PropTypes.func.isRequired,\n limit: PropTypes.number,\n searchFormType: searchFormTypePropTypes,\n selectionStyle: selectionStylePropType,\n getCustomLocation: PropTypes.func,\n disableViewPersistor: PropTypes.bool,\n getListFormName: PropTypes.func,\n domainDetailFormName: PropTypes.string,\n folderDetailFormName: PropTypes.string,\n showActions: PropTypes.bool,\n sortable: PropTypes.bool,\n searchMode: PropTypes.bool,\n openResource: PropTypes.func,\n searchFormCollapsed: PropTypes.bool,\n changeSearchFormCollapsed: PropTypes.func.isRequired\n}\n\nexport default DocsView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport DocsView from './DocsView'\nimport {changeListParent, changeSearchFormCollapsed} from '../../modules/list/actions'\n\nconst mapStateToProps = state => ({\n domainTypes: state.input.domainTypes,\n rootNodes: state.input.rootNodes,\n limit: state.input.listLimit,\n searchFormType: state.input.searchFormType,\n selectionStyle: state.input.selectionStyle,\n getCustomLocation: state.input.getCustomLocation,\n disableViewPersistor: state.input.disableViewPersistor,\n getListFormName: state.input.getListFormName,\n domainDetailFormName: state.input.domainDetailFormName,\n folderDetailFormName: state.input.folderDetailFormName,\n showActions: state.input.showActions,\n sortable: state.input.sortable,\n openResource: state.input.openResource,\n searchFormCollapsed: state.docs.list.searchFormCollapsed\n})\n\nconst mapActionCreators = {\n changeListParent,\n changeSearchFormCollapsed\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DocsView))\n","import styled from 'styled-components'\nimport {theme, scale} from 'tocco-ui'\n\nexport const StyledDocumentViewWrapper = styled.div`\n height: 100%;\n background-color: ${theme.color('paper')};\n padding-left: ${scale.space(0.5)};\n overflow-y: hidden;\n`\n","import React, {Suspense} from 'react'\nimport PropTypes from 'prop-types'\nimport {LoadMask} from 'tocco-ui'\n\nimport Action from '../Action/'\nimport {StyledDocumentViewWrapper} from './StyledComponents'\n\nconst LazyDetailApp = React.lazy(() => import('./LazyDetailApp'))\n\nconst DocumentView = ({match, history, breadcrumbs, formName, navigationStrategy, emitAction}) => {\n const handleEntityDeleted = () => {\n const lastList = breadcrumbs.slice().reverse()\n .find(breadcrumb => breadcrumb.type === 'list')\n const lastListUrl = `/docs/${lastList.path}`\n history.push(lastListUrl)\n }\n\n return (\n <StyledDocumentViewWrapper>\n <Suspense fallback={<LoadMask/>}>\n <LazyDetailApp\n entityName=\"Resource\"\n entityId={match.params.key}\n formName={formName || 'DmsResource'}\n mode=\"update\"\n actionAppComponent={Action}\n navigationStrategy={navigationStrategy}\n emitAction={emitAction}\n onEntityDeleted={handleEntityDeleted}\n />\n </Suspense>\n </StyledDocumentViewWrapper>\n )\n}\n\nDocumentView.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n key: PropTypes.string.isRequired\n }).isRequired\n }).isRequired,\n history: PropTypes.shape({\n push: PropTypes.func.isRequired\n }).isRequired,\n breadcrumbs: PropTypes.arrayOf(PropTypes.shape({\n path: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired\n })).isRequired,\n formName: PropTypes.string,\n navigationStrategy: PropTypes.object,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default DocumentView\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport DocumentView from './DocumentView'\n\nconst mapStateToProps = state => ({\n breadcrumbs: state.docs.path.breadcrumbs,\n formName: state.input.documentDetailFormName\n})\n\nconst mapActionCreators = {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DocumentView))\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {Breadcrumbs} from 'tocco-ui'\n\nconst mapActionCreators = {\n}\n\nconst mapStateToProps = state => ({\n pathPrefix: '/docs',\n breadcrumbsInfo: state.docs.path.breadcrumbs\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Breadcrumbs))\n","import styled from 'styled-components'\nimport {StyledScrollbar} from 'tocco-ui'\n\nexport const StyledWrapper = styled.div`\n display: grid;\n grid-template-rows: auto 1fr;\n grid-template-areas:\n 'breadcrumbs'\n 'content';\n height: 100%;\n width: 100%;\n`\n\nexport const StyledContent = styled.div`\n grid-area: content;\n overflow-x: hidden;\n ${StyledScrollbar}\n`\n\nexport const StyledBreadcrumbs = styled.div`\n grid-area: breadcrumbs;\n ${({noLeftPadding}) => noLeftPadding && `\n > div {\n padding-left: 0;\n }\n `}\n`\n","import React, {useEffect, useReducer, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {Route, Switch, useLocation} from 'react-router-dom'\nimport {withTheme} from 'styled-components'\nimport {theme as themeUtil} from 'tocco-ui'\nimport {viewPersistor} from 'tocco-util'\n\nimport DocsView from '../DocsView'\nimport DocumentView from '../DocumentView'\nimport Breadcrumbs from '../../containers/BreadcrumbsContainer'\nimport {StyledWrapper, StyledBreadcrumbs, StyledContent} from './StyledComponents'\nimport isRootLocation from '../../utils/isRootLocation'\n\nconst DocsBrowser = ({\n history,\n searchMode,\n navigationStrategy,\n setSearchMode,\n loadBreadcrumbs,\n emitAction,\n openFileDialog,\n theme,\n embedded,\n noLeftPadding\n}) => {\n // eslint-disable-next-line no-unused-vars\n const [docsViewNumber, forceDocsViewUpdate] = useReducer(x => x + 1, 0)\n\n const location = useLocation()\n\n const searchModeRef = useRef(searchMode)\n searchModeRef.current = searchMode\n\n useEffect(() => {\n loadBreadcrumbs(location.pathname)\n })\n\n const resetSearchMode = () => {\n if (searchModeRef.current) {\n viewPersistor.clearPersistedViews()\n setSearchMode(false)\n loadBreadcrumbs(location.pathname)\n forceDocsViewUpdate()\n }\n }\n\n const handleSearchChange = e => {\n const hasUserChanges = e.query && e.query.hasUserChanges\n if (hasUserChanges) {\n setSearchMode(true)\n history.push('/docs/')\n loadBreadcrumbs(location.pathname)\n } else if (isRootLocation(history.location.pathname)) {\n resetSearchMode()\n }\n }\n\n const handleBreadcrumbsClick = breadcrumbsItem => {\n if (breadcrumbsItem.path === '') {\n resetSearchMode()\n }\n }\n\n const key = `docs-view-${docsViewNumber}`\n\n return (\n <StyledWrapper>\n <StyledBreadcrumbs noLeftPadding={noLeftPadding}>\n <Breadcrumbs\n {...embedded ? {backgroundColor: themeUtil.color('paper')({theme})} : {}}\n onClick={handleBreadcrumbsClick}\n />\n </StyledBreadcrumbs>\n <StyledContent>\n <Switch>\n <Route\n exact\n path={'/docs/doc/:key/detail'}\n render={({match}) => (\n <DocumentView\n match={match}\n history={history}\n navigationStrategy={navigationStrategy}\n />\n )}\n />\n <Route\n exact\n path={['/docs/:model/:key/list', '/docs']}\n render={({match}) => (\n <DocsView\n key={key}\n history={history}\n match={match}\n navigationStrategy={navigationStrategy}\n onSearchChange={handleSearchChange}\n emitAction={emitAction}\n openFileDialog={openFileDialog}\n searchMode={searchMode}\n />)}\n />\n </Switch>\n </StyledContent>\n </StyledWrapper>\n )\n}\n\nDocsBrowser.propTypes = {\n loadBreadcrumbs: PropTypes.func.isRequired,\n setSearchMode: PropTypes.func.isRequired,\n emitAction: PropTypes.func.isRequired,\n openFileDialog: PropTypes.func.isRequired,\n history: PropTypes.object.isRequired,\n searchMode: PropTypes.bool.isRequired,\n navigationStrategy: PropTypes.object,\n embedded: PropTypes.bool,\n theme: PropTypes.object,\n noLeftPadding: PropTypes.bool\n}\n\nexport default withTheme(DocsBrowser)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport DocsBrowser from './DocsBrowser'\nimport {loadBreadcrumbs, setSearchMode} from '../../modules/path/actions'\nimport {openDialog} from '../../modules/create/actions'\n\nconst mapStateToProps = state => ({\n searchMode: state.docs.path.searchMode,\n navigationStrategy: state.input.navigationStrategy,\n embedded: state.input.embedded,\n noLeftPadding: state.input.noLeftPadding\n})\n\nconst mapActionCreators = {\n loadBreadcrumbs,\n setSearchMode,\n emitAction: action => actionEmitter.dispatchEmittedAction(action),\n openFileDialog: openDialog\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DocsBrowser))\n","import {setSearchFormCollapsed} from './modules/list/actions'\n\nconst isDefined = value => value !== undefined\n\nexport const getDispatchActions = input =>\n actionSettings.reduce((acc, actionSetting) => {\n if (isDefined(input[actionSetting.name])) {\n acc.push(actionSetting.action(...actionSetting.argsFactory(input)))\n }\n return acc\n }, [])\n\nconst actionSettings = [\n {\n name: 'searchFormCollapsed',\n action: setSearchFormCollapsed,\n argsFactory: input => [input.searchFormCollapsed]\n }\n]\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {reducer as reducerUtil} from 'tocco-util'\nimport {actionEmitter, appFactory, cache, errorLogging, externalEvents, notification, rest} from 'tocco-app-extensions'\nimport {searchFormTypePropTypes} from 'tocco-entity-list/src/util/searchFormTypes'\nimport {selectionStylePropType} from 'tocco-entity-list/src/util/selectionStyles'\nimport createHashHistory from 'history/createHashHistory'\nimport createMemoryHistory from 'history/createMemoryHistory'\nimport {Redirect, Route, Router as ReactRouter} from 'react-router'\nimport {GlobalStyles} from 'tocco-ui'\nimport _pickBy from 'lodash/pickBy'\nimport _isEqual from 'lodash/isEqual'\nimport _isEmpty from 'lodash/isEmpty'\n\nimport reducers, {sagas} from './modules/reducers'\nimport DocsBrowser from './components/DocsBrowser'\nimport {getDispatchActions} from './input'\n\nconst packageName = 'docs-browser'\n\nconst EXTERNAL_EVENTS = [\n 'onListParentChange',\n 'openResource',\n 'onSearchFormCollapsedChange'\n]\n\nconst textResourceSelector = (state, key) => state.intl.messages[key] || key\n\nconst createHistory = (store, memoryHistory) => {\n const historyFactory = memoryHistory ? createMemoryHistory : createHashHistory\n\n return historyFactory({\n getUserConfirmation: (message, confirmCallback) => {\n const state = store.getState()\n\n const okText = textResourceSelector(state, 'client.common.ok')\n const cancelText = textResourceSelector(state, 'client.common.cancel')\n\n const action = notification.confirm(\n '',\n message,\n okText,\n cancelText,\n () => confirmCallback(true),\n () => confirmCallback(false)\n )\n store.dispatch(action)\n }\n })\n}\nconst initApp = (id, input, events = {}, publicPath) => {\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n\n externalEvents.addToStore(store, events)\n actionEmitter.addToStore(store)\n errorLogging.addToStore(store, true, ['console', 'remote', 'notification'])\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n cache.addToStore(store)\n\n if (input.businessUnit) {\n rest.setBusinessUnit(input.businessUnit)\n }\n\n const history = input.history || createHistory(store, input.memoryHistory)\n\n if (input.initialLocation) {\n history.push(input.initialLocation)\n }\n\n const singleRootNode = Array.isArray(input.rootNodes) && input.rootNodes.length === 1\n && input.rootNodes[0].entityName !== 'Resource'\n ? input.rootNodes[0]\n : null\n\n const startUrl = singleRootNode\n ? `/docs/${singleRootNode.entityName.toLowerCase()}/${singleRootNode.key}/list`\n : '/docs'\n\n const content = (\n <ReactRouter history={history}>\n {handleNotifications && <notification.Notifications/>}\n <GlobalStyles/>\n <DocsBrowser history={history}/>\n <Route exact path=\"/\">\n <Redirect to={startUrl}/>\n </Route>\n {\n singleRootNode && (\n <Route exact path=\"/docs\">\n <Redirect to={startUrl}/>\n </Route>\n )\n }\n </ReactRouter>\n )\n\n return appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n events,\n actions: getDispatchActions(input),\n publicPath,\n textResourceModules: ['component', 'common', 'actions', 'entity-list', 'entity-detail', packageName]\n }\n )\n}\n\n(() => {\n if (__PACKAGE_NAME__ === packageName) {\n appFactory.registerAppInRegistry(packageName, initApp)\n\n if (__DEV__) {\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 }\n }\n})()\n\nconst getEvents = props =>\n EXTERNAL_EVENTS.reduce((events, event) => {\n if (props[event]) {\n events[event] = props[event]\n }\n return events\n }, {})\n\nclass DocsBrowserApp extends React.Component {\n constructor(props) {\n super(props)\n\n this.app = initApp('docs-browser', props, getEvents(props))\n }\n\n componentDidUpdate(prevProps) {\n const changedProps = _pickBy(this.props, (value, key) => !_isEqual(value, prevProps[key]))\n if (!_isEmpty(changedProps)) {\n getDispatchActions(changedProps).forEach(action => {\n this.app.store.dispatch(action)\n })\n }\n }\n\n render() {\n return this.app.component\n }\n}\n\nDocsBrowserApp.propTypes = {\n history: PropTypes.object,\n navigationStrategy: PropTypes.object,\n domainTypes: PropTypes.arrayOf(PropTypes.string),\n rootNodes: PropTypes.arrayOf(PropTypes.shape({\n entityName: PropTypes.string,\n key: PropTypes.string\n })),\n initialLocation: PropTypes.string,\n listLimit: PropTypes.number,\n documentDetailFormName: PropTypes.string,\n searchFormType: searchFormTypePropTypes,\n selectionStyle: selectionStylePropType,\n getListFormName: PropTypes.func,\n memoryHistory: PropTypes.bool,\n disableViewPersistor: PropTypes.bool,\n getCustomLocation: PropTypes.func,\n businessUnit: PropTypes.string,\n searchFormCollapsed: PropTypes.bool,\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default DocsBrowserApp\n","export const INITIALIZE = 'docs/move/INITIALIZE'\nexport const INVALID_SELECTION = 'docs/move/INVALID_SELECTION'\nexport const MOVE_ELEMENTS = 'docs/move/MOVE_ELEMENTS'\nexport const SET_WAITING = 'docs/move/SET_WAITING'\nexport const SET_DONE = 'docs/move/SET_DONE'\nexport const CLOSE = 'docs/move/CLOSE'\n\nexport const initialize = (selection, onSuccess, onError) => ({\n type: INITIALIZE,\n payload: {\n selection,\n onSuccess,\n onError\n }\n})\n\nexport const invalidSelection = () => ({\n type: INVALID_SELECTION\n})\n\nexport const moveElements = (target, selected) => ({\n type: MOVE_ELEMENTS,\n payload: {\n target,\n selected\n }\n})\n\nexport const setWaiting = (isWaiting = true) => ({\n type: SET_WAITING,\n payload: {\n isWaiting\n }\n})\n\nexport const close = () => ({\n type: CLOSE\n})\n","const DOC_PATH_REGEX = /^\\/docs\\/doc\\/(\\d+)\\/detail$/\nconst PARENT_PATH_REGEX = /^\\/docs\\/(domain|folder)\\/(\\d+)\\/list$/\n\nconst getResourceNode = pathname => {\n const docMatches = DOC_PATH_REGEX.exec(pathname)\n return docMatches && docMatches.length >= 2\n ? {\n model: 'Resource',\n key: docMatches[1]\n }\n : null\n}\n\nconst getParentNode = pathname => {\n const parentMatches = PARENT_PATH_REGEX.exec(pathname)\n if (parentMatches && parentMatches.length >= 3) {\n const model = parentMatches[1].charAt(0).toUpperCase() + parentMatches[1].slice(1)\n const key = parentMatches[2]\n return {\n model,\n key\n }\n }\n return null\n}\n\nconst getNode = pathname => getResourceNode(pathname) || getParentNode(pathname)\n\nexport default getNode\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var whitelist = (options && options.whitelist) || undefined\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n var c = path[k]\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n if (matches) {\n prev = c\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var pattern = capture || group\n var delimiter = prev || defaultDelimiter\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? escapeGroup(pattern)\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = options.delimiter || DEFAULT_DELIMITER\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (!token.prefix) {\n route += '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n } else {\n var endToken = tokens[tokens.length - 1]\n var isEndDelimited = typeof endToken === 'string'\n ? endToken[endToken.length - 1] === delimiter\n : endToken === undefined\n\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n }\n\n return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys)\n }\n\n if (Array.isArray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n"],"sourceRoot":""}
|