tocco-admin 1.0.7 → 1.0.8

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.
Files changed (438) hide show
  1. package/changelog.md +10 -0
  2. package/dist/010d0560a00a032c33da819e3c86596a.js +1 -368
  3. package/dist/029ed9161a8d24a9c2ba97124020989d.js +1 -9
  4. package/dist/02d5c4961ca855a88b1cd3e1b7fa7aa2.js +1 -113
  5. package/dist/03371bf1d5cbb1eab58e3a0130d1e9c2.js +1 -15001
  6. package/dist/03487ba89c7b63069d63c1b3802a472c.js +1 -24
  7. package/dist/03748243ac7148ca150ba06c2919ff81.js +1 -271
  8. package/dist/03980cb12dacd26148c22bb61fce440f.js +1 -9
  9. package/dist/03aae8272914723a7bf85b984385032c.js +1 -9
  10. package/dist/04770a551c5b6daa744be9b180a8d0fe.js +1 -13311
  11. package/dist/06d958315fc6cdbb28576b03e43203aa.js +1 -9
  12. package/dist/07101530302fe1d03dcd731992f7a899.js +1 -869
  13. package/dist/0731d7568a06d2e28351781370bc52bb.js +1 -445
  14. package/dist/0794fa2b9c882c72fa7d586069b61055.js +1 -3608
  15. package/dist/0872e65446d05c1c443180c6280b015f.js +1 -214
  16. package/dist/08b9f3e305b5e3e0b81f7848fa7f3b6b.js +1 -105
  17. package/dist/09563004132aabcfcc186943555a92a1.js +1 -263
  18. package/dist/0a1d9862d917663419ac2dd2e8193267.js +1 -9
  19. package/dist/0a858573915ab9b03fe79f98f8c51a04.js +1 -271
  20. package/dist/0a9cd3d62e7f1cd404606c50d9da86fb.js +1 -229
  21. package/dist/0beea7b55cf3b8c9f9b0bd46170bb30e.js +1 -238
  22. package/dist/0ec4bf56a876c2bf34ea174c584ce628.js +1 -97
  23. package/dist/0f418117fac55a859631143ad7d0e833.js +1 -1038
  24. package/dist/10132993df2cf9c9423b53a8a44379ab.js +1 -9
  25. package/dist/1034e3807d1bcf55cb564491950237ab.js +1 -9
  26. package/dist/104959bdb953a3792a203e98d2bf530f.js +1 -895
  27. package/dist/114c58e47951fe3f6d25f683e0cd54e7.js +1 -381
  28. package/dist/11b2d52156942feeb87b7c608276c49b.js +1 -119
  29. package/dist/11dc77ef2ea3a04834945a52f7de2072.js +1 -3208
  30. package/dist/12b520593765ef7e714d7fb3764633ed.js +1 -167
  31. package/dist/130340e2c62b9e858f186dab5f491e55.js +1 -9
  32. package/dist/1324f89bd8db0bae85b79b7f90f6c119.js +1 -418
  33. package/dist/13eda3507db9cbfb400f46b9b3ff6553.js +1 -9
  34. package/dist/1441681e52f3ae9ab33afbc5517359a0.js +1 -45
  35. package/dist/1533058f0ce13acdaa8d5bdc7d147bef.js +1 -9
  36. package/dist/1549fe09fd6b44aca96e2b1b7cbd93d0.js +1 -111
  37. package/dist/15f3800d33b854ba476c9daf1b9e0326.js +1 -9
  38. package/dist/16563bfaf4741097d38cc6ce3ccc1a2d.js +1 -2644
  39. package/dist/170487867de05784a96608617bdd544d.js +1 -9
  40. package/dist/179a93d3148b7edb72581279c3787d0c.js +1 -353
  41. package/dist/17dc98279d24649d3ca77cbce8c44e83.js +1 -9
  42. package/dist/1850762f1bfaf1a1044765b02b243ed4.js +1 -262
  43. package/dist/18cfa6de2de3832aa10439fbf963217a.js +1 -3035
  44. package/dist/18e63e724098792b95b076412a860636.js +1 -116
  45. package/dist/191feb6103c36b202bc01ba262916cdf.js +1 -9
  46. package/dist/19e684db1b08c82963634abc8b2c989f.js +1 -422
  47. package/dist/1abc9efccf77fd4527d1c2fc85d87e04.js +1 -647
  48. package/dist/1b15b9f88acaf59b96e59c6b5f32da12.js +1 -9
  49. package/dist/1b64f97eed4a3837a93f8bdd363295fb.js +1 -1873
  50. package/dist/1c02ec6ec024eee3ebb6b34fa8ff316f.js +1 -103
  51. package/dist/1c57b3481f295105588972ffa1305521.js +1 -9
  52. package/dist/1cc82820c232a82b5d8b6cb9e4152af3.js +1 -514
  53. package/dist/1cd3d09b5303cc37fa337225ed6a9132.js +1 -137
  54. package/dist/1e029a7f1f64457da4f54254d50ac59b.js +1 -95
  55. package/dist/1e26167b5f75d5b94add34f1f4d8b044.js +1 -380
  56. package/dist/1e4131e1241a5b81d54c7d9cb66b0e87.js +1 -254
  57. package/dist/1fe2d583da5f073431d81a6ea13ffc0c.js +1 -275
  58. package/dist/1fee62e3e043728a265935971fa26200.js +1 -981
  59. package/dist/211511e7b374f57ad31acaf49dbdccb1.js +1 -9
  60. package/dist/2183252fe9e1b88fcf2bc454d6fd9273.js +1 -115
  61. package/dist/222d52530e9db0a0ec565c6306c5db35.js +1 -104
  62. package/dist/2267d20fd89c81a461e38abecdb8fcdc.js +1 -282
  63. package/dist/2272c6632c52c3e402ab27b8045ab8f1.js +1 -9
  64. package/dist/23bb1a9f279e7a732bfd405350aab114.js +1 -9
  65. package/dist/23da8ba64540ff4aa68a34d3445db680.js +1 -232
  66. package/dist/243c0c0572ab9866e02e18821558a1c5.js +1 -89
  67. package/dist/244b1a234ec1728d0268214de601449d.js +1 -343
  68. package/dist/24a3ff38afde257888d755ece9bfd704.js +1 -9
  69. package/dist/25718a469574ade47e23567d8c543169.js +1 -9
  70. package/dist/25c99a71d30112583893bc5277402c46.js +1 -329
  71. package/dist/25eda4bb98e40a82cfd5b4bf9fbc06ec.js +1 -9
  72. package/dist/263f7107e9357b1c91997e1a21b59ff5.js +1 -2025
  73. package/dist/26fb247a2e0630e1f435cb4d91ec51fd.js +1 -397
  74. package/dist/27730a0bdc6f430cc85049a46a73a029.js +1 -9
  75. package/dist/27ccb71fa24357a0919a861351d5b82d.js +1 -2806
  76. package/dist/28474eb7ee45a125e49cc5cbe69e336f.js +1 -1193
  77. package/dist/28785bea435918d49b290d27bf660baa.js +1 -9
  78. package/dist/28acb3b48578dfd30dd555fff7c822f7.js +1 -312
  79. package/dist/291611f874a2bc54dbc291b52d74c512.js +1 -501
  80. package/dist/2b2fe1a34cdf81c656a47e493ca9d658.js +1 -257
  81. package/dist/2bcf741e1f2cb07989a722a6ba9c2ea7.js +1 -128
  82. package/dist/2d2a42eeeeec801ab35f2fff7d900e43.js +1 -330
  83. package/dist/2dd82c65030101b60dffccedd8741c6e.js +1 -9
  84. package/dist/2ddd0346681f9f12fd3a191245aa41df.js +1 -797
  85. package/dist/2f055ac4066041b9008dd6aebf9df34b.js +1 -9
  86. package/dist/2f5be3e3e9ab852d217168220854ea9b.js +1 -102
  87. package/dist/2f7c864f08b00c01f04ac22375f7ddd9.js +1 -520
  88. package/dist/2fc0239242a898632ca8aa451cb930c2.js +1 -9
  89. package/dist/2ff54aa3c655216f360438bc7f5b181a.js +1 -2742
  90. package/dist/30e80558090a09477e4466af8af4c40e.js +1 -135
  91. package/dist/34791bf31a4236531bc887b48f872c1c.js +1 -1090
  92. package/dist/34b3249d58303435b894a43d3776a5c3.js +1 -1433
  93. package/dist/3567d1ea443427e944a6f189a0898819.js +1 -9
  94. package/dist/3646668820dc96864fbed7746f805947.js +1 -452
  95. package/dist/36474100e81ab63c4ddbc94ab2cc8667.js +1 -799
  96. package/dist/365b89ceec577ebec0a39c938c2363f0.js +1 -263
  97. package/dist/367ad31e6d99d0021d05133b85bb9faf.js +1 -93
  98. package/dist/37172facd8a534a38f378ca2a9c7c11b.js +1 -9
  99. package/dist/37afa466cdb7fa8fc2e043164d48f29e.js +1 -13110
  100. package/dist/37ee3b5201ae2e2dc5dc8b1b20ad900e.js +1 -9
  101. package/dist/38270ad5088729f40c461c4a5a6bad5d.js +1 -248
  102. package/dist/3b190e5159c72fb7e27271956772bcba.js +1 -9
  103. package/dist/3b544bb2c5a4e7b225a4b50235a0fd6d.js +1 -9
  104. package/dist/3b6e7dc98c47eeafd851ca5072db4be6.js +1 -9
  105. package/dist/3bbf0faa999b08584dc971eab820113a.js +1 -1169
  106. package/dist/3c5b59a666c5d39d9ba9cc054d36a410.js +1 -9
  107. package/dist/3c71a5c0e85afc5486ee9ac29099843d.js +1 -230
  108. package/dist/3dcc18a5dee46b57ad7f85c0bee86802.js +1 -508
  109. package/dist/3df92508d7112d83474f31fe9590e289.js +1 -1015
  110. package/dist/3e277a4ce5486a806a00497aea8ecdd3.js +1 -502
  111. package/dist/3e3e2243675fa4fb4b320dc57daf2d4f.js +1 -346
  112. package/dist/3f55ba1c6515db2f98bb996c1a5bc9e3.js +1 -76
  113. package/dist/3f758ea78954547fed0a8d999691dd7c.js +1 -292
  114. package/dist/406884d5525e864955e9f5058526aa02.js +1 -101
  115. package/dist/40dc555a17f1c85020333a41f01dd9ba.js +1 -106
  116. package/dist/40e6f6cb52a24a747b1046614db3b164.js +1 -213
  117. package/dist/41d8a58fd52b6a06e8d3fb06cdabf67a.js +1 -989
  118. package/dist/42b4ce6de00994aa6bf7db7ff2f931a8.js +1 -1331
  119. package/dist/43a0e099f8283dc1c1c6bbd39148d98d.js +1 -867
  120. package/dist/440f4d477b586c7a6ba4c1c966ca79fc.js +1 -147
  121. package/dist/444ababf8edc26948943fbb45bd06a19.js +1 -259
  122. package/dist/44701e25bb6f2ab9ff18343f2357d1b0.js +1 -171
  123. package/dist/44ac2a2398075299754707d4bac7c276.js +1 -59
  124. package/dist/460c67d8fe31ef229704bd5ab6d1dd26.js +1 -942
  125. package/dist/4639c30a609d986a255ccc684404527e.js +1 -676
  126. package/dist/4700af84801dbda8a3880e3469c21130.js +1 -413
  127. package/dist/4736a562251eeaea46dd06892b489f35.js +1 -46
  128. package/dist/47541c23870e955fff15de4be490ba74.js +1 -112
  129. package/dist/47f0fbf038314894ac52f2d67466b5e9.js +1 -2848
  130. package/dist/4860a6a7c59b9ed5c779f7201dc1f591.js +1 -349
  131. package/dist/48e9351c5623d4da657ce7d5d0267ea6.js +1 -9
  132. package/dist/4a1dab236c2844d28f73c5c128afe299.js +1 -193
  133. package/dist/4b425eb8188febc5a89674b89a72d296.js +1 -798
  134. package/dist/4b61fe945e9e73aba22717e5d6f080df.js +1 -642
  135. package/dist/4bf3bc1fbdd26ac698fef1bdf26e3ff4.js +1 -9
  136. package/dist/4c2816c26725f7aae5b490142e31112f.js +1 -352
  137. package/dist/4ceabd28d8dc751f41002ebf2b6fed88.js +1 -539
  138. package/dist/4d143a2d103a9e376a9e3b55e680eef7.js +1 -310
  139. package/dist/4d8cb7033879cb7fcc7a43798e2bde22.js +1 -9
  140. package/dist/4e389cce6fb8f78845fab249bce43c0b.js +1 -9
  141. package/dist/4eed3725a00fc2bab78accdb014b7826.js +1 -325
  142. package/dist/4ef80ee74467e0297eec3cc03092da01.js +1 -9
  143. package/dist/506d44d8712a22011ce2bec8adbb19b2.js +1 -210
  144. package/dist/50c073327491a2ed3bfa2ebb466c4204.js +1 -25
  145. package/dist/51f903c5ce5284a63196247cffb5ca40.js +1 -9
  146. package/dist/5352ecd8e5f1a2637b48e18cc406edb1.js +1 -9
  147. package/dist/53e3600928916423671f3388e2d67844.js +1 -9
  148. package/dist/54b3396acd2c700969248de4b20cbf7c.js +1 -109
  149. package/dist/55892adefebc0d53993fb108151ed150.js +1 -207
  150. package/dist/57f4109bd1f06be4dc2bcb8ff7eaf1e5.js +1 -9
  151. package/dist/57f9654d8ecdebfb02c636e1889af2e4.js +1 -2698
  152. package/dist/582e24f5ba929e358fadfc7be4c18025.js +1 -9
  153. package/dist/58598705e7012f4ca1eb1dd21d3c59a5.js +1 -9
  154. package/dist/5861dfe4f2c7823623e82d0619c5bf06.js +1 -9
  155. package/dist/58aab872dbdb5e1607076e1935130e03.js +1 -9
  156. package/dist/595aef8d8b0a2017e2fc27db5703e0d1.js +1 -167
  157. package/dist/59cc05504a1c823b6d4796bf6b430822.js +1 -9
  158. package/dist/5a496ae20cc576bef1d35972548207cf.js +1 -9
  159. package/dist/5a67fdd5293af0a35defd2574c05cd04.js +1 -1803
  160. package/dist/5ada4185d70a1852b578b2063de58e37.js +1 -221
  161. package/dist/5b6a626249d0bc43e412fffa6a9ee177.js +1 -9
  162. package/dist/5bad2df0e3bfd8fdc1a332fb6276cb39.js +1 -360
  163. package/dist/5c53d90bf4029cfd1b6a0945d1cae142.js +1 -3550
  164. package/dist/5c96efcfd419a70a93c96557979bc66d.js +1 -371
  165. package/dist/5d3314103b00c8ea165c6f9f6757f794.js +1 -9
  166. package/dist/5d46734b57c7408a41473abcd515b64c.js +1 -387
  167. package/dist/5da9145440d57c9b84d469253e84898d.js +1 -154
  168. package/dist/5e37c1ef17a219449c8c6aa37a87a941.js +1 -101
  169. package/dist/5e3f006db26e9b277b1bdbc130611a14.js +1 -400
  170. package/dist/5e55b301888460bd06c8e26d1011e01a.js +1 -9
  171. package/dist/5e6c2744429a8fac6e536b179c1f31d0.js +1 -293
  172. package/dist/5ebdef8c548fca6c51280e915d6f4c3f.js +1 -168
  173. package/dist/5ede1aebde9d4e5f5cce2db3044495c7.js +1 -148
  174. package/dist/5f3ce6efab3c679ec1ad25ab0b3f6b2f.js +1 -9
  175. package/dist/5fb6059ab5d7abab7a74eb73028a3aeb.js +1 -361
  176. package/dist/5fc5c77d4df4f5d77f8530f6b23ecd1e.js +1 -135
  177. package/dist/5fedbf948ed123687f77167fac1faf8b.js +1 -9
  178. package/dist/60340be8eea1d704a17f399b3c3f9577.js +1 -200
  179. package/dist/621b99ed1a029c36b4e91ec35f36c344.js +1 -44
  180. package/dist/6292be0125d3720498496eaa7f541618.js +1 -56
  181. package/dist/63b15fb6fc8f897b22a4bf72b7e8452a.js +1 -57668
  182. package/dist/64a5f4d62507d032038dcd76d15188e1.js +1 -9
  183. package/dist/64c45b6610e353ba59a58afc6dd090ca.js +1 -450
  184. package/dist/64d6924350bd7706850cdc0dcc76ccf6.js +1 -9
  185. package/dist/6511453710d760c2682567b40ddb3301.js +1 -593
  186. package/dist/656f53e1b4c6e37a31799737faf6d639.js +1 -209
  187. package/dist/663234c150f2097f3812c6065491497c.js +1 -254
  188. package/dist/6903d8ef977a1424c4e2eb22b96feb77.js +1 -118
  189. package/dist/6a7bf4fb4484f6f48d8e4337f126a61d.js +1 -1246
  190. package/dist/6abb884bd4f1a54529c00b58c14741cc.js +1 -128
  191. package/dist/6bb61adbbc13088ee1c32d88b5c7e754.js +1 -1743
  192. package/dist/6c0a75dc5671c3f237a79f6e45b9891c.js +1 -9
  193. package/dist/6c67587c2093ac3a19da9f2196e040b7.js +1 -9
  194. package/dist/6d38cef4a006e6cfe54a6117aba7b600.js +1 -9
  195. package/dist/6f09754fd684f82e6c06ae526d15ac80.js +1 -740
  196. package/dist/6f64da239140d00b81d8b6c523e86daf.js +1 -116
  197. package/dist/6faa9e5f2a0122d2333fa450337a09b0.js +1 -9
  198. package/dist/6fd6a6ddbcbbebe735c9d21e594203ec.js +1 -145
  199. package/dist/6fe3f0823e345813c2084b243cb6650b.js +1 -6198
  200. package/dist/70074e0c785c9a808dea76c7c7d17af3.js +1 -9
  201. package/dist/70286c33cab463fd576766adecd2d5d9.js +1 -9
  202. package/dist/707fa1de4d2096da1951c4bc9d21cb6d.js +1 -75
  203. package/dist/7080d2a1db1608264a6d9d9fbaf2cce8.js +1 -9
  204. package/dist/716879b6ef8945d579595d88534ae402.js +1 -417
  205. package/dist/725da29f1643c2263a437c08a1454aea.js +1 -9
  206. package/dist/73c78b067c792ea8c737746e4671d3e0.js +1 -120
  207. package/dist/740f4264cd757fcf28331fd30daf295e.js +1 -18
  208. package/dist/7493f0c3c9bf268d6ad785019d993dd7.js +1 -150
  209. package/dist/74fa46809aba9625071aa51bc0a71561.js +1 -122
  210. package/dist/755114145e5b97e5571a160a39e716db.js +1 -9
  211. package/dist/75bffda9455d77087f34708ac4e85371.js +1 -2640
  212. package/dist/75d2dae20d7bac5ecfa9dafc48ec04eb.js +1 -277
  213. package/dist/760eb6458a048f3cba7bc3ae52ef2ba4.js +1 -137
  214. package/dist/7735af777659608bcd8cd6525e3bbe58.js +1 -135
  215. package/dist/77aaca51c1c32acaf32656d45f4dc017.js +1 -9
  216. package/dist/77dd68f6396b8ab4ce2c238d6ddb5354.js +1 -331
  217. package/dist/788819e459cdd8c4c1ef565fd303f519.js +1 -113
  218. package/dist/7a9a1dced0e327dc9cb1728bef25641d.js +1 -114
  219. package/dist/7bd84be066027e61c84c9c2aa9543c2a.js +1 -888
  220. package/dist/7c1cd1223bd45600763f8c152ad167d5.js +1 -873
  221. package/dist/7c27341a2599ffb713c8fb7beced7601.js +1 -306
  222. package/dist/7c317e61789b17749dfe6ea294c89b6b.js +1 -193
  223. package/dist/7c9c55eb1a1e5c1dfd63631511d9a1f0.js +1 -720
  224. package/dist/7dead8e2fcacc316bbfa632cd9f1c9bb.js +1 -163
  225. package/dist/7e4099fc2d04c7c1cf96892b962ba4ec.js +1 -9
  226. package/dist/7ef082035f74b3d7324f95a7498ea656.js +1 -2632
  227. package/dist/7f12d133c88ce53d0837a6c4c0287a37.js +1 -360
  228. package/dist/7f407a1006eb830d6f0aaad96c133d26.js +1 -430
  229. package/dist/805cb6232d7a9fa46025d48a43622ecf.js +1 -9
  230. package/dist/80a171b7595d1161735e23dec8efddd6.js +1 -363
  231. package/dist/82fed7ec74be91e0db61c500d9c6d7ee.js +1 -303
  232. package/dist/83387cb17a7680f59240e7b399e3ac2b.js +1 -9
  233. package/dist/8361542d34c46713c9aff6c4ce65a9a3.js +1 -2693
  234. package/dist/85a977f41a907dba8c672f9bf4943da0.js +1 -3028
  235. package/dist/866bf6ca5057dcb24503761af061d486.js +1 -478
  236. package/dist/870184211838006214be1c23c98672fc.js +1 -17
  237. package/dist/8707a7b49421dbbb842506674ff87fa3.js +1 -59
  238. package/dist/875e553a27bee88a73df34a90b3058e4.js +1 -2564
  239. package/dist/8772719d0f76ecabded160e32dc5eb77.js +1 -503
  240. package/dist/87932c8321c9985ed3b6979e86d2a50e.js +1 -96
  241. package/dist/87d6bf8becf2d5ebe2f71fda95a313ea.js +1 -83
  242. package/dist/88bbfb9fdb8730ffc23f546b42d8d620.js +1 -395
  243. package/dist/88e2feda80ac8cfb28f1dc0ec833b40d.js +1 -9
  244. package/dist/894720f1519e5eb34e1b4f33fca7a9dd.js +1 -185
  245. package/dist/894edcaf39c3c95818e3949d737ed459.js +1 -9
  246. package/dist/89d3c35a5ef97a600927b477a9ba06b4.js +1 -414
  247. package/dist/8ba6618773c9d8d0b4f6ecb785651e2c.js +1 -121
  248. package/dist/8bf75743fb14fea7cf02a5da1bda79d4.js +1 -73
  249. package/dist/8cb83aa3fea85e950c29450b8237fb72.js +1 -14
  250. package/dist/8d9bb1799d9b98db107e84f10132e17f.js +1 -9
  251. package/dist/8ed58ed9c7e1cb1ae1f2830d29011ffb.js +1 -9
  252. package/dist/909adc4a16e0f97d869e3dd16d561430.js +1 -122
  253. package/dist/90bafd962205e96c3285d27cbf95c55c.js +1 -68
  254. package/dist/91bd2b106800bd7812e2ab5a5fea985b.js +1 -110
  255. package/dist/92f4aab5c66f6269c7054c8fbcb3de13.js +1 -9
  256. package/dist/957970f69802c38a9092b9b6264cc1b9.js +1 -112
  257. package/dist/9600fed6a4508afbbcd2c75923d953c3.js +1 -125
  258. package/dist/962969a46fefcace3305abd4d6e14a2e.js +1 -9
  259. package/dist/964646d64dd3196a9c27fe302511414a.js +1 -10922
  260. package/dist/9671c350e11f1569edb5066cbfeb3334.js +1 -98
  261. package/dist/9696a4229fb787eeb25b26f1274b75ee.js +1 -9
  262. package/dist/97e72973d750ecb3bc2e75b75bf63c5b.js +1 -9000
  263. package/dist/9807cf1e443a7440371904b6525f37eb.js +1 -9
  264. package/dist/985d6749688c18f94994794f88492444.js +1 -278
  265. package/dist/99ade8b6895e3a1c3d6eb70583cb924e.js +1 -115
  266. package/dist/9b1fd9cf4206cc32e84150c49707d811.js +1 -9
  267. package/dist/9b8e2282f60f104ff3ace5b905af4d62.js +1 -64
  268. package/dist/9ff6d4a6592c0cb7d0b939113c3a6b31.js +1 -95
  269. package/dist/a164d0e40c4dfa485dcf8e6d5258d767.js +1 -122
  270. package/dist/a1c8660c5bcc6b6a43a7fb3c351174d9.js +1 -9
  271. package/dist/a2a705f6bc3a6827d6c94c5978aec36d.js +1 -243
  272. package/dist/a2c0fcb443c396b30a11fc1682a29c13.js +1 -115
  273. package/dist/a4306aa43824ec1a4ee422b59a851e6f.js +1 -2622
  274. package/dist/a4bedde07e392f8ebf64341b61f75df2.js +1 -9
  275. package/dist/a533e643002830be2da76c9527265860.js +1 -9
  276. package/dist/a5d364d12a8f7691339c497b2e725bcf.js +1 -145
  277. package/dist/a7824ec1ab22aeb22bb35ab8bf1ddc4a.js +1 -715
  278. package/dist/a934b622dd8bdcdcdc1dde985a07ac14.js +1 -36
  279. package/dist/a98ead014d010899b35ee25c7c225542.js +1 -411
  280. package/dist/aa0eee504d52a12d3a30bbd523afcc34.js +1 -9
  281. package/dist/aa5623ec68d23fedb9c9c115c7d99063.js +1 -9
  282. package/dist/aaddd877950d1e3bf1b3ef0fc0ff596e.js +1 -449
  283. package/dist/aaf5c3a4f1a188fd051577cea7b87209.js +1 -457
  284. package/dist/ab4b314445b23359319c14cce9a0e321.js +1 -3687
  285. package/dist/abb40a9a6ef0b2fe14c66dcadc9857a2.js +1 -248
  286. package/dist/ad215d7ba317c941cdcc96ae78e86666.js +1 -67
  287. package/dist/adc5e81257ed3f8d70d03cf79150eec1.js +1 -320
  288. package/dist/aedbf3a3ece39aab8c9f3b3a3779e79b.js +1 -115
  289. package/dist/af959c2a870f08dd8abccae97c9b9bae.js +1 -35
  290. package/dist/b0071564b0854c39e3de8b99d66e4dfd.js +1 -298
  291. package/dist/b02d982ccb1011197a5a24800b178a0a.js +1 -9
  292. package/dist/b0803f33b602bd3b26be70f259e38cee.js +1 -102
  293. package/dist/b1170472ae4b50e3b0070eb991e502fe.js +1 -9
  294. package/dist/b1ac30076824f72cdff7ea29ae0b6801.js +1 -489
  295. package/dist/b1f3f77a9279cdb38846ebe13c3438bc.js +1 -9
  296. package/dist/b20056c149af6b50c851ecfff90e0ccb.js +1 -2792
  297. package/dist/b20cd9acf45420fcacfd923754185663.js +1 -9
  298. package/dist/b25188cf2652d63136d5e54c38abf84e.js +1 -500
  299. package/dist/b2742fab9568b63c2274698af5d381fc.js +1 -135
  300. package/dist/b2ff96fbe6501ff45c37491b94c96c5f.js +1 -315
  301. package/dist/b33ef9b4202539d3690251cb8213a034.js +1 -9
  302. package/dist/b3bb2c8deddd8c2afcf73f6f5d711596.js +1 -61
  303. package/dist/b402b938ca2da72e0984a1360eda5897.js +1 -40
  304. package/dist/b460e24d77f9c0d8b21e65d899840adb.js +1 -363
  305. package/dist/b6a6a4adaab4f09a7835ff64a5096198.js +1 -80
  306. package/dist/b6df2278bd475169749bab512944b7ec.js +1 -207
  307. package/dist/b7b7be8216519adf62d75f123f9c6423.js +1 -1470
  308. package/dist/b808fb222140a85b23ebbe0fffa906d9.js +1 -9
  309. package/dist/b8197742452dd2e77090dde34cb2dc4d.js +1 -4105
  310. package/dist/b881dca9d9a80f61d87374b4bd5a2dd5.js +1 -9
  311. package/dist/b98206b2175363f1150c074608603942.js +1 -592
  312. package/dist/ba6b8b3e06cd9d0aee9c69278ee84647.js +1 -9
  313. package/dist/baa5bf4cfefed057a4657a1b02cfa114.js +1 -32
  314. package/dist/bb4d542cb170b3f7b27a42c69262975b.js +1 -1421
  315. package/dist/bb5bab7a675544fe31ddb7f4a77dffb9.js +1 -9
  316. package/dist/bc0551f89df16ee262a67c0431544a9e.js +1 -128
  317. package/dist/c0736a7477d7aac4c669bb94ccae25d9.js +1 -381
  318. package/dist/c0780e66c6b1ade0fa22283ce1f9c402.js +1 -1582
  319. package/dist/c1bc72d79cc6161590fc01c6b139fccd.js +1 -296
  320. package/dist/c32ec7d45ccd947b98fe458a8ca1405b.js +1 -412
  321. package/dist/c40023acde0f3d5f4806f5fccbb4284b.js +1 -160
  322. package/dist/c45445ab45defa960329c6f8e6224e57.js +1 -317
  323. package/dist/c51840077c684be0e7e13339f85cd4a9.js +1 -9
  324. package/dist/c530988d2b1966fd10a4d99fa3877e1b.js +1 -9
  325. package/dist/c631c95d9019218dfd22d028f215e1d1.js +1 -312
  326. package/dist/c728b4ef87cfd5f561d1601f0867c39d.js +1 -2509
  327. package/dist/c733414555a126e689832ffb55cc203f.js +1 -820
  328. package/dist/c797511423f91a877e7fdffa74d015cb.js +1 -914
  329. package/dist/c7ca9dccbac3af7ebc82b271dd2aa570.js +1 -400
  330. package/dist/c80e89199aef31e48addb2b35ea96365.js +1 -9
  331. package/dist/cb4175466ea600940f2927fa03a217e8.js +1 -472
  332. package/dist/cb652f200fc3dd740b2e7f678a9272ea.js +1 -9
  333. package/dist/cbdbd623038183a8c068dd24ecd90682.js +1 -9
  334. package/dist/cbdc4ca43a8c940a6c3f59a8b6f17df5.js +1 -9
  335. package/dist/ccde58de5468dd353dbee74d631ebdf0.js +1 -34
  336. package/dist/cd358d9acaaa7049d85b15ac766fc314.js +1 -311
  337. package/dist/cd9a17f94a922c7c88000b1b3cdd67df.js +1 -9
  338. package/dist/cda6c5c52fa5d595982da0fac9da25a5.js +1 -984
  339. package/dist/cf188b3f83735389d47bb12fc9f7069a.js +1 -9
  340. package/dist/cf3f6b1c74c72cb5d02870022dbc9f94.js +1 -9
  341. package/dist/cf90a39d245bf7e6c1b41c7a9a28f0a1.js +1 -681
  342. package/dist/chunk-207.cc1646ee6c7a19f6220b.js +2 -0
  343. package/dist/chunk-207.cc1646ee6c7a19f6220b.js.map +1 -0
  344. package/dist/chunk-404.e573ba4c4c7cedc843f3.js +2 -0
  345. package/dist/chunk-404.e573ba4c4c7cedc843f3.js.map +1 -0
  346. package/dist/chunk-actions.c7efc5f5036d72d3b972.js +2 -0
  347. package/dist/chunk-actions.c7efc5f5036d72d3b972.js.map +1 -0
  348. package/dist/chunk-code-editor.4932fdbfef27989069a5.js +2 -0
  349. package/dist/chunk-code-editor.4932fdbfef27989069a5.js.map +1 -0
  350. package/dist/{chunk-docs-actions.8a808416a2d69710472e.js → chunk-docs-actions.fe615fd8e3c8ff68c449.js} +2 -2
  351. package/dist/chunk-docs-actions.fe615fd8e3c8ff68c449.js.map +1 -0
  352. package/dist/chunk-vendor-icons.aae1dc235d12dd74b38e.js +1 -0
  353. package/dist/d04707d65591e86810ebc56d48b10810.js +1 -296
  354. package/dist/d1a58542777d072396d7cee5487304f9.js +1 -141
  355. package/dist/d1efdca26800423a363b769b1834cfcf.js +1 -223
  356. package/dist/d2a00e1726c71ca10fbaf4b9c4374458.js +1 -1003
  357. package/dist/d2fe7592ff2fdda099b2b6355abe8c06.js +1 -5240
  358. package/dist/d30fa4070abd6929228505790744e180.js +1 -279
  359. package/dist/d43ad5f9bad9a042b49b2592c7639c28.js +1 -9
  360. package/dist/d542dda7308361c34af2afb9b70d755a.js +1 -9
  361. package/dist/d5a6140d581e5c4eb200259ce372f40b.js +1 -9
  362. package/dist/d5f79987405c2169278f8de37bcc9d05.js +1 -9
  363. package/dist/d78d3b050ea95b068380d975fd413fd7.js +1 -9
  364. package/dist/d79b3962938d65fb85c6f844e86d92d9.js +1 -172
  365. package/dist/d7b57d5ebdcade0ce5e047509e06861a.js +1 -580
  366. package/dist/d7d616d4aa8fd3f51d681242853dcde9.js +1 -9
  367. package/dist/d83f2acd25388452582e5a4c727255b0.js +1 -174
  368. package/dist/da1c1b1569c4d5872c9a18c29f0b5c90.js +1 -3088
  369. package/dist/da55f4fe3daed3f79fc4565668ecf7dd.js +1 -97
  370. package/dist/db8ca5cfb6fe4aaef215f116f6991784.js +1 -9
  371. package/dist/dbc87324ecf271d088a2ab0823de9c5d.js +1 -75
  372. package/dist/dbd05051a3ecf6b10e2f7b8904153f2d.js +1 -3194
  373. package/dist/dc1eb6c1c92d7067c72b82b2833a7d2c.js +1 -2595
  374. package/dist/dcb197c0214e800da9d9436dfc9437d6.js +1 -162
  375. package/dist/ddbc961769cd2ff4d4a7a136168ebf4c.js +1 -9
  376. package/dist/de0fd4fd7c2d7a4887cbc99eed91f797.js +1 -9
  377. package/dist/df37029cdf8359ecac0aebdf4f257d03.js +1 -386
  378. package/dist/df5710d97a899b672060afaa8c4891c2.js +1 -316
  379. package/dist/dfb7dd1fab06b2403f76c23f80b15738.js +1 -1718
  380. package/dist/e07a0b284934d3a0e8c02c508edc9df1.js +1 -115
  381. package/dist/e0adad8a8579bf99f3e22f7c214a5c64.js +1 -9
  382. package/dist/e0e32c3798e8895695ce5b372a0c989f.js +1 -2166
  383. package/dist/e2b38a8393be2cf23f3894ace3efb1c3.js +1 -9
  384. package/dist/e3ba4b654313ae98884a6c9044197e09.js +1 -103
  385. package/dist/e4565878df49fd4ce3edd3f1022c1695.js +1 -244
  386. package/dist/e4917fa7632b01d28e99304d32d989f7.js +1 -9
  387. package/dist/e4968d8264b40c14f123f28419eb456d.js +1 -23
  388. package/dist/e6070e43daf8a9e5f13f515a5a03e66c.js +1 -498
  389. package/dist/e61779df91186b23e7adf2d1968b2708.js +1 -9
  390. package/dist/e6ad50b520736b595970c9e07029c3f1.js +1 -9
  391. package/dist/e6cf8898b285b71e2abe832717ac7060.js +1 -153
  392. package/dist/e6fae0b04a3000a57f22bb25325c8afe.js +1 -2635
  393. package/dist/e6fb5287a46e030336c006e3f50ade3a.js +1 -529
  394. package/dist/e7e1a807af3160b342e0a3550cf8f7c5.js +1 -9
  395. package/dist/e874d975c9128dc6eb9a513d088bed9f.js +1 -9
  396. package/dist/e8fa659263d5ca9e0d1be69c048133a8.js +1 -297
  397. package/dist/e97cfa120fde26da0359ca29afaf3171.js +1 -43
  398. package/dist/eaa55a522fb2cb2f0287711f42344984.js +1 -9
  399. package/dist/eba5ee3fb1f3e92af88c69e50b2a8fd1.js +1 -102
  400. package/dist/ec2d138afc9cc9e81c4c6ef36ed55228.js +1 -103
  401. package/dist/ec32839f8f3353e66b85450525fa3114.js +1 -2808
  402. package/dist/ecd02712f5a40fcdaa3bfa8190470024.js +1 -2596
  403. package/dist/ecd37b343c4dcc8dac849b1c680dcbef.js +1 -1010
  404. package/dist/ecdb4966f685f3e44b1f28fae46827a3.js +1 -9
  405. package/dist/ee694c1bcbdc9439e50f816c39fd1023.js +1 -2875
  406. package/dist/efc14cdf19554635e477781704353ec2.js +1 -9
  407. package/dist/f0548260c0ac6b0e7cdb8909df1a5333.js +1 -421
  408. package/dist/f0878cc386a608146dbc8fb3b6745c42.js +1 -422
  409. package/dist/f326f2f263b1498fedbe1d07d7254d10.js +1 -9
  410. package/dist/f3c7b9d832aa442df3d140f7697b4f62.js +1 -98
  411. package/dist/f42342b39da2c42adc65ebcf52839f90.js +1 -102
  412. package/dist/f4c53706e1721b08e8b2f650c8bd35c4.js +1 -166
  413. package/dist/f582d9feb91d31036d3dae4cdaea865f.js +1 -3533
  414. package/dist/f5bea0e1099339b99b21ee2d3c0fc489.js +1 -23
  415. package/dist/f7186078e00d958aa2b316483dfc7e1c.js +1 -1715
  416. package/dist/f79630d85284a7f6dadc25c1d256af0a.js +1 -33
  417. package/dist/f80efec9a63094f19edae0480a0f2cd8.js +1 -635
  418. package/dist/f90003058d7087f15baa27b80bf08c1d.js +1 -839
  419. package/dist/f980fd09c34c277299e2d3f83aebdba5.js +1 -102
  420. package/dist/fb59a7c154104a421146ab9e5bd71540.js +1 -462
  421. package/dist/fd40b62490e412d27bc67e660aacae19.js +1 -430
  422. package/dist/fd5bc50b18c9f46380cbe5ec1ac2127b.js +1 -9
  423. package/dist/fd5e2efd3b2d047abe8473f99c650a35.js +1 -677
  424. package/dist/fdf4d851b44839d8fdfa77b3419bce19.js +1 -204
  425. package/dist/ffd3b83e8b5878f4785591ff54b1dfff.js +1 -9
  426. package/dist/index.js +9 -9
  427. package/dist/index.js.map +1 -1
  428. package/package.json +1 -1
  429. package/dist/chunk-207.a88d16e56962fd4d2978.js +0 -2
  430. package/dist/chunk-207.a88d16e56962fd4d2978.js.map +0 -1
  431. package/dist/chunk-404.0ea933a6d9513f2665cf.js +0 -2
  432. package/dist/chunk-404.0ea933a6d9513f2665cf.js.map +0 -1
  433. package/dist/chunk-actions.1ad5d759ef5d8509c532.js +0 -2
  434. package/dist/chunk-actions.1ad5d759ef5d8509c532.js.map +0 -1
  435. package/dist/chunk-code-editor.c86cda6aae761ec82d57.js +0 -2
  436. package/dist/chunk-code-editor.c86cda6aae761ec82d57.js.map +0 -1
  437. package/dist/chunk-docs-actions.8a808416a2d69710472e.js.map +0 -1
  438. package/dist/chunk-vendor-icons.7f0d1996a77d090b3d9c.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./packages/copy/src/components/CopyProgress/CopyProgress.js","webpack:///./packages/copy/src/components/CopyProgress/CopyProgressContainer.js","webpack:///./packages/copy/src/modules/copy/actions.js","webpack:///./packages/copy/src/components/CopyProgress/index.js","webpack:///./packages/copy/src/modules/copy/sagas.js","webpack:///./packages/copy/src/modules/reducers.js","webpack:///./packages/copy/src/main.js","webpack:///./packages/admin/src/routes/entities/components/Action/actions/Documents.js","webpack:///./packages/input-edit/src/modules/inputEdit/actions.js","webpack:///./packages/input-edit/src/modules/inputEditSearch/actions.js","webpack:///./packages/input-edit/src/modules/inputEditTable/actions.js","webpack:///./packages/input-edit/src/components/InputEditInformation/StyledInputEditInformation.js","webpack:///./packages/input-edit/src/components/InputEditInformation/InputEditInformation.js","webpack:///./packages/input-edit/src/components/InputEditInformation/InputEditInformationContainer.js","webpack:///./packages/input-edit/src/components/InputEditSearch/InputEditSearch.js","webpack:///./packages/input-edit/src/components/InputEditSearch/InputEditSearchContainer.js","webpack:///./packages/input-edit/src/modules/inputEditPagination/actions.js","webpack:///./packages/input-edit/src/components/InputEditTable/keyHandler.js","webpack:///./packages/input-edit/src/components/InputEditTable/StyledComponents.js","webpack:///./packages/input-edit/src/components/InputEditTable/InputEditTable.js","webpack:///./packages/input-edit/src/components/InputEditTable/InputEditTableContainer.js","webpack:///./packages/input-edit/src/components/InputEdit/StyledInputEdit.js","webpack:///./packages/input-edit/src/components/InputEdit/InputEdit.js","webpack:///./packages/input-edit/src/components/InputEdit/InputEditContainer.js","webpack:///./packages/input-edit/src/modules/inputEditInformation/actions.js","webpack:///./packages/input-edit/src/modules/inputEdit/reducer.js","webpack:///./packages/input-edit/src/modules/inputEdit/index.js","webpack:///./packages/input-edit/src/modules/inputEdit/sagas.js","webpack:///./packages/input-edit/src/modules/inputEditInformation/reducer.js","webpack:///./packages/input-edit/src/modules/inputEditInformation/index.js","webpack:///./packages/input-edit/src/modules/inputEditInformation/sagas.js","webpack:///./packages/input-edit/src/modules/inputEditPagination/reducer.js","webpack:///./packages/input-edit/src/modules/inputEditPagination/index.js","webpack:///./packages/input-edit/src/modules/inputEditTable/utils.js","webpack:///./packages/input-edit/src/modules/inputEditTable/sagas.js","webpack:///./packages/input-edit/src/modules/inputEditPagination/sagas.js","webpack:///./packages/input-edit/src/modules/inputEditSearch/reducer.js","webpack:///./packages/input-edit/src/modules/inputEditSearch/index.js","webpack:///./packages/input-edit/src/modules/inputEditSearch/sagas.js","webpack:///./packages/input-edit/src/modules/inputEditTable/reducer.js","webpack:///./packages/input-edit/src/modules/inputEditTable/index.js","webpack:///./packages/input-edit/src/modules/reducers.js","webpack:///./packages/input-edit/src/main.js","webpack:///./packages/merge/src/modules/merge/actions.js","webpack:///./packages/merge/src/util/manyRelationEntityCount.js","webpack:///./packages/merge/src/components/GlobalStyledComponents.js","webpack:///./packages/merge/src/components/MergeSummary/StyledComponents.js","webpack:///./packages/merge/src/components/MergeSummary/MergeSummary.js","webpack:///./packages/merge/src/components/MergeSummary/MergeSummaryContainer.js","webpack:///./packages/merge/src/components/MergeSummary/index.js","webpack:///./packages/merge/src/util/sourceData.js","webpack:///./packages/merge/src/components/MergeTable/StyledComponents.js","webpack:///./packages/merge/src/components/MergeTable/Selection.js","webpack:///./packages/merge/src/components/MergeTable/CellRender.js","webpack:///./packages/merge/src/components/MergeTable/MergeErrors.js","webpack:///./packages/merge/src/components/MergeTable/MergeTable.js","webpack:///./packages/merge/src/components/MergeTable/MergeTableContainer.js","webpack:///./packages/merge/src/components/MergeTable/index.js","webpack:///./packages/merge/src/components/Merge/StyledComponents.js","webpack:///./packages/merge/src/components/Merge/Merge.js","webpack:///./packages/merge/src/components/Merge/MergeContainer.js","webpack:///./packages/merge/src/components/Merge/index.js","webpack:///./packages/merge/src/modules/merge/reducer.js","webpack:///./packages/merge/src/modules/merge/sagas.js","webpack:///./packages/merge/src/modules/merge/index.js","webpack:///./packages/merge/src/modules/reducers.js","webpack:///./packages/merge/src/main.js","webpack:///./packages/admin/src/routes/entities/components/Action/actions/PasswordUpdate.js","webpack:///./packages/tocco-util/src/color/hexToRgb.js","webpack:///./packages/tocco-util/src/color/contrast.js","webpack:///./packages/tocco-util/src/color/index.js","webpack:///./packages/scheduler/src/utils/conflicts.js","webpack:///./packages/scheduler/src/utils/calendar.js","webpack:///./packages/scheduler/src/utils/time.js","webpack:///./packages/scheduler/src/components/Conflict/Conflict.js","webpack:///./packages/scheduler/src/components/Conflict/index.js","webpack:///./packages/tocco-ui/src/DatePicker/LazyDatePicker.js","webpack:///./packages/scheduler/src/components/NavigationFullCalendar/StyledNavigationFullCalendar.js","webpack:///./packages/scheduler/src/components/NavigationFullCalendar/NavigationFullCalendar.js","webpack:///./packages/scheduler/src/components/NavigationFullCalendar/index.js","webpack:///./packages/scheduler/src/components/FullCalendar/ResourceLabelContent.js","webpack:///./packages/scheduler/src/components/FullCalendar/StyledFullCalendar.js","webpack:///./packages/scheduler/src/components/FullCalendar/FullCalendar.js","webpack:///./packages/scheduler/src/components/FullCalendar/index.js","webpack:///./packages/scheduler/src/components/Scheduler/Scheduler.js","webpack:///./packages/scheduler/src/components/Scheduler/index.js","webpack:///./packages/scheduler/src/modules/scheduler/actions.js","webpack:///./packages/scheduler/src/containers/SchedulerContainer.js","webpack:///./packages/scheduler/src/input.js","webpack:///./packages/scheduler/src/modules/scheduler/reducer.js","webpack:///./packages/scheduler/src/modules/scheduler/index.js","webpack:///./packages/scheduler/src/modules/scheduler/sagas.js","webpack:///./packages/scheduler/src/modules/reducers.js","webpack:///./packages/scheduler/src/main.js","webpack:///./packages/resource-scheduler/src/modules/resourceScheduler/actions.js","webpack:///./packages/resource-scheduler/src/containers/SchedulerAppContainer.js","webpack:///./packages/resource-scheduler/src/components/SearchPanel/SearchPanel.js","webpack:///./packages/resource-scheduler/src/components/ResourceScheduler/StyledResourceScheduler.js","webpack:///./packages/resource-scheduler/src/components/ResourceScheduler/ResourceScheduler.js","webpack:///./packages/resource-scheduler/src/components/ResourceScheduler/index.js","webpack:///./packages/resource-scheduler/src/containers/ResourceSchedulerContainer.js","webpack:///./packages/resource-scheduler/src/modules/resourceScheduler/reducer.js","webpack:///./packages/resource-scheduler/src/modules/resourceScheduler/index.js","webpack:///./packages/resource-scheduler/src/utils/rest.js","webpack:///./packages/resource-scheduler/src/modules/resourceScheduler/sagas.js","webpack:///./packages/resource-scheduler/src/modules/reducers.js","webpack:///./packages/resource-scheduler/src/main.js","webpack:///./packages/admin/src/routes/entities/components/Action/actions/ResourceScheduler.js","webpack:///./packages/admin/src/routes/entities/components/Action/actions/ShowOutputJobsAction.js","webpack:///./packages/user-qr-action/src/utils/qrCodeUtils.js","webpack:///./packages/user-qr-action/src/components/UserQrCode/UserQrCode.js","webpack:///./packages/user-qr-action/src/components/UserQrCode/index.js","webpack:///./packages/user-qr-action/src/modules/qrCode/actions.js","webpack:///./packages/user-qr-action/src/containers/UserQrCodeContainer.js","webpack:///./packages/user-qr-action/src/modules/qrCode/reducer.js","webpack:///./packages/user-qr-action/src/modules/qrCode/index.js","webpack:///./packages/user-qr-action/src/modules/qrCode/sagas.js","webpack:///./packages/user-qr-action/src/modules/reducers.js","webpack:///./packages/user-qr-action/src/main.js"],"names":["StyledDiv","styled","size","startCopy","useEffect","mapActionCreators","type","connect","CopyProgress","sagas","copy","getValues","getPaths","inputSelector","state","input","all","takeLatest","select","selection","navigationStrategy","formName","context","call","selectionUtil","rest","entities","keys","length","entityName","values","put","externalEvents","navigateToCreateRelative","defaultValues","Error","entityKey","paths","sourceEntity","Object","entries","map","id","value","Array","isArray","v","key","filter","d","formDefinition","form","fields","f","ignoreCopy","path","e","copySagas","EXTERNAL_EVENTS","initApp","events","publicPath","content","store","appFactory","reducers","actions","textResourceModules","CopyApp","props","packageName","component","propTypes","PropTypes","reduce","event","to","pathname","setSelection","payload","setHandleNotifications","handleNotifications","setSelectionUpdateInProgress","updateInProgress","SET_INITIALIZED","setForm","setInitialized","initialized","SET_SORTING","initializeTable","setValue","inputDataKey","node","setDataFormColumns","dataFormColumns","setActionDefinitions","actionDefinitions","setDataLoadingInProgress","dataLoadingInProgress","StyledInputEditInformation","StyledStatedValueWrapper","information","info","Field","field","StatedValue","label","immutable","hasValue","formField","dataType","inputEditInformation","InputEditInformation","handleChange","setSearchFields","tql","transformFormValuesToTql","fieldType","getFieldType","tqlBuilder","container","children","find","child","onChange","_debounce","noButtons","validate","mappingType","mode","searchQueries","inputEditSearch","InputEditSearch","SET_CURRENT_PAGE","arrowKeyHandler","includes","document","activeElement","tagName","preventDefault","split","rowIndex","columnIndex","currentIndex","Number","parseInt","indexDiff","idToFocus","elementToFocus","getElementById","focusElement","findHorizontalElementToFocus","adjustedIndex","disabled","setTimeout","focus","borderColor","theme","shadeColor","_get","baseSpace","scale","StyledTableWrapper","StyledCell","declareFocus","dataCellRenderer","lighten","colors","secondaryLight","declareFont","fontWeight","fieldDefinition","data","breakWords","inputEditForm","updateValue","sorting","setSorting","totalCount","currentPage","recordsPerPage","setCurrentPage","useState","columns","setColumns","columnPosition","setColumnPosition","dataColumns","api","inputColumns","c","idx","sortable","definition","resizable","dynamic","CellRenderer","rowData","column","rowIdx","row","readonly","options","pk","FormattedValue","EditableValue","changedValue","onFocus","target","inputCellRenderer","cc","sort","a","b","findIndex","onKeyDown","Table","onSortingChange","onColumnPositionChange","dragColumn","dropColumn","acc","paginationInfo","onPageChange","add","inputEditTable","inputEditPagination","InputEditTable","StyledPaneWrapper","sharedSplitPaneStyles","css","StyledScrollbar","StyledPanelWrapperLeft","isCollapsed","StyledPanelWrapperRight","StyledInputEditSearchWrapper","StyledLeftPane","StyledActionsWrapper","StyledToggleCollapse","StyledPlaceHolder","StyledToggleCollapseButton","Button","GlobalStyles","notification","updateSelection","initializeSearch","initializeInformation","setIsCollapsed","toggleCollapse","Actions","onClick","icon","notify","inputEdit","InputEdit","initialState","ACTION_HANDLERS","reducerUtil","action","handler","emit","reload","updateInputDatas","inputEditSelector","takeEvery","actionEmitter","inputEditAction","method","body","initialize","transformResponseData","response","dataRecord","splitObj","isInputField","isNaN","inputFields","entityFields","__key","processDataForm","loadData","handleResponse","inputEditTableSelector","inputEditSearchSelector","searchQueriesSelector","inputEditPaginationSelector","dataForm","readonlyActions","componentType","scope","actionProperties","inputEditDataForm","editFormDefinition","editColumns","forEach","title","take","searchFormActions","newSorting","newSearchQueries","newPage","getPathsFromTable","searchBean","limit","page","where","join","transformedData","count","flatMap","calculatedValues","actionsToPut","setSearchQueries","getOpposite","order","val","contains","s","currentSorting","inputEditReducer","inputEditSearchReducer","inputEditPaginationReducer","inputEditInformationReducer","inputEditSagas","inputEditTableSagas","inputEditSearchSagas","inputEditPaginationSagas","inputEditInformationSagas","emitAction","errorLogging","cache","InputEditApp","setSourceData","sourceData","setTargetEntity","setMergeResponse","mergeResponse","setMergeError","errorMsg","validationErrors","ManyRelationEntityCount","model","totalKeys","Typography","ListLink","entityKeys","slice","StyledButtonWrapper","StyledButton","StyledSummarySuccessWrapper","StyledMessageWrapper","StyledResultsWrapper","StyledIconWrapper","close","mapToEntityList","_groupBy","entityLabel","list","entity","prev","curr","notCopiedRelations","notDeletedEntities","look","ink","showPermissionMessage","merge","injectIntl","MergeSummary","getAllPaths","getAllRelations","Set","relations","r","relationName","getSortedPathsAndRelations","counters","name","other","getAllPathsAndRelations","sortByLabel","labels","o","getDisplay","fallbackDisplay","displaysPerModel","displays","undefined","display","StyledMergeErrorWrapper","StyledSummaryErrorWrapper","StyledError","StyledLabelWrapper","StyledStatusWrapper","isChecked","areEqual","prevProps","nextProps","js","ManyRelationsCheckBox","React","entityData","setSelectedMultipleAll","isSelected","checked","for","relationEntity","RelationsCheckBoxes","setSelectedMultiple","selectedMultiple","setSelected","numberTotal","numberSelected","allRowsSelectionState","MultiCheckbox","FormattedValueRadio","setSelectedSingle","writable","mappedType","mapActionCreatorsCell","relatedEntityKey","CellRendererContainer","selectedSingle","selected","single","multiple","selectedMultipleAll","multipleAll","entityValidatorErrors","mergeErrorMsg","allMergerValidationErrors","mergeValidationErrors","fieldValidators","validator","msg","index","entityValidators","Boolean","LabelCellRenderer","columnName","allPaths","mapActionCreatorsColumn","ColumnHeaderRendererContainer","targetEntity","mergeStrategyDisplay","status","LoadMask","mergePending","executeMerge","useMemo","pathRows","relationRows","relation","getDataRows","ColumnHeaderRenderer","PathCellRenderer","pathColumns","HeaderRenderer","getColumnDefinition","selectionStyle","MergeTable","StyledMerge","mergeDone","Merge","setTargetEntityMultiple","obj","_setWith","_omit","array","mainSagas","loadSourceData","getMergeBody","mergeSelector","push","mergeRelations","_uniq","sourceKey","resource","acceptedStatusCodes","headers","errorCode","errors","message","entitiy","remoteEvents","fork","moduleSagas","mergeSagas","MergeApp","closeModal","username","ids","showOldPasswordField","success","hexToRgb","hex","fallBack","normalizeHex","result","exec","g","startsWith","padEnd","calculateLight","colorItem","Math","pow","calculateLumiance","color","hexColor","brightValue","darkValue","rgbColor","freeze","EXISTING","ACCEPTED","NONE","getResourceId","getResources","calendars","calendar","calendarType","entityModel","getFormattedTime","date","format","replace","conflictStatus","intl","conflicts","accepted","textResource","formatMessage","DatePickerComponent","lazy","Suspense","fallback","getButtonInkProps","viewType","changeRange","changeView","chooseNext","choosePrev","chooseToday","goToDate","isLoading","refresh","ButtonGroup","style","marginLeft","pending","fieldValue","onCalendarRemove","defaultChecked","className","extendedProps","StyledFullCalendarWrapper","StyledMemoizedFullCalender","CalendarGlobalPrintStyle","createGlobalStyle","FullCalendar","resources","onDateRangeChange","onRefresh","onCalendarRemoveAll","locale","onEventClick","calendarEl","useRef","wrapperEl","moment","current","getApi","batchRendering","getEventSources","eS","remove","addEventSource","JSON","stringify","loadedResources","l","addResource","headerContent","visibility","view","startDate","activeStart","endDate","activeEnd","renderEventContent","eventInfo","time","start","twix","end","monthFormat","dayFormat","tooltipDescriptionContent","description","conflict","eventInfoStyleAttributes","styleAttr","Popover","isPlainHtml","placement","timeText","memoizedFullCalendar","resourceOrder","schedulerLicenseKey","licence","process","FULL_CALENDAR_LICENCE","consoleLogger","plugins","adaptivePlugin","resourceTimelinePlugin","interactionPlugin","ref","initialView","headerToolbar","height","resourceAreaWidth","resourceAreaColumns","labelText","resourceLabelContent","eventClick","eventContent","firstDay","slotMinTime","slotMaxTime","views","dayView","slotLabelFormat","weekView","weekday","month","day","weekViewSimple","slotDuration","monthView","omitCommas","next","today","gotoDate","getDate","defaultProps","accumulator","source","resourceId","backgroundColor","backgroundHexColor","setIsLoading","dateRange","scheduler","Scheduler","getDispatchActions","setCalendars","schedulerReducer","schedulerSagas","SchedulerContainer","SchedulerApp","react","dispatch","allDay","SET_DATE_RANGE","updateRequestedCalendars","setDateRange","removeRequestedCalendar","resourceScheduler","PanelHeaderContent","aria-hidden","position","design","SearchPanel","requestedCalendars","calendarTypes","Panel","formBase","showSearchForm","selectable","onSelectChange","simpleSearchFields","disableSelectionController","showActions","scrollBehaviour","getSearchLists","memo","resizerStyle","background","width","cursor","StyledSplitPanelWrapperLeft","StyledSplitPanelWrapperRight","StyledSplitPane","SplitPane","SchedulerAppContainer","defaultSize","minSize","ResourceScheduler","typesToRemove","adjustedValue","transformRequestedCalendars","_reduce","calendarTypeId","loadCalendarTypes","retrieveCalendars","resourceSchedulerSelector","getTime","calendarsResponse","resourceSchedulerReducer","resourceSchedulerSagas","ResourceSchedulerContainer","dispatchActions","ResourceSchedulerApp","selectionPropType","match","history","entityBaseUrl","goBack","url","createHref","window","open","search","encodeURIComponent","appendField","fieldName","outputPrefix","output","fieldData","StyledContainer","StyledContent","fetchData","string","lastname","firstname","address","buildUserMecardString","QRCode","setData","qrCode","UserQrCode","userKey","getSingleKey","query","bean","qrCodeReducer","qrCodeSagas","UserQrActionApp"],"mappings":"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","file":"chunk-actions.c7efc5f5036d72d3b972.js","sourcesContent":["import PropTypes from 'prop-types'\nimport React, {useEffect} from 'react'\nimport styled from 'styled-components'\nimport {LoadingSpinner} from 'tocco-ui'\n\nconst StyledDiv = styled.div`\n text-align: center;\n display: block;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n height: 40px;\n`\n\nconst CopyProgress = ({startCopy}) => {\n useEffect(() => {\n startCopy()\n }, [])\n\n return (\n <StyledDiv>\n <LoadingSpinner size=\"30px\" />\n </StyledDiv>\n )\n}\n\nCopyProgress.propTypes = {\n startCopy: PropTypes.func.isRequired\n}\n\nexport default CopyProgress\n","import {connect} from 'react-redux'\n\nimport {startCopy} from '../../modules/copy/actions'\nimport CopyProgress from './CopyProgress'\n\nconst mapActionCreators = {\n startCopy\n}\n\nexport default connect(null, mapActionCreators)(CopyProgress)\n","export const START_COPY = 'copy/START_COPY'\n\nexport const startCopy = () => ({\n type: START_COPY\n})\n","import CopyProgressContainer from './CopyProgressContainer'\n\nexport default CopyProgressContainer\n","import {all, call, put, select, takeLatest} from 'redux-saga/effects'\nimport {rest, form, externalEvents, selection as selectionUtil} from 'tocco-app-extensions'\n\nimport * as actions from './actions'\n\nexport const inputSelector = state => state.input\n\nexport default function* sagas() {\n yield all([takeLatest(actions.START_COPY, copy)])\n}\n\nexport function* copy() {\n const {\n selection,\n navigationStrategy,\n context: {formName}\n } = yield select(inputSelector)\n const entities = yield call(selectionUtil.getEntities, selection, rest.fetchEntities)\n\n if (entities.keys.length === 1) {\n const values = yield call(getValues, entities.entityName, entities.keys[0], formName)\n yield put(externalEvents.fireExternalEvent('onCancel'))\n yield call(navigationStrategy.navigateToCreateRelative, null, {defaultValues: values})\n } else {\n throw new Error('Invalid selection')\n }\n}\n\nexport function* getValues(entityName, entityKey, formName) {\n const paths = yield call(getPaths, formName)\n const sourceEntity = yield call(rest.fetchEntity, entityName, entityKey, {paths})\n\n return Object.entries(sourceEntity.paths)\n .map(([id, valueObject]) => {\n const value = valueObject.value\n if (value === null || value === '' || (Array.isArray(value) && value.length === 0)) {\n return null\n }\n\n const valueTransformed = Array.isArray(value)\n ? value.map(v => v.key)\n : typeof value === 'object'\n ? value.key\n : value\n\n return {id, value: valueTransformed}\n })\n .filter(d => !!d)\n}\n\nexport function* getPaths(formName) {\n const formDefinition = yield call(rest.fetchForm, formName, 'create')\n const fields = yield call(form.getFieldDefinitions, formDefinition)\n return fields.filter(f => f.ignoreCopy !== true && f.path).map(e => e.path)\n}\n","import {sagas as copySagas} from './copy'\n\nexport default {}\nexport const sagas = [copySagas]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {appFactory, externalEvents, selection} from 'tocco-app-extensions'\nimport {reducer as reducerUtil, navigationStrategy} from 'tocco-util'\n\nimport CopyProgress from './components/CopyProgress'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'copy'\n\nconst EXTERNAL_EVENTS = ['emitAction', 'onSuccess', 'onCancel', 'onError']\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <CopyProgress />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n })\n}\n\n;(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').default\n fetchMock.config.overwriteRoutes = false\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n fetchMock.spy()\n }\n\n const app = initApp(packageName, input)\n\n if (module.hot) {\n module.hot.accept('./modules/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nconst CopyApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nCopyApp.propTypes = {\n selection: selection.propType.isRequired,\n navigationStrategy: navigationStrategy.propTypes.isRequired,\n context: PropTypes.shape({\n formName: PropTypes.string\n }),\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default CopyApp\n","import React from 'react'\nimport {Redirect} from 'react-router-dom'\n\nconst Documents = () => <Redirect to={{pathname: '/docs'}} />\n\nexport default Documents\n","export const SET_SELECTION = 'inputEdit/SET_SELECTION'\nexport const UPDATE_SELECTION = 'inputEdit/UPDATE_SELECTION'\nexport const SET_HANDLE_NOTIFICATIONS = 'inputEdit/SET_HANDLE_NOTIFICATIONS'\nexport const SET_UPDATE_IN_PROGRESS = 'inputEdit/SET_UPDATE_IN_PROGRESS'\n\nexport const setSelection = selection => ({\n type: SET_SELECTION,\n payload: {selection}\n})\n\nexport const updateSelection = () => ({\n type: UPDATE_SELECTION,\n payload: {}\n})\n\nexport const setHandleNotifications = handleNotifications => ({\n type: SET_HANDLE_NOTIFICATIONS,\n payload: {\n handleNotifications\n }\n})\n\nexport const setSelectionUpdateInProgress = updateInProgress => ({\n type: SET_UPDATE_IN_PROGRESS,\n payload: {\n updateInProgress\n }\n})\n","export const INITIALIZE_SEARCH = 'inputEditSearch/INITIALIZE_SEARCH'\nexport const SET_FORM = 'inputEditSearch/SET_FORM'\nexport const SET_SEARCH_QUERIES = 'inputEditSearch/SET_SEARCH_QUERIES'\nexport const SET_INITIALIZED = 'inputEditSearch/SET_INITIALIZED'\n\nexport const initializeSearch = () => ({\n type: INITIALIZE_SEARCH\n})\n\nexport const setForm = form => ({\n type: SET_FORM,\n payload: {form}\n})\n\nexport const setSearchQueries = searchQueries => ({\n type: SET_SEARCH_QUERIES,\n payload: {searchQueries}\n})\n\nexport const setInitialized = initialized => ({\n type: SET_INITIALIZED,\n payload: {\n initialized\n }\n})\n","export const INITIALIZE_TABLE = 'inputEditTable/INITIALIZE_TABLE'\nexport const LOAD_DATA = 'inputEditTable/LOAD_DATA'\nexport const SET_DATA = 'inputEditTable/SET_DATA'\nexport const SET_EDIT_FORM = 'inputEditTable/SET_EDIT_FORM'\nexport const UPDATE_VALUE = 'inputEditTable/UPDATE_VALUE'\nexport const SET_VALUE = 'inputEditTable/SET_VALUE'\nexport const SET_SORTING = 'inputEditTable/SET_SORTING'\nexport const SET_DATA_FORM_COLUMNS = 'inputEditTable/SET_DATA_FORM_COLUMNS'\nexport const SET_ACTION_DEFINITIONS = 'inputEditTable/SET_ACTION_DEFINITIONS'\nexport const SET_DATA_LOADING_IN_PROGRESS = 'inputEditTable/SET_DATA_LOADING_IN_PROGRESS'\n\nexport const initializeTable = () => ({\n type: INITIALIZE_TABLE\n})\n\nexport const loadData = () => ({\n type: LOAD_DATA\n})\n\nexport const setData = data => ({\n type: SET_DATA,\n payload: {data}\n})\n\nexport const setEditForm = form => ({\n type: SET_EDIT_FORM,\n payload: form\n})\n\nexport const updateValue = (inputDataKey, node, value) => ({\n type: UPDATE_VALUE,\n payload: {\n inputDataKey,\n node,\n value\n }\n})\n\nexport const setValue = (inputDataKey, node, value) => ({\n type: SET_VALUE,\n payload: {\n inputDataKey,\n node,\n value\n }\n})\n\nexport const setSorting = (field, add) => ({\n type: SET_SORTING,\n payload: {\n field,\n add\n }\n})\n\nexport const setDataFormColumns = dataFormColumns => ({\n type: SET_DATA_FORM_COLUMNS,\n payload: {\n dataFormColumns\n }\n})\n\nexport const setActionDefinitions = actionDefinitions => ({\n type: SET_ACTION_DEFINITIONS,\n payload: {\n actionDefinitions\n }\n})\n\nexport const setDataLoadingInProgress = dataLoadingInProgress => ({\n type: SET_DATA_LOADING_IN_PROGRESS,\n payload: {\n dataLoadingInProgress\n }\n})\n","import styled from 'styled-components'\n\nexport const StyledInputEditInformation = styled.div``\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport styled from 'styled-components'\nimport {field} from 'tocco-app-extensions'\nimport {StatedValue} from 'tocco-ui'\n\nimport {StyledInputEditInformation} from './StyledInputEditInformation'\n\nconst StyledStatedValueWrapper = styled.div`\n & > div > div > span {\n display: inline-block;\n margin-top: 5px;\n padding-bottom: 3px;\n }\n`\n\nconst InputEditInformation = ({information}) => (\n <StyledInputEditInformation>\n {information.map(info => {\n const Field = field.factory('readOnly', info.type)\n return (\n <StyledStatedValueWrapper key={info.id}>\n <StatedValue key={info.id} label={info.label} immutable={true} hasValue={true}>\n <Field\n formField={{\n dataType: info.type\n }}\n value={info.value}\n />\n </StatedValue>\n </StyledStatedValueWrapper>\n )\n })}\n </StyledInputEditInformation>\n)\n\nInputEditInformation.propTypes = {\n information: PropTypes.array.isRequired\n}\n\nexport default InputEditInformation\n","import {connect} from 'react-redux'\n\nimport InputEditInformation from './InputEditInformation'\n\nconst mapStateToProps = state => ({\n information: state.inputEditInformation.information\n})\n\nexport default connect(mapStateToProps)(InputEditInformation)\n","import _debounce from 'lodash/debounce'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport SimpleFormApp from 'tocco-simple-form/src/main'\nimport {tqlBuilder} from 'tocco-util'\n\nconst InputEditSearch = ({form, setSearchFields}) => {\n return form.children ? (\n <SimpleFormApp\n form={form}\n onChange={_debounce(handleChange(form, setSearchFields), 500)}\n noButtons={true}\n validate={false}\n mappingType=\"search\"\n mode=\"search\"\n />\n ) : null\n}\n\nconst handleChange =\n (form, setSearchFields) =>\n ({values}) => {\n if (Object.keys(values).length > 0) {\n const tql = transformFormValuesToTql(values, form)\n setSearchFields(tql)\n } else {\n setSearchFields([])\n }\n }\n\nconst transformFormValuesToTql = (values, form) =>\n Object.entries(values)\n .map(([path, value]) => ({\n path,\n fieldType: getFieldType(path, form),\n value\n }))\n .filter(({path, fieldType, value}) => value && (!Array.isArray(value) || value.length > 0))\n .map(({path, fieldType, value}) => tqlBuilder.getTql(path, value, fieldType))\n .filter(tql => tql.length > 0)\n\nconst getFieldType = (path, form) => {\n const container = form.children.find(child => child.children.length > 0)\n if (container) {\n const field = container.children.find(child => child.id === path)\n\n return field.children.length > 0 ? field.children[0].dataType : field.dataType\n }\n}\n\nInputEditSearch.propTypes = {\n form: PropTypes.object.isRequired,\n setSearchFields: PropTypes.func.isRequired\n}\n\nexport default InputEditSearch\n","import {connect} from 'react-redux'\n\nimport {setSearchQueries} from '../../modules/inputEditSearch/actions'\nimport InputEditSearch from './InputEditSearch'\n\nconst mapActionCreators = {\n setSearchFields: setSearchQueries\n}\n\nconst mapStateToProps = state => ({\n form: state.inputEditSearch.form\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEditSearch)\n","export const SET_CURRENT_PAGE = 'inputEditPagination/SET_CURRENT_PAGE'\nexport const SET_TOTAL_COUNT = 'inputEditPagination/SET_TOTAL_COUNT'\n\nexport const setCurrentPage = currentPage => ({\n type: SET_CURRENT_PAGE,\n payload: {currentPage}\n})\n\nexport const setTotalCount = totalCount => ({\n type: SET_TOTAL_COUNT,\n payload: {\n totalCount\n }\n})\n","export const arrowKeyHandler = event => {\n if (\n ['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName) &&\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n event.preventDefault()\n const [rowIndex, columnIndex] = document.activeElement.id.split(':')\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n const currentIndex = Number.parseInt(rowIndex)\n const indexDiff = event.key === 'ArrowUp' ? -1 : 1\n const idToFocus = `${currentIndex + indexDiff}:${columnIndex}`\n const elementToFocus = document.getElementById(idToFocus)\n focusElement(elementToFocus)\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n const currentIndex = Number.parseInt(columnIndex)\n const indexDiff = event.key === 'ArrowLeft' ? -1 : 1\n const elementToFocus = findHorizontalElementToFocus(rowIndex, currentIndex, indexDiff)\n focusElement(elementToFocus)\n }\n }\n}\n\n/**\n * there might be readonly fields mixed in, so we need to check the rest of the fields\n * @param rowIndex which row to navigate in\n * @param currentIndex last checked cell index\n * @param indexDiff which direction to move in\n * @returns {HTMLElement}\n */\nconst findHorizontalElementToFocus = (rowIndex, currentIndex, indexDiff) => {\n const adjustedIndex = currentIndex + indexDiff\n const idToFocus = `${rowIndex}:${adjustedIndex}`\n const elementToFocus = document.getElementById(idToFocus)\n if (elementToFocus) {\n if (['INPUT', 'TEXTAREA'].includes(elementToFocus.tagName) && !elementToFocus.disabled) {\n return elementToFocus\n } else {\n return findHorizontalElementToFocus(rowIndex, adjustedIndex, indexDiff)\n }\n } else {\n return elementToFocus\n }\n}\n\nconst focusElement = elementToFocus => {\n if (elementToFocus) {\n // Reacts NumberFormat is clingy and steals focus when using left and right arrow keys, so we steal it back\n setTimeout(() => {\n elementToFocus.focus()\n }, 0)\n }\n}\n","import _get from 'lodash/get'\nimport {lighten} from 'polished'\nimport styled from 'styled-components'\nimport {scale, shadeColor, theme, declareFont, declareFocus} from 'tocco-ui'\n\nconst borderColor = ({theme}) => shadeColor(_get(theme, 'colors.paper'), 3)\nconst baseSpace = scale.space(-1)\n\nexport const StyledTable = styled.table`\n background-color: ${theme.color('paper')};\n border-collapse: collapse;\n border-spacing: 0;\n width: 100%;\n margin-top: ${baseSpace};\n margin-bottom: ${baseSpace};\n table-layout: fixed;\n min-width: 900px;\n`\n\nexport const StyledTableWrapper = styled.div`\n width: 100%;\n height: 100%;\n overflow: auto;\n`\n\nexport const StyledCell = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n\n && {\n input,\n textarea,\n &.single-select > span > div {\n border: 1px solid ${borderColor};\n padding-left: ${baseSpace};\n\n &:not([disabled]):hover {\n cursor: pointer;\n }\n ${declareFocus}\n }\n\n &.single-select > span {\n display: inline-block;\n width: 100%;\n margin-left: 5px;\n margin-bottom: 5px;\n background-color: ${theme.color('paper')};\n }\n\n &.single-select button {\n margin-bottom: 2px;\n margin-right: 2px;\n }\n }\n`\n\nexport const StyledTableRow = styled.tr`\n &:hover {\n ${StyledCell} {\n background-color: ${({theme}) => lighten(0.25, theme.colors.secondaryLight)};\n }\n }\n`\n\nexport const StyledHeader = styled.th`\n padding: ${baseSpace};\n background-color: ${theme.color('paper')};\n text-align: left;\n border-bottom: 2px solid ${borderColor};\n ${declareFont({fontWeight: theme.fontWeight('bold')})};\n user-select: none;\n text-overflow: ellipsis;\n\n &:hover {\n background-color: ${({theme}) => lighten(0.25, theme.colors.secondaryLight)};\n }\n`\n","import PropTypes from 'prop-types'\nimport React, {useEffect, useState} from 'react'\nimport {field} from 'tocco-app-extensions'\nimport {Table, EditableValue, FormattedValue} from 'tocco-ui'\nimport {api} from 'tocco-util'\n\nimport {arrowKeyHandler} from './keyHandler'\nimport {StyledCell, StyledTableWrapper} from './StyledComponents'\n\nconst dataCellRenderer = (fieldDefinition, data) => {\n const {path, dataType} = fieldDefinition\n const Field = field.factory('list', dataType)\n const value = data[path]\n\n return (\n <StyledCell key={path}>\n <Field type={dataType} formField={fieldDefinition} value={value} breakWords={false} />\n </StyledCell>\n )\n}\n\nconst keyBuilder = (row, column) => `${row}:${column}`\n\nconst inputCellRenderer = (fieldDefinition, data, updateValue, rowIdx) => {\n const {readonly, id, dataType, options} = fieldDefinition.definition\n\n const pk = data.pk\n const value = data[id]\n\n if (readonly) {\n return (\n <StyledCell key={id}>\n <FormattedValue id={id} type={dataType} value={value} options={options} />\n </StyledCell>\n )\n } else {\n return (\n <StyledCell key={id}>\n <EditableValue\n id={keyBuilder(rowIdx, fieldDefinition.idx)}\n type={dataType}\n value={value}\n options={options}\n events={{\n onChange: changedValue => {\n updateValue(pk, id, changedValue)\n },\n onFocus: ({target}) => target.select()\n }}\n />\n </StyledCell>\n )\n }\n}\n\nconst InputEditTable = ({\n data,\n dataFormColumns,\n inputEditForm,\n updateValue,\n sorting,\n setSorting,\n dataLoadingInProgress,\n totalCount,\n currentPage,\n recordsPerPage,\n setCurrentPage\n}) => {\n const [columns, setColumns] = useState([])\n const [columnPosition, setColumnPosition] = useState([])\n\n useEffect(() => {\n const dataColumns = api.getColumnDefinition(dataFormColumns, sorting, dataCellRenderer)\n\n const inputColumns = inputEditForm.map((c, idx) => ({\n idx: idx,\n id: c.id,\n label: c.label,\n sorting: {\n sortable: false\n },\n definition: c,\n resizable: true,\n dynamic: true,\n CellRenderer: ({rowData, column, rowIdx}) => inputCellRenderer(column, rowData, updateValue, rowIdx)\n }))\n\n const cc = [...dataColumns, ...inputColumns].sort(\n (a, b) => columnPosition.findIndex(e => e === a.id) - columnPosition.findIndex(e => e === b.id)\n )\n setColumns(cc)\n }, [columnPosition, dataFormColumns, inputEditForm, sorting])\n\n const onColumnPositionChange = (dragColumn, dropColumn) => {\n setColumnPosition(\n columns.reduce((acc, c) => {\n return [...acc, ...(c.id === dropColumn ? [c.id, dragColumn] : []), ...(c.id === dragColumn ? [] : [c.id])]\n }, [])\n )\n }\n\n if (columns.length === 0) {\n return null\n }\n\n return (\n <StyledTableWrapper onKeyDown={arrowKeyHandler}>\n <Table\n dataLoadingInProgress={dataLoadingInProgress}\n columns={columns}\n data={data}\n onSortingChange={setSorting}\n onColumnPositionChange={onColumnPositionChange}\n paginationInfo={{\n currentPage,\n recordsPerPage,\n totalCount\n }}\n onPageChange={setCurrentPage}\n />\n </StyledTableWrapper>\n )\n}\n\nInputEditTable.propTypes = {\n data: PropTypes.array.isRequired,\n dataFormColumns: PropTypes.arrayOf(PropTypes.shape({id: PropTypes.string})),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n field: PropTypes.string,\n order: PropTypes.string\n })\n ),\n inputEditForm: PropTypes.array.isRequired,\n updateValue: PropTypes.func.isRequired,\n setSorting: PropTypes.func.isRequired,\n dataLoadingInProgress: PropTypes.bool,\n totalCount: PropTypes.number,\n currentPage: PropTypes.number.isRequired,\n recordsPerPage: PropTypes.number.isRequired,\n setCurrentPage: PropTypes.func.isRequired\n}\n\nexport default InputEditTable\n","import {connect} from 'react-redux'\n\nimport {setCurrentPage} from '../../modules/inputEditPagination/actions'\nimport {updateValue, setSorting} from '../../modules/inputEditTable/actions'\nimport InputEditTable from './InputEditTable'\n\nconst mapActionCreators = {\n updateValue,\n setSorting,\n setCurrentPage\n}\n\nconst mapStateToProps = state => {\n return {\n data: state.inputEditTable.data,\n dataFormColumns: state.inputEditTable.dataFormColumns,\n inputEditForm: state.inputEditTable.inputEditForm,\n sorting: state.inputEditTable.sorting,\n dataLoadingInProgress: state.inputEditTable.dataLoadingInProgress,\n totalCount: state.inputEditPagination.totalCount,\n currentPage: state.inputEditPagination.currentPage,\n recordsPerPage: state.inputEditPagination.recordsPerPage\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEditTable)\n","import styled, {css} from 'styled-components'\nimport {Button, scale, StyledScrollbar, theme} from 'tocco-ui'\n\nexport const StyledPaneWrapper = styled.div`\n display: flex;\n height: 100%;\n`\n\nconst sharedSplitPaneStyles = css`\n background-color: ${theme.color('paper')};\n padding-top: ${scale.space(-0.53)};\n ${StyledScrollbar}\n`\n\nexport const StyledPanelWrapperLeft = styled.div`\n && {\n display: ${({isCollapsed}) => (isCollapsed ? 'none' : 'block')};\n min-width: 265px;\n width: 16%;\n margin-right: 1rem;\n ${sharedSplitPaneStyles}\n }\n`\n\nexport const StyledPanelWrapperRight = styled.div`\n && {\n width: 100%;\n display: flex;\n flex-direction: column;\n ${sharedSplitPaneStyles}\n }\n`\n\nexport const StyledInputEditSearchWrapper = styled.div`\n margin-bottom: ${scale.space(0)};\n`\n\nexport const StyledLeftPane = styled.div`\n padding: 0 ${scale.space(-1)};\n`\n\nexport const StyledActionsWrapper = styled.div`\n border-bottom: 3px solid ${theme.color('backgroundBody')};\n padding: 0 8px 8px;\n`\n\nexport const StyledToggleCollapse = styled.div`\n display: flex;\n background-color: ${theme.color('paper')};\n padding: 0 ${scale.space(-0.53)} ${scale.space(-0.53)} ${scale.space(-1.7)};\n`\n\nexport const StyledPlaceHolder = styled.div`\n display: ${({isCollapsed}) => (isCollapsed ? 'flex' : 'none')};\n flex: 1;\n height: 100%;\n width: 25px;\n margin-right: ${scale.space(-0.375)};\n background: ${theme.color('paper')};\n padding-top: ${scale.space(-0.53)};\n align-items: flex-start;\n\n &:hover {\n cursor: pointer;\n }\n\n ${StyledToggleCollapse} {\n padding: 0 0 ${scale.space(-0.53)} ${scale.space(-1.7)};\n }\n`\n\nexport const StyledToggleCollapseButton = styled(Button)`\n font-size: ${scale.font(0)};\n padding: 0;\n\n &:hover,\n &:focus,\n ${/* sc-selector */ StyledPlaceHolder}:hover & {\n background-color: transparent;\n color: ${theme.color('secondaryLight')};\n }\n`\n","import PropTypes from 'prop-types'\nimport React, {useEffect, useState} from 'react'\nimport {actions, notification, selection as selectionPropType} from 'tocco-app-extensions'\nimport {GlobalStyles} from 'tocco-ui'\n\nimport InputEditInformation from '../InputEditInformation'\nimport InputEditSearch from '../InputEditSearch'\nimport InputEditTable from '../InputEditTable/InputEditTableContainer'\nimport {\n StyledPanelWrapperLeft,\n StyledPanelWrapperRight,\n StyledLeftPane,\n StyledActionsWrapper,\n StyledInputEditSearchWrapper,\n StyledPaneWrapper,\n StyledToggleCollapse,\n StyledToggleCollapseButton,\n StyledPlaceHolder\n} from './StyledInputEdit'\n\nconst InputEdit = ({\n selection,\n handleNotifications,\n updateSelection,\n initializeTable,\n initializeSearch,\n initializeInformation,\n actionDefinitions\n}) => {\n useEffect(() => {\n updateSelection()\n }, [selection])\n useEffect(() => {\n initializeTable()\n initializeSearch()\n initializeInformation()\n }, [selection])\n\n const [isCollapsed, setIsCollapsed] = useState(false)\n const toggleCollapse = () => {\n setIsCollapsed(!isCollapsed)\n }\n\n const Actions = actionDefinitions.map(definition => (\n <actions.Action key={definition.id} definition={definition} selection={selection} />\n ))\n\n return (\n <>\n <GlobalStyles />\n {handleNotifications && <notification.Notifications />}\n <StyledPaneWrapper>\n <StyledPlaceHolder onClick={toggleCollapse} isCollapsed={isCollapsed}>\n <StyledToggleCollapse isCollapsed={isCollapsed}>\n <StyledToggleCollapseButton icon=\"chevron-right\" isCollapsed={isCollapsed} />\n </StyledToggleCollapse>\n </StyledPlaceHolder>\n <StyledPanelWrapperLeft isCollapsed={isCollapsed}>\n <StyledToggleCollapse>\n <StyledToggleCollapseButton icon=\"chevron-left\" onClick={toggleCollapse} />\n </StyledToggleCollapse>\n <StyledLeftPane>\n <StyledInputEditSearchWrapper>\n <InputEditSearch />\n </StyledInputEditSearchWrapper>\n <InputEditInformation />\n </StyledLeftPane>\n </StyledPanelWrapperLeft>\n <StyledPanelWrapperRight>\n <StyledActionsWrapper>{Actions}</StyledActionsWrapper>\n <InputEditTable />\n </StyledPanelWrapperRight>\n </StyledPaneWrapper>\n </>\n )\n}\n\nInputEdit.propTypes = {\n selection: selectionPropType.propType.isRequired,\n handleNotifications: PropTypes.bool,\n updateSelection: PropTypes.func.isRequired,\n initializeTable: PropTypes.func.isRequired,\n initializeSearch: PropTypes.func.isRequired,\n initializeInformation: PropTypes.func.isRequired,\n actionDefinitions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired\n })\n ),\n notify: PropTypes.func.isRequired\n}\n\nexport default InputEdit\n","import {connect} from 'react-redux'\nimport {notification} from 'tocco-app-extensions'\n\nimport {updateSelection} from '../../modules/inputEdit/actions'\nimport {initializeInformation} from '../../modules/inputEditInformation/actions'\nimport {initializeSearch} from '../../modules/inputEditSearch/actions'\nimport {initializeTable} from '../../modules/inputEditTable/actions'\nimport InputEdit from './InputEdit'\n\nconst mapActionCreators = {\n updateSelection,\n initializeTable,\n initializeSearch,\n initializeInformation,\n notify: notification.toaster\n}\n\nconst mapStateToProps = state => ({\n selection: state.inputEdit.selection,\n actionDefinitions: state.inputEditTable.actionDefinitions,\n handleNotifications: state.inputEdit.handleNotifications\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEdit)\n","export const INITIALIZE_INFORMATION = 'inputEditInformation/INITIALIZE_INFORMATION'\nexport const SET_INFORMATION = 'inputEditInformation/SET_INFORMATION'\n\nexport const initializeInformation = () => ({\n type: INITIALIZE_INFORMATION\n})\n\nexport const setInformation = information => ({\n type: SET_INFORMATION,\n payload: {information}\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport {SET_SELECTION, SET_HANDLE_NOTIFICATIONS, SET_UPDATE_IN_PROGRESS} from './actions'\n\nconst initialState = {\n selection: null,\n handleNotifications: false,\n updateInProgress: false\n}\n\nconst ACTION_HANDLERS = {\n [SET_SELECTION]: reducerUtil.singleTransferReducer('selection'),\n [SET_HANDLE_NOTIFICATIONS]: reducerUtil.singleTransferReducer('handleNotifications'),\n [SET_UPDATE_IN_PROGRESS]: reducerUtil.singleTransferReducer('updateInProgress')\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, call, put, select, takeEvery, takeLatest} from 'redux-saga/effects'\nimport {actionEmitter, actions, rest} from 'tocco-app-extensions'\n\nimport * as inputEditTableActions from '../inputEditTable/actions'\nimport * as inputEditAction from './actions'\nimport {UPDATE_SELECTION} from './actions'\n\nconst inputEditSelector = state => state.inputEdit\n\nexport default function* sagas() {\n yield all([\n takeEvery(actions.actions.ACTION_INVOKE, emit),\n takeLatest(UPDATE_SELECTION, updateInputDatas),\n takeLatest(actions.actions.ACTION_INVOKED, reload)\n ])\n}\n\nexport function* emit(action) {\n yield put(actionEmitter.emitAction(action))\n}\n\nexport function* reload() {\n yield put(inputEditTableActions.initializeTable())\n}\n\nexport function* updateInputDatas() {\n yield put(inputEditAction.setSelectionUpdateInProgress(true))\n const {selection} = yield select(inputEditSelector)\n yield call(rest.requestSaga, 'inputEdit/update-input-datas', {method: 'POST', body: selection})\n yield put(inputEditAction.setSelectionUpdateInProgress(false))\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n information: []\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_INFORMATION]: reducerUtil.singleTransferReducer('information')\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, takeLatest, call, put, select} from 'redux-saga/effects'\nimport {rest} from 'tocco-app-extensions'\n\nimport * as actions from '../inputEditInformation/actions'\n\nconst inputEditSelector = state => state.inputEdit\n\nexport default function* sagas() {\n yield all([takeLatest(actions.INITIALIZE_INFORMATION, initialize)])\n}\n\nexport function* initialize() {\n const {selection} = yield select(inputEditSelector)\n const {body} = yield call(rest.requestSaga, 'inputEdit/information', {method: 'POST', body: selection})\n yield put(actions.setInformation(body))\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport {SET_CURRENT_PAGE, SET_TOTAL_COUNT} from './actions'\n\nconst initialState = {\n totalCount: 0,\n currentPage: 1,\n recordsPerPage: 25\n}\n\nconst ACTION_HANDLERS = {\n [SET_TOTAL_COUNT]: reducerUtil.singleTransferReducer('totalCount'),\n [SET_CURRENT_PAGE]: reducerUtil.singleTransferReducer('currentPage')\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {api} from 'tocco-util'\n\nexport const transformResponseData = response =>\n response.body.data\n .map(dataRecord => {\n const splitObj = Object.keys(dataRecord).reduce(\n (acc, key) => {\n const isInputField = !isNaN(parseInt(key)) || key === 'rating' // textchoice has no exams but is an input\n return {\n ...acc,\n ...(isInputField\n ? {\n inputFields: {\n ...acc.inputFields,\n [key]: dataRecord[key]\n }\n }\n : {\n entityFields: {\n ...acc.entityFields,\n [key]: dataRecord[key]\n }\n })\n }\n },\n {\n inputFields: {},\n entityFields: {}\n }\n )\n\n return {...splitObj.inputFields, ...api.flattenPaths(splitObj.entityFields)}\n })\n .map(dataRecord => ({...dataRecord, __key: dataRecord.pk}))\n","import {all, call, put, select, take, takeEvery, takeLatest} from 'redux-saga/effects'\nimport {notification, rest} from 'tocco-app-extensions'\n\nimport * as inputEditActions from '../inputEdit/actions'\nimport {setTotalCount} from '../inputEditPagination/actions'\nimport * as searchFormActions from '../inputEditSearch/actions'\nimport * as actions from './actions'\nimport {transformResponseData} from './utils'\n\nexport const inputSelector = state => state.input\nexport const inputEditSelector = state => state.inputEdit\nexport const inputEditTableSelector = state => state.inputEditTable\nexport const inputEditSearchSelector = state => state.inputEditSearch\nexport const searchQueriesSelector = state => state.inputEditSearch.searchQueries\nexport const inputEditPaginationSelector = state => state.inputEditPagination\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZE_TABLE, initialize),\n takeLatest(actions.LOAD_DATA, loadData),\n takeEvery(actions.UPDATE_VALUE, updateValue),\n takeLatest(actions.SET_SORTING, loadData)\n ])\n}\n\nexport function* processDataForm(dataForm, readonly, readonlyActions = []) {\n const actionDefinitions = dataForm.children\n .find(child => child.id === 'main-action-bar')\n .children.filter(child => child.componentType === 'action')\n .filter(child => !readonly || readonlyActions.includes(child.id))\n .map(child => ({\n ...child,\n scope: 'detail'\n }))\n\n yield put(actions.setActionDefinitions(actionDefinitions))\n\n const dataFormColumns = dataForm.children.find(child => child.componentType === 'table').children\n\n yield put(actions.setDataFormColumns(dataFormColumns))\n}\n\nexport function* initialize() {\n yield put(actions.setDataLoadingInProgress(true))\n const {selection} = yield select(inputEditSelector)\n const {actionProperties} = yield select(inputSelector)\n const inputEditDataForm =\n actionProperties && actionProperties.inputEditDataForm ? actionProperties.inputEditDataForm : 'Input_edit_data'\n const [editFormDefinition, dataForm] = yield all([\n call(rest.requestSaga, 'inputEdit/form', {method: 'POST', body: selection}),\n call(rest.fetchForm, inputEditDataForm, 'list')\n ])\n const {editColumns, readonly, readonlyActions} = editFormDefinition.body\n if (readonly) {\n editColumns.forEach(c => (c.readonly = true))\n yield put(\n notification.toaster({\n type: 'info',\n title: 'client.actions.InputEdit.input_closed'\n })\n )\n }\n yield put(actions.setEditForm({inputEditForm: editColumns}))\n yield call(processDataForm, dataForm, readonly, readonlyActions)\n\n const {initialized: searchFormInitialized} = yield select(inputEditSearchSelector)\n if (!searchFormInitialized) {\n yield take(searchFormActions.SET_INITIALIZED)\n }\n const {updateInProgress} = yield select(inputEditSelector)\n if (updateInProgress) {\n yield take(({payload, type}) => type === inputEditActions.SET_UPDATE_IN_PROGRESS && !payload.updateInProgress)\n }\n yield call(loadData, {})\n}\n\nexport function* loadData({newSorting, newSearchQueries, newPage}) {\n yield put(actions.setDataLoadingInProgress(true))\n const {selection} = yield select(inputEditSelector)\n const sorting = newSorting || (yield select(inputEditTableSelector)).sorting\n const searchQueries = newSearchQueries || (yield select(searchQueriesSelector))\n const currentPage = newPage || (yield select(inputEditPaginationSelector)).currentPage\n const {recordsPerPage} = yield select(inputEditPaginationSelector)\n const dataFormColumns = (yield select(inputEditTableSelector)).dataFormColumns\n const paths = getPathsFromTable(dataFormColumns)\n const searchBean = rest.buildRequestQuery({\n limit: recordsPerPage,\n sorting,\n page: currentPage,\n where: searchQueries.join(' and '),\n paths: paths\n })\n const response = yield call(rest.requestSaga, 'inputEdit/data/search', {\n method: 'POST',\n body: {\n selection,\n searchBean\n }\n })\n\n const transformedData = yield call(transformResponseData, response)\n yield put(actions.setData(transformedData))\n yield put(setTotalCount(response.body.count))\n yield put(actions.setDataLoadingInProgress(false))\n}\n\nconst getPathsFromTable = dataFormColumns => [\n 'pk',\n ...dataFormColumns.flatMap(column => column.children.map(field => field.path))\n]\n\nexport function* updateValue({payload: {inputDataKey, node, value}}) {\n yield put(actions.setValue(inputDataKey, node, value))\n\n const response = yield call(rest.requestSaga, 'inputEdit/data', {\n method: 'POST',\n body: {\n inputDataKey,\n node,\n value\n }\n })\n yield handleResponse(response)\n}\n\nfunction* handleResponse(response) {\n const values = response.body.calculatedValues\n if (values) {\n const actionsToPut = values.map(value => actions.setValue(value.inputDataKey, value.node, value.value))\n yield all(actionsToPut.map(action => put(action)))\n }\n}\n","import {all, takeLatest, call} from 'redux-saga/effects'\n\nimport * as actions from '../inputEditPagination/actions'\nimport {loadData} from '../inputEditTable/sagas'\n\nexport default function* sagas() {\n yield all([takeLatest(actions.SET_CURRENT_PAGE, setCurrentPage)])\n}\n\nexport function* setCurrentPage({payload: {currentPage}}) {\n yield call(loadData, {newPage: currentPage})\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n form: {},\n initialized: false,\n searchQueries: []\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_FORM]: reducerUtil.singleTransferReducer('form'),\n [actions.SET_SEARCH_QUERIES]: reducerUtil.singleTransferReducer('searchQueries'),\n [actions.SET_INITIALIZED]: reducerUtil.singleTransferReducer('initialized')\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, takeLatest, call, put, select} from 'redux-saga/effects'\nimport {rest} from 'tocco-app-extensions'\n\nimport * as actions from '../inputEditSearch/actions'\nimport {loadData} from '../inputEditTable/sagas'\n\nexport const inputEditSelector = state => state.inputEdit\nexport const inputEditSearchSelector = state => state.inputEditSearch\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZE_SEARCH, initialize),\n takeLatest(actions.SET_SEARCH_QUERIES, setSearchQueries)\n ])\n}\n\nexport function* initialize() {\n const form = yield call(rest.fetchForm, 'Input_edit_data', 'search')\n yield put(actions.setForm(form))\n}\n\nexport function* setSearchQueries({payload}) {\n const {initialized} = yield select(inputEditSearchSelector)\n if (initialized) {\n yield call(loadData, {newSearchQueries: payload.searchQueries})\n } else {\n yield put(actions.setInitialized(true))\n }\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n actionDefinitions: [],\n dataFormColumns: [],\n data: [],\n inputEditForm: [],\n sorting: [],\n dataLoadingInProgress: false\n}\n\nconst setValue = (state, action) => {\n const {inputDataKey, node, value} = action.payload\n return {\n ...state,\n data: state.data.reduce((acc, val) => {\n if (val.pk === inputDataKey) {\n return [\n ...acc,\n {\n ...val,\n [node]: value\n }\n ]\n }\n return [...acc, val]\n }, [])\n }\n}\n\nconst defaultOrder = 'asc'\nconst getOpposite = order => (order === 'asc' ? 'desc' : 'asc')\nconst setSorting = (state, {payload: {field, add}}) => {\n if (!add) {\n const currentSorting = state.sorting\n const order =\n currentSorting.length > 0 && currentSorting[0].field === field\n ? getOpposite(currentSorting[0].order)\n : defaultOrder\n return {\n ...state,\n sorting: [{field, order}]\n }\n } else {\n const contains = state.sorting.filter(s => s.field === field)\n const order = contains.length > 0 ? getOpposite(contains[0].order) : defaultOrder\n\n return {\n ...state,\n sorting: [...state.sorting.filter(s => s.field !== field), {field, order}]\n }\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_DATA_FORM_COLUMNS]: reducerUtil.singleTransferReducer('dataFormColumns'),\n [actions.SET_ACTION_DEFINITIONS]: reducerUtil.singleTransferReducer('actionDefinitions'),\n [actions.SET_EDIT_FORM]: reducerUtil.singleTransferReducer('inputEditForm'),\n [actions.SET_DATA]: reducerUtil.singleTransferReducer('data'),\n [actions.SET_DATA_LOADING_IN_PROGRESS]: reducerUtil.singleTransferReducer('dataLoadingInProgress'),\n [actions.SET_VALUE]: setValue,\n [actions.SET_SORTING]: setSorting\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import inputEditReducer, {sagas as inputEditSagas} from './inputEdit'\nimport inputEditInformationReducer, {sagas as inputEditInformationSagas} from './inputEditInformation'\nimport inputEditPaginationReducer, {sagas as inputEditPaginationSagas} from './inputEditPagination'\nimport inputEditSearchReducer, {sagas as inputEditSearchSagas} from './inputEditSearch'\nimport inputEditTableReducer, {sagas as inputEditTableSagas} from './inputEditTable'\n\nexport default {\n inputEdit: inputEditReducer,\n inputEditTable: inputEditTableReducer,\n inputEditSearch: inputEditSearchReducer,\n inputEditPagination: inputEditPaginationReducer,\n inputEditInformation: inputEditInformationReducer\n}\n\nexport const sagas = [\n inputEditSagas,\n inputEditTableSagas,\n inputEditSearchSagas,\n inputEditPaginationSagas,\n inputEditInformationSagas\n]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {actionEmitter, actions, appFactory, cache, errorLogging, notification} from 'tocco-app-extensions'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport InputEdit from './components/InputEdit/InputEditContainer'\nimport {setHandleNotifications, setSelection} from './modules/inputEdit/actions'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'input-edit'\n\nconst EXTERNAL_EVENTS = ['emitAction']\n\nconst initApp = (id, input, events = {}, publicPath) => {\n const content = <InputEdit />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n actions.addToStore(store)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n errorLogging.addToStore(store, handleNotifications)\n cache.addToStore(store)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [setHandleNotifications(handleNotifications), setSelection(input.selection)],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\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 InputEditApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nInputEditApp.propTypes = {\n selection: PropTypes.object,\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default InputEditApp\n","export const INITIALIZE = 'merge/INITIALIZE'\nexport const SET_SELECTION = 'merge/SET_SELECTION'\nexport const SET_SOURCE_DATA = 'merge/SET_SOURCE_DATA'\nexport const SET_SELECTED_SINGLE = 'merge/SET_SELECTED_SINGLE'\nexport const SET_SELECTED_MULTIPLE = 'merge/SET_SELECTED_MULTIPLE'\nexport const SET_SELECTED_MULTIPLE_ALL = 'merge/SET_SELECTED_MULTIPLE_ALL'\nexport const SET_TARGET_ENTITY = 'merge/SET_TARGET_ENTITY'\nexport const EXECUTE_MERGE = 'merge/EXECUTE_MERGE'\nexport const SET_MERGE_RESPONSE = 'merge/SET_MERGE_RESPONSE'\nexport const SET_MERGE_ERROR = 'merge/SET_MERGE_ERROR'\nexport const CLOSE = 'merge/CLOSE'\n\nexport const initialize = () => ({\n type: INITIALIZE\n})\n\nexport const setSelection = selection => ({\n type: SET_SELECTION,\n payload: {\n selection\n }\n})\n\nexport const setSourceData = sourceData => ({\n type: SET_SOURCE_DATA,\n payload: {\n sourceData\n }\n})\n\nexport const setSelectedSingle = (name, entityKey) => ({\n type: SET_SELECTED_SINGLE,\n payload: {\n name,\n entityKey\n }\n})\n\nexport const setSelectedMultiple = (name, entityKey, relatedEntityKey, isSelected) => ({\n type: SET_SELECTED_MULTIPLE,\n payload: {\n name,\n entityKey,\n relatedEntityKey,\n isSelected\n }\n})\n\nexport const setSelectedMultipleAll = (name, entityKey, isSelected) => ({\n type: SET_SELECTED_MULTIPLE_ALL,\n payload: {\n name,\n entityKey,\n isSelected\n }\n})\n\nexport const setTargetEntity = entityKey => ({\n type: SET_TARGET_ENTITY,\n payload: {\n entityKey\n }\n})\n\nexport const executeMerge = () => ({\n type: EXECUTE_MERGE\n})\n\nexport const setMergeResponse = mergeResponse => ({\n type: SET_MERGE_RESPONSE,\n payload: {\n mergeResponse\n }\n})\n\nexport const setMergeError = (errorMsg, validationErrors) => ({\n type: SET_MERGE_ERROR,\n payload: {\n errorMsg,\n validationErrors\n }\n})\n\nexport const close = () => ({\n type: CLOSE\n})\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nconst maxCountLink = 100\n\nexport const ManyRelationEntityCount = ({model, keys, totalKeys, navigationStrategy}) => {\n if (totalKeys === 0) {\n return <Typography.Span>{totalKeys}</Typography.Span>\n } else {\n return (\n <navigationStrategy.ListLink entityName={model} entityKeys={keys.slice(0, maxCountLink)}>\n ({totalKeys})\n </navigationStrategy.ListLink>\n )\n }\n}\n\nManyRelationEntityCount.propTypes = {\n model: PropTypes.string.isRequired,\n keys: PropTypes.arrayOf(PropTypes.string),\n totalKeys: PropTypes.number.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n","import styled from 'styled-components'\nimport {Button, scale, theme} from 'tocco-ui'\n\nexport const StyledButtonWrapper = styled.div`\n border-bottom: 3px solid ${theme.color('backgroundBody')};\n`\n\nexport const StyledButton = styled(Button)`\n align-self: flex-start;\n margin-top: ${scale.space(-0.7)};\n margin-bottom: ${scale.space(-0.7)};\n margin-left: ${scale.space(0)};\n`\n","import styled from 'styled-components'\nimport {scale, theme} from 'tocco-ui'\n\nexport const StyledSummarySuccessWrapper = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: ${scale.font(10)} 1fr;\n grid-column-gap: ${scale.space(-0.5)};\n margin-bottom: ${scale.space(-0.7)};\n`\n\nexport const StyledMessageWrapper = styled.div`\n margin-bottom: ${scale.space(-0.7)};\n\n && {\n p {\n margin-bottom: 0;\n }\n }\n`\n\nexport const StyledResultsWrapper = styled.div`\n padding: ${scale.space(-1)} 0 0 ${scale.space(0)};\n`\n\nexport const StyledIconWrapper = styled.span`\n display: flex;\n align-items: center;\n color: ${theme.color('signal.success.text')};\n font-size: ${scale.font(10)};\n`\n","import _groupBy from 'lodash/groupBy'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {Icon, Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {ManyRelationEntityCount} from '../../util/manyRelationEntityCount'\nimport {StyledButtonWrapper, StyledButton} from '../GlobalStyledComponents'\nimport {\n StyledSummarySuccessWrapper,\n StyledResultsWrapper,\n StyledIconWrapper,\n StyledMessageWrapper\n} from './StyledComponents'\n\nconst MergeSummary = ({mergeResponse, navigationStrategy, close}) => {\n const mapToEntityList = entities =>\n Object.entries(_groupBy(entities, e => e.entityLabel))\n .map(([entityLabel, list]) => {\n const model = entities.find(e => e.entityLabel === entityLabel).entity\n const keys = list.map(e => e.pk)\n return (\n <span key={model}>\n {entityLabel}{' '}\n <ManyRelationEntityCount\n model={model}\n keys={keys}\n totalKeys={keys.length}\n navigationStrategy={navigationStrategy}\n />\n </span>\n )\n })\n .reduce((prev, curr) => (prev === null ? [curr] : [...prev, ', ', curr]), null)\n\n const notCopiedRelations = mapToEntityList(mergeResponse.notCopiedRelations)\n const notDeletedEntities = mapToEntityList(mergeResponse.notDeletedEntities)\n\n return (\n <>\n <StyledButtonWrapper>\n <StyledButton onClick={close} look=\"raised\" ink=\"primary\">\n <FormattedMessage id=\"client.merge.close\" />\n </StyledButton>\n </StyledButtonWrapper>\n <StyledResultsWrapper>\n <StyledSummarySuccessWrapper>\n <StyledIconWrapper>\n <Icon icon={'check'} />\n </StyledIconWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.success\" />\n </Typography.P>\n </StyledSummarySuccessWrapper>\n {(mergeResponse.notCopiedRelations.length > 0 || mergeResponse.notDeletedEntities.length > 0) && (\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.successHint\" />\n </Typography.P>\n )}\n {mergeResponse.notCopiedRelations.length > 0 && (\n <StyledMessageWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.notCopiedRelations\" />:\n </Typography.P>\n <Typography.B>{notCopiedRelations}</Typography.B>\n </StyledMessageWrapper>\n )}\n {mergeResponse.notDeletedEntities.length > 0 && (\n <StyledMessageWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.notDeletedEntities\" />:\n </Typography.P>\n <Typography.B>{notDeletedEntities}</Typography.B>\n </StyledMessageWrapper>\n )}\n {mergeResponse.showPermissionMessage && (\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.permission\" />\n </Typography.P>\n )}\n </StyledResultsWrapper>\n </>\n )\n}\n\nconst entityWarningPropType = PropTypes.shape({\n pk: PropTypes.string.isRequired,\n entity: PropTypes.string.isRequired,\n entityLabel: PropTypes.string.isRequired\n})\n\nMergeSummary.propTypes = {\n mergeResponse: PropTypes.shape({\n notCopiedRelations: PropTypes.arrayOf(entityWarningPropType),\n notDeletedEntities: PropTypes.arrayOf(entityWarningPropType),\n showPermissionMessage: PropTypes.bool.isRequired\n }),\n navigationStrategy: navigationStrategy.propTypes,\n close: PropTypes.func.isRequired\n}\n\nexport default MergeSummary\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {close} from '../../modules/merge/actions'\nimport MergeSummary from './MergeSummary'\n\nconst mapActionCreators = {\n close\n}\n\nconst mapStateToProps = state => ({\n mergeResponse: state.merge.mergeResponse,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(MergeSummary))\n","import MergeSummaryContainer from './MergeSummaryContainer'\n\nexport default MergeSummaryContainer\n","import React from 'react'\n\nconst getAllPaths = sourceData => Object.keys(sourceData.entities[0].paths)\nconst getAllRelations = sourceData => [...new Set(sourceData.relations.map(r => r.relationName))]\n\nconst getAllPathsAndRelations = sourceData => [...getAllPaths(sourceData), ...getAllRelations(sourceData)]\n\nconst getSortedPathsAndRelations = sourceData => {\n const counters = Object.entries(sourceData.entities[0].paths)\n .filter(([_, value]) => value.type === 'counter')\n .map(([name, _]) => name)\n\n const other = getAllPathsAndRelations(sourceData).filter(name => !counters.includes(name))\n\n const sortByLabel = list =>\n list\n .map(name => ({\n name: name,\n label: sourceData.labels[name]\n }))\n .sort((a, b) => (a.label < b.label ? -1 : 1))\n .map(o => o.name)\n\n return [...sortByLabel(counters), ...sortByLabel(other)]\n}\n\nexport const getDataRows = sourceData => {\n const pathRows = getAllPaths(sourceData).map((path, idx) => {\n return sourceData.entities.reduce(\n (acc, e) => {\n const value = e.paths[path]\n\n if (value && value.value) {\n if (value.type === 'entity') {\n value.value.display = getDisplay(sourceData, value.value.model, value.value.key)\n }\n\n if (value.type === 'entity-list') {\n value.value = value.value.map(f => {\n f.display = getDisplay(sourceData, f.model, f.key)\n return f\n })\n }\n }\n return {\n ...acc,\n [e.key]: value\n }\n },\n {__key: path}\n )\n })\n\n const relationRows = getAllRelations(sourceData).map((relation, idx) => {\n return sourceData.relations\n .filter(r => r.relationName === relation)\n .reduce(\n (acc, val) => {\n return {\n ...acc,\n [val.entityKey]: {\n type: 'relations',\n value: {\n keys: val.keys,\n totalKeys: val.totalKeys,\n relationEntity: val.relationEntity\n }\n }\n }\n },\n {__key: relation}\n )\n })\n\n const sorting = getSortedPathsAndRelations(sourceData)\n return [...pathRows, ...relationRows].sort(\n (a, b) => sorting.findIndex(e => e === a.__key) - sorting.findIndex(e => e === b.__key)\n )\n}\n\nexport const getColumnDefinition = (sourceData, ColumnHeaderRenderer, PathCellRenderer, LabelCellRenderer) => {\n const pathColumns = sourceData.entities.map(entity => ({\n id: entity.key,\n entityKey: entity.key,\n resizable: true,\n sorting: {\n sortable: false\n },\n CellRenderer: PathCellRenderer,\n HeaderRenderer: props => (\n <ColumnHeaderRenderer\n {...props}\n entityKey={entity.key}\n label={getDisplay(sourceData, entity.model, entity.key)}\n />\n )\n }))\n\n const labelColumn = {\n id: 'column-label',\n label: '',\n resizable: true,\n sorting: {\n sortable: false\n },\n CellRenderer: props => (\n <LabelCellRenderer {...props} sourceData={sourceData} allPaths={getSortedPathsAndRelations(sourceData)} />\n )\n }\n\n return [labelColumn, ...pathColumns]\n}\n\nexport const getDisplay = (sourceData, model, key) => {\n const fallbackDisplay = `PK: ${key}`\n const displaysPerModel = sourceData.displays.find(d => d.model === model)\n if (displaysPerModel === undefined) {\n return fallbackDisplay\n }\n\n const display = displaysPerModel.values.find(v => v.key === key)\n return display ? display.display : fallbackDisplay\n}\n","import styled from 'styled-components'\nimport {scale, theme, declareFont} from 'tocco-ui'\n\nexport const StyledMergeErrorWrapper = styled.div`\n ${declareFont()}\n padding: ${scale.space(-1)} 0 0 ${scale.space(0)};\n`\n\nexport const StyledSummaryErrorWrapper = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: ${scale.font(10)} 1fr;\n grid-column-gap: ${scale.space(-0.5)};\n margin-bottom: ${scale.space(-0.7)};\n`\n\nexport const StyledIconWrapper = styled.span`\n display: flex;\n align-items: center;\n color: ${theme.color('signal.danger.text')};\n font-size: ${scale.font(10)};\n`\n\nexport const StyledError = styled.p``\n\nexport const StyledLabelWrapper = styled.div`\n display: flex;\n align-items: center;\n\n label {\n vertical-align: bottom;\n }\n`\n\nexport const StyledTableWrapper = styled.div`\n flex: 1;\n`\n\nexport const StyledStatusWrapper = styled.span`\n color: ${({isChecked}) => (isChecked ? theme.color('signal.success.text') : theme.color('signal.danger.text'))};\n`\n","import _get from 'lodash/get'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {field} from 'tocco-app-extensions'\nimport {FormattedValue, MultiCheckbox, Typography} from 'tocco-ui'\nimport {js, navigationStrategy} from 'tocco-util'\n\nimport {ManyRelationEntityCount} from '../../util/manyRelationEntityCount'\nimport {StyledLabelWrapper} from './StyledComponents'\n\nconst areEqual = (prevProps, nextProps) => {\n const diff = Object.keys(js.difference(prevProps, nextProps))\n return diff.length === 0\n}\n\nexport const ManyRelationsCheckBox = React.memo(\n ({entityData, entityKey, name, setSelectedMultipleAll, isSelected, navigationStrategy}) => {\n if (entityData.value.totalKeys === 0) {\n return null\n }\n\n const onChange = e => setSelectedMultipleAll(name, entityKey, e.target.checked)\n\n return (\n <StyledLabelWrapper>\n <input type=\"checkbox\" onChange={onChange} checked={isSelected} id={`${name}${entityKey}`} />\n <Typography.Label for={`${name}${entityKey}`}>\n <FormattedMessage id=\"client.merge.allRelations\" />{' '}\n <ManyRelationEntityCount\n model={entityData.value.relationEntity}\n keys={entityData.value.keys}\n totalKeys={entityData.value.totalKeys}\n navigationStrategy={navigationStrategy}\n />\n </Typography.Label>\n </StyledLabelWrapper>\n )\n },\n areEqual\n)\n\nManyRelationsCheckBox.propTypes = {\n entityData: PropTypes.shape({\n value: PropTypes.shape({\n keys: PropTypes.arrayOf(PropTypes.string),\n totalKeys: PropTypes.number.isRequired,\n relationEntity: PropTypes.string.isRequired\n })\n }),\n entityKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n setSelectedMultipleAll: PropTypes.func.isRequired,\n isSelected: PropTypes.bool.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport const RelationsCheckBoxes = React.memo(\n ({entityData, entityKey, name, setSelectedMultiple, selectedMultiple}) => {\n const isSelected = key => _get(selectedMultiple, [name, key]) === entityKey\n const setSelected = (key, checked) => setSelectedMultiple(name, entityKey, key, checked)\n\n const numberTotal = entityData.value.length\n const numberSelected = entityData.value.filter(relationEntity => isSelected(relationEntity.key)).length\n const allRowsSelectionState =\n numberTotal === numberSelected ? 'checked' : numberSelected > 0 ? 'indeterminate' : 'unchecked'\n const allRowsSelectionChange = v => {\n entityData.value.forEach(relationEntity => {\n const checked = v === 'checked'\n if (isSelected(relationEntity.key) !== checked) {\n setSelected(relationEntity.key, checked)\n }\n })\n }\n\n return (\n <>\n {entityData.value.length > 0 && (\n <StyledLabelWrapper>\n <MultiCheckbox value={allRowsSelectionState} onChange={allRowsSelectionChange} id={`${name}${entityKey}`} />\n <Typography.Label for={`${name}${entityKey}`}>\n <FormattedMessage id=\"client.merge.allRelations\" />\n </Typography.Label>\n </StyledLabelWrapper>\n )}\n {entityData.value.map(relationEntity => (\n <StyledLabelWrapper key={`relation-checkbox-${relationEntity.key}`}>\n <input\n type=\"checkbox\"\n onChange={e => setSelected(relationEntity.key, e.target.checked)}\n checked={isSelected(relationEntity.key)}\n id={`${name}${entityKey}-${relationEntity.key}`}\n />\n <Typography.Label for={`${name}${entityKey}-${relationEntity.key}`}>\n <FormattedValue type=\"single-select\" value={relationEntity} />\n </Typography.Label>\n </StyledLabelWrapper>\n ))}\n </>\n )\n },\n areEqual\n)\n\nRelationsCheckBoxes.propTypes = {\n entityData: PropTypes.shape({\n value: PropTypes.array\n }),\n entityKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n setSelectedMultiple: PropTypes.func.isRequired,\n selectedMultiple: PropTypes.objectOf(PropTypes.objectOf(PropTypes.string))\n}\n\nexport const FormattedValueRadio = React.memo(({entityData, entityKey, name, setSelectedSingle, isSelected}) => {\n const typeMapper = {\n entity: 'single-select-box'\n }\n\n const {type, writable} = entityData\n const mappedType = typeMapper[type] || type\n const onChange = () => {\n setSelectedSingle(name, entityKey)\n }\n\n const Field = field.factory('list', mappedType)\n\n return (\n <StyledLabelWrapper>\n <input\n type=\"radio\"\n name={name}\n onChange={onChange}\n checked={isSelected}\n id={`${name}${entityKey}`}\n disabled={!writable}\n />\n <Typography.Label for={`${name}${entityKey}`}>\n <Field formField={{dataType: mappedType}} value={entityData.value} />\n </Typography.Label>\n </StyledLabelWrapper>\n )\n}, areEqual)\n\nFormattedValueRadio.propTypes = {\n entityData: PropTypes.shape({\n value: PropTypes.any,\n writable: PropTypes.bool,\n type: PropTypes.string\n }),\n entityKey: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n setSelectedSingle: PropTypes.func.isRequired,\n isSelected: PropTypes.bool.isRequired\n}\n","import _get from 'lodash/get'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {setSelectedMultiple, setSelectedMultipleAll, setSelectedSingle} from '../../modules/merge/actions'\nimport {FormattedValueRadio, ManyRelationsCheckBox, RelationsCheckBoxes} from './Selection'\n\nconst CellRenderer = ({\n rowData,\n column,\n setSelectedSingle,\n selectedSingle,\n setSelectedMultiple,\n selectedMultiple,\n setSelectedMultipleAll,\n selectedMultipleAll,\n navigationStrategy\n}) => {\n const {entityKey} = column\n const entityData = rowData[entityKey]\n\n const {type} = entityData\n const name = rowData.__key\n\n if (type === 'relations') {\n return (\n <ManyRelationsCheckBox\n entityData={entityData}\n entityKey={entityKey}\n name={name}\n setSelectedMultipleAll={setSelectedMultipleAll}\n isSelected={_get(selectedMultipleAll, [name], []).includes(entityKey)}\n navigationStrategy={navigationStrategy}\n />\n )\n }\n\n if (type === 'entity-list') {\n return (\n <RelationsCheckBoxes\n entityData={entityData}\n entityKey={entityKey}\n name={name}\n setSelectedMultiple={setSelectedMultiple}\n selectedMultiple={selectedMultiple}\n />\n )\n }\n\n return (\n <FormattedValueRadio\n entityData={entityData}\n entityKey={entityKey}\n name={name}\n setSelectedSingle={setSelectedSingle}\n isSelected={selectedSingle[name] === entityKey}\n />\n )\n}\n\nCellRenderer.propTypes = {\n rowData: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.shape({\n value: PropTypes.any,\n type: PropTypes.string\n }),\n PropTypes.string\n ])\n ),\n column: PropTypes.shape({\n entityKey: PropTypes.string.isRequired\n }),\n setSelectedSingle: PropTypes.func.isRequired,\n selectedSingle: PropTypes.objectOf(PropTypes.string),\n setSelectedMultiple: PropTypes.func.isRequired,\n selectedMultiple: PropTypes.objectOf(PropTypes.objectOf(PropTypes.string)),\n setSelectedMultipleAll: PropTypes.func.isRequired,\n selectedMultipleAll: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n navigationStrategy: navigationStrategy.propTypes\n}\n\nconst mapActionCreatorsCell = {\n setSelectedSingle,\n setSelectedMultiple,\n setSelectedMultipleAll\n}\nconst mapStateToPropsCell = state => ({\n selectedSingle: state.merge.selected.single,\n selectedMultiple: state.merge.selected.multiple,\n selectedMultipleAll: state.merge.selected.multipleAll,\n navigationStrategy: state.input.navigationStrategy\n})\nexport const CellRendererContainer = connect(mapStateToPropsCell, mapActionCreatorsCell)(injectIntl(CellRenderer))\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {Icon, Typography} from 'tocco-ui'\n\nimport sourceDataPropType from '../../util/sourceDataPropType'\nimport {StyledMergeErrorWrapper, StyledSummaryErrorWrapper, StyledIconWrapper, StyledError} from './StyledComponents'\n\nconst MergeErrors = ({sourceData, mergeErrorMsg, mergeValidationErrors}) => {\n const allMergerValidationErrors = mergeValidationErrors.map(e => {\n const fieldValidators = Object.keys(e.paths).map(name =>\n Object.keys(e.paths[name]).map(validator =>\n e.paths[name][validator].map((msg, index) => (\n <StyledError key={`paths-${name}-${validator}-${index}`}>\n {sourceData.labels[name]}: {msg}\n </StyledError>\n ))\n )\n )\n\n const entityValidators = Object.keys(e.entityValidatorErrors).map(validator =>\n e.entityValidatorErrors[validator].map((msg, index) => (\n <StyledError key={`entity-${validator}-${index}`}>{msg}</StyledError>\n ))\n )\n\n return [...fieldValidators, ...entityValidators]\n })\n\n return (\n <StyledMergeErrorWrapper>\n {(allMergerValidationErrors.length > 0 || Boolean(mergeErrorMsg)) && (\n <StyledSummaryErrorWrapper>\n <StyledIconWrapper>\n <Icon icon=\"times\" />\n </StyledIconWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.merge.summary.error\" />\n </Typography.P>\n </StyledSummaryErrorWrapper>\n )}\n {Boolean(mergeErrorMsg) && <StyledError>{mergeErrorMsg}</StyledError>}\n {allMergerValidationErrors}\n </StyledMergeErrorWrapper>\n )\n}\n\nexport const mergeValidationErrorsPropTypes = PropTypes.arrayOf(\n PropTypes.shape({\n model: PropTypes.string,\n key: PropTypes.string,\n paths: PropTypes.objectOf(PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string))),\n entityValidatorErrors: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string))\n })\n)\n\nMergeErrors.propTypes = {\n sourceData: sourceDataPropType,\n mergeErrorMsg: PropTypes.string,\n mergeValidationErrors: mergeValidationErrorsPropTypes\n}\n\nexport default MergeErrors\n","import PropTypes from 'prop-types'\nimport React, {useMemo} from 'react'\nimport {FormattedMessage, injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport {Table, Typography, LoadMask} from 'tocco-ui'\n\nimport {setTargetEntity} from '../../modules/merge/actions'\nimport {getColumnDefinition, getDataRows} from '../../util/sourceData'\nimport sourceDataPropType from '../../util/sourceDataPropType'\nimport {StyledButton, StyledButtonWrapper} from '../GlobalStyledComponents'\nimport {CellRendererContainer} from './CellRender'\nimport MergeErrors, {mergeValidationErrorsPropTypes} from './MergeErrors'\nimport {StyledTableWrapper, StyledStatusWrapper} from './StyledComponents'\n\nconst LabelCellRenderer = ({rowIdx, sourceData, allPaths}) => {\n const columnName = allPaths[rowIdx]\n return <Typography.B>{sourceData.labels[columnName]}</Typography.B>\n}\n\nLabelCellRenderer.propTypes = {\n rowIdx: PropTypes.number,\n sourceData: sourceDataPropType,\n allPaths: PropTypes.arrayOf(PropTypes.string)\n}\n\nconst ColumnHeaderRenderer = ({label, entityKey, setTargetEntity, targetEntity, mergeStrategyDisplay}) => {\n const isChecked = targetEntity === entityKey\n const status = isChecked ? <FormattedMessage id=\"client.merge.strategy.keep\" /> : mergeStrategyDisplay\n const onChange = () => setTargetEntity(entityKey)\n\n return (\n <>\n <input type=\"radio\" name=\"column\" onChange={onChange} checked={isChecked} id={`targetEntity${entityKey}`} />\n <Typography.Label for={`targetEntity${entityKey}`}>\n <Typography.B>{label}</Typography.B>\n <StyledStatusWrapper isChecked={isChecked}> ({status})</StyledStatusWrapper>\n </Typography.Label>\n </>\n )\n}\n\nColumnHeaderRenderer.propTypes = {\n label: PropTypes.string,\n entityKey: PropTypes.string.isRequired,\n setTargetEntity: PropTypes.func.isRequired,\n targetEntity: PropTypes.string,\n mergeStrategyDisplay: PropTypes.string.isRequired\n}\n\nconst mapActionCreatorsColumn = {\n setTargetEntity\n}\nconst mapStateToPropsColumn = state => ({\n targetEntity: state.merge.selected.targetEntity,\n mergeStrategyDisplay: state.merge.sourceData.mergeStrategyDisplay\n})\nconst ColumnHeaderRendererContainer = connect(\n mapStateToPropsColumn,\n mapActionCreatorsColumn\n)(injectIntl(ColumnHeaderRenderer))\n\nconst MergeTable = ({sourceData, mergePending, mergeErrorMsg, mergeValidationErrors, executeMerge}) => {\n const data = useMemo(() => (sourceData ? getDataRows(sourceData) : []), [sourceData])\n\n const columns = useMemo(\n () =>\n sourceData\n ? getColumnDefinition(sourceData, ColumnHeaderRendererContainer, CellRendererContainer, LabelCellRenderer)\n : [],\n [sourceData]\n )\n\n if (mergePending) {\n return <LoadMask />\n }\n\n return (\n <>\n <StyledButtonWrapper>\n <StyledButton onClick={executeMerge} look=\"raised\" ink=\"primary\" disabled={sourceData === null}>\n <FormattedMessage id=\"client.merge.saveButton\" />\n </StyledButton>\n </StyledButtonWrapper>\n <StyledTableWrapper>\n <MergeErrors\n sourceData={sourceData}\n mergeErrorMsg={mergeErrorMsg}\n mergeValidationErrors={mergeValidationErrors}\n />\n <Table\n columns={columns}\n data={data}\n selectionStyle=\"none\"\n dataLoadingInProgress={sourceData === null}\n onColumnPositionChange={() => {}}\n />\n </StyledTableWrapper>\n </>\n )\n}\n\nMergeTable.propTypes = {\n sourceData: sourceDataPropType,\n mergePending: PropTypes.bool.isRequired,\n mergeErrorMsg: PropTypes.string,\n mergeValidationErrors: mergeValidationErrorsPropTypes,\n executeMerge: PropTypes.func.isRequired\n}\n\nexport default MergeTable\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {executeMerge} from '../../modules/merge/actions'\nimport MergeTable from './MergeTable'\n\nconst mapActionCreators = {\n executeMerge\n}\n\nconst mapStateToProps = state => ({\n sourceData: state.merge.sourceData,\n mergePending: state.merge.mergePending,\n mergeErrorMsg: state.merge.mergeErrorMsg,\n mergeValidationErrors: state.merge.mergeValidationErrors\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(MergeTable))\n","import MergeTableContainer from './MergeTableContainer'\n\nexport default MergeTableContainer\n","import styled from 'styled-components'\nimport {theme} from 'tocco-ui'\n\nexport const StyledMerge = styled.div`\n height: 100%;\n overflow: hidden;\n background-color: ${theme.color('paper')};\n display: flex;\n flex-direction: column;\n`\n","import PropTypes from 'prop-types'\nimport React, {useEffect} from 'react'\n\nimport MergeSummary from '../MergeSummary'\nimport MergeTable from '../MergeTable'\nimport {StyledMerge} from './StyledComponents'\n\nconst Merge = ({initialize, mergeDone}) => {\n useEffect(() => {\n initialize()\n }, [])\n\n return <StyledMerge>{mergeDone ? <MergeSummary /> : <MergeTable />}</StyledMerge>\n}\n\nMerge.propTypes = {\n initialize: PropTypes.func.isRequired,\n mergeDone: PropTypes.bool.isRequired\n}\n\nexport default Merge\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {initialize} from '../../modules/merge/actions'\nimport Merge from './Merge'\n\nconst mapActionCreators = {\n initialize\n}\n\nconst mapStateToProps = state => ({\n mergeDone: !!state.merge.mergeResponse\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Merge))\n","import MergeContainer from './MergeContainer'\n\nexport default MergeContainer\n","import _omit from 'lodash/omit'\nimport _setWith from 'lodash/setWith'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst executeMerge = state => ({\n ...state,\n mergePending: true\n})\n\nconst mergeResponse = (state, {payload: {mergeResponse}}) => ({\n ...state,\n mergePending: false,\n mergeResponse: mergeResponse\n})\n\nconst mergeErrors = (state, {payload: {errorMsg, validationErrors}}) => ({\n ...state,\n mergePending: false,\n mergeErrorMsg: errorMsg,\n mergeValidationErrors: validationErrors\n})\n\nconst setSelectedSingle = (state, {payload: {name, entityKey}}) => ({\n ...state,\n selected: {\n ...state.selected,\n single: {\n ...state.selected.single,\n [name]: entityKey\n }\n }\n})\n\nconst setSelectedMultiple = (state, {payload: {name, entityKey, relatedEntityKey, isSelected}}) => {\n let multiple\n if (isSelected) {\n multiple = {\n ...state.selected.multiple,\n [name]: {\n ...state.selected.multiple[name],\n [relatedEntityKey]: entityKey\n }\n }\n } else {\n multiple = {...state.selected.multiple}\n multiple[name] = _omit(multiple[name], [relatedEntityKey])\n }\n return {\n ...state,\n selected: {\n ...state.selected,\n multiple: multiple\n }\n }\n}\n\nconst setSelectedMultipleAll = (state, {payload: {name, entityKey, isSelected}}) => {\n let array\n if (isSelected) {\n array = [...(state.selected.multipleAll[name] || []), entityKey]\n } else {\n array = state.selected.multipleAll[name].filter(key => key !== entityKey)\n }\n return {\n ...state,\n selected: {\n ...state.selected,\n multipleAll: {\n ...state.selected.multipleAll,\n [name]: array\n }\n }\n }\n}\n\nconst setTargetEntity = (state, {payload: {entityKey}}) => {\n const single = {}\n const multiple = {}\n\n const targetEntity = state.sourceData.entities.find(e => e.key === entityKey)\n for (const [key, obj] of Object.entries(targetEntity.paths)) {\n if (obj.type !== 'entity-list') {\n single[key] = entityKey\n }\n }\n\n state.sourceData.entities.filter(e => e.key !== entityKey).forEach(e => setTargetEntityMultiple(multiple, e))\n setTargetEntityMultiple(multiple, targetEntity)\n\n const multipleAll = state.sourceData.relations.reduce(\n (acc, val) => ({\n ...acc,\n [val.relationName]: [...(acc[val.relationName] || []), val.entityKey]\n }),\n {}\n )\n\n return {\n ...state,\n selected: {\n ...state.selected,\n targetEntity: entityKey,\n single: single,\n multiple: multiple,\n multipleAll: multipleAll\n }\n }\n}\n\nconst setTargetEntityMultiple = (multiple, entity) => {\n for (const [key, obj] of Object.entries(entity.paths)) {\n if (obj.type === 'entity-list') {\n obj.value\n .map(e => e.key)\n .forEach(relatedEntityKey => {\n _setWith(multiple, [key, relatedEntityKey], entity.key, Object)\n })\n }\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_SELECTION]: reducerUtil.singleTransferReducer('selection'),\n [actions.SET_SOURCE_DATA]: reducerUtil.singleTransferReducer('sourceData'),\n [actions.EXECUTE_MERGE]: executeMerge,\n [actions.SET_MERGE_RESPONSE]: mergeResponse,\n [actions.SET_MERGE_ERROR]: mergeErrors,\n [actions.SET_SELECTED_SINGLE]: setSelectedSingle,\n [actions.SET_SELECTED_MULTIPLE]: setSelectedMultiple,\n [actions.SET_SELECTED_MULTIPLE_ALL]: setSelectedMultipleAll,\n [actions.SET_TARGET_ENTITY]: setTargetEntity\n}\n\nconst initialState = {\n selection: null,\n sourceData: null,\n mergePending: false,\n mergeResponse: null,\n mergeErrorMsg: null,\n mergeValidationErrors: [],\n selected: {\n targetEntity: null,\n single: {},\n multiple: {},\n multipleAll: {}\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 _uniq from 'lodash/uniq'\nimport {takeLatest, all, select, call, put} from 'redux-saga/effects'\nimport {externalEvents, rest} from 'tocco-app-extensions'\n\nimport * as actions from './actions'\n\nexport const mergeSelector = state => state.merge\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.INITIALIZE, initialize),\n takeLatest(actions.EXECUTE_MERGE, executeMerge),\n takeLatest(actions.CLOSE, close)\n ])\n}\n\nexport function* initialize() {\n const {selection} = yield select(mergeSelector)\n yield call(loadSourceData, selection)\n}\n\nexport function* loadSourceData(selection) {\n const resource = 'merge/sourceData'\n const options = {\n method: 'POST',\n body: selection\n }\n const response = yield call(rest.requestSaga, resource, options)\n const {body: sourceData} = response\n yield put(actions.setSourceData(sourceData))\n yield put(actions.setTargetEntity(sourceData.entities[0].key))\n}\n\nexport function* getMergeBody() {\n const {selection, selected, sourceData} = yield select(mergeSelector)\n\n const paths = {}\n for (const [name, entityKey] of Object.entries(selected.single)) {\n const path = sourceData.entities.find(e => e.key === entityKey).paths[name]\n\n if (path.writable) {\n if (path.type === 'entity') {\n if (path.value === null) {\n paths[name] = null\n } else {\n paths[name] = {\n key: path.value.key\n }\n }\n } else {\n paths[name] = entityKey\n }\n }\n }\n\n for (const [name, obj] of Object.entries(selected.multiple)) {\n paths[name] = []\n Object.keys(obj).forEach(value =>\n paths[name].push({\n key: value\n })\n )\n }\n\n const mergeRelations = _uniq(sourceData.relations.map(r => r.relationName)).map(relationName => ({\n relationName: relationName,\n sourceKey: selected.multipleAll[relationName] || []\n }))\n\n return {\n selection: selection,\n targetEntity: {\n key: selected.targetEntity,\n paths: paths\n },\n mergeRelations: mergeRelations\n }\n}\n\nexport function* executeMerge() {\n const resource = 'merge/merge'\n const options = {\n method: 'POST',\n acceptedStatusCodes: [400, 500],\n headers: {'X-Client-Questions': 'true'},\n body: yield call(getMergeBody)\n }\n\n const response = yield call(rest.requestSaga, resource, options)\n\n if (response.status === 200) {\n yield put(actions.setMergeResponse(response.body))\n } else {\n if (response.body && response.body.errorCode === 'VALIDATION_FAILED') {\n yield put(actions.setMergeError(null, response.body.errors))\n } else {\n yield put(actions.setMergeError(response.body.message, []))\n }\n }\n}\n\nexport function* close() {\n const {sourceData} = yield select(mergeSelector)\n const entities = sourceData.entities.map(entitiy => ({entityName: entitiy.model, key: entitiy.key}))\n const remoteEvents = [\n {\n type: 'entity-update-event',\n payload: {\n entities\n }\n }\n ]\n\n yield put(externalEvents.fireExternalEvent('onSuccess', {remoteEvents}))\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport reducer from './reducer'\nimport moduleSagas from './sagas'\n\nexport function* sagas() {\n yield all([fork(moduleSagas)])\n}\n\nexport default reducer\n","import merge, {sagas as mergeSagas} from './merge'\n\nexport default {\n merge\n}\n\nexport const sagas = [mergeSagas]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {actionEmitter, appFactory, cache, externalEvents, notification} from 'tocco-app-extensions'\nimport {GlobalStyles} from 'tocco-ui'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport Merge from './components/Merge'\nimport {setSelection} from './modules/merge/actions'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'merge'\n\nconst EXTERNAL_EVENTS = ['emitAction', 'onSuccess']\n\nconst initApp = (id, input, events = {}, publicPath) => {\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n externalEvents.addToStore(store, events)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n cache.addToStore(store)\n\n const content = (\n <>\n <GlobalStyles />\n {handleNotifications && <notification.Notifications />}\n <Merge />\n </>\n )\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [setSelection(input.selection)],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\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 input.navigationStrategy = {}\n input.navigationStrategy.ListLink = ({children}) => children\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 MergeApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nMergeApp.propTypes = {\n selection: PropTypes.object,\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default MergeApp\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {connect} from 'react-redux'\nimport {notification} from 'tocco-app-extensions'\nimport {PasswordUpdateApp} from 'tocco-login/src/main'\n\nconst mapActionCreators = {\n closeModal: notification.removeModal\n}\n\nconst PasswordUpdate = ({selection, closeModal}) => (\n <PasswordUpdateApp\n username={selection.ids[0]}\n showOldPasswordField={false}\n success={() => closeModal('action-password-update')}\n />\n)\n\nPasswordUpdate.propTypes = {\n selection: PropTypes.object.isRequired,\n closeModal: PropTypes.func.isRequired\n}\n\nexport default connect(null, mapActionCreators)(PasswordUpdate)\n","const RADIX = 16\n\nexport const hexToRgb = (hex, fallBack = null) => {\n if (!hex) {\n return fallBack\n }\n\n hex = normalizeHex(hex)\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n return result\n ? {\n r: parseInt(result[1], RADIX),\n g: parseInt(result[2], RADIX),\n b: parseInt(result[3], RADIX)\n }\n : fallBack\n}\n\nconst normalizeHex = hex => {\n if (!hex.startsWith('#')) {\n hex = '#' + hex\n }\n return hex.padEnd(7, '0')\n}\n","import {hexToRgb} from './hexToRgb'\n\nconst LUMIANCE_LIMIT = 0.25\n\nconst calculateLight = colorItem => {\n let c = colorItem / 255.0\n if (c <= 0.03928) {\n c = c / 12.92\n } else {\n c = Math.pow((c + 0.055) / 1.055, 2.4)\n }\n return c\n}\n\nconst calculateLumiance = color =>\n 0.2126 * calculateLight(color.r) + 0.7152 * calculateLight(color.g) + 0.0722 * calculateLight(color.b)\n\n/***\n * Returns a dark or bright value depending on the given color.\n * This could be used to choose a pleasant font color to a background color.\n * @param hexColor Hex Color code\n * @param brightValue Bright value can be overridden. Default is the color white as hex.\n * @param darkValue Dark value can be overridden. Default is the color black as hex.\n * @returns {string}\n */\nexport const getContrastColor = (hexColor, brightValue = '#FFFFFF', darkValue = '#000000') => {\n const rgbColor = hexToRgb(hexColor)\n\n if (rgbColor) {\n return calculateLumiance(rgbColor) > LUMIANCE_LIMIT ? darkValue : brightValue\n }\n\n return brightValue\n}\n","import {getContrastColor} from './contrast'\nimport {hexToRgb} from './hexToRgb'\n\nexport default {getContrastColor, hexToRgb}\n","export default Object.freeze({\n EXISTING: 'existing',\n ACCEPTED: 'accepted',\n NONE: 'none'\n})\n","import {color} from 'tocco-util'\n\nimport conflicts from './conflicts'\n\nconst getResourceId = (id, model) => id + model\n\nexport const getResources = calendars => {\n return calendars.map(calendar => ({\n title: calendar.label,\n id: getResourceId(calendar.key, calendar.model),\n entityKey: calendar.key,\n calendarType: calendar.calendarType,\n entityModel: calendar.model\n }))\n}\n\nconst getOptimalTextColorClass = backgroundHexColor => color.getContrastColor(backgroundHexColor, 'bright', 'dark')\n\nexport const getEvents = calendars =>\n calendars.reduce(\n (accumulator, calendar) => [\n ...accumulator,\n ...calendar.events.map(event => ({\n entity: event.source,\n resourceId: getResourceId(calendar.key, calendar.model),\n title: event.label,\n start: event.start,\n end: event.end,\n description: event.description,\n conflict: event.conflict,\n ...(event.color ? {backgroundColor: event.color, borderColor: event.color} : {}),\n styleAttr: [\n ...(event.conflict === conflicts.EXISTING ? ['conflict'] : []),\n getOptimalTextColorClass(event.color)\n ]\n }))\n ],\n []\n )\n","/**\n * Returns the hour as string\n *\n * @param {Object} moment.js datetime\n *\n * @return {String} Hours of datetime e.g. '08' or '8 PM' depending on the locale set on the moment.js object\n */\nexport const getFormattedTime = date => date.format('LT').replace(/(:|\\.|e)[0-9]{2}/, '')\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport conflicts from '../../utils/conflicts'\n\nconst CHECK = '\\u2713'\nconst CROSS = '\\u2715'\n\nconst Conflict = ({conflictStatus, intl}) => {\n if (!(conflictStatus === conflicts.ACCEPTED || conflictStatus === conflicts.EXISTING)) {\n return null\n }\n\n const accepted = conflictStatus === conflicts.ACCEPTED\n const textResource = `client.scheduler.conflict${accepted ? 'Accepted' : 'Existing'}`\n const icon = accepted ? CHECK : CROSS\n\n return (\n <span>\n {icon} {intl.formatMessage({id: textResource})}\n </span>\n )\n}\n\nConflict.propTypes = {\n intl: PropTypes.object.isRequired,\n conflictStatus: PropTypes.oneOf(Object.values(conflicts))\n}\n\nexport default Conflict\n","import Conflict from './Conflict'\n\nexport default Conflict\n","import React, {lazy, Suspense} from 'react'\n\nconst DatePickerComponent = lazy(() => import(/* webpackChunkName: \"vendor-date-picker\" */ './DatePicker'))\n\nconst renderLoader = () => <React.Fragment />\n\nconst LazyIcon = props => (\n <Suspense fallback={renderLoader()}>\n <DatePickerComponent {...props} />\n </Suspense>\n)\n\nexport default LazyIcon\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nconst StyledNavigationFullCalendar = styled.div`\n display: flex;\n justify-content: space-between;\n margin: ${scale.space(-1)} ${scale.space(-2)};\n\n > div {\n display: flex;\n align-items: center;\n\n > * {\n margin-left: ${scale.space(-2)};\n }\n }\n`\n\nexport default StyledNavigationFullCalendar\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage, injectIntl} from 'react-intl'\nimport {Button, ButtonGroup, Icon, Typography, DatePicker} from 'tocco-ui'\n\nimport StyledNavigationFullCalendar from './StyledNavigationFullCalendar'\n\nconst getButtonInkProps = (viewType, type) => (viewType === type ? {ink: 'secondary'} : {})\n\nconst msg = (id, intl) => intl.formatMessage({id})\n\nconst NavigationFullCalendar = props => {\n const {\n date,\n changeRange,\n changeView,\n chooseNext,\n choosePrev,\n chooseToday,\n goToDate,\n intl,\n isLoading,\n refresh,\n title,\n type\n } = props\n\n return (\n <StyledNavigationFullCalendar>\n <div>\n <Button\n look=\"raised\"\n onClick={() => {\n chooseToday()\n changeRange()\n }}\n >\n <FormattedMessage id=\"client.scheduler.today\" />\n </Button>\n <ButtonGroup>\n <Button\n look=\"raised\"\n onClick={() => {\n choosePrev()\n changeRange()\n }}\n icon=\"chevron-left\"\n title={msg('client.scheduler.previous', intl)}\n />\n <Button\n look=\"raised\"\n onClick={() => {\n chooseNext()\n changeRange()\n }}\n icon=\"chevron-right\"\n title={msg('client.scheduler.next', intl)}\n />\n </ButtonGroup>\n <DatePicker\n value={date}\n onChange={date => {\n goToDate(date)\n changeRange()\n }}\n >\n <Typography.Span>{title}</Typography.Span>\n <Icon style={{marginLeft: '5px'}} icon=\"chevron-down\" />\n </DatePicker>\n </div>\n <div>\n <ButtonGroup>\n <Button look=\"raised\" {...getButtonInkProps('dayView', type)} onClick={() => changeView('dayView')}>\n <FormattedMessage id=\"client.scheduler.day\" />\n </Button>\n <Button\n look=\"raised\"\n {...getButtonInkProps('weekView', type)}\n {...getButtonInkProps('weekViewSimple', type)}\n onClick={() => (type !== 'weekViewSimple' ? changeView('weekViewSimple') : changeView('weekView'))}\n >\n <FormattedMessage id=\"client.scheduler.week\" />\n </Button>\n <Button look=\"raised\" {...getButtonInkProps('monthView', type)} onClick={() => changeView('monthView')}>\n <FormattedMessage id=\"client.scheduler.month\" />\n </Button>\n </ButtonGroup>\n <Button\n icon={isLoading ? '' : 'sync'}\n onClick={() => {\n if (!isLoading) {\n refresh()\n }\n }}\n pending={isLoading}\n title={msg('client.scheduler.reload', intl)}\n />\n </div>\n </StyledNavigationFullCalendar>\n )\n}\n\nNavigationFullCalendar.propTypes = {\n date: PropTypes.instanceOf(Date),\n changeRange: PropTypes.func.isRequired,\n changeView: PropTypes.func.isRequired,\n chooseNext: PropTypes.func.isRequired,\n choosePrev: PropTypes.func.isRequired,\n chooseToday: PropTypes.func.isRequired,\n goToDate: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n isLoading: PropTypes.bool,\n refresh: PropTypes.func.isRequired,\n title: PropTypes.string,\n type: PropTypes.string\n}\n\nexport {getButtonInkProps}\nexport default injectIntl(NavigationFullCalendar)\n","import NavigationFullCalendar from './NavigationFullCalendar'\n\nexport default NavigationFullCalendar\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nconst ResourceLabelContent = ({fieldValue, resource, onCalendarRemove}) => (\n <>\n <input\n type=\"checkbox\"\n defaultChecked={true}\n className=\"remove-resource-checkbox\"\n onClick={() => onCalendarRemove(resource.extendedProps.entityKey, resource.extendedProps.entityModel)}\n />\n {fieldValue}\n </>\n)\n\nResourceLabelContent.propTypes = {\n fieldValue: PropTypes.string,\n resource: PropTypes.shape({\n extendedProps: PropTypes.shape({\n entityKey: PropTypes.string,\n entityModel: PropTypes.string\n })\n }).isRequired,\n onCalendarRemove: PropTypes.func.isRequired\n}\n\nexport default ResourceLabelContent\n","import _get from 'lodash/get'\nimport styled, {createGlobalStyle} from 'styled-components'\nimport {declareFont, theme, StyledScrollbar, shadeColor, scale} from 'tocco-ui'\n\nexport const StyledFullCalendarWrapper = styled.div`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr;\n\n .fc {\n ${declareFont()};\n\n table {\n font-size: ${scale.font(-2)};\n }\n\n // decrease header height\n .fc-datagrid-header {\n .fc-datagrid-cell-frame {\n height: 25px !important;\n }\n }\n\n .fc-timeline-slot-frame a {\n text-decoration: none;\n }\n\n // decrease header height\n .fc-timeline-slot-frame.fc-timeline-slot-frame {\n height: 25px !important;\n }\n\n .remove-resource-checkbox {\n margin-right: 6px;\n }\n\n .fc-scrollgrid {\n border-top: 0; // remove top border as it otherwise causes a double border when not scrolling\n border-color: ${({theme}) => shadeColor(_get(theme, 'colors.paper'), 1)};\n }\n\n // prevent top border from disappearing on scroll\n & .fc-scroller-harness {\n border-top: 1px solid ${({theme}) => shadeColor(_get(theme, 'colors.paper'), 1)};\n }\n\n .fc-timeline-header-row {\n th {\n font-weight: ${theme.fontWeight('regular')};\n }\n }\n\n .fc-event {\n cursor: pointer;\n\n .dark {\n color: ${theme.color('text')};\n }\n\n .bright {\n color: ${theme.color('paper')};\n }\n\n .conflict {\n border: 2px dashed ${theme.color('signal.danger.text')};\n }\n\n .fc-event-time {\n overflow: visible;\n font-size: ${scale.font(0)};\n font-weight: ${theme.fontWeight('regular')};\n }\n }\n\n .fc-event-title {\n font-size: ${scale.font(0)};\n }\n }\n`\n\nexport const StyledMemoizedFullCalender = styled.div`\n overflow-y: auto;\n ${StyledScrollbar}\n`\n\nexport const CalendarGlobalPrintStyle = createGlobalStyle`\n @media print {\n body * {\n visibility: hidden;\n }\n\n #section-to-print,\n #section-to-print * {\n visibility: visible;\n color: ${theme.color('text')};\n\n input[type='checkbox'] {\n visibility: hidden !important;\n }\n }\n\n #section-to-print {\n position: fixed;\n overflow: visible;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n\n & *:not(.fc-timeline-event-harness *) {\n overflow: visible;\n }\n }\n }\n`\n","// eslint-disable-next-line import/order\nimport ReactFullCalendar from '@fullcalendar/react'\nimport adaptivePlugin from '@fullcalendar/adaptive'\nimport interactionPlugin from '@fullcalendar/interaction'\nimport resourceTimelinePlugin from '@fullcalendar/resource-timeline'\nimport moment from 'moment'\nimport PropTypes from 'prop-types'\nimport React, {useEffect, useMemo, useRef} from 'react'\nimport 'twix'\nimport {injectIntl} from 'react-intl'\nimport {FormattedValue, Popover} from 'tocco-ui'\nimport {consoleLogger} from 'tocco-util'\n\nimport {getFormattedTime} from '../../utils/time'\nimport Conflict from '../Conflict'\nimport NavigationFullCalendar from '../NavigationFullCalendar'\nimport ResourceLabelContent from './ResourceLabelContent'\nimport {CalendarGlobalPrintStyle, StyledFullCalendarWrapper, StyledMemoizedFullCalender} from './StyledFullCalendar'\n\nconst getLicense = () => {\n const licence = process.env.FULL_CALENDAR_LICENCE\n if (licence) {\n return licence\n }\n consoleLogger.logWarning('This Version runs with the NonCommercial FullCalendar license.')\n return 'CC-Attribution-NonCommercial-NoDerivatives' // noncommercial license\n}\n\nconst MONDAY = 1\n\nconst FullCalendar = ({\n resources,\n events,\n onDateRangeChange,\n isLoading,\n onRefresh,\n onCalendarRemove,\n onCalendarRemoveAll,\n locale,\n onEventClick,\n intl\n}) => {\n const calendarEl = useRef(null)\n const wrapperEl = useRef(null)\n\n useEffect(() => {\n moment.locale(locale)\n changeRange()\n }, [])\n\n useEffect(() => {\n const calendar = calendarEl.current.getApi()\n calendar.batchRendering(() => {\n const eventSources = calendar.getEventSources()\n eventSources.forEach(eS => eS.remove())\n calendar.addEventSource(events)\n })\n }, [JSON.stringify(events)])\n\n useEffect(() => {\n const calendar = calendarEl.current.getApi()\n calendar.batchRendering(() => {\n const loadedResources = calendar.getResources()\n loadedResources.forEach(l => {\n const contains = resources.find(r => l.id === r.id)\n if (!contains) {\n l.remove()\n }\n })\n\n resources.forEach(r => {\n const contains = loadedResources.find(l => l.id === r.id)\n if (!contains) {\n calendar.addResource(r)\n }\n })\n })\n }, [JSON.stringify(resources)])\n\n const headerContent = (\n <input\n type=\"checkbox\"\n checked={true}\n onChange={() => onCalendarRemoveAll()}\n style={{visibility: resources.length > 0 ? 'visible' : 'hidden'}}\n className=\"remove-all-checkbox\"\n />\n )\n\n const changeRange = () => {\n const {view} = calendarEl.current.getApi()\n if (onDateRangeChange) {\n onDateRangeChange({startDate: view.activeStart, endDate: view.activeEnd})\n }\n }\n\n const changeView = (view = 'timelineDay') => {\n calendarEl.current.getApi().changeView(view)\n changeRange()\n }\n\n const renderEventContent = eventInfo => {\n const time = moment(eventInfo.event.start)\n .twix(moment(eventInfo.event.end))\n .format({monthFormat: 'MMMM', dayFormat: 'Do'})\n const tooltipDescriptionContent = (\n <div>\n <FormattedValue type=\"html\" value={eventInfo.event.extendedProps.description} />\n <p>{time}</p>\n <p>\n <Conflict conflictStatus={eventInfo.event.extendedProps.conflict} intl={intl} />\n </p>\n </div>\n )\n const eventInfoStyleAttributes = eventInfo.event.extendedProps.styleAttr\n\n return (\n <Popover content={tooltipDescriptionContent} isPlainHtml placement=\"top\">\n <div className={`fc-event-main-frame ${eventInfoStyleAttributes && eventInfoStyleAttributes.join(' ')}`}>\n {eventInfo.timeText && <div className=\"fc-event-time\">{eventInfo.timeText}</div>}\n <div className=\"fc-event-title-container\">\n <div className=\"fc-event-title fc-sticky\">{eventInfo.event.title || <>&nbsp;</>}</div>\n </div>\n </div>\n </Popover>\n )\n }\n\n const memoizedFullCalendar = useMemo(\n () => (\n <ReactFullCalendar\n resourceOrder=\"\"\n schedulerLicenseKey={getLicense()}\n locale={locale}\n plugins={[adaptivePlugin, resourceTimelinePlugin, interactionPlugin]}\n ref={calendarEl}\n initialView={'dayView'}\n headerToolbar={false}\n height=\"auto\"\n resourceAreaWidth=\"15%\"\n resourceAreaColumns={[{labelText: '', headerContent}]}\n resourceLabelContent={props => <ResourceLabelContent {...props} onCalendarRemove={onCalendarRemove} />}\n eventClick={info => {\n onEventClick(info.event)\n }}\n eventContent={renderEventContent}\n firstDay={MONDAY}\n slotMinTime=\"06:00:00\"\n slotMaxTime=\"23:00:00\"\n views={{\n dayView: {\n type: 'resourceTimelineDay',\n slotLabelFormat: info => getFormattedTime(moment(info.date).locale(locale))\n },\n weekView: {\n type: 'resourceTimelineWeek',\n slotLabelFormat: [\n {weekday: 'short', month: 'numeric', day: 'numeric'},\n info => getFormattedTime(moment(info.date).locale(locale))\n ]\n },\n weekViewSimple: {\n type: 'resourceTimelineWeek',\n slotDuration: {day: 1},\n slotLabelFormat: [\n {\n weekday: 'short',\n month: 'numeric',\n day: 'numeric'\n }\n ]\n },\n monthView: {\n type: 'resourceTimelineMonth',\n slotLabelFormat: {\n weekday: 'short',\n month: 'numeric',\n day: 'numeric',\n omitCommas: true\n }\n }\n }}\n />\n ),\n [resources.length]\n )\n\n return (\n <StyledFullCalendarWrapper ref={wrapperEl}>\n <CalendarGlobalPrintStyle />\n {calendarEl.current && (\n <NavigationFullCalendar\n changeRange={changeRange}\n changeView={changeView}\n chooseNext={() => calendarEl.current.getApi().next()}\n choosePrev={() => calendarEl.current.getApi().prev()}\n chooseToday={() => calendarEl.current.getApi().today()}\n goToDate={date => calendarEl.current.getApi().gotoDate(date)}\n date={calendarEl.current.getApi().getDate()}\n isLoading={isLoading}\n refresh={onRefresh}\n title={calendarEl.current.getApi().view.title}\n type={calendarEl.current.getApi().view.type}\n />\n )}\n <StyledMemoizedFullCalender id=\"section-to-print\">{memoizedFullCalendar}</StyledMemoizedFullCalender>\n </StyledFullCalendarWrapper>\n )\n}\n\nFullCalendar.defaultProps = {\n locale: 'en'\n}\n\nFullCalendar.propTypes = {\n intl: PropTypes.object.isRequired,\n onDateRangeChange: PropTypes.func,\n onCalendarRemove: PropTypes.func,\n onCalendarRemoveAll: PropTypes.func,\n onRefresh: PropTypes.func,\n onEventClick: PropTypes.func.isRequired,\n events: PropTypes.arrayOf(\n PropTypes.shape({\n resourceId: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n start: PropTypes.number.isRequired,\n end: PropTypes.number.isRequired,\n allDay: PropTypes.bool\n })\n ),\n resources: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n calendarType: PropTypes.string.isRequired,\n entityKey: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired\n })\n ),\n locale: PropTypes.string,\n isLoading: PropTypes.bool\n}\n\nexport default injectIntl(FullCalendar)\n","import FullCalendar from './FullCalendar'\n\nexport default FullCalendar\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport {getEvents, getResources} from '../../utils/calendar'\nimport FullCalendar from '../FullCalendar'\n\nconst Scheduler = props => (\n <FullCalendar\n events={getEvents(props.calendars)}\n resources={getResources(props.calendars)}\n onDateRangeChange={props.onDateRangeChange}\n onCalendarRemove={props.onCalendarRemove}\n onCalendarRemoveAll={props.onCalendarRemoveAll}\n onEventClick={props.onEventClick}\n onRefresh={props.onRefresh}\n locale={props.locale}\n isLoading={props.isLoading}\n />\n)\n\nScheduler.propTypes = {\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n calendarType: PropTypes.string.isRequired,\n events: PropTypes.arrayOf(\n PropTypes.shape({\n description: PropTypes.string,\n start: PropTypes.number,\n end: PropTypes.number,\n allDay: PropTypes.bool\n })\n ),\n key: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n model: PropTypes.string.isRequired\n })\n ).isRequired,\n onDateRangeChange: PropTypes.func,\n onCalendarRemove: PropTypes.func,\n onCalendarRemoveAll: PropTypes.func,\n onEventClick: PropTypes.func,\n onRefresh: PropTypes.func,\n locale: PropTypes.string,\n isLoading: PropTypes.bool\n}\n\nexport default Scheduler\n","import Scheduler from './Scheduler'\n\nexport default Scheduler\n","export const SET_CALENDARS = 'scheduler/SET_CALENDARS'\nexport const ON_DATE_RANGE_CHANGE = 'scheduler/ON_DATE_RANGE_CHANGE'\nexport const ON_CALENDAR_REMOVE = 'scheduler/ON_CALENDAR_REMOVE'\nexport const ON_CALENDARS_REMOVE_ALL = 'scheduler/ON_CALENDARS_REMOVE_ALL'\nexport const ON_EVENT_CLICK = 'scheduler/ON_EVENT_CLICK'\nexport const ON_REFRESH = 'scheduler/ON_REFRESH'\nexport const REMOVE_EVENTS = 'scheduler/REMOVE_EVENTS'\nexport const SET_IS_LOADING = 'scheduler/SET_IS_LOADING'\n\nexport const setCalendars = calendars => ({\n type: SET_CALENDARS,\n payload: {\n calendars\n }\n})\n\nexport const onDateRangeChange = dateRange => ({\n type: ON_DATE_RANGE_CHANGE,\n payload: {\n dateRange\n }\n})\n\nexport const onCalendarRemoveAll = () => ({\n type: ON_CALENDARS_REMOVE_ALL\n})\n\nexport const onCalendarRemove = (id, entityModel) => ({\n type: ON_CALENDAR_REMOVE,\n payload: {\n id,\n entityModel\n }\n})\n\nexport const onEventClick = event => ({\n type: ON_EVENT_CLICK,\n payload: {\n event\n }\n})\n\nexport const onRefresh = () => ({\n type: ON_REFRESH\n})\n\nexport const removeEvents = () => ({\n type: REMOVE_EVENTS\n})\n\nexport const setIsLoading = isLoading => ({\n type: SET_IS_LOADING,\n payload: {\n isLoading\n }\n})\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport Scheduler from '../components/Scheduler'\nimport {\n onDateRangeChange,\n onCalendarRemove,\n onCalendarRemoveAll,\n onEventClick,\n onRefresh\n} from '../modules/scheduler/actions'\n\nconst mapActionCreators = {\n onDateRangeChange,\n onCalendarRemove,\n onCalendarRemoveAll,\n onEventClick,\n onRefresh\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n calendars: state.scheduler.calendars,\n locale: state.intl.locale,\n isLoading: state.scheduler.isLoading\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Scheduler))\n","import {setCalendars} from './modules/scheduler/actions'\n\nexport const getDispatchActions = input => {\n const actions = []\n if (input.calendars) {\n actions.push(setCalendars(input.calendars))\n }\n\n return actions\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst removeEvents = state => ({\n ...state,\n calendars: state.calendars.map(calendar => ({...calendar, events: []}))\n})\n\nconst ACTION_HANDLERS = {\n [actions.SET_CALENDARS]: reducerUtil.singleTransferReducer('calendars'),\n [actions.SET_IS_LOADING]: reducerUtil.singleTransferReducer('isLoading'),\n [actions.REMOVE_EVENTS]: removeEvents\n}\n\nconst initialState = {\n calendars: [],\n isLoading: true\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {put, takeLatest, all} from 'redux-saga/effects'\nimport {externalEvents} from 'tocco-app-extensions'\n\nimport * as actions from './actions'\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.ON_DATE_RANGE_CHANGE, onDateRangeChange),\n takeLatest(actions.ON_CALENDAR_REMOVE, onCalendarRemove),\n takeLatest(actions.ON_CALENDARS_REMOVE_ALL, onCalendarRemoveAll),\n takeLatest(actions.ON_EVENT_CLICK, onEventClick),\n takeLatest(actions.ON_REFRESH, onRefresh),\n takeLatest(actions.SET_CALENDARS, setCalendars)\n ])\n}\n\nexport function* onDateRangeChange({payload}) {\n yield put(actions.setIsLoading(true))\n yield put(actions.removeEvents())\n const {dateRange} = payload\n yield put(externalEvents.fireExternalEvent('onDateRangeChange', {dateRange}))\n}\n\nexport function* onCalendarRemove({payload}) {\n yield put(actions.setIsLoading(true))\n yield put(externalEvents.fireExternalEvent('onCalendarRemove', {id: payload.id, entityModel: payload.entityModel}))\n}\n\nexport function* onCalendarRemoveAll() {\n yield put(actions.setIsLoading(true))\n yield put(externalEvents.fireExternalEvent('onCalendarRemoveAll'))\n}\n\nexport function* onEventClick({payload}) {\n const {\n event: {\n extendedProps: {entity}\n }\n } = payload\n if (entity) {\n yield put(externalEvents.fireExternalEvent('onEventClick', entity))\n }\n}\n\nexport function* onRefresh() {\n yield put(actions.setIsLoading(true))\n yield put(actions.removeEvents())\n yield put(externalEvents.fireExternalEvent('onRefresh'))\n}\n\nexport function* setCalendars() {\n yield put(actions.setIsLoading(false))\n}\n","import schedulerReducer, {sagas as schedulerSagas} from './scheduler'\n\nexport default {\n scheduler: schedulerReducer\n}\n\nexport const sagas = [schedulerSagas]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {appFactory, externalEvents} from 'tocco-app-extensions'\nimport {react, reducer as reducerUtil} from 'tocco-util'\n\nimport SchedulerContainer from './containers/SchedulerContainer'\nimport {getDispatchActions} from './input'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'scheduler'\n\nconst EXTERNAL_EVENTS = ['onDateRangeChange', 'onCalendarRemove', 'onCalendarRemoveAll', 'onEventClick', 'onRefresh']\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <SchedulerContainer />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: getDispatchActions(input),\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n })\n}\n\n;(() => {\n if (__PACKAGE_NAME__ === 'scheduler') {\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(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 SchedulerApp = props => {\n const {component, store} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n\n react.useDidUpdate(() => {\n getDispatchActions(props).forEach(action => {\n if (component != null) {\n store.dispatch(action)\n }\n })\n }, [props])\n\n return component\n}\n\nSchedulerApp.propTypes = {\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n calendarType: PropTypes.string.isRequired,\n events: PropTypes.arrayOf(\n PropTypes.shape({\n description: PropTypes.string,\n start: PropTypes.number,\n end: PropTypes.number,\n allDay: PropTypes.bool\n })\n ),\n key: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n model: PropTypes.string.isRequired\n })\n ),\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => ({...propTypes, [event]: PropTypes.func}), {}),\n locale: PropTypes.string\n}\n\nexport default SchedulerApp\n","export const SET_CALENDAR_TYPES = 'resourceScheduler/SET_CALENDAR_TYPES'\nexport const LOAD_CALENDAR_TYPES = 'resourceScheduler/LOAD_CALENDAR_TYPES'\nexport const INITIALIZE = 'resourceScheduler/INITIALIZE'\nexport const SEARCH_SELECTION_CHANGED = 'resourceScheduler/SEARCH_SELECTION_CHANGED'\nexport const UPDATE_REQUESTED_CALENDARS = 'resourceScheduler/UPDATE_REQUESTED_CALENDARS'\nexport const SET_CALENDARS = 'resourceScheduler/SET_CALENDARS'\nexport const SET_DATE_RANGE = 'resourceScheduler/SET_DATE_RANGE'\nexport const REMOVE_REQUESTED_CALENDAR = 'resourceScheduler/REMOVE_REQUESTED_CALENDAR'\nexport const REMOVE_ALL_CALENDARS = 'resourceScheduler/REMOVE_ALL_CALENDARS'\nexport const ON_EVENT_CLICK = 'resourceScheduler/ON_EVENT_CLICK'\nexport const ON_REFRESH = 'resourceScheduler/ON_REFRESH'\nexport const SET_HANDLE_NOTIFICATIONS = 'resourceScheduler/SET_HANDLE_NOTIFICATIONS'\n\nexport const initialize = () => ({\n type: INITIALIZE\n})\n\nexport const setCalendarTypes = calendarTypes => ({\n type: SET_CALENDAR_TYPES,\n payload: {\n calendarTypes\n }\n})\n\nexport const loadCalendarTypes = () => ({\n type: LOAD_CALENDAR_TYPES\n})\n\nexport const searchSelectionChanged = (calendarType, ids) => ({\n type: SEARCH_SELECTION_CHANGED,\n payload: {\n calendarType,\n ids\n }\n})\n\nexport const updateRequestedCalendars = (calendarType, ids) => ({\n type: UPDATE_REQUESTED_CALENDARS,\n payload: {\n calendarType,\n ids\n }\n})\n\nexport const setCalendars = calendars => ({\n type: SET_CALENDARS,\n payload: {\n calendars\n }\n})\n\nexport const setDateRange = dateRange => ({\n type: SET_DATE_RANGE,\n payload: {\n dateRange\n }\n})\n\nexport const removeRequestedCalendar = (entityModel, id) => ({\n type: REMOVE_REQUESTED_CALENDAR,\n payload: {\n entityModel,\n id\n }\n})\n\nexport const removeAllCalendars = () => ({\n type: REMOVE_ALL_CALENDARS\n})\n\nexport const onEventClick = (model, key) => ({\n type: ON_EVENT_CLICK,\n payload: {\n model,\n key\n }\n})\n\nexport const onRefresh = () => ({\n type: ON_REFRESH\n})\n\nexport const setHandleNotifications = handleNotifications => ({\n type: SET_HANDLE_NOTIFICATIONS,\n payload: {\n handleNotifications\n }\n})\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport SchedulerApp from 'tocco-scheduler/src/main'\n\nimport {\n setDateRange,\n removeRequestedCalendar,\n removeAllCalendars,\n onEventClick,\n onRefresh\n} from '../modules/resourceScheduler/actions'\n\nconst mapActionCreators = {\n onDateRangeChange: ({dateRange}) => setDateRange(dateRange),\n onCalendarRemove: ({entityModel, id}) => removeRequestedCalendar(entityModel, id),\n onCalendarRemoveAll: removeAllCalendars,\n onEventClick: ({model, key}) => onEventClick(model, key),\n onRefresh\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n calendars: state.resourceScheduler.calendars,\n locale: state.intl.locale\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(SchedulerApp))\n","import PropTypes from 'prop-types'\nimport React, {memo} from 'react'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport {design, Icon, Panel, Typography} from 'tocco-ui'\n\nconst PanelHeaderContent = ({color, label}) => (\n <Typography.Span>\n <Icon\n icon={color ? 'square-full' : 'square'}\n aria-hidden=\"true\"\n style={{...(color ? {color} : {})}}\n position={design.position.PREPEND}\n />{' '}\n {label}\n </Typography.Span>\n)\n\nPanelHeaderContent.propTypes = {\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n}\n\nconst SearchPanel = ({updateRequestedCalendars, locale, requestedCalendars, calendarTypes, emitAction}) => {\n const handleSelect = name => selection => {\n updateRequestedCalendars(name, selection)\n }\n\n const getSearchLists = calendarTypes =>\n calendarTypes.map(calendarType => (\n <Panel.Wrapper key={calendarType.name}>\n <Panel.Header>\n <PanelHeaderContent color={calendarType.color} label={calendarType.label} />\n </Panel.Header>\n <Panel.Body>\n <EntityListApp\n emitAction={emitAction}\n locale={locale}\n id={`search-panel-${calendarType.name}`}\n entityName={calendarType.targetEntity}\n formName={calendarType.formBase}\n limit={15}\n showSearchForm={true}\n selectable={true}\n selection={requestedCalendars ? requestedCalendars[calendarType.name] || [] : []}\n onSelectChange={handleSelect(calendarType.name)}\n simpleSearchFields=\"txtFulltext, searchFilter\"\n disableSelectionController\n showActions={false}\n scrollBehaviour=\"none\"\n />\n </Panel.Body>\n </Panel.Wrapper>\n ))\n\n return <Panel.Group>{getSearchLists(calendarTypes)}</Panel.Group>\n}\n\nSearchPanel.propTypes = {\n updateRequestedCalendars: PropTypes.func.isRequired,\n calendarTypes: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n formBase: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n targetEntity: PropTypes.string.isRequired,\n color: PropTypes.string\n })\n ),\n requestedCalendars: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default memo(SearchPanel)\n","import styled from 'styled-components'\nimport {scale, StyledScrollbar, theme} from 'tocco-ui'\n\nconst drawerSymbol =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==' // eslint-disable-line max-len\n\nexport const resizerStyle = {\n background: `transparent url(${drawerSymbol}) 50% no-repeat`,\n width: '11px',\n cursor: 'col-resize'\n}\n\nexport const StyledSplitPanelWrapperLeft = styled.div`\n && {\n background-color: ${theme.color('paper')};\n height: 100%;\n overflow: auto;\n padding-right: ${scale.space(-1)};\n padding-left: ${scale.space(-1)};\n padding-top: ${scale.space(-1)};\n ${StyledScrollbar}\n }\n`\n\nexport const StyledSplitPanelWrapperRight = styled.div`\n && {\n background-color: ${theme.color('paper')};\n height: 100%;\n overflow: auto;\n padding-left: ${scale.space(-1)};\n padding-right: ${scale.space(-1)};\n ${StyledScrollbar}\n }\n`\n","import PropTypes from 'prop-types'\nimport React, {useEffect} from 'react'\nimport SplitPane from 'react-split-pane'\nimport styled from 'styled-components'\nimport {notification} from 'tocco-app-extensions'\nimport {scale} from 'tocco-ui'\n\nimport SchedulerAppContainer from '../../containers/SchedulerAppContainer'\nimport SearchPanel from '../SearchPanel/SearchPanel'\nimport {resizerStyle, StyledSplitPanelWrapperLeft, StyledSplitPanelWrapperRight} from './StyledResourceScheduler'\n\nconst StyledSplitPane = styled(SplitPane)`\n position: static !important;\n\n .react-bs-container-body {\n height: auto !important;\n margin-bottom: ${scale.space(0)};\n }\n`\n\nconst ResourceScheduler = ({\n initialize,\n locale,\n calendarTypes,\n updateRequestedCalendars,\n requestedCalendars,\n handleNotifications,\n emitAction\n}) => {\n useEffect(() => {\n initialize()\n }, [])\n\n return (\n <>\n {handleNotifications && <notification.Notifications />}\n <StyledSplitPane defaultSize={325} minSize={325} resizerStyle={resizerStyle} split=\"vertical\">\n <StyledSplitPanelWrapperLeft>\n <SearchPanel\n locale={locale}\n calendarTypes={calendarTypes}\n updateRequestedCalendars={updateRequestedCalendars}\n requestedCalendars={requestedCalendars}\n emitAction={emitAction}\n />\n </StyledSplitPanelWrapperLeft>\n <StyledSplitPanelWrapperRight>\n <SchedulerAppContainer />\n </StyledSplitPanelWrapperRight>\n </StyledSplitPane>\n </>\n )\n}\n\nResourceScheduler.propTypes = {\n initialize: PropTypes.func.isRequired,\n handleNotifications: PropTypes.bool.isRequired,\n updateRequestedCalendars: PropTypes.func.isRequired,\n removeRequestedCalendar: PropTypes.func.isRequired,\n setDateRange: PropTypes.func.isRequired,\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n calendarType: PropTypes.string.isRequired,\n events: PropTypes.arrayOf(\n PropTypes.shape({\n description: PropTypes.string,\n start: PropTypes.number,\n end: PropTypes.number,\n allDay: PropTypes.bool\n })\n ),\n key: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n model: PropTypes.string.isRequired\n })\n ),\n calendarTypes: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n formBase: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n targetEntity: PropTypes.string.isRequired,\n color: PropTypes.string\n })\n ),\n requestedCalendars: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default ResourceScheduler\n","import ResourceScheduler from './ResourceScheduler'\n\nexport default ResourceScheduler\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport ResourceScheduler from '../components/ResourceScheduler'\nimport {\n initialize,\n updateRequestedCalendars,\n setDateRange,\n removeRequestedCalendar\n} from '../modules/resourceScheduler/actions'\n\nconst mapActionCreators = {\n initialize,\n updateRequestedCalendars,\n setDateRange,\n removeRequestedCalendar,\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n}\n\nconst mapStateToProps = state => {\n return {\n calendars: state.resourceScheduler.calendars,\n calendarTypes: state.resourceScheduler.calendarTypes,\n requestedCalendars: state.resourceScheduler.requestedCalendars,\n handleNotifications: state.resourceScheduler.handleNotifications,\n locale: state.intl.locale\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(ResourceScheduler))\n","import _omit from 'lodash/omit'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst updateRequestedCalendars = (state, {payload: {ids, calendarType}}) => ({\n ...state,\n requestedCalendars: {\n ..._omit(state.requestedCalendars, [calendarType]),\n ...(ids.length > 0 ? {[calendarType]: ids} : {})\n }\n})\n\nconst removeRequestedCalendar = (state, {payload}) => {\n const {id, entityModel} = payload\n\n const typesToRemove = state.calendarTypes.filter(type => type.targetEntity === entityModel).map(type => type.name)\n return {\n ...state,\n requestedCalendars: {\n ...Object.keys(state.requestedCalendars).reduce((acc, calendarType) => {\n const adjustedValue = state.requestedCalendars[calendarType].filter(\n key => !typesToRemove.includes(calendarType) || key !== id\n )\n\n return {\n ...acc,\n ...(adjustedValue.length > 0 && {[calendarType]: adjustedValue})\n }\n }, {})\n }\n }\n}\n\nconst removeAllCalendars = state => {\n return {\n ...state,\n requestedCalendars: {},\n calendars: []\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_CALENDAR_TYPES]: reducerUtil.singleTransferReducer('calendarTypes'),\n [actions.SET_CALENDARS]: reducerUtil.singleTransferReducer('calendars'),\n [actions.SET_DATE_RANGE]: reducerUtil.singleTransferReducer('dateRange'),\n [actions.SET_HANDLE_NOTIFICATIONS]: reducerUtil.singleTransferReducer('handleNotifications'),\n [actions.UPDATE_REQUESTED_CALENDARS]: updateRequestedCalendars,\n [actions.REMOVE_REQUESTED_CALENDAR]: removeRequestedCalendar,\n [actions.REMOVE_ALL_CALENDARS]: removeAllCalendars\n}\n\nconst initialState = {\n handleNotifications: false,\n calendarTypes: [],\n requestedCalendars: {},\n calendars: [],\n dateRange: {}\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import _reduce from 'lodash/reduce'\n\nexport const transformRequestedCalendars = requestedCalendars =>\n _reduce(requestedCalendars, (result, keys, calendarTypeId) => [...result, {calendarTypeId, keys}], [])\n","import {call, put, takeLatest, all, select} from 'redux-saga/effects'\nimport {rest, externalEvents} from 'tocco-app-extensions'\n\nimport {transformRequestedCalendars} from '../../utils/rest'\nimport * as actions from './actions'\n\nexport const resourceSchedulerSelector = state => state.resourceScheduler\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZE, initialize),\n takeLatest(actions.UPDATE_REQUESTED_CALENDARS, retrieveCalendars),\n takeLatest(actions.SET_DATE_RANGE, retrieveCalendars),\n takeLatest(actions.REMOVE_REQUESTED_CALENDAR, retrieveCalendars),\n takeLatest(actions.ON_EVENT_CLICK, onEventClick),\n takeLatest(actions.ON_REFRESH, retrieveCalendars)\n ])\n}\n\nexport function* initialize() {\n yield call(loadCalendarTypes)\n}\n\nexport function* loadCalendarTypes() {\n const calendars = yield call(rest.requestSaga, 'calendar/types')\n yield put(actions.setCalendarTypes(calendars.body.data || []))\n}\n\nexport function* retrieveCalendars() {\n const {requestedCalendars, dateRange} = yield select(resourceSchedulerSelector)\n if (Object.keys(requestedCalendars).length > 0 && dateRange.startDate && dateRange.endDate) {\n const calendars = yield call(transformRequestedCalendars, requestedCalendars)\n const calendarsResponse = yield call(rest.requestSaga, 'calendar/events', {\n method: 'POST',\n body: {\n calendars,\n start: dateRange.startDate.getTime(),\n end: dateRange.endDate.getTime()\n }\n })\n\n yield put(actions.setCalendars(calendarsResponse.body.data))\n } else {\n yield put(actions.setCalendars([]))\n }\n}\n\nexport function* onEventClick({payload}) {\n yield put(externalEvents.fireExternalEvent('onEventClick', payload))\n}\n","import resourceSchedulerReducer, {sagas as resourceSchedulerSagas} from './resourceScheduler'\n\nexport default {\n resourceScheduler: resourceSchedulerReducer\n}\n\nexport const sagas = [resourceSchedulerSagas]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {\n actionEmitter,\n appFactory,\n cache,\n errorLogging,\n externalEvents,\n notification,\n selection as selectionPropType\n} from 'tocco-app-extensions'\nimport {GlobalStyles} from 'tocco-ui'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport ResourceSchedulerContainer from './containers/ResourceSchedulerContainer'\nimport reducers, {sagas} from './modules/reducers'\nimport {setHandleNotifications, updateRequestedCalendars} from './modules/resourceScheduler/actions'\n\nconst packageName = 'resource-scheduler'\n\nconst EXTERNAL_EVENTS = ['onEventClick']\n\nconst initApp = (id, input, events, publicPath) => {\n const content = (\n <>\n <GlobalStyles />\n <ResourceSchedulerContainer />\n </>\n )\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n actionEmitter.addToStore(store, events.emitAction)\n\n const handleNotifications = !events.emitAction\n\n notification.addToStore(store, handleNotifications)\n errorLogging.addToStore(store, handleNotifications)\n cache.addToStore(store)\n\n const dispatchActions = [\n ...(input.selection &&\n input.selection.type === 'ID' &&\n input.actionProperties &&\n input.actionProperties.calendarType\n ? [updateRequestedCalendars(input.actionProperties.calendarType, input.selection.ids)]\n : []),\n setHandleNotifications(handleNotifications)\n ]\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: dispatchActions,\n publicPath,\n textResourceModules: ['component', 'common', packageName, 'entity-list', 'scheduler']\n })\n}\n\n;(() => {\n if (__PACKAGE_NAME__ === 'resource-scheduler') {\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\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n }\n\n const app = initApp('dev', 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 ResourceSchedulerApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName: props.id, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nResourceSchedulerApp.propTypes = {\n id: PropTypes.string,\n locale: PropTypes.string,\n onEventClick: PropTypes.func,\n selection: selectionPropType.propType,\n actionProperties: PropTypes.shape({\n calendarType: PropTypes.string\n })\n}\n\nexport default ResourceSchedulerApp\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {selection as selectionPropType} from 'tocco-app-extensions'\nimport ResourceSchedulerApp from 'tocco-resource-scheduler/src/main'\n\nimport {goBack} from '../../../../../utils/routing'\n\nconst ResourceScheduler = ({match, selection, actionProperties, history}) => {\n const entityBaseUrl = goBack(match.url, 2)\n return (\n <ResourceSchedulerApp\n onEventClick={({model, key}) => {\n const url = history.createHref({pathname: `${entityBaseUrl}/${model}/${key}`})\n window.open(url, '_blank')\n }}\n selection={selection}\n actionProperties={actionProperties}\n />\n )\n}\n\nResourceScheduler.propTypes = {\n match: PropTypes.shape({\n url: PropTypes.string\n }).isRequired,\n selection: selectionPropType.propType,\n actionProperties: PropTypes.shape({\n calendarType: PropTypes.string\n }),\n history: PropTypes.shape({\n createHref: PropTypes.func.isRequired\n }).isRequired\n}\n\nexport default ResourceScheduler\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {Redirect} from 'react-router-dom'\n\nconst ShowOutputJobsAction = props => (\n <Redirect\n to={{\n pathname: '/e/Output_job/list',\n search: `tql=${encodeURIComponent(`entity==\"${props.selection.entityName}\"`)}`\n }}\n />\n)\n\nShowOutputJobsAction.propTypes = {\n selection: PropTypes.shape({\n entityName: PropTypes.string.isRequired\n }).isRequired\n}\n\nexport default ShowOutputJobsAction\n","export const buildUserMecardString = data => {\n let string = `MECARD:N:${data.lastname},${data.firstname};`\n\n string = appendField(data, 'c_address', 'ADR', string, address => address.replace(/\\s*<br\\s?\\/?>\\s*/gi, ','))\n string = appendField(data, 'phone_mobile', 'TEL', string)\n string = appendField(data, 'phone_company', 'TEL', string)\n string = appendField(data, 'phone_private', 'TEL', string)\n string = appendField(data, 'email', 'EMAIL', string)\n string = appendField(data, 'email_alternative', 'EMAIL', string)\n string = appendField(data, 'birthdate', 'BDAY', string, date => date.replace(/-/gi, ''))\n\n return string\n}\n\nconst appendField = (data, fieldName, outputPrefix, output, handler = fieldData => fieldData) => {\n if (data[fieldName] && data[fieldName].length > 0) {\n output += `${outputPrefix}:${handler(data[fieldName])};`\n }\n return output\n}\n","import PropTypes from 'prop-types'\nimport React, {useEffect} from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport styled from 'styled-components'\nimport {QRCode, LoadingSpinner, Typography} from 'tocco-ui'\n\nimport {buildUserMecardString} from '../../utils/qrCodeUtils'\n\nconst StyledContainer = styled.div`\n width: 148px;\n height: 148px;\n position: relative;\n align-self: center;\n`\n\nconst StyledContent = styled.div`\n margin: 0;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n`\n\nconst UserQrCode = ({data, fetchData}) => {\n useEffect(() => {\n fetchData()\n }, [])\n\n let content\n\n if (data === undefined) {\n content = <LoadingSpinner />\n } else if (data === null) {\n content = (\n <Typography.P>\n <FormattedMessage id=\"client.user-qr-action.fetchFailed\" />\n </Typography.P>\n )\n } else {\n const string = buildUserMecardString(data)\n content = <QRCode value={string} />\n }\n\n return (\n <StyledContainer>\n <StyledContent>{content}</StyledContent>\n </StyledContainer>\n )\n}\n\nUserQrCode.propTypes = {\n data: PropTypes.shape({\n firstname: PropTypes.string.isRequired,\n lastname: PropTypes.string.isRequired,\n c_address: PropTypes.string,\n phone_mobile: PropTypes.string,\n phone_company: PropTypes.string,\n phone_private: PropTypes.string,\n email: PropTypes.string,\n email_alternative: PropTypes.string,\n birthdate: PropTypes.string\n }),\n fetchData: PropTypes.func.isRequired\n}\n\nexport default UserQrCode\n","import UserQrCode from './UserQrCode'\n\nexport default UserQrCode\n","export const FETCH_DATA = 'qrCode/FETCH_DATA'\nexport const SET_DATA = 'qrCode/SET_DATA'\n\nexport const fetchData = () => ({\n type: FETCH_DATA\n})\n\nexport const setData = data => ({\n type: SET_DATA,\n payload: {\n data\n }\n})\n","import {connect} from 'react-redux'\n\nimport UserQrCode from '../components/UserQrCode'\nimport {fetchData} from '../modules/qrCode'\n\nconst mapActionCreators = {\n fetchData\n}\n\nconst mapStateToProps = state => ({\n data: state.qrCode.data\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(UserQrCode)\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_DATA]: reducerUtil.singleTransferReducer('data')\n}\n\nconst initialState = {\n data: undefined\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 {fetchData} from './actions'\nimport reducer from './reducer'\nimport sagas from './sagas'\n\nexport {fetchData}\nexport {sagas}\nexport default reducer\n","import {all, call, put, select, takeEvery} from 'redux-saga/effects'\nimport {rest} from 'tocco-app-extensions'\nimport {consoleLogger} from 'tocco-util'\n\nimport * as actions from './actions'\n\nexport const inputSelector = state => state.input\n\nexport default function* sagas() {\n yield all([takeEvery(actions.FETCH_DATA, fetchData)])\n}\n\nexport function* fetchData() {\n const {selection} = yield select(inputSelector)\n\n const userKey = getSingleKey(selection)\n\n const query = {\n paths: [\n 'firstname',\n 'lastname',\n 'c_address',\n 'phone_mobile',\n 'phone_company',\n 'phone_private',\n 'email',\n 'email_alternative',\n 'birthdate'\n ]\n }\n\n try {\n const entity = yield call(rest.fetchEntity, 'User', userKey, query)\n\n let data = null\n\n if (entity) {\n data = {}\n Object.entries(entity.paths).forEach(([path, bean]) => {\n if (bean && bean.value) {\n data[path] = bean.value\n }\n })\n }\n\n yield put(actions.setData(data))\n } catch (e) {\n consoleLogger.logError('Failed to fetch data', e)\n yield put(actions.setData(null))\n }\n}\n\nexport const getSingleKey = selection => {\n if (selection.entityName !== 'User') {\n throw new Error('Only selection of User supported')\n }\n if (selection.type !== 'ID') {\n throw new Error('Only ID selection type supported')\n }\n if (!selection.ids || selection.ids.length !== 1) {\n throw new Error('Exactly one user must be selected')\n }\n return selection.ids[0]\n}\n","import qrCodeReducer, {sagas as qrCodeSagas} from './qrCode'\n\nexport default {\n qrCode: qrCodeReducer\n}\n\nexport const sagas = [qrCodeSagas]\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {appFactory} from 'tocco-app-extensions'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport UserQrCode from './containers/UserQrCodeContainer'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'user-qr-action'\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <UserQrCode selection={input.selection} />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\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 UserQrActionApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName})\n return component\n}\n\nUserQrActionApp.propTypes = {\n selection: PropTypes.object\n}\n\nexport default UserQrActionApp\n"],"sourceRoot":""}